tango-app-ui-analyse-trax 3.9.2 → 3.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/.eslintrc.json +37 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +12 -25
  4. package/src/lib/components/action-centre/action-centre.component.html +607 -0
  5. package/src/lib/components/action-centre/action-centre.component.scss +185 -0
  6. package/src/lib/components/action-centre/action-centre.component.spec.ts +23 -0
  7. package/src/lib/components/action-centre/action-centre.component.ts +279 -0
  8. package/src/lib/components/activity-log/activity-log.component.html +84 -0
  9. package/src/lib/components/activity-log/activity-log.component.scss +33 -0
  10. package/src/lib/components/activity-log/activity-log.component.spec.ts +23 -0
  11. package/src/lib/components/activity-log/activity-log.component.ts +137 -0
  12. package/src/lib/components/activity-log-v2/activity-log-v2.component.html +189 -0
  13. package/src/lib/components/activity-log-v2/activity-log-v2.component.scss +162 -0
  14. package/src/lib/components/activity-log-v2/activity-log-v2.component.spec.ts +23 -0
  15. package/src/lib/components/activity-log-v2/activity-log-v2.component.ts +517 -0
  16. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.html +19 -0
  17. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.scss +148 -0
  18. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.spec.ts +23 -0
  19. package/src/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.ts +141 -0
  20. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.html +42 -0
  21. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.scss +49 -0
  22. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.spec.ts +23 -0
  23. package/src/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.ts +22 -0
  24. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.html +724 -0
  25. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.scss +217 -0
  26. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.spec.ts +23 -0
  27. package/src/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.ts +122 -0
  28. package/src/lib/components/add-checklist/add-checklist.component.html +1459 -0
  29. package/src/lib/components/add-checklist/add-checklist.component.scss +1205 -0
  30. package/src/lib/components/add-checklist/add-checklist.component.spec.ts +23 -0
  31. package/src/lib/components/add-checklist/add-checklist.component.ts +2460 -0
  32. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.html +207 -0
  33. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.scss +213 -0
  34. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.spec.ts +23 -0
  35. package/src/lib/components/add-checklist/checklist-popup/checklist-popup.component.ts +621 -0
  36. package/src/lib/components/add-checklist/counter/counter.component.html +43 -0
  37. package/src/lib/components/add-checklist/counter/counter.component.scss +49 -0
  38. package/src/lib/components/add-checklist/counter/counter.component.spec.ts +23 -0
  39. package/src/lib/components/add-checklist/counter/counter.component.ts +123 -0
  40. package/src/lib/components/add-multitask/add-multitask.component.html +705 -0
  41. package/src/lib/components/add-multitask/add-multitask.component.scss +296 -0
  42. package/src/lib/components/add-multitask/add-multitask.component.spec.ts +23 -0
  43. package/src/lib/components/add-multitask/add-multitask.component.ts +611 -0
  44. package/src/lib/components/add-multitask/ascending-validator.ts +13 -0
  45. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.html +197 -0
  46. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.scss +31 -0
  47. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.spec.ts +23 -0
  48. package/src/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.ts +285 -0
  49. package/src/lib/components/add-multitask/create-task.data.ts +374 -0
  50. package/src/lib/components/add-multitask/create-task.interface.ts +177 -0
  51. package/src/lib/components/add-multitask/unique-string-validator.ts +13 -0
  52. package/src/lib/components/add-multitask/whitespace-validator.ts +11 -0
  53. package/src/lib/components/add-task/add-task.component.html +654 -0
  54. package/src/lib/components/add-task/add-task.component.scss +536 -0
  55. package/src/lib/components/add-task/add-task.component.spec.ts +23 -0
  56. package/src/lib/components/add-task/add-task.component.ts +569 -0
  57. package/src/lib/components/add-task/ascending-validator.ts +13 -0
  58. package/src/lib/components/add-task/create-task.data.ts +374 -0
  59. package/src/lib/components/add-task/create-task.interface.ts +192 -0
  60. package/src/lib/components/add-task/unique-string-validator.ts +13 -0
  61. package/src/lib/components/add-task/whitespace-validator.ts +11 -0
  62. package/src/lib/components/approval-popup/approval-popup.component.html +25 -0
  63. package/src/lib/components/approval-popup/approval-popup.component.scss +3 -0
  64. package/src/lib/components/approval-popup/approval-popup.component.spec.ts +23 -0
  65. package/src/lib/components/approval-popup/approval-popup.component.ts +26 -0
  66. package/src/lib/components/checklist/checklist.component.html +330 -0
  67. package/src/lib/components/checklist/checklist.component.scss +112 -0
  68. package/src/lib/components/checklist/checklist.component.spec.ts +23 -0
  69. package/src/lib/components/checklist/checklist.component.ts +344 -0
  70. package/src/lib/components/checklist-configure/assign/assign.component.html +665 -0
  71. package/src/lib/components/checklist-configure/assign/assign.component.scss +219 -0
  72. package/src/lib/components/checklist-configure/assign/assign.component.spec.ts +23 -0
  73. package/src/lib/components/checklist-configure/assign/assign.component.ts +932 -0
  74. package/src/lib/components/checklist-configure/checklist-configure.component.html +4340 -0
  75. package/src/lib/components/checklist-configure/checklist-configure.component.scss +2338 -0
  76. package/src/lib/components/checklist-configure/checklist-configure.component.spec.ts +23 -0
  77. package/src/lib/components/checklist-configure/checklist-configure.component.ts +4659 -0
  78. package/src/lib/components/checklistlayout/checklistlayout.component.html +30 -0
  79. package/src/lib/components/checklistlayout/checklistlayout.component.scss +15 -0
  80. package/src/lib/components/checklistlayout/checklistlayout.component.spec.ts +23 -0
  81. package/src/lib/components/checklistlayout/checklistlayout.component.ts +47 -0
  82. package/src/lib/components/chip-dropdown/chip-dropdown.component.html +36 -0
  83. package/src/lib/components/chip-dropdown/chip-dropdown.component.scss +97 -0
  84. package/src/lib/components/chip-dropdown/chip-dropdown.component.spec.ts +23 -0
  85. package/src/lib/components/chip-dropdown/chip-dropdown.component.ts +125 -0
  86. package/src/lib/components/create-task/create-task.component.html +2003 -0
  87. package/src/lib/components/create-task/create-task.component.scss +272 -0
  88. package/src/lib/components/create-task/create-task.component.spec.ts +23 -0
  89. package/src/lib/components/create-task/create-task.component.ts +614 -0
  90. package/src/lib/components/create-task/create-task.data.ts +372 -0
  91. package/src/lib/components/create-task/create-task.interface.ts +182 -0
  92. package/src/lib/components/create-task/validators/ascending-validator.ts +13 -0
  93. package/src/lib/components/create-task/validators/unique-string-validator.ts +13 -0
  94. package/src/lib/components/create-task/validators/whitespace-validator.ts +11 -0
  95. package/src/lib/components/custom-select/custom-select.component.html +44 -0
  96. package/src/lib/components/custom-select/custom-select.component.scss +144 -0
  97. package/src/lib/components/custom-select/custom-select.component.spec.ts +23 -0
  98. package/src/lib/components/custom-select/custom-select.component.ts +265 -0
  99. package/src/lib/components/dashboard/dashboard.component.html +1076 -0
  100. package/src/lib/components/dashboard/dashboard.component.scss +237 -0
  101. package/src/lib/components/dashboard/dashboard.component.spec.ts +23 -0
  102. package/src/lib/components/dashboard/dashboard.component.ts +539 -0
  103. package/src/lib/components/dashboard-info/dashboard-info.component.html +1420 -0
  104. package/src/lib/components/dashboard-info/dashboard-info.component.scss +409 -0
  105. package/src/lib/components/dashboard-info/dashboard-info.component.spec.ts +23 -0
  106. package/src/lib/components/dashboard-info/dashboard-info.component.ts +772 -0
  107. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.html +110 -0
  108. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.scss +260 -0
  109. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.spec.ts +23 -0
  110. package/src/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.ts +143 -0
  111. package/src/lib/components/dashboard-layout/dashboard-layout.component.html +1 -0
  112. package/src/lib/components/dashboard-layout/dashboard-layout.component.scss +0 -0
  113. package/src/lib/components/dashboard-layout/dashboard-layout.component.spec.ts +23 -0
  114. package/src/lib/components/dashboard-layout/dashboard-layout.component.ts +10 -0
  115. package/src/lib/components/disabled-select/disabled-select.component.html +44 -0
  116. package/src/lib/components/disabled-select/disabled-select.component.scss +149 -0
  117. package/src/lib/components/disabled-select/disabled-select.component.spec.ts +23 -0
  118. package/src/lib/components/disabled-select/disabled-select.component.ts +146 -0
  119. package/src/lib/components/export-gallery/export-gallery.component.html +175 -0
  120. package/src/lib/components/export-gallery/export-gallery.component.scss +200 -0
  121. package/src/lib/components/export-gallery/export-gallery.component.spec.ts +23 -0
  122. package/src/lib/components/export-gallery/export-gallery.component.ts +263 -0
  123. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.html +36 -0
  124. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.scss +97 -0
  125. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.spec.ts +23 -0
  126. package/src/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.ts +104 -0
  127. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.html +44 -0
  128. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.scss +144 -0
  129. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.spec.ts +23 -0
  130. package/src/lib/components/eye-test-audit/custom-select/custom-select.component.ts +265 -0
  131. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.html +1804 -0
  132. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.scss +806 -0
  133. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.spec.ts +23 -0
  134. package/src/lib/components/eye-test-audit/eye-test/eye-test.component.ts +1890 -0
  135. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.html +25 -0
  136. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.scss +0 -0
  137. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.spec.ts +23 -0
  138. package/src/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.ts +20 -0
  139. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.ts +26 -0
  140. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.html +1 -0
  141. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.scss +0 -0
  142. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.spec.ts +23 -0
  143. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.ts +24 -0
  144. package/src/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.ts +44 -0
  145. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.html +490 -0
  146. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.scss +721 -0
  147. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.spec.ts +23 -0
  148. package/src/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.ts +1017 -0
  149. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.html +708 -0
  150. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.scss +247 -0
  151. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.spec.ts +23 -0
  152. package/src/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.ts +446 -0
  153. package/src/lib/components/eye-test-audit/group-select/group-select.component.html +44 -0
  154. package/src/lib/components/eye-test-audit/group-select/group-select.component.scss +144 -0
  155. package/src/lib/components/eye-test-audit/group-select/group-select.component.spec.ts +23 -0
  156. package/src/lib/components/eye-test-audit/group-select/group-select.component.ts +147 -0
  157. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.html +18 -0
  158. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.scss +49 -0
  159. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.spec.ts +23 -0
  160. package/src/lib/components/eye-test-audit/reactive-select/reactive-select.component.ts +104 -0
  161. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.html +44 -0
  162. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.scss +144 -0
  163. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.spec.ts +23 -0
  164. package/src/lib/components/eye-test-audit/select-drop/select-drop.component.ts +152 -0
  165. package/src/lib/components/eye-test-audit/services/eye-test-audit.service.spec.ts +16 -0
  166. package/src/lib/components/eye-test-audit/services/eye-test-audit.service.ts +190 -0
  167. package/src/lib/components/flag-layout/flag-layout.component.html +1 -0
  168. package/src/lib/components/flag-layout/flag-layout.component.scss +0 -0
  169. package/src/lib/components/flag-layout/flag-layout.component.spec.ts +23 -0
  170. package/src/lib/components/flag-layout/flag-layout.component.ts +10 -0
  171. package/src/lib/components/flags/flags.component.html +473 -0
  172. package/src/lib/components/flags/flags.component.scss +86 -0
  173. package/src/lib/components/flags/flags.component.spec.ts +23 -0
  174. package/src/lib/components/flags/flags.component.ts +280 -0
  175. package/{lib/components/flags/flags.interface.d.ts → src/lib/components/flags/flags.interface.ts} +73 -65
  176. package/src/lib/components/flags-info/flags-info.component.html +6012 -0
  177. package/src/lib/components/flags-info/flags-info.component.scss +278 -0
  178. package/src/lib/components/flags-info/flags-info.component.spec.ts +23 -0
  179. package/src/lib/components/flags-info/flags-info.component.ts +490 -0
  180. package/src/lib/components/flags-info/flags-info.interface.ts +441 -0
  181. package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.html +1 -0
  182. package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.scss +4 -0
  183. package/src/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.ts +78 -0
  184. package/src/lib/components/flags-new/flags-new.component.html +904 -0
  185. package/src/lib/components/flags-new/flags-new.component.scss +121 -0
  186. package/src/lib/components/flags-new/flags-new.component.spec.ts +23 -0
  187. package/src/lib/components/flags-new/flags-new.component.ts +357 -0
  188. package/{lib/components/flags-new/flags-new.interface.d.ts → src/lib/components/flags-new/flags-new.interface.ts} +90 -81
  189. package/src/lib/components/gallery/gallery.component.html +3660 -0
  190. package/src/lib/components/gallery/gallery.component.scss +930 -0
  191. package/src/lib/components/gallery/gallery.component.ts +3527 -0
  192. package/src/lib/components/group-select/group-select.component.html +44 -0
  193. package/src/lib/components/group-select/group-select.component.scss +144 -0
  194. package/src/lib/components/group-select/group-select.component.spec.ts +23 -0
  195. package/src/lib/components/group-select/group-select.component.ts +145 -0
  196. package/src/lib/components/image-popup/image-popup.component.html +11 -0
  197. package/src/lib/components/image-popup/image-popup.component.scss +5 -0
  198. package/src/lib/components/image-popup/image-popup.component.ts +18 -0
  199. package/src/lib/components/lib/custom-select/custom-select.component.html +42 -0
  200. package/src/lib/components/lib/custom-select/custom-select.component.scss +131 -0
  201. package/src/lib/components/lib/custom-select/custom-select.component.spec.ts +23 -0
  202. package/src/lib/components/lib/custom-select/custom-select.component.ts +151 -0
  203. package/src/lib/components/manage-task/manage-task.component.html +265 -0
  204. package/src/lib/components/manage-task/manage-task.component.scss +69 -0
  205. package/src/lib/components/manage-task/manage-task.component.spec.ts +23 -0
  206. package/src/lib/components/manage-task/manage-task.component.ts +267 -0
  207. package/src/lib/components/managechecklist/managechecklist.component.html +176 -0
  208. package/src/lib/components/managechecklist/managechecklist.component.scss +43 -0
  209. package/src/lib/components/managechecklist/managechecklist.component.spec.ts +23 -0
  210. package/src/lib/components/managechecklist/managechecklist.component.ts +176 -0
  211. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.html +46 -0
  212. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.scss +181 -0
  213. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.spec.ts +23 -0
  214. package/src/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.ts +221 -0
  215. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.html +36 -0
  216. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.scss +89 -0
  217. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.spec.ts +23 -0
  218. package/src/lib/components/multi-date-datepicker/multi-date-datepicker.component.ts +118 -0
  219. package/src/lib/components/orders/orders.component.html +203 -0
  220. package/src/lib/components/orders/orders.component.scss +180 -0
  221. package/src/lib/components/orders/orders.component.spec.ts +25 -0
  222. package/src/lib/components/orders/orders.component.ts +197 -0
  223. package/src/lib/components/pagination/pagination.component.html +28 -0
  224. package/src/lib/components/pagination/pagination.component.scss +6 -0
  225. package/src/lib/components/pagination/pagination.component.spec.ts +23 -0
  226. package/src/lib/components/pagination/pagination.component.ts +54 -0
  227. package/src/lib/components/reactive-select/reactive-select.component.html +18 -0
  228. package/src/lib/components/reactive-select/reactive-select.component.scss +48 -0
  229. package/src/lib/components/reactive-select/reactive-select.component.spec.ts +23 -0
  230. package/src/lib/components/reactive-select/reactive-select.component.ts +104 -0
  231. package/src/lib/components/reports/date-picker/date-picker.component.html +54 -0
  232. package/src/lib/components/reports/date-picker/date-picker.component.scss +156 -0
  233. package/src/lib/components/reports/date-picker/date-picker.component.spec.ts +23 -0
  234. package/src/lib/components/reports/date-picker/date-picker.component.ts +60 -0
  235. package/src/lib/components/reports/reports.component.html +225 -0
  236. package/src/lib/components/reports/reports.component.scss +69 -0
  237. package/src/lib/components/reports/reports.component.spec.ts +23 -0
  238. package/src/lib/components/reports/reports.component.ts +334 -0
  239. package/{lib/components/reports/reports.interface.d.ts → src/lib/components/reports/reports.interface.ts} +50 -46
  240. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.html +1 -0
  241. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.scss +15 -0
  242. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.spec.ts +23 -0
  243. package/src/lib/components/tango-analyse-trax/tango-analyse-trax.component.ts +31 -0
  244. package/src/lib/components/task/task.component.html +322 -0
  245. package/src/lib/components/task/task.component.scss +169 -0
  246. package/src/lib/components/task/task.component.spec.ts +23 -0
  247. package/src/lib/components/task/task.component.ts +340 -0
  248. package/src/lib/components/task-configure/task-configure.component.html +737 -0
  249. package/src/lib/components/task-configure/task-configure.component.scss +569 -0
  250. package/src/lib/components/task-configure/task-configure.component.spec.ts +23 -0
  251. package/src/lib/components/task-configure/task-configure.component.ts +1603 -0
  252. package/src/lib/components/task-configure/task-configure.interface.ts +138 -0
  253. package/src/lib/components/task-info/task-info.component.html +390 -0
  254. package/src/lib/components/task-info/task-info.component.scss +56 -0
  255. package/src/lib/components/task-info/task-info.component.spec.ts +23 -0
  256. package/src/lib/components/task-info/task-info.component.ts +400 -0
  257. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.html +141 -0
  258. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.scss +460 -0
  259. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.spec.ts +23 -0
  260. package/src/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.ts +202 -0
  261. package/src/lib/components/task-layout/task-layout.component.html +1 -0
  262. package/src/lib/components/task-layout/task-layout.component.scss +0 -0
  263. package/src/lib/components/task-layout/task-layout.component.spec.ts +23 -0
  264. package/src/lib/components/task-layout/task-layout.component.ts +10 -0
  265. package/src/lib/components/task-logs/task-logs.component.html +97 -0
  266. package/src/lib/components/task-logs/task-logs.component.scss +301 -0
  267. package/src/lib/components/task-logs/task-logs.component.spec.ts +23 -0
  268. package/src/lib/components/task-logs/task-logs.component.ts +80 -0
  269. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.html +84 -0
  270. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.scss +229 -0
  271. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.spec.ts +23 -0
  272. package/src/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.ts +111 -0
  273. package/src/lib/components/trax-store/trax-store.component.html +78 -0
  274. package/src/lib/components/trax-store/trax-store.component.scss +134 -0
  275. package/src/lib/components/trax-store/trax-store.component.spec.ts +23 -0
  276. package/src/lib/components/trax-store/trax-store.component.ts +172 -0
  277. package/src/lib/components/traxpopup/traxpopup.component.html +130 -0
  278. package/src/lib/components/traxpopup/traxpopup.component.scss +225 -0
  279. package/src/lib/components/traxpopup/traxpopup.component.spec.ts +23 -0
  280. package/src/lib/components/traxpopup/traxpopup.component.ts +71 -0
  281. package/src/lib/services/trax.service.spec.ts +16 -0
  282. package/src/lib/services/trax.service.ts +789 -0
  283. package/src/lib/tango-analyse-trax-routing.module.ts +151 -0
  284. package/src/lib/tango-analyse-trax.module.ts +140 -0
  285. package/{public-api.d.ts → src/public-api.ts} +6 -2
  286. package/tsconfig.lib.json +14 -0
  287. package/tsconfig.lib.prod.json +10 -0
  288. package/tsconfig.spec.json +14 -0
  289. package/esm2022/lib/components/action-centre/action-centre.component.mjs +0 -288
  290. package/esm2022/lib/components/activity-log/activity-log.component.mjs +0 -150
  291. package/esm2022/lib/components/activity-log-v2/activity-log-v2.component.mjs +0 -502
  292. package/esm2022/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.mjs +0 -114
  293. package/esm2022/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.mjs +0 -24
  294. package/esm2022/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.mjs +0 -126
  295. package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +0 -2352
  296. package/esm2022/lib/components/add-checklist/checklist-popup/checklist-popup.component.mjs +0 -612
  297. package/esm2022/lib/components/add-checklist/counter/counter.component.mjs +0 -138
  298. package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +0 -604
  299. package/esm2022/lib/components/add-multitask/ascending-validator.mjs +0 -11
  300. package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +0 -297
  301. package/esm2022/lib/components/add-multitask/create-task.data.mjs +0 -372
  302. package/esm2022/lib/components/add-multitask/create-task.interface.mjs +0 -2
  303. package/esm2022/lib/components/add-multitask/unique-string-validator.mjs +0 -10
  304. package/esm2022/lib/components/add-multitask/whitespace-validator.mjs +0 -10
  305. package/esm2022/lib/components/add-task/add-task.component.mjs +0 -561
  306. package/esm2022/lib/components/add-task/ascending-validator.mjs +0 -11
  307. package/esm2022/lib/components/add-task/create-task.data.mjs +0 -372
  308. package/esm2022/lib/components/add-task/create-task.interface.mjs +0 -2
  309. package/esm2022/lib/components/add-task/unique-string-validator.mjs +0 -10
  310. package/esm2022/lib/components/add-task/whitespace-validator.mjs +0 -10
  311. package/esm2022/lib/components/approval-popup/approval-popup.component.mjs +0 -30
  312. package/esm2022/lib/components/checklist/checklist.component.mjs +0 -327
  313. package/esm2022/lib/components/checklist-configure/assign/assign.component.mjs +0 -912
  314. package/esm2022/lib/components/checklist-configure/checklist-configure.component.mjs +0 -4161
  315. package/esm2022/lib/components/checklistlayout/checklistlayout.component.mjs +0 -44
  316. package/esm2022/lib/components/chip-dropdown/chip-dropdown.component.mjs +0 -120
  317. package/esm2022/lib/components/create-task/create-task.component.mjs +0 -585
  318. package/esm2022/lib/components/create-task/create-task.data.mjs +0 -372
  319. package/esm2022/lib/components/create-task/create-task.interface.mjs +0 -2
  320. package/esm2022/lib/components/create-task/validators/ascending-validator.mjs +0 -11
  321. package/esm2022/lib/components/create-task/validators/unique-string-validator.mjs +0 -10
  322. package/esm2022/lib/components/create-task/validators/whitespace-validator.mjs +0 -10
  323. package/esm2022/lib/components/custom-select/custom-select.component.mjs +0 -240
  324. package/esm2022/lib/components/dashboard/dashboard.component.mjs +0 -532
  325. package/esm2022/lib/components/dashboard-info/dashboard-info.component.mjs +0 -741
  326. package/esm2022/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.mjs +0 -155
  327. package/esm2022/lib/components/dashboard-layout/dashboard-layout.component.mjs +0 -12
  328. package/esm2022/lib/components/disabled-select/disabled-select.component.mjs +0 -158
  329. package/esm2022/lib/components/export-gallery/export-gallery.component.mjs +0 -266
  330. package/esm2022/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.mjs +0 -105
  331. package/esm2022/lib/components/eye-test-audit/custom-select/custom-select.component.mjs +0 -240
  332. package/esm2022/lib/components/eye-test-audit/eye-test/eye-test.component.mjs +0 -1733
  333. package/esm2022/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.mjs +0 -24
  334. package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.mjs +0 -34
  335. package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.mjs +0 -27
  336. package/esm2022/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.mjs +0 -71
  337. package/esm2022/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.mjs +0 -823
  338. package/esm2022/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.mjs +0 -412
  339. package/esm2022/lib/components/eye-test-audit/group-select/group-select.component.mjs +0 -157
  340. package/esm2022/lib/components/eye-test-audit/reactive-select/reactive-select.component.mjs +0 -105
  341. package/esm2022/lib/components/eye-test-audit/select-drop/select-drop.component.mjs +0 -162
  342. package/esm2022/lib/components/eye-test-audit/services/eye-test-audit.service.mjs +0 -166
  343. package/esm2022/lib/components/flag-layout/flag-layout.component.mjs +0 -12
  344. package/esm2022/lib/components/flags/flags.component.mjs +0 -263
  345. package/esm2022/lib/components/flags/flags.interface.mjs +0 -2
  346. package/esm2022/lib/components/flags-info/flags-info.component.mjs +0 -452
  347. package/esm2022/lib/components/flags-info/flags-info.interface.mjs +0 -2
  348. package/esm2022/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.mjs +0 -71
  349. package/esm2022/lib/components/flags-new/flags-new.component.mjs +0 -335
  350. package/esm2022/lib/components/flags-new/flags-new.interface.mjs +0 -2
  351. package/esm2022/lib/components/gallery/gallery.component.mjs +0 -3402
  352. package/esm2022/lib/components/group-select/group-select.component.mjs +0 -155
  353. package/esm2022/lib/components/image-popup/image-popup.component.mjs +0 -25
  354. package/esm2022/lib/components/lib/custom-select/custom-select.component.mjs +0 -158
  355. package/esm2022/lib/components/manage-task/manage-task.component.mjs +0 -264
  356. package/esm2022/lib/components/managechecklist/managechecklist.component.mjs +0 -186
  357. package/esm2022/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.mjs +0 -229
  358. package/esm2022/lib/components/multi-date-datepicker/multi-date-datepicker.component.mjs +0 -124
  359. package/esm2022/lib/components/orders/orders.component.mjs +0 -171
  360. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -62
  361. package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +0 -108
  362. package/esm2022/lib/components/reports/date-picker/date-picker.component.mjs +0 -60
  363. package/esm2022/lib/components/reports/reports.component.mjs +0 -300
  364. package/esm2022/lib/components/reports/reports.interface.mjs +0 -2
  365. package/esm2022/lib/components/tango-analyse-trax/tango-analyse-trax.component.mjs +0 -32
  366. package/esm2022/lib/components/task/task.component.mjs +0 -341
  367. package/esm2022/lib/components/task-configure/task-configure.component.mjs +0 -1532
  368. package/esm2022/lib/components/task-configure/task-configure.interface.mjs +0 -2
  369. package/esm2022/lib/components/task-info/task-info.component.mjs +0 -375
  370. package/esm2022/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.mjs +0 -208
  371. package/esm2022/lib/components/task-layout/task-layout.component.mjs +0 -12
  372. package/esm2022/lib/components/task-logs/task-logs.component.mjs +0 -104
  373. package/esm2022/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.mjs +0 -107
  374. package/esm2022/lib/components/trax-store/trax-store.component.mjs +0 -179
  375. package/esm2022/lib/components/traxpopup/traxpopup.component.mjs +0 -70
  376. package/esm2022/lib/services/trax.service.mjs +0 -559
  377. package/esm2022/lib/tango-analyse-trax-routing.module.mjs +0 -153
  378. package/esm2022/lib/tango-analyse-trax.module.mjs +0 -221
  379. package/esm2022/public-api.mjs +0 -6
  380. package/esm2022/tango-app-ui-analyse-trax.mjs +0 -5
  381. package/fesm2022/tango-app-ui-analyse-trax.mjs +0 -28896
  382. package/fesm2022/tango-app-ui-analyse-trax.mjs.map +0 -1
  383. package/index.d.ts +0 -5
  384. package/lib/components/action-centre/action-centre.component.d.ts +0 -68
  385. package/lib/components/activity-log/activity-log.component.d.ts +0 -39
  386. package/lib/components/activity-log-v2/activity-log-v2.component.d.ts +0 -78
  387. package/lib/components/activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component.d.ts +0 -24
  388. package/lib/components/activity-log-v2/log-view-popup/store-user-dropdown/store-user-dropdown.component.d.ts +0 -9
  389. package/lib/components/activity-log-v2/log-view-popup/view-action/view-action.component.d.ts +0 -34
  390. package/lib/components/add-checklist/add-checklist.component.d.ts +0 -121
  391. package/lib/components/add-checklist/checklist-popup/checklist-popup.component.d.ts +0 -45
  392. package/lib/components/add-checklist/counter/counter.component.d.ts +0 -29
  393. package/lib/components/add-multitask/add-multitask.component.d.ts +0 -102
  394. package/lib/components/add-multitask/ascending-validator.d.ts +0 -2
  395. package/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.d.ts +0 -45
  396. package/lib/components/add-multitask/create-task.data.d.ts +0 -293
  397. package/lib/components/add-multitask/create-task.interface.d.ts +0 -159
  398. package/lib/components/add-multitask/unique-string-validator.d.ts +0 -2
  399. package/lib/components/add-multitask/whitespace-validator.d.ts +0 -2
  400. package/lib/components/add-task/add-task.component.d.ts +0 -89
  401. package/lib/components/add-task/ascending-validator.d.ts +0 -2
  402. package/lib/components/add-task/create-task.data.d.ts +0 -293
  403. package/lib/components/add-task/create-task.interface.d.ts +0 -161
  404. package/lib/components/add-task/unique-string-validator.d.ts +0 -2
  405. package/lib/components/add-task/whitespace-validator.d.ts +0 -2
  406. package/lib/components/approval-popup/approval-popup.component.d.ts +0 -14
  407. package/lib/components/checklist/checklist.component.d.ts +0 -40
  408. package/lib/components/checklist-configure/assign/assign.component.d.ts +0 -105
  409. package/lib/components/checklist-configure/checklist-configure.component.d.ts +0 -325
  410. package/lib/components/checklistlayout/checklistlayout.component.d.ts +0 -15
  411. package/lib/components/chip-dropdown/chip-dropdown.component.d.ts +0 -28
  412. package/lib/components/create-task/create-task.component.d.ts +0 -76
  413. package/lib/components/create-task/create-task.data.d.ts +0 -293
  414. package/lib/components/create-task/create-task.interface.d.ts +0 -163
  415. package/lib/components/create-task/validators/ascending-validator.d.ts +0 -2
  416. package/lib/components/create-task/validators/unique-string-validator.d.ts +0 -2
  417. package/lib/components/create-task/validators/whitespace-validator.d.ts +0 -2
  418. package/lib/components/custom-select/custom-select.component.d.ts +0 -35
  419. package/lib/components/dashboard/dashboard.component.d.ts +0 -80
  420. package/lib/components/dashboard-info/dashboard-info.component.d.ts +0 -117
  421. package/lib/components/dashboard-info/monthlyperformance-datepicker/monthlyperformance-datepicker.component.d.ts +0 -41
  422. package/lib/components/dashboard-layout/dashboard-layout.component.d.ts +0 -5
  423. package/lib/components/disabled-select/disabled-select.component.d.ts +0 -34
  424. package/lib/components/export-gallery/export-gallery.component.d.ts +0 -44
  425. package/lib/components/eye-test-audit/chip-dropdown/chip-dropdown.component.d.ts +0 -26
  426. package/lib/components/eye-test-audit/custom-select/custom-select.component.d.ts +0 -35
  427. package/lib/components/eye-test-audit/eye-test/eye-test.component.d.ts +0 -218
  428. package/lib/components/eye-test-audit/eye-test/send-alert/send-alert.component.d.ts +0 -12
  429. package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit-routing.module.d.ts +0 -7
  430. package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.component.d.ts +0 -11
  431. package/lib/components/eye-test-audit/eye-test-audit/eye-test-audit.module.d.ts +0 -21
  432. package/lib/components/eye-test-audit/eye-test-audit/settings-audit/settings-audit.component.d.ts +0 -129
  433. package/lib/components/eye-test-audit/eye-test-audit/start-audit/start-audit.component.d.ts +0 -86
  434. package/lib/components/eye-test-audit/group-select/group-select.component.d.ts +0 -33
  435. package/lib/components/eye-test-audit/reactive-select/reactive-select.component.d.ts +0 -32
  436. package/lib/components/eye-test-audit/select-drop/select-drop.component.d.ts +0 -33
  437. package/lib/components/eye-test-audit/services/eye-test-audit.service.d.ts +0 -47
  438. package/lib/components/flag-layout/flag-layout.component.d.ts +0 -5
  439. package/lib/components/flags/flags.component.d.ts +0 -52
  440. package/lib/components/flags-info/flags-info.component.d.ts +0 -73
  441. package/lib/components/flags-info/flags-info.interface.d.ts +0 -430
  442. package/lib/components/flags-info/unattended-pie-chart/unattended-pie-chart.component.d.ts +0 -13
  443. package/lib/components/flags-new/flags-new.component.d.ts +0 -60
  444. package/lib/components/gallery/gallery.component.d.ts +0 -261
  445. package/lib/components/group-select/group-select.component.d.ts +0 -33
  446. package/lib/components/image-popup/image-popup.component.d.ts +0 -11
  447. package/lib/components/lib/custom-select/custom-select.component.d.ts +0 -33
  448. package/lib/components/manage-task/manage-task.component.d.ts +0 -47
  449. package/lib/components/managechecklist/managechecklist.component.d.ts +0 -33
  450. package/lib/components/multi-chip-dropdown/multi-chip-dropdown.component.d.ts +0 -40
  451. package/lib/components/multi-date-datepicker/multi-date-datepicker.component.d.ts +0 -27
  452. package/lib/components/orders/orders.component.d.ts +0 -38
  453. package/lib/components/pagination/pagination.component.d.ts +0 -16
  454. package/lib/components/reactive-select/reactive-select.component.d.ts +0 -32
  455. package/lib/components/reports/date-picker/date-picker.component.d.ts +0 -23
  456. package/lib/components/reports/reports.component.d.ts +0 -55
  457. package/lib/components/tango-analyse-trax/tango-analyse-trax.component.d.ts +0 -14
  458. package/lib/components/task/task.component.d.ts +0 -70
  459. package/lib/components/task-configure/task-configure.component.d.ts +0 -142
  460. package/lib/components/task-configure/task-configure.interface.d.ts +0 -128
  461. package/lib/components/task-info/task-info.component.d.ts +0 -76
  462. package/lib/components/task-info/taskinfo-edit/taskinfo-edit.component.d.ts +0 -61
  463. package/lib/components/task-layout/task-layout.component.d.ts +0 -5
  464. package/lib/components/task-logs/task-logs.component.d.ts +0 -27
  465. package/lib/components/trax-run-ai-popup/trax-run-ai-popup.component.d.ts +0 -26
  466. package/lib/components/trax-store/trax-store.component.d.ts +0 -45
  467. package/lib/components/traxpopup/traxpopup.component.d.ts +0 -24
  468. package/lib/services/trax.service.d.ts +0 -175
  469. package/lib/tango-analyse-trax-routing.module.d.ts +0 -7
  470. package/lib/tango-analyse-trax.module.d.ts +0 -68
@@ -1,502 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { Subject, debounceTime, takeUntil } from "rxjs";
3
- import dayjs from 'dayjs';
4
- import utc from 'dayjs/plugin/utc';
5
- import { ViewActionComponent } from './log-view-popup/view-action/view-action.component';
6
- import relativeTime from 'dayjs/plugin/relativeTime';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/router";
9
- import * as i2 from "tango-app-ui-global";
10
- import * as i3 from "tango-app-ui-shared";
11
- import * as i4 from "../../services/trax.service";
12
- import * as i5 from "@ng-bootstrap/ng-bootstrap";
13
- import * as i6 from "@angular/common";
14
- import * as i7 from "@angular/forms";
15
- import * as i8 from "./log-view-popup/date-range-picker/date-range-picker.component";
16
- dayjs.extend(utc);
17
- dayjs.extend(relativeTime);
18
- dayjs.extend(utc);
19
- export class ActivityLogV2Component {
20
- route;
21
- router;
22
- gs;
23
- changeDetector;
24
- toast;
25
- TraxService;
26
- pageInfo;
27
- activatedRoute;
28
- modalService;
29
- dayjs = dayjs;
30
- destroy$ = new Subject();
31
- isExport = false;
32
- itemsPerPage = 10;
33
- currentPage = 1;
34
- totalItems = 0;
35
- paginationSizes = [];
36
- pageSize = 10;
37
- sortColumName = "";
38
- sortBy = "";
39
- sortDirection = "";
40
- searchInput = "";
41
- headerData;
42
- searchValue;
43
- limit;
44
- offset;
45
- searchDisabled = false;
46
- taskLoading = true;
47
- taskNoData = false;
48
- receivedData = "checklist";
49
- dataObject = [
50
- {
51
- Description: "Actions",
52
- Issues: [
53
- { text: "Created by", id: "created" },
54
- { text: "Updated by", id: "updated" },
55
- { text: "Saved as Draft", id: "draft" },
56
- { text: "Published by", id: "published" },
57
- { text: "Submitted by", id: "submit" },
58
- { text: "Started by", id: "start" },
59
- { text: "Approved by", id: "approved" },
60
- { text: "Redo Created by", id: "redo" },
61
- { text: "Subsequent Redo Created by", id: "multiredo" },
62
- { text: "Task Created by", id: "task_created" },
63
- // { text: 'Re-Opened by', id: 'reopened' },
64
- { text: "Edited by", id: "edited" },
65
- { text: "Unpublished by", id: "unpublished" },
66
- { text: "Deleted by", id: "deleted" },
67
- { text: "Duplicated by", id: "duplicated" },
68
- { text: "Reinitiated by", id: "reinitiated" },
69
- ],
70
- },
71
- // {
72
- // Description: 'Coverage',
73
- // Issues: [
74
- // { text: 'Checklist', id: 'checklist' },
75
- // ],
76
- // },
77
- ];
78
- activityLogTableData = [];
79
- type = "checklist";
80
- activityLogFilter = [];
81
- // reloadDate: string;
82
- sourceCheckList_id;
83
- checklistId;
84
- // coverageType: any = [];
85
- userEmailes = [];
86
- checklistName;
87
- editRequestData;
88
- isActivityLog = false;
89
- selectedDateRange = {
90
- startDate: dayjs().subtract(7, "days"),
91
- endDate: dayjs().subtract(1, "days"),
92
- };
93
- isCustomDate = (m) => {
94
- const isValidDate = m > this.dayjs();
95
- return isValidDate ? "invalid-date" : false;
96
- };
97
- selectedFilters = {
98
- client: null,
99
- clientName: null,
100
- clients: [],
101
- store: null,
102
- stores: [],
103
- // date: null,
104
- date: {
105
- startDate: dayjs().subtract(7, "days").format("YYYY-MM-DD"),
106
- endDate: dayjs().subtract(1, "days").format("YYYY-MM-DD"),
107
- },
108
- group: [],
109
- location: [],
110
- };
111
- count = 0;
112
- constructor(route, router, gs, changeDetector, toast, TraxService, pageInfo, activatedRoute, modalService) {
113
- this.route = route;
114
- this.router = router;
115
- this.gs = gs;
116
- this.changeDetector = changeDetector;
117
- this.toast = toast;
118
- this.TraxService = TraxService;
119
- this.pageInfo = pageInfo;
120
- this.activatedRoute = activatedRoute;
121
- this.modalService = modalService;
122
- this.userEmailes = JSON.parse(localStorage.getItem("usersEmail-info") || "[]");
123
- }
124
- ngOnDestroy() {
125
- this.destroy$.next(true);
126
- this.destroy$.complete();
127
- }
128
- ngOnInit() {
129
- this.gs.dataRangeValue
130
- .pipe(takeUntil(this.destroy$), debounceTime(300))
131
- .subscribe((data) => {
132
- this.itemsPerPage = 10;
133
- this.pageSize = 10;
134
- this.headerData = data;
135
- this.currentPage = 1;
136
- this.setPageData();
137
- this.getActivityLogTableData();
138
- setTimeout(() => {
139
- this.count++;
140
- });
141
- // this.applyFilters([{ Description: 'Coverage', Issues: [{ text: this.coverageType[0], id: this.coverageType[0], checked: true}] }]);
142
- });
143
- }
144
- setPageData() {
145
- this.pageInfo.setTitle("Dashboard");
146
- this.pageInfo.setBreadcrumbs([
147
- {
148
- title: "Tango Trax",
149
- path: "/manage/trax/dashboard",
150
- isActive: false,
151
- isSeparator: false,
152
- },
153
- {
154
- title: "Tango Trax",
155
- path: "/manage/trax/dashboard",
156
- isActive: false,
157
- isSeparator: true,
158
- },
159
- ]);
160
- }
161
- getActivityLogTableData() {
162
- this.isActivityLog = true;
163
- this.changeDetector.detectChanges(); // Force UI update
164
- this.searchDisabled = true;
165
- this.taskLoading = true;
166
- this.taskNoData = true;
167
- const requestData = {
168
- fromDate: this.selectedFilters?.date?.startDate,
169
- toDate: this.selectedFilters?.date?.endDate,
170
- storeId: this.headerData?.stores
171
- .filter((store) => store.checked)
172
- .map((store) => store.storeId),
173
- clientId: this.headerData.client,
174
- limit: this.itemsPerPage,
175
- offset: this.currentPage - 1,
176
- sortBy: this.sortDirection,
177
- sortColumnName: this.sortColumName,
178
- searchValue: this.searchInput,
179
- action: this.activityLogFilter,
180
- type: this.receivedData,
181
- userEmailes: this.userEmailes,
182
- // checkListName:this.checklistName,
183
- // "checkListName": "daily store checklist111",
184
- // "type": "checklist",
185
- // "action": ["created"],
186
- // "limit": 5,
187
- // "offset": 0,
188
- // "sortBy": "",
189
- // "sortColumnName": "",
190
- // "searchValue": "Daily store checklist New"
191
- };
192
- this.TraxService.activityLogList(requestData)
193
- .pipe(takeUntil(this.destroy$))
194
- .subscribe((response) => {
195
- this.taskLoading = false;
196
- if (response?.code === 200 && response?.status === "success") {
197
- this.activityLogTableData = response.data.result || [];
198
- this.totalItems = response.data.count;
199
- this.setPaginationSizes();
200
- this.taskLoading = false;
201
- this.taskNoData = false;
202
- this.searchDisabled = false;
203
- }
204
- else {
205
- this.activityLogTableData = [];
206
- this.taskLoading = false;
207
- this.taskNoData = true;
208
- this.searchDisabled = true;
209
- if (this.searchInput?.length) {
210
- this.searchDisabled = true;
211
- }
212
- this.activityLogTableData = [];
213
- this.totalItems = 0;
214
- this.changeDetector.detectChanges();
215
- }
216
- }, (error) => {
217
- this.activityLogTableData = [];
218
- this.changeDetector.detectChanges();
219
- });
220
- this.sourceCheckList_id = "";
221
- }
222
- // removeQueryParams() {
223
- // const urlWithoutParams = this.location.path().split('?')[0];
224
- // this.location.replaceState(urlWithoutParams);
225
- // }
226
- setPaginationSizes() {
227
- if (this.totalItems > 10) {
228
- if (this.pageSize > 10) {
229
- this.paginationSizes = [10, 20, 30];
230
- }
231
- else {
232
- this.paginationSizes = [10, 20, 30];
233
- this.pageSize = 10;
234
- }
235
- }
236
- else {
237
- this.paginationSizes = [this.totalItems];
238
- this.pageSize = this.totalItems;
239
- }
240
- }
241
- onExport() {
242
- this.currentPage = 1;
243
- const requestData = {
244
- fromDate: this.headerData.date.startDate,
245
- toDate: this.headerData.date.endDate,
246
- storeId: this.headerData.stores
247
- .filter((store) => store.checked)
248
- .map((store) => store.storeId),
249
- userEmailes: this.userEmailes,
250
- clientId: this.headerData.client,
251
- limit: 10000,
252
- offset: 0,
253
- sortBy: this.sortDirection,
254
- sortColumnName: this.sortColumName,
255
- searchValue: this.searchInput,
256
- export: true,
257
- filter: this.activityLogFilter,
258
- // coverage: this.coverageType || []
259
- };
260
- this.TraxService.getTaskTableDataExport(requestData)
261
- .pipe(takeUntil(this.destroy$))
262
- .subscribe({
263
- next: (res) => {
264
- this.TraxService.saveAsExcelFile(res, "TaskTable");
265
- },
266
- error: (e) => {
267
- this.toast.getErrorToast("Something went Wrong..");
268
- },
269
- });
270
- }
271
- searchField() {
272
- this.headerData.searchValue = this.searchInput;
273
- this.headerData.export = false;
274
- this.currentPage = 1;
275
- this.pageSize = 10;
276
- this.getActivityLogTableData();
277
- }
278
- sortData(column) {
279
- if (this.sortColumName === column) {
280
- this.sortDirection = this.sortDirection === 1 ? -1 : 1;
281
- }
282
- else {
283
- this.sortColumName = column;
284
- this.sortDirection = 1;
285
- }
286
- this.getActivityLogTableData();
287
- }
288
- onPageSizeChange(pageSize) {
289
- this.currentPage = 1;
290
- this.itemsPerPage = parseInt(pageSize);
291
- this.pageSize = parseInt(pageSize);
292
- this.changeDetector.detectChanges();
293
- this.getActivityLogTableData();
294
- }
295
- onPageChange(pageOffset) {
296
- this.currentPage = pageOffset;
297
- this.getActivityLogTableData();
298
- }
299
- applyFilters(event) {
300
- if (event?.length) {
301
- event.forEach((element) => {
302
- if (element.Description === "Actions") {
303
- this.activityLogFilter = element.Issues.map((val) => val.id);
304
- }
305
- });
306
- }
307
- else {
308
- // this.dataObject.forEach((category: any) => {
309
- // category.Issues.forEach((issue: any) => {
310
- // issue.checked = true;
311
- // });
312
- // });
313
- // const actionsFilter = this.dataObject.find((item: any) => item.Description === 'Actions');
314
- // this.activityLogFilter = actionsFilter ? actionsFilter.Issues.map((val: any) => val.id) : [];
315
- this.activityLogFilter = [];
316
- }
317
- this.getActivityLogTableData();
318
- }
319
- selectPlan(selectedType) {
320
- this.type = selectedType;
321
- }
322
- // navigateToTaskConfig(task: any): void {
323
- // this.router.navigate(['manage/trax/task-configure'], { queryParams: {taskId:task._id} })
324
- // }
325
- // navigateToTaskEdit(task: any): void {
326
- // this.router.navigate(['manage/trax/create-task'], { queryParams: {id:task._id} })
327
- // }
328
- dateFormat(date) {
329
- return this.dayjs.utc(date).format("DD MMM YYYY");
330
- }
331
- Selecttabs(tab) {
332
- this.receivedData = tab;
333
- // this.router.navigate([], {
334
- // queryParams: { type: tab },
335
- // queryParamsHandling: 'merge'
336
- // });
337
- this.getActivityLogTableData();
338
- }
339
- viewAction(log) {
340
- let modalSize = log.action === "updated" || log.action === "draft"
341
- ? "xl"
342
- : log.action === "edited"
343
- ? "lg"
344
- : "md";
345
- const modalRef = this.modalService.open(ViewActionComponent, {
346
- centered: true,
347
- size: modalSize,
348
- scrollable: true,
349
- });
350
- modalRef.componentInstance.logDetails = log.logDetails;
351
- modalRef.componentInstance.checkListName = log.checkListName;
352
- modalRef.componentInstance.storeName = log.storeName;
353
- modalRef.componentInstance.actionType = log.action;
354
- modalRef.componentInstance.receivedData = this.receivedData;
355
- modalRef.result.then(() => {
356
- this.getActivityLogTableData();
357
- });
358
- }
359
- isLogDetailsEmpty(logDetails) {
360
- return (!logDetails ||
361
- Object.keys(logDetails).every((key) => {
362
- const value = logDetails[key];
363
- if (Array.isArray(value))
364
- return value.length === 0;
365
- if (typeof value === "object")
366
- return this.isLogDetailsEmpty(value);
367
- return !value;
368
- }));
369
- }
370
- formatDateTime(dateString) {
371
- if (!dateString)
372
- return "--";
373
- const date = dayjs.utc(dateString).local();
374
- const now = dayjs();
375
- let formattedDate = "";
376
- if (date.isSame(now, "day")) {
377
- formattedDate = "Today";
378
- }
379
- else if (date.isSame(now.subtract(1, "day"), "day")) {
380
- formattedDate = "Yesterday";
381
- }
382
- else {
383
- formattedDate = date.format("MMM D, YYYY");
384
- }
385
- return `${formattedDate} <br> ${date.format("hh : mm A")}`;
386
- }
387
- getActionBadgeClass(action) {
388
- const actionClasses = {
389
- created: "badge-light-default",
390
- updated: "badge-light-primary1",
391
- draft: "badge-light-default",
392
- published: "badge-light-primary1",
393
- submit: "badge-light-primary1",
394
- start: "badge-light-primary1",
395
- approved: "badge-light-success",
396
- redo: "badge-light-warning",
397
- multiredo: "badge-light-warning",
398
- task_created: "badge-light-default",
399
- // reopened: 'badge-light-default',
400
- edited: "badge-light-warning",
401
- unpublished: "badge-light-primary1",
402
- deleted: "badge-light-delete",
403
- duplicated: "badge-light-default",
404
- reinitiated: "badge-light-warning",
405
- };
406
- return actionClasses[action] || "badge-light-default";
407
- }
408
- getActionLabel(action) {
409
- const actionLabels = {
410
- created: "Created by",
411
- updated: "Updated by",
412
- draft: "Saved as Draft",
413
- published: "Published by",
414
- submit: "Submitted by",
415
- start: "Started by",
416
- approved: "Approved by",
417
- redo: "Redo Created by",
418
- multiredo: "Subsequent Redo Created by",
419
- task_created: "Task Created by",
420
- // reopened: 'Re-opened by',
421
- edited: "Edited by",
422
- unpublished: "Unpublished by",
423
- deleted: "Deleted by",
424
- duplicated: "Duplicated by",
425
- reinitiated: "Reinitiated by",
426
- };
427
- return actionLabels[action] || action;
428
- }
429
- navigateToGallery(log) {
430
- let formattedDate = dayjs(log.createAt).format("YYYY-MM-DD");
431
- let checklistType;
432
- if (log.checkListType === "custom") {
433
- checklistType = "custom";
434
- }
435
- else if (["task", "checklistTask", "cctv"].includes(log.type)) {
436
- checklistType = "task";
437
- }
438
- else {
439
- checklistType = log.type || "--";
440
- }
441
- let queryParams = {};
442
- if (log.store_id && log.store_id != "") {
443
- queryParams = {
444
- ChecklistDate: formattedDate,
445
- storeId: log.store_id,
446
- checklistType: checklistType,
447
- sourceCheckList_id: log.sourceCheckList_id,
448
- };
449
- }
450
- else {
451
- queryParams = {
452
- ChecklistDate: formattedDate,
453
- userEmail: log.userEmail,
454
- checklistType: checklistType,
455
- sourceCheckList_id: log.sourceCheckList_id,
456
- };
457
- }
458
- if (log.redoStatus) {
459
- queryParams.redoStatus = true;
460
- }
461
- this.router.navigate(["/manage/trax/gallery"], { queryParams });
462
- }
463
- datechange(event) {
464
- if (event && event.startDate && event.endDate) {
465
- this.selectedDateRange = {
466
- startDate: event.startDate,
467
- endDate: event.endDate,
468
- };
469
- this.selectedFilters.date = {
470
- startDate: event.startDate,
471
- endDate: event.endDate,
472
- };
473
- // localStorage.setItem("header-filters", JSON.stringify(this.selectedFilters));
474
- // this.resetValidation();
475
- // this.gs.dataRangeValue.next(this.selectedFilters);
476
- // Reset the picker to force re-render
477
- this.isActivityLog = false;
478
- this.changeDetector.detectChanges();
479
- // setTimeout(() => {
480
- // this.isActivityLog = true;
481
- // this.changeDetector.detectChanges();
482
- // }, 10);
483
- // Call API
484
- this.getActivityLogTableData();
485
- }
486
- else {
487
- }
488
- }
489
- resetValidation() {
490
- this.isCustomDate = (m) => {
491
- // Check if the given date is before yesterday
492
- return m.isAfter(this.dayjs(), "day") ? "invalid-date" : false;
493
- };
494
- }
495
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.ToastService }, { token: i4.TraxService }, { token: i2.PageInfoService }, { token: i1.ActivatedRoute }, { token: i5.NgbModal }], target: i0.ɵɵFactoryTarget.Component });
496
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ActivityLogV2Component, selector: "lib-activity-log-v2", ngImport: i0, template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.coverage === 'store' || (!log._source?.coverage && log._source?.storeName) \"><span class=\"me-3\" *ngIf=\"log._source?.storeName\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></span>\r\n <span *ngIf=\"log._source?.coverage === 'user' || (!log._source?.coverage && log._source?.userEmail)\">\r\n <span class=\"me-3\" *ngIf=\"log._source?.userEmail\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source?.userEmail || '-'}}</span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i3.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value"], outputs: ["dateChange"] }] });
497
- }
498
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ActivityLogV2Component, decorators: [{
499
- type: Component,
500
- args: [{ selector: "lib-activity-log-v2", template: "<div class=\"col-lg-12 mt-4\">\r\n <div class=\"card\">\r\n <div class=\"card-header border-0 pt-3\">\r\n <h3 class=\"card-title align-items-start flex-column\">\r\n <span class=\"card-label mb-2\">Activity Log </span>\r\n </h3>\r\n <div class=\"card-toolbar\">\r\n <div class=\"d-flex\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <span class=\"svg-icon footfallsearch svg-icon-1 position-absolute ms-8\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <rect opacity=\"0.5\" x=\"17.0365\" y=\"15.1223\" width=\"8.15546\" height=\"2\" rx=\"1\"\r\n transform=\"rotate(45 17.0365 15.1223)\" fill=\"currentColor\">\r\n </rect>\r\n <path\r\n d=\"M11 19C6.55556 19 3 15.4444 3 11C3 6.55556 6.55556 3 11 3C15.4444 3 19 6.55556 19 11C19 15.4444 15.4444 19 11 19ZM11 5C7.53333 5 5 7.53333 5 11C5 14.4667 7.53333 17 11 17C14.4667 17 17 14.4667 17 11C17 7.53333 14.4667 5 11 5Z\"\r\n fill=\"currentColor\"></path>\r\n </svg>\r\n </span>\r\n <input *ngIf=\"receivedData === 'checklist'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Checklist\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <input *ngIf=\"receivedData === 'task'\" [(ngModel)]=\"searchInput\" type=\"text\" class=\"form-control ps-14 mx-2 logsearch\"\r\n placeholder=\"Search with Store, Email, Task\" autocomplete=\"off\" (keyup.enter)=\"searchField()\" />\r\n <!-- datepicker start -->\r\n <lib-date-range-picker (dateChange)=\"datechange($event)\" [value]=\"count\"></lib-date-range-picker>\r\n <!-- datepicker end -->\r\n <lib-filters [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex overflow-auto mb-2 mx-4\">\r\n <ul\r\n class=\"nav nav-stretch nav-line-tabs1 nav-line-tabs-2x justify-content-center align-items-center border-transparent flex-nowrap\">\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('checklist')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'checklist' }\">\r\n <a [ngClass]=\"receivedData === 'checklist'?'btn activebtn':''\" class=\"fw-semibold nav-link me-6\">\r\n Checklist\r\n </a>\r\n </li>\r\n <li class=\"nav-item cursor-pointer\" (click)=\"Selecttabs('task')\" [routerLink]=\"['/manage/trax/actioncenter']\" [queryParams]=\"{ type: 'task' }\">\r\n <a [ngClass]=\"receivedData === 'task' || receivedData === 'Group Details Value'? 'btn activebtn':''\"\r\n class=\"nav-link me-6\">Task\r\n </a>\r\n </li>\r\n </ul>\r\n <!-- <lib-view-action [receivedData]=\"receivedData\"></lib-view-action> -->\r\n </div>\r\n <div class=\"card-body p-0\">\r\n <div class=\"table-responsive\">\r\n <table *ngIf=\"!taskLoading && !taskNoData\" class=\"table text-nowrap bottom-border\">\r\n <thead>\r\n <tr>\r\n <th class=\"cursor-pointer\" (click)=\"sortData('datetime')\">Date & Time<svg\r\n [ngClass]=\"sortColumName === 'datetime' && sortDirection === 1 ? 'rotate' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"\r\n fill=\"none\">\r\n <path\r\n d=\"M8.00016 3.33337V12.6667M8.00016 12.6667L12.6668 8.00004M8.00016 12.6667L3.3335 8.00004\"\r\n [attr.stroke]=\"sortColumName === 'datetime' ? '#00A3FF' : '#667085'\"\r\n stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </th>\r\n \r\n <th *ngIf=\"receivedData === 'checklist'\">Checklist Name</th>\r\n <th *ngIf=\"receivedData === 'task'\">Task Name</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n \r\n <tr *ngFor=\"let log of activityLogTableData\">\r\n <td>\r\n <span class=\"table-title\" [innerHTML]=\"formatDateTime(log._source.createAt)\"></span>\r\n\r\n </td>\r\n <td>\r\n <div *ngIf=\"!(log._source.type === 'task' && log._source.fromCheckListName)\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }}\r\n </span>\r\n </div>\r\n <div *ngIf=\"log._source.type === 'task' && log._source.fromCheckListName\">\r\n <span class=\"table-title me-2\">\r\n {{ log._source.checkListName || '--' }} <br>\r\n <span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M11.6654 7.50016L7.4987 3.3335M7.4987 3.3335L3.33203 7.50016M7.4987 3.3335V13.3335C7.4987 14.2176 7.84989 15.0654 8.47501 15.6905C9.10013 16.3156 9.94798 16.6668 10.832 16.6668H16.6654\" stroke=\"#667085\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span class=\"mx-2\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"23\" height=\"23\" viewBox=\"0 0 23 23\" fill=\"none\">\r\n <path d=\"M8.41448 4.52303C8.69518 4.80371 8.69518 5.2588 8.41448 5.53948L5.53948 8.41448C5.2588 8.69518 4.80371 8.69518 4.52303 8.41448L3.08553 6.97698C2.80482 6.6963 2.80482 6.24121 3.08553 5.96053C3.36621 5.67982 3.8213 5.67982 4.10198 5.96053L5.03125 6.88978L7.39803 4.52303C7.67871 4.24232 8.1338 4.24232 8.41448 4.52303Z\" fill=\"#667085\"/>\r\n <path d=\"M8.41448 11.7105C8.69518 11.9912 8.69518 12.4463 8.41448 12.727L5.53948 15.602C5.2588 15.8826 4.80371 15.8826 4.52303 15.602L3.08553 14.1645C2.80482 13.8838 2.80482 13.4287 3.08553 13.1479C3.36621 12.8673 3.8213 12.8673 4.10198 13.1479L5.03125 14.0773L7.39803 11.7105C7.67871 11.4299 8.1338 11.4299 8.41448 11.7105Z\" fill=\"#667085\"/>\r\n <path d=\"M10.0625 6.46875C10.0625 6.0718 10.3844 5.75 10.7812 5.75H15.0938C15.4906 5.75 15.8125 6.0718 15.8125 6.46875C15.8125 6.8657 15.4906 7.1875 15.0938 7.1875H10.7812C10.3844 7.1875 10.0625 6.8657 10.0625 6.46875Z\" fill=\"#667085\"/>\r\n <path d=\"M3.59375 0C1.60898 0 0 1.60898 0 3.59375V16.5312C0 18.516 1.60898 20.125 3.59375 20.125H9.48708C9.25429 19.6696 9.06436 19.1886 8.92261 18.6875H3.59375C2.40288 18.6875 1.4375 17.7221 1.4375 16.5312V3.59375C1.4375 2.40288 2.40288 1.4375 3.59375 1.4375H16.5312C17.7221 1.4375 18.6875 2.40288 18.6875 3.59375V8.92261C19.1886 9.06436 19.6696 9.25429 20.125 9.48708V3.59375C20.125 1.60898 18.516 0 16.5312 0H3.59375Z\" fill=\"#667085\"/>\r\n <path d=\"M16.5313 23C20.1039 23 23 20.1039 23 16.5313C23 12.9586 20.1039 10.0625 16.5313 10.0625C12.9586 10.0625 10.0625 12.9586 10.0625 16.5313C10.0625 20.1039 12.9586 23 16.5313 23ZM16.5313 12.9375C16.9281 12.9375 17.25 13.2594 17.25 13.6563V15.8125H19.4063C19.8031 15.8125 20.125 16.1344 20.125 16.5313C20.125 16.9281 19.8031 17.25 19.4063 17.25H17.25V19.4063C17.25 19.8031 16.9281 20.125 16.5313 20.125C16.1344 20.125 15.8125 19.8031 15.8125 19.4063V17.25H13.6563C13.2594 17.25 12.9375 16.9281 12.9375 16.5313C12.9375 16.1344 13.2594 15.8125 13.6563 15.8125H15.8125V13.6563C15.8125 13.2594 16.1344 12.9375 16.5313 12.9375Z\" fill=\"#667085\"/>\r\n </svg></span><span class=\"table-title\"> {{ log._source.fromCheckListName || '--' }} </span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <span class=\"table-title badge-light\" [ngClass]=\"getActionBadgeClass(log._source.action)\">\r\n {{ getActionLabel(log._source.action) }}\r\n </span>\r\n </div>\r\n \r\n </td> \r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span class=\"me-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source.createdByEmail }}</span></div>\r\n </td>\r\n <td>\r\n <div \r\n class=\"table-title d-flex\"><span *ngIf=\"log._source?.coverage === 'store' || (!log._source?.coverage && log._source?.storeName) \"><span class=\"me-3\" *ngIf=\"log._source?.storeName\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M2.67893 5.80366L2.62568 5.88683C2.06764 6.87388 2.66347 8.1213 3.73508 8.2644C3.83217 8.27627 3.92251 8.28255 4.01078 8.28255C4.58893 8.28255 5.1001 8.03453 5.45637 7.6478L6.0097 7.04718L6.56116 7.64953C6.9131 8.03395 7.42311 8.28255 8.00517 8.28255C8.58461 8.28255 9.09755 8.0336 9.44917 7.64953L10.0024 7.04529L10.5555 7.64953C10.9072 8.0336 11.4201 8.28255 11.9996 8.28255C12.579 8.28255 13.0919 8.0336 13.4436 7.64953L13.9967 7.04529L14.5499 7.64953C14.9016 8.0336 15.4145 8.28255 15.9939 8.28255C16.0793 8.28255 16.1724 8.27625 16.2688 8.2645C17.3639 8.11518 17.9618 6.80091 17.323 5.80416C17.323 5.8041 17.323 5.80405 17.3229 5.80399L15.5648 3.06258L15.5648 3.06258L15.5638 3.06111C15.5486 3.03728 15.5112 3.01172 15.464 3.01172H4.53458C4.48744 3.01172 4.44995 3.03728 4.43474 3.06111L4.43413 3.06208L2.67893 5.80366ZM15.6504 10.7369V13.8689V14.6189H14.9004H5.09821H4.34821V13.8689V10.7374C4.23798 10.7456 4.12646 10.7498 4.01384 10.7498C3.97154 10.7498 3.92952 10.7492 3.88778 10.748V13.8689V15.8034C3.88778 16.4468 4.42168 16.9879 5.09821 16.9879H14.9004C15.5769 16.9879 16.1108 16.4468 16.1108 15.8034V13.8689V10.7482C16.071 10.7493 16.031 10.7498 15.9909 10.7498C15.8765 10.7498 15.7629 10.7455 15.6504 10.7369Z\" stroke=\"#667085\" stroke-width=\"1.5\"/>\r\n </svg></span><span>{{ log._source.storeName || '-' }}</span></span>\r\n <span *ngIf=\"log._source?.coverage === 'user' || (!log._source?.coverage && log._source?.userEmail)\">\r\n <span class=\"me-3\" *ngIf=\"log._source?.userEmail\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\" stroke=\"#667085\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></span><span>{{ log._source?.userEmail || '-'}}</span>\r\n </span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"table-title\">\r\n <!-- \"['updated', 'edited', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"['updated', 'edited'].includes(log._source.action) || (log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\"\r\n (click)=\"viewAction(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <span *ngIf=\"log._source.action === 'submit'\"\r\n (click)=\"navigateToGallery(log._source)\" \r\n class=\"text-primary cursor-pointer\">\r\n <u>View</u>\r\n </span>\r\n <!-- *ngIf=\"!['updated', 'edited', 'submit', 'draft'].includes(log._source.action)\" -->\r\n <span *ngIf=\"!['updated', 'edited', 'submit'].includes(log._source.action) && !(log._source.action === 'draft' && log._source.logDetails && !isLogDetailsEmpty(log._source.logDetails))\">-</span>\r\n </div>\r\n </td>\r\n \r\n \r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <ng-container *ngIf=\"taskLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"taskNoData && !taskLoading\">\r\n <div class=\"row\">\r\n <div class=\"col-lg-12 my-6\">\r\n <div class=\"card-body d-flex justify-content-center align-items-center flex-column\">\r\n <img class=\"img-src\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"nodatamaintext mt-3\">No data found</div>\r\n <div class=\"nodatasubtext\">There is no result for Activity Log</div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </div>\r\n <div *ngIf=\"!taskLoading && !taskNoData\">\r\n <lib-pagination class=\"text-start\" [itemsPerPage]=\"itemsPerPage\" [currentPage]=\"currentPage\"\r\n [totalItems]=\"totalItems\" [paginationSizes]=\"paginationSizes\" [pageSize]=\"pageSize\"\r\n (pageChange)=\"onPageChange($event)\"\r\n (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </div>\r\n</div>\r\n</div>", styles: [".table-title{color:var(--Gray-500, #667085);font-size:14px;font-style:normal;font-weight:500;line-height:20px}.table-title-primary{color:var(--Primary-700, #009BF3)!important;font-size:14px;font-style:normal;font-weight:500;line-height:20px;text-decoration-line:underline}.card .card-header{padding:0px 1.5rem}.nav-item .nav-link{color:var(--Gray-500, #667085);font-size:16px;font-weight:500}.activebtn{color:var(--Primary-700, #009BF3)!important;border-radius:6px!important;background:var(--Primary-50, #EAF8FF)!important;font-size:16px!important;font-weight:500!important}.daterange{color:var(--Gray-500, #667085);font-size:16px;font-style:normal;font-weight:600;line-height:24px}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.rotate{transform:rotate(180deg)}.logsearch{width:370px}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.badge-light{display:flex;padding:8px 16px;justify-content:center;align-items:center;flex:1 0 0;border-radius:16px;opacity:.8;font-weight:500;width:70%}.badge-light-default{background:var(--Gray-100, #F2F4F7);color:var(--Gray-700, #344054)}.badge-light-primary1{background:var(--Blue-50, #EFF8FF);color:var(--Blue-700, #175CD3)}.badge-light-success{background:var(--Success-50, #ECFDF3);color:var(--Success-700, #027A48)}.badge-light-warning{background:var(--Warning-50, #FFFAEB);color:var(--Warning-700, #B54708)}.badge-light-delete{background:var(--Error-50, #FEF3F2);color:var(----Error-700, #B42318)}\n"] }]
501
- }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.ToastService }, { type: i4.TraxService }, { type: i2.PageInfoService }, { type: i1.ActivatedRoute }, { type: i5.NgbModal }] });
502
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9nLXYyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLWFuYWx5c2UtdHJheC9zcmMvbGliL2NvbXBvbmVudHMvYWN0aXZpdHktbG9nLXYyL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FjdGl2aXR5LWxvZy12Mi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBS2hGLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFnQyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBSW5DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3pGLE9BQU8sWUFBWSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7O0FBSnJELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFNbEIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUMzQixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBU2xCLE1BQU0sT0FBTyxzQkFBc0I7SUF3RnZCO0lBQ0E7SUFDRDtJQUNDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDRDtJQS9GVCxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ04sUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDakMsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLFdBQVcs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RCxzQ0FBc0M7WUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUVwQyxxQkFBcUI7WUFDckIsK0JBQStCO1lBQy9CLHlDQUF5QztZQUN6QyxVQUFVO1lBRVYsV0FBVztZQUNYLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO2FBQU07U0FDTjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQWMsRUFBRSxFQUFFO1lBQ3JDLDhDQUE4QztZQUM5QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNqRSxDQUFDLENBQUM7SUFDSixDQUFDO3dHQTNlVSxzQkFBc0I7NEZBQXRCLHNCQUFzQiwyREN4Qm5DLHMwaEJBNExNOzs0RkRwS08sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IEdsb2JhbFN0YXRlU2VydmljZSwgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tICdkYXlqcyc7XHJcbmltcG9ydCB1dGMgZnJvbSAnZGF5anMvcGx1Z2luL3V0Yyc7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5pbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBWaWV3QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9sb2ctdmlldy1wb3B1cC92aWV3LWFjdGlvbi92aWV3LWFjdGlvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgcmVsYXRpdmVUaW1lIGZyb20gJ2RheWpzL3BsdWdpbi9yZWxhdGl2ZVRpbWUnO1xyXG5cclxuZGF5anMuZXh0ZW5kKHJlbGF0aXZlVGltZSk7XHJcbmRheWpzLmV4dGVuZCh1dGMpO1xyXG5cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJsaWItYWN0aXZpdHktbG9nLXYyXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hY3Rpdml0eS1sb2ctdjIuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL2FjdGl2aXR5LWxvZy12Mi5jb21wb25lbnQuc2Nzc1wiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aXZpdHlMb2dWMkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0IHtcclxuICBkYXlqcyA9IGRheWpzO1xyXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGlzRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgY3VycmVudFBhZ2UgPSAxO1xyXG4gIHRvdGFsSXRlbXMgPSAwO1xyXG4gIHBhZ2luYXRpb25TaXplczogYW55W10gPSBbXTtcclxuICBwYWdlU2l6ZSA9IDEwO1xyXG4gIHNvcnRDb2x1bU5hbWU6IHN0cmluZyA9IFwiXCI7XHJcbiAgc29ydEJ5OiBhbnkgPSBcIlwiO1xyXG4gIHNvcnREaXJlY3Rpb246IGFueSA9IFwiXCI7XHJcbiAgc2VhcmNoSW5wdXQ6IGFueSA9IFwiXCI7XHJcbiAgaGVhZGVyRGF0YTogYW55O1xyXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XHJcbiAgbGltaXQ6IG51bWJlcjtcclxuICBvZmZzZXQ6IG51bWJlcjtcclxuICBzZWFyY2hEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRhc2tMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICB0YXNrTm9EYXRhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcmVjZWl2ZWREYXRhOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgRGVzY3JpcHRpb246IFwiQWN0aW9uc1wiLFxyXG4gICAgICBJc3N1ZXM6IFtcclxuICAgICAgICB7IHRleHQ6IFwiQ3JlYXRlZCBieVwiLCBpZDogXCJjcmVhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiVXBkYXRlZCBieVwiLCBpZDogXCJ1cGRhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU2F2ZWQgYXMgRHJhZnRcIiwgaWQ6IFwiZHJhZnRcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJQdWJsaXNoZWQgYnlcIiwgaWQ6IFwicHVibGlzaGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU3VibWl0dGVkIGJ5XCIsIGlkOiBcInN1Ym1pdFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlN0YXJ0ZWQgYnlcIiwgaWQ6IFwic3RhcnRcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJBcHByb3ZlZCBieVwiLCBpZDogXCJhcHByb3ZlZFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlJlZG8gQ3JlYXRlZCBieVwiLCBpZDogXCJyZWRvXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiU3Vic2VxdWVudCBSZWRvIENyZWF0ZWQgYnlcIiwgaWQ6IFwibXVsdGlyZWRvXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiVGFzayBDcmVhdGVkIGJ5XCIsIGlkOiBcInRhc2tfY3JlYXRlZFwiIH0sXHJcbiAgICAgICAgLy8geyB0ZXh0OiAnUmUtT3BlbmVkIGJ5JywgaWQ6ICdyZW9wZW5lZCcgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRWRpdGVkIGJ5XCIsIGlkOiBcImVkaXRlZFwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIlVucHVibGlzaGVkIGJ5XCIsIGlkOiBcInVucHVibGlzaGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRGVsZXRlZCBieVwiLCBpZDogXCJkZWxldGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRHVwbGljYXRlZCBieVwiLCBpZDogXCJkdXBsaWNhdGVkXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiUmVpbml0aWF0ZWQgYnlcIiwgaWQ6IFwicmVpbml0aWF0ZWRcIiB9LFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246ICdDb3ZlcmFnZScsXHJcbiAgICAvLyAgIElzc3VlczogW1xyXG4gICAgLy8gICAgIHsgdGV4dDogJ0NoZWNrbGlzdCcsIGlkOiAnY2hlY2tsaXN0JyB9LFxyXG5cclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuICBhY3Rpdml0eUxvZ1RhYmxlRGF0YTogYW55W10gPSBbXTtcclxuICB0eXBlOiBzdHJpbmcgPSBcImNoZWNrbGlzdFwiO1xyXG4gIGFjdGl2aXR5TG9nRmlsdGVyOiBhbnkgPSBbXTtcclxuICAvLyByZWxvYWREYXRlOiBzdHJpbmc7XHJcbiAgc291cmNlQ2hlY2tMaXN0X2lkOiBhbnk7XHJcbiAgY2hlY2tsaXN0SWQ6IGFueTtcclxuICAvLyBjb3ZlcmFnZVR5cGU6IGFueSA9IFtdO1xyXG4gIHVzZXJFbWFpbGVzOiBhbnkgPSBbXTtcclxuICBjaGVja2xpc3ROYW1lOiBhbnk7XHJcbiAgZWRpdFJlcXVlc3REYXRhOiBhbnk7XHJcbiAgaXNBY3Rpdml0eUxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzZWxlY3RlZERhdGVSYW5nZTogYW55ID0ge1xyXG4gICAgc3RhcnREYXRlOiBkYXlqcygpLnN1YnRyYWN0KDcsIFwiZGF5c1wiKSxcclxuICAgIGVuZERhdGU6IGRheWpzKCkuc3VidHJhY3QoMSwgXCJkYXlzXCIpLFxyXG4gIH07XHJcbiAgaXNDdXN0b21EYXRlID0gKG06IGRheWpzLkRheWpzKSA9PiB7XHJcbiAgICBjb25zdCBpc1ZhbGlkRGF0ZSA9IG0gPiB0aGlzLmRheWpzKCk7XHJcbiAgICByZXR1cm4gaXNWYWxpZERhdGUgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgfTtcclxuICBzZWxlY3RlZEZpbHRlcnM6IGFueSA9IHtcclxuICAgIGNsaWVudDogbnVsbCxcclxuICAgIGNsaWVudE5hbWU6IG51bGwsXHJcbiAgICBjbGllbnRzOiBbXSxcclxuICAgIHN0b3JlOiBudWxsLFxyXG4gICAgc3RvcmVzOiBbXSxcclxuICAgIC8vIGRhdGU6IG51bGwsXHJcbiAgICBkYXRlOiB7XHJcbiAgICAgIHN0YXJ0RGF0ZTogZGF5anMoKS5zdWJ0cmFjdCg3LCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgICAgZW5kRGF0ZTogZGF5anMoKS5zdWJ0cmFjdCgxLCBcImRheXNcIikuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKSxcclxuICAgIH0sXHJcbiAgICBncm91cDogW10sXHJcbiAgICBsb2NhdGlvbjogW10sXHJcbiAgfTtcclxuICBjb3VudDogbnVtYmVyID0gMDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBUcmF4U2VydmljZTogVHJheFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHBhZ2VJbmZvOiBQYWdlSW5mb1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsXHJcbiAgKSB7XHJcbiAgICB0aGlzLnVzZXJFbWFpbGVzID0gSlNPTi5wYXJzZShcclxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ1c2Vyc0VtYWlsLWluZm9cIikgfHwgXCJbXVwiXHJcbiAgICApO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gMTA7XHJcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEwO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyRGF0YSA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5zZXRQYWdlRGF0YSgpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY291bnQrKztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyB0aGlzLmFwcGx5RmlsdGVycyhbeyBEZXNjcmlwdGlvbjogJ0NvdmVyYWdlJywgSXNzdWVzOiBbeyB0ZXh0OiB0aGlzLmNvdmVyYWdlVHlwZVswXSwgaWQ6IHRoaXMuY292ZXJhZ2VUeXBlWzBdLCBjaGVja2VkOiB0cnVlfV0gfV0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2V0UGFnZURhdGEoKSB7XHJcbiAgICB0aGlzLnBhZ2VJbmZvLnNldFRpdGxlKFwiRGFzaGJvYXJkXCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXRCcmVhZGNydW1icyhbXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCJUYW5nbyBUcmF4XCIsXHJcbiAgICAgICAgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsXHJcbiAgICAgICAgaXNBY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGlzU2VwYXJhdG9yOiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlOiBcIlRhbmdvIFRyYXhcIixcclxuICAgICAgICBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIixcclxuICAgICAgICBpc0FjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgaXNTZXBhcmF0b3I6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICB9XHJcbiAgZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcmNlIFVJIHVwZGF0ZVxyXG4gICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnRhc2tMb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMudGFza05vRGF0YSA9IHRydWU7XHJcbiAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcclxuICAgICAgZnJvbURhdGU6IHRoaXMuc2VsZWN0ZWRGaWx0ZXJzPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5zZWxlY3RlZEZpbHRlcnM/LmRhdGU/LmVuZERhdGUsXHJcbiAgICAgIHN0b3JlSWQ6IHRoaXMuaGVhZGVyRGF0YT8uc3RvcmVzXHJcbiAgICAgICAgLmZpbHRlcigoc3RvcmU6IGFueSkgPT4gc3RvcmUuY2hlY2tlZClcclxuICAgICAgICAubWFwKChzdG9yZTogYW55KSA9PiBzdG9yZS5zdG9yZUlkKSxcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YS5jbGllbnQsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlIC0gMSxcclxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXHJcbiAgICAgIHNvcnRDb2x1bW5OYW1lOiB0aGlzLnNvcnRDb2x1bU5hbWUsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaElucHV0LFxyXG4gICAgICBhY3Rpb246IHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIsXHJcbiAgICAgIHR5cGU6IHRoaXMucmVjZWl2ZWREYXRhLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlcyxcclxuICAgICAgLy8gY2hlY2tMaXN0TmFtZTp0aGlzLmNoZWNrbGlzdE5hbWUsXHJcbiAgICAgIC8vIFwiY2hlY2tMaXN0TmFtZVwiOiBcImRhaWx5IHN0b3JlIGNoZWNrbGlzdDExMVwiLFxyXG4gICAgICAvLyBcInR5cGVcIjogXCJjaGVja2xpc3RcIixcclxuICAgICAgLy8gXCJhY3Rpb25cIjogW1wiY3JlYXRlZFwiXSxcclxuICAgICAgLy8gXCJsaW1pdFwiOiA1LFxyXG4gICAgICAvLyBcIm9mZnNldFwiOiAwLFxyXG4gICAgICAvLyBcInNvcnRCeVwiOiBcIlwiLFxyXG4gICAgICAvLyBcInNvcnRDb2x1bW5OYW1lXCI6IFwiXCIsXHJcbiAgICAgIC8vIFwic2VhcmNoVmFsdWVcIjogXCJEYWlseSBzdG9yZSBjaGVja2xpc3QgTmV3XCJcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5UcmF4U2VydmljZS5hY3Rpdml0eUxvZ0xpc3QocmVxdWVzdERhdGEpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50YXNrTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5jb2RlID09PSAyMDAgJiYgcmVzcG9uc2U/LnN0YXR1cyA9PT0gXCJzdWNjZXNzXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5hY3Rpdml0eUxvZ1RhYmxlRGF0YSA9IHJlc3BvbnNlLmRhdGEucmVzdWx0IHx8IFtdO1xyXG4gICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSByZXNwb25zZS5kYXRhLmNvdW50O1xyXG4gICAgICAgICAgICB0aGlzLnNldFBhZ2luYXRpb25TaXplcygpO1xyXG4gICAgICAgICAgICB0aGlzLnRhc2tMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMudGFza05vRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudGFza0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy50YXNrTm9EYXRhID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hEaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElucHV0Py5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNlYXJjaERpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nVGFibGVEYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB0aGlzLnNvdXJjZUNoZWNrTGlzdF9pZCA9IFwiXCI7XHJcbiAgfVxyXG4gIC8vIHJlbW92ZVF1ZXJ5UGFyYW1zKCkge1xyXG4gIC8vICAgY29uc3QgdXJsV2l0aG91dFBhcmFtcyA9IHRoaXMubG9jYXRpb24ucGF0aCgpLnNwbGl0KCc/JylbMF07XHJcbiAgLy8gICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmxXaXRob3V0UGFyYW1zKTtcclxuICAvLyB9XHJcbiAgc2V0UGFnaW5hdGlvblNpemVzKCkge1xyXG4gICAgaWYgKHRoaXMudG90YWxJdGVtcyA+IDEwKSB7XHJcbiAgICAgIGlmICh0aGlzLnBhZ2VTaXplID4gMTApIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcclxuICAgICAgICB0aGlzLnBhZ2VTaXplID0gMTA7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnaW5hdGlvblNpemVzID0gW3RoaXMudG90YWxJdGVtc107XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLnRvdGFsSXRlbXM7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgY29uc3QgcmVxdWVzdERhdGEgPSB7XHJcbiAgICAgIGZyb21EYXRlOiB0aGlzLmhlYWRlckRhdGEuZGF0ZS5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhLmRhdGUuZW5kRGF0ZSxcclxuICAgICAgc3RvcmVJZDogdGhpcy5oZWFkZXJEYXRhLnN0b3Jlc1xyXG4gICAgICAgIC5maWx0ZXIoKHN0b3JlOiBhbnkpID0+IHN0b3JlLmNoZWNrZWQpXHJcbiAgICAgICAgLm1hcCgoc3RvcmU6IGFueSkgPT4gc3RvcmUuc3RvcmVJZCksXHJcbiAgICAgIHVzZXJFbWFpbGVzOiB0aGlzLnVzZXJFbWFpbGVzLFxyXG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhLmNsaWVudCxcclxuICAgICAgbGltaXQ6IDEwMDAwLFxyXG4gICAgICBvZmZzZXQ6IDAsXHJcbiAgICAgIHNvcnRCeTogdGhpcy5zb3J0RGlyZWN0aW9uLFxyXG4gICAgICBzb3J0Q29sdW1uTmFtZTogdGhpcy5zb3J0Q29sdW1OYW1lLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hJbnB1dCxcclxuICAgICAgZXhwb3J0OiB0cnVlLFxyXG4gICAgICBmaWx0ZXI6IHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIsXHJcbiAgICAgIC8vIGNvdmVyYWdlOiB0aGlzLmNvdmVyYWdlVHlwZSB8fCBbXVxyXG4gICAgfTtcclxuICAgIHRoaXMuVHJheFNlcnZpY2UuZ2V0VGFza1RhYmxlRGF0YUV4cG9ydChyZXF1ZXN0RGF0YSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLlRyYXhTZXJ2aWNlLnNhdmVBc0V4Y2VsRmlsZShyZXMsIFwiVGFza1RhYmxlXCIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoXCJTb21ldGhpbmcgd2VudCBXcm9uZy4uXCIpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBzZWFyY2hGaWVsZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyRGF0YS5zZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoSW5wdXQ7XHJcbiAgICB0aGlzLmhlYWRlckRhdGEuZXhwb3J0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMucGFnZVNpemUgPSAxMDtcclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgc29ydERhdGEoY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNvcnRDb2x1bU5hbWUgPT09IGNvbHVtbikge1xyXG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSB0aGlzLnNvcnREaXJlY3Rpb24gPT09IDEgPyAtMSA6IDE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNvcnRDb2x1bU5hbWUgPSBjb2x1bW47XHJcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHBhZ2VTaXplOiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBwYXJzZUludChwYWdlU2l6ZSk7XHJcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFyc2VJbnQocGFnZVNpemUpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIG9uUGFnZUNoYW5nZShwYWdlT2Zmc2V0OiBhbnkpIHtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlT2Zmc2V0O1xyXG4gICAgdGhpcy5nZXRBY3Rpdml0eUxvZ1RhYmxlRGF0YSgpO1xyXG4gIH1cclxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiQWN0aW9uc1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5kYXRhT2JqZWN0LmZvckVhY2goKGNhdGVnb3J5OiBhbnkpID0+IHtcclxuICAgICAgLy8gICBjYXRlZ29yeS5Jc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAvLyAgICAgaXNzdWUuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIC8vICAgfSk7XHJcbiAgICAgIC8vIH0pO1xyXG5cclxuICAgICAgLy8gY29uc3QgYWN0aW9uc0ZpbHRlciA9IHRoaXMuZGF0YU9iamVjdC5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0uRGVzY3JpcHRpb24gPT09ICdBY3Rpb25zJyk7XHJcbiAgICAgIC8vIHRoaXMuYWN0aXZpdHlMb2dGaWx0ZXIgPSBhY3Rpb25zRmlsdGVyID8gYWN0aW9uc0ZpbHRlci5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsLmlkKSA6IFtdO1xyXG4gICAgICB0aGlzLmFjdGl2aXR5TG9nRmlsdGVyID0gW107XHJcbiAgICB9XHJcbiAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgfVxyXG4gIHNlbGVjdFBsYW4oc2VsZWN0ZWRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHlwZSA9IHNlbGVjdGVkVHlwZTtcclxuICB9XHJcblxyXG4gIC8vIG5hdmlnYXRlVG9UYXNrQ29uZmlnKHRhc2s6IGFueSk6IHZvaWQge1xyXG4gIC8vICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ21hbmFnZS90cmF4L3Rhc2stY29uZmlndXJlJ10sIHsgcXVlcnlQYXJhbXM6IHt0YXNrSWQ6dGFzay5faWR9IH0pXHJcbiAgLy8gfVxyXG5cclxuICAvLyBuYXZpZ2F0ZVRvVGFza0VkaXQodGFzazogYW55KTogdm9pZCB7XHJcbiAgLy8gICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnbWFuYWdlL3RyYXgvY3JlYXRlLXRhc2snXSwgeyBxdWVyeVBhcmFtczoge2lkOnRhc2suX2lkfSB9KVxyXG4gIC8vIH1cclxuXHJcbiAgZGF0ZUZvcm1hdChkYXRlOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmRheWpzLnV0YyhkYXRlKS5mb3JtYXQoXCJERCBNTU0gWVlZWVwiKTtcclxuICB9XHJcbiAgU2VsZWN0dGFicyh0YWI6IHN0cmluZykge1xyXG4gICAgdGhpcy5yZWNlaXZlZERhdGEgPSB0YWI7XHJcblxyXG4gICAgLy8gdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcclxuICAgIC8vICAgcXVlcnlQYXJhbXM6IHsgdHlwZTogdGFiIH0sXHJcbiAgICAvLyAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcclxuICAgIC8vIH0pO1xyXG5cclxuICAgIHRoaXMuZ2V0QWN0aXZpdHlMb2dUYWJsZURhdGEoKTtcclxuICB9XHJcbiAgdmlld0FjdGlvbihsb2c6IGFueSkge1xyXG4gICAgbGV0IG1vZGFsU2l6ZSA9XHJcbiAgICAgIGxvZy5hY3Rpb24gPT09IFwidXBkYXRlZFwiIHx8IGxvZy5hY3Rpb24gPT09IFwiZHJhZnRcIlxyXG4gICAgICAgID8gXCJ4bFwiXHJcbiAgICAgICAgOiBsb2cuYWN0aW9uID09PSBcImVkaXRlZFwiXHJcbiAgICAgICAgPyBcImxnXCJcclxuICAgICAgICA6IFwibWRcIjtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihWaWV3QWN0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBtb2RhbFNpemUsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmxvZ0RldGFpbHMgPSBsb2cubG9nRGV0YWlscztcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmNoZWNrTGlzdE5hbWUgPSBsb2cuY2hlY2tMaXN0TmFtZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnN0b3JlTmFtZSA9IGxvZy5zdG9yZU5hbWU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5hY3Rpb25UeXBlID0gbG9nLmFjdGlvbjtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLnJlY2VpdmVkRGF0YSA9IHRoaXMucmVjZWl2ZWREYXRhO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzTG9nRGV0YWlsc0VtcHR5KGxvZ0RldGFpbHM6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgIWxvZ0RldGFpbHMgfHxcclxuICAgICAgT2JqZWN0LmtleXMobG9nRGV0YWlscykuZXZlcnkoKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gbG9nRGV0YWlsc1trZXldO1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIHZhbHVlLmxlbmd0aCA9PT0gMDtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSByZXR1cm4gdGhpcy5pc0xvZ0RldGFpbHNFbXB0eSh2YWx1ZSk7XHJcbiAgICAgICAgcmV0dXJuICF2YWx1ZTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXREYXRlVGltZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkYXRlU3RyaW5nKSByZXR1cm4gXCItLVwiO1xyXG5cclxuICAgIGNvbnN0IGRhdGUgPSBkYXlqcy51dGMoZGF0ZVN0cmluZykubG9jYWwoKTtcclxuICAgIGNvbnN0IG5vdyA9IGRheWpzKCk7XHJcblxyXG4gICAgbGV0IGZvcm1hdHRlZERhdGUgPSBcIlwiO1xyXG5cclxuICAgIGlmIChkYXRlLmlzU2FtZShub3csIFwiZGF5XCIpKSB7XHJcbiAgICAgIGZvcm1hdHRlZERhdGUgPSBcIlRvZGF5XCI7XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUuaXNTYW1lKG5vdy5zdWJ0cmFjdCgxLCBcImRheVwiKSwgXCJkYXlcIikpIHtcclxuICAgICAgZm9ybWF0dGVkRGF0ZSA9IFwiWWVzdGVyZGF5XCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3JtYXR0ZWREYXRlID0gZGF0ZS5mb3JtYXQoXCJNTU0gRCwgWVlZWVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYCR7Zm9ybWF0dGVkRGF0ZX0gPGJyPiAke2RhdGUuZm9ybWF0KFwiaGggOiBtbSBBXCIpfWA7XHJcbiAgfVxyXG4gIGdldEFjdGlvbkJhZGdlQ2xhc3MoYWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYWN0aW9uQ2xhc3NlczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgY3JlYXRlZDogXCJiYWRnZS1saWdodC1kZWZhdWx0XCIsXHJcbiAgICAgIHVwZGF0ZWQ6IFwiYmFkZ2UtbGlnaHQtcHJpbWFyeTFcIixcclxuICAgICAgZHJhZnQ6IFwiYmFkZ2UtbGlnaHQtZGVmYXVsdFwiLFxyXG4gICAgICBwdWJsaXNoZWQ6IFwiYmFkZ2UtbGlnaHQtcHJpbWFyeTFcIixcclxuICAgICAgc3VibWl0OiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIHN0YXJ0OiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIGFwcHJvdmVkOiBcImJhZGdlLWxpZ2h0LXN1Y2Nlc3NcIixcclxuICAgICAgcmVkbzogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIG11bHRpcmVkbzogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogXCJiYWRnZS1saWdodC1kZWZhdWx0XCIsXHJcbiAgICAgIC8vIHJlb3BlbmVkOiAnYmFkZ2UtbGlnaHQtZGVmYXVsdCcsXHJcbiAgICAgIGVkaXRlZDogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICAgIHVucHVibGlzaGVkOiBcImJhZGdlLWxpZ2h0LXByaW1hcnkxXCIsXHJcbiAgICAgIGRlbGV0ZWQ6IFwiYmFkZ2UtbGlnaHQtZGVsZXRlXCIsXHJcbiAgICAgIGR1cGxpY2F0ZWQ6IFwiYmFkZ2UtbGlnaHQtZGVmYXVsdFwiLFxyXG4gICAgICByZWluaXRpYXRlZDogXCJiYWRnZS1saWdodC13YXJuaW5nXCIsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBhY3Rpb25DbGFzc2VzW2FjdGlvbl0gfHwgXCJiYWRnZS1saWdodC1kZWZhdWx0XCI7XHJcbiAgfVxyXG5cclxuICBnZXRBY3Rpb25MYWJlbChhY3Rpb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhY3Rpb25MYWJlbHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIGNyZWF0ZWQ6IFwiQ3JlYXRlZCBieVwiLFxyXG4gICAgICB1cGRhdGVkOiBcIlVwZGF0ZWQgYnlcIixcclxuICAgICAgZHJhZnQ6IFwiU2F2ZWQgYXMgRHJhZnRcIixcclxuICAgICAgcHVibGlzaGVkOiBcIlB1Ymxpc2hlZCBieVwiLFxyXG4gICAgICBzdWJtaXQ6IFwiU3VibWl0dGVkIGJ5XCIsXHJcbiAgICAgIHN0YXJ0OiBcIlN0YXJ0ZWQgYnlcIixcclxuICAgICAgYXBwcm92ZWQ6IFwiQXBwcm92ZWQgYnlcIixcclxuICAgICAgcmVkbzogXCJSZWRvIENyZWF0ZWQgYnlcIixcclxuICAgICAgbXVsdGlyZWRvOiBcIlN1YnNlcXVlbnQgUmVkbyBDcmVhdGVkIGJ5XCIsXHJcbiAgICAgIHRhc2tfY3JlYXRlZDogXCJUYXNrIENyZWF0ZWQgYnlcIixcclxuICAgICAgLy8gcmVvcGVuZWQ6ICdSZS1vcGVuZWQgYnknLFxyXG4gICAgICBlZGl0ZWQ6IFwiRWRpdGVkIGJ5XCIsXHJcbiAgICAgIHVucHVibGlzaGVkOiBcIlVucHVibGlzaGVkIGJ5XCIsXHJcbiAgICAgIGRlbGV0ZWQ6IFwiRGVsZXRlZCBieVwiLFxyXG4gICAgICBkdXBsaWNhdGVkOiBcIkR1cGxpY2F0ZWQgYnlcIixcclxuICAgICAgcmVpbml0aWF0ZWQ6IFwiUmVpbml0aWF0ZWQgYnlcIixcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIGFjdGlvbkxhYmVsc1thY3Rpb25dIHx8IGFjdGlvbjtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9HYWxsZXJ5KGxvZzogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZm9ybWF0dGVkRGF0ZSA9IGRheWpzKGxvZy5jcmVhdGVBdCkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKTtcclxuICAgIGxldCBjaGVja2xpc3RUeXBlOiBzdHJpbmc7XHJcbiAgICBpZiAobG9nLmNoZWNrTGlzdFR5cGUgPT09IFwiY3VzdG9tXCIpIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IFwiY3VzdG9tXCI7XHJcbiAgICB9IGVsc2UgaWYgKFtcInRhc2tcIiwgXCJjaGVja2xpc3RUYXNrXCIsIFwiY2N0dlwiXS5pbmNsdWRlcyhsb2cudHlwZSkpIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IFwidGFza1wiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tsaXN0VHlwZSA9IGxvZy50eXBlIHx8IFwiLS1cIjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxvZy5zdG9yZV9pZCAmJiBsb2cuc3RvcmVfaWQgIT0gXCJcIikge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgICBDaGVja2xpc3REYXRlOiBmb3JtYXR0ZWREYXRlLFxyXG4gICAgICAgIHN0b3JlSWQ6IGxvZy5zdG9yZV9pZCxcclxuICAgICAgICBjaGVja2xpc3RUeXBlOiBjaGVja2xpc3RUeXBlLFxyXG4gICAgICAgIHNvdXJjZUNoZWNrTGlzdF9pZDogbG9nLnNvdXJjZUNoZWNrTGlzdF9pZCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgIENoZWNrbGlzdERhdGU6IGZvcm1hdHRlZERhdGUsXHJcbiAgICAgICAgdXNlckVtYWlsOiBsb2cudXNlckVtYWlsLFxyXG4gICAgICAgIGNoZWNrbGlzdFR5cGU6IGNoZWNrbGlzdFR5cGUsXHJcbiAgICAgICAgc291cmNlQ2hlY2tMaXN0X2lkOiBsb2cuc291cmNlQ2hlY2tMaXN0X2lkLFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKGxvZy5yZWRvU3RhdHVzKSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zLnJlZG9TdGF0dXMgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL21hbmFnZS90cmF4L2dhbGxlcnlcIl0sIHsgcXVlcnlQYXJhbXMgfSk7XHJcbiAgfVxyXG5cclxuICBkYXRlY2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmIChldmVudCAmJiBldmVudC5zdGFydERhdGUgJiYgZXZlbnQuZW5kRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0ge1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsdGVycy5kYXRlID0ge1xyXG4gICAgICAgIHN0YXJ0RGF0ZTogZXZlbnQuc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGUsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICAvLyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIsIEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRGaWx0ZXJzKSk7XHJcbiAgICAgIC8vIHRoaXMucmVzZXRWYWxpZGF0aW9uKCk7XHJcbiAgICAgIC8vIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWUubmV4dCh0aGlzLnNlbGVjdGVkRmlsdGVycyk7XHJcblxyXG4gICAgICAvLyBSZXNldCB0aGUgcGlja2VyIHRvIGZvcmNlIHJlLXJlbmRlclxyXG4gICAgICB0aGlzLmlzQWN0aXZpdHlMb2cgPSBmYWxzZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gICB0aGlzLmlzQWN0aXZpdHlMb2cgPSB0cnVlO1xyXG4gICAgICAvLyAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAvLyB9LCAxMCk7XHJcblxyXG4gICAgICAvLyBDYWxsIEFQSVxyXG4gICAgICB0aGlzLmdldEFjdGl2aXR5TG9nVGFibGVEYXRhKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRWYWxpZGF0aW9uKCkge1xyXG4gICAgdGhpcy5pc0N1c3RvbURhdGUgPSAobTogZGF5anMuRGF5anMpID0+IHtcclxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGdpdmVuIGRhdGUgaXMgYmVmb3JlIHllc3RlcmRheVxyXG4gICAgICByZXR1cm4gbS5pc0FmdGVyKHRoaXMuZGF5anMoKSwgXCJkYXlcIikgPyBcImludmFsaWQtZGF0ZVwiIDogZmFsc2U7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG10LTRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtM1wiPlxyXG4gICAgICAgIDxoMyBjbGFzcz1cImNhcmQtdGl0bGUgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXJkLWxhYmVsIG1iLTJcIj5BY3Rpdml0eSBMb2cgPC9zcGFuPlxyXG4gICAgICAgIDwvaDM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdG9vbGJhclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciAgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gZm9vdGZhbGxzZWFyY2ggc3ZnLWljb24tMSBwb3NpdGlvbi1hYnNvbHV0ZSAgbXMtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBvcGFjaXR5PVwiMC41XCIgeD1cIjE3LjAzNjVcIiB5PVwiMTUuMTIyM1wiIHdpZHRoPVwiOC4xNTU0NlwiIGhlaWdodD1cIjJcIiByeD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInJvdGF0ZSg0NSAxNy4wMzY1IDE1LjEyMjMpXCIgZmlsbD1cImN1cnJlbnRDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9yZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExIDE5QzYuNTU1NTYgMTkgMyAxNS40NDQ0IDMgMTFDMyA2LjU1NTU2IDYuNTU1NTYgMyAxMSAzQzE1LjQ0NDQgMyAxOSA2LjU1NTU2IDE5IDExQzE5IDE1LjQ0NDQgMTUuNDQ0NCAxOSAxMSAxOVpNMTEgNUM3LjUzMzMzIDUgNSA3LjUzMzMzIDUgMTFDNSAxNC40NjY3IDcuNTMzMzMgMTcgMTEgMTdDMTQuNDY2NyAxNyAxNyAxNC40NjY3IDE3IDExQzE3IDcuNTMzMzMgMTQuNDY2NyA1IDExIDVaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiY3VycmVudENvbG9yXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0ICpuZ0lmPVwicmVjZWl2ZWREYXRhID09PSAnY2hlY2tsaXN0J1wiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG14LTIgbG9nc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIENoZWNrbGlzdFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXl1cC5lbnRlcik9XCJzZWFyY2hGaWVsZCgpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJ1wiIFsobmdNb2RlbCldPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG14LTIgbG9nc2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggd2l0aCBTdG9yZSwgRW1haWwsIFRhc2tcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5dXAuZW50ZXIpPVwic2VhcmNoRmllbGQoKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBkYXRlcGlja2VyIHN0YXJ0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLWRhdGUtcmFuZ2UtcGlja2VyIChkYXRlQ2hhbmdlKT1cImRhdGVjaGFuZ2UoJGV2ZW50KVwiIFt2YWx1ZV09XCJjb3VudFwiPjwvbGliLWRhdGUtcmFuZ2UtcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gZGF0ZXBpY2tlciBlbmQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItZmlsdGVycyAgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggb3ZlcmZsb3ctYXV0byBtYi0yIG14LTRcIj5cclxuICAgICAgICA8dWxcclxuICAgICAgICAgICAgY2xhc3M9XCJuYXYgbmF2LXN0cmV0Y2ggbmF2LWxpbmUtdGFiczEgbmF2LWxpbmUtdGFicy0yeCAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgYm9yZGVyLXRyYW5zcGFyZW50IGZsZXgtbm93cmFwXCI+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5hdi1pdGVtIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIlNlbGVjdHRhYnMoJ2NoZWNrbGlzdCcpXCIgW3JvdXRlckxpbmtdPVwiWycvbWFuYWdlL3RyYXgvYWN0aW9uY2VudGVyJ11cIiBbcXVlcnlQYXJhbXNdPVwieyB0eXBlOiAnY2hlY2tsaXN0JyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJyZWNlaXZlZERhdGEgPT09ICdjaGVja2xpc3QnPydidG4gYWN0aXZlYnRuJzonJ1wiIGNsYXNzPVwiZnctc2VtaWJvbGQgbmF2LWxpbmsgbWUtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENoZWNrbGlzdFxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJuYXYtaXRlbSBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJTZWxlY3R0YWJzKCd0YXNrJylcIiBbcm91dGVyTGlua109XCJbJy9tYW5hZ2UvdHJheC9hY3Rpb25jZW50ZXInXVwiIFtxdWVyeVBhcmFtc109XCJ7IHR5cGU6ICd0YXNrJyB9XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbbmdDbGFzc109XCJyZWNlaXZlZERhdGEgPT09ICd0YXNrJyB8fCByZWNlaXZlZERhdGEgPT09ICdHcm91cCBEZXRhaWxzIFZhbHVlJz8gJ2J0biBhY3RpdmVidG4nOicnXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1saW5rIG1lLTZcIj5UYXNrXHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgICA8IS0tIDxsaWItdmlldy1hY3Rpb24gW3JlY2VpdmVkRGF0YV09XCJyZWNlaXZlZERhdGFcIj48L2xpYi12aWV3LWFjdGlvbj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgPHRhYmxlICpuZ0lmPVwiIXRhc2tMb2FkaW5nICYmICF0YXNrTm9EYXRhXCIgY2xhc3M9XCJ0YWJsZSB0ZXh0LW5vd3JhcCBib3R0b20tYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJzb3J0RGF0YSgnZGF0ZXRpbWUnKVwiPkRhdGUgJiBUaW1lPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RhdGV0aW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5zdHJva2VdPVwic29ydENvbHVtTmFtZSA9PT0gJ2RhdGV0aW1lJyA/ICcjMDBBM0ZGJyA6ICcjNjY3MDg1J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ2NoZWNrbGlzdCdcIj5DaGVja2xpc3QgTmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cInJlY2VpdmVkRGF0YSA9PT0gJ3Rhc2snXCI+VGFzayBOYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbiBQZXJmb3JtZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+UGVyZm9ybWVkIGJ5PC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBsb2cgb2YgYWN0aXZpdHlMb2dUYWJsZURhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiIFtpbm5lckhUTUxdPVwiZm9ybWF0RGF0ZVRpbWUobG9nLl9zb3VyY2UuY3JlYXRlQXQpXCI+PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEobG9nLl9zb3VyY2UudHlwZSA9PT0gJ3Rhc2snICYmIGxvZy5fc291cmNlLmZyb21DaGVja0xpc3ROYW1lKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFibGUtdGl0bGUgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsb2cuX3NvdXJjZS5jaGVja0xpc3ROYW1lIHx8ICctLScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2cuX3NvdXJjZS50eXBlID09PSAndGFzaycgJiYgbG9nLl9zb3VyY2UuZnJvbUNoZWNrTGlzdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhYmxlLXRpdGxlIG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbG9nLl9zb3VyY2UuY2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19IDxicj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTExLjY2NTQgNy41MDAxNkw3LjQ5ODcgMy4zMzM1TTcuNDk4NyAzLjMzMzVMMy4zMzIwMyA3LjUwMDE2TTcuNDk4NyAzLjMzMzVWMTMuMzMzNUM3LjQ5ODcgMTQuMjE3NiA3Ljg0OTg5IDE1LjA2NTQgOC40NzUwMSAxNS42OTA1QzkuMTAwMTMgMTYuMzE1NiA5Ljk0Nzk4IDE2LjY2NjggMTAuODMyIDE2LjY2NjhIMTYuNjY1NFwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuIGNsYXNzPVwibXgtMlwiPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjNcIiBoZWlnaHQ9XCIyM1wiIHZpZXdCb3g9XCIwIDAgMjMgMjNcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOC40MTQ0OCA0LjUyMzAzQzguNjk1MTggNC44MDM3MSA4LjY5NTE4IDUuMjU4OCA4LjQxNDQ4IDUuNTM5NDhMNS41Mzk0OCA4LjQxNDQ4QzUuMjU4OCA4LjY5NTE4IDQuODAzNzEgOC42OTUxOCA0LjUyMzAzIDguNDE0NDhMMy4wODU1MyA2Ljk3Njk4QzIuODA0ODIgNi42OTYzIDIuODA0ODIgNi4yNDEyMSAzLjA4NTUzIDUuOTYwNTNDMy4zNjYyMSA1LjY3OTgyIDMuODIxMyA1LjY3OTgyIDQuMTAxOTggNS45NjA1M0w1LjAzMTI1IDYuODg5NzhMNy4zOTgwMyA0LjUyMzAzQzcuNjc4NzEgNC4yNDIzMiA4LjEzMzggNC4yNDIzMiA4LjQxNDQ4IDQuNTIzMDNaXCIgZmlsbD1cIiM2NjcwODVcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04LjQxNDQ4IDExLjcxMDVDOC42OTUxOCAxMS45OTEyIDguNjk1MTggMTIuNDQ2MyA4LjQxNDQ4IDEyLjcyN0w1LjUzOTQ4IDE1LjYwMkM1LjI1ODggMTUuODgyNiA0LjgwMzcxIDE1Ljg4MjYgNC41MjMwMyAxNS42MDJMMy4wODU1MyAxNC4xNjQ1QzIuODA0ODIgMTMuODgzOCAyLjgwNDgyIDEzLjQyODcgMy4wODU1MyAxMy4xNDc5QzMuMzY2MjEgMTIuODY3MyAzLjgyMTMgMTIuODY3MyA0LjEwMTk4IDEzLjE0NzlMNS4wMzEyNSAxNC4wNzczTDcuMzk4MDMgMTEuNzEwNUM3LjY3ODcxIDExLjQyOTkgOC4xMzM4IDExLjQyOTkgOC40MTQ0OCAxMS43MTA1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuMDYyNSA2LjQ2ODc1QzEwLjA2MjUgNi4wNzE4IDEwLjM4NDQgNS43NSAxMC43ODEyIDUuNzVIMTUuMDkzOEMxNS40OTA2IDUuNzUgMTUuODEyNSA2LjA3MTggMTUuODEyNSA2LjQ2ODc1QzE1LjgxMjUgNi44NjU3IDE1LjQ5MDYgNy4xODc1IDE1LjA5MzggNy4xODc1SDEwLjc4MTJDMTAuMzg0NCA3LjE4NzUgMTAuMDYyNSA2Ljg2NTcgMTAuMDYyNSA2LjQ2ODc1WlwiIGZpbGw9XCIjNjY3MDg1XCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMy41OTM3NSAwQzEuNjA4OTggMCAwIDEuNjA4OTggMCAzLjU5Mzc1VjE2LjUzMTJDMCAxOC41MTYgMS42MDg5OCAyMC4xMjUgMy41OTM3NSAyMC4xMjVIOS40ODcwOEM5LjI1NDI5IDE5LjY2OTYgOS4wNjQzNiAxOS4xODg2IDguOTIyNjEgMTguNjg3NUgzLjU5Mzc1QzIuNDAyODggMTguNjg3NSAxLjQzNzUgMTcuNzIyMSAxLjQzNzUgMTYuNTMxMlYzLjU5Mzc1QzEuNDM3NSAyLjQwMjg4IDIuNDAyODggMS40Mzc1IDMuNTkzNzUgMS40Mzc1SDE2LjUzMTJDMTcuNzIyMSAxLjQzNzUgMTguNjg3NSAyLjQwMjg4IDE4LjY4NzUgMy41OTM3NVY4LjkyMjYxQzE5LjE4ODYgOS4wNjQzNiAxOS42Njk2IDkuMjU0MjkgMjAuMTI1IDkuNDg3MDhWMy41OTM3NUMyMC4xMjUgMS42MDg5OCAxOC41MTYgMCAxNi41MzEyIDBIMy41OTM3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE2LjUzMTMgMjNDMjAuMTAzOSAyMyAyMyAyMC4xMDM5IDIzIDE2LjUzMTNDMjMgMTIuOTU4NiAyMC4xMDM5IDEwLjA2MjUgMTYuNTMxMyAxMC4wNjI1QzEyLjk1ODYgMTAuMDYyNSAxMC4wNjI1IDEyLjk1ODYgMTAuMDYyNSAxNi41MzEzQzEwLjA2MjUgMjAuMTAzOSAxMi45NTg2IDIzIDE2LjUzMTMgMjNaTTE2LjUzMTMgMTIuOTM3NUMxNi45MjgxIDEyLjkzNzUgMTcuMjUgMTMuMjU5NCAxNy4yNSAxMy42NTYzVjE1LjgxMjVIMTkuNDA2M0MxOS44MDMxIDE1LjgxMjUgMjAuMTI1IDE2LjEzNDQgMjAuMTI1IDE2LjUzMTNDMjAuMTI1IDE2LjkyODEgMTkuODAzMSAxNy4yNSAxOS40MDYzIDE3LjI1SDE3LjI1VjE5LjQwNjNDMTcuMjUgMTkuODAzMSAxNi45MjgxIDIwLjEyNSAxNi41MzEzIDIwLjEyNUMxNi4xMzQ0IDIwLjEyNSAxNS44MTI1IDE5LjgwMzEgMTUuODEyNSAxOS40MDYzVjE3LjI1SDEzLjY1NjNDMTMuMjU5NCAxNy4yNSAxMi45Mzc1IDE2LjkyODEgMTIuOTM3NSAxNi41MzEzQzEyLjkzNzUgMTYuMTM0NCAxMy4yNTk0IDE1LjgxMjUgMTMuNjU2MyAxNS44MTI1SDE1LjgxMjVWMTMuNjU2M0MxNS44MTI1IDEzLjI1OTQgMTYuMTM0NCAxMi45Mzc1IDE2LjUzMTMgMTIuOTM3NVpcIiBmaWxsPVwiIzY2NzA4NVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZVwiPiB7eyBsb2cuX3NvdXJjZS5mcm9tQ2hlY2tMaXN0TmFtZSB8fCAnLS0nIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWJsZS10aXRsZSBiYWRnZS1saWdodFwiIFtuZ0NsYXNzXT1cImdldEFjdGlvbkJhZGdlQ2xhc3MobG9nLl9zb3VyY2UuYWN0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRBY3Rpb25MYWJlbChsb2cuX3NvdXJjZS5hY3Rpb24pIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCI+PHNwYW4gY2xhc3M9XCJtZS0zXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L3NwYW4+PHNwYW4+e3sgbG9nLl9zb3VyY2UuY3JlYXRlZEJ5RW1haWwgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdGl0bGUgZC1mbGV4XCI+PHNwYW4gKm5nSWY9XCJsb2cuX3NvdXJjZT8uY292ZXJhZ2UgPT09ICdzdG9yZScgfHwgKCFsb2cuX3NvdXJjZT8uY292ZXJhZ2UgJiYgbG9nLl9zb3VyY2U/LnN0b3JlTmFtZSkgXCI+PHNwYW4gY2xhc3M9XCJtZS0zXCIgKm5nSWY9XCJsb2cuX3NvdXJjZT8uc3RvcmVOYW1lXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi42Nzg5MyA1LjgwMzY2TDIuNjI1NjggNS44ODY4M0MyLjA2NzY0IDYuODczODggMi42NjM0NyA4LjEyMTMgMy43MzUwOCA4LjI2NDRDMy44MzIxNyA4LjI3NjI3IDMuOTIyNTEgOC4yODI1NSA0LjAxMDc4IDguMjgyNTVDNC41ODg5MyA4LjI4MjU1IDUuMTAwMSA4LjAzNDUzIDUuNDU2MzcgNy42NDc4TDYuMDA5NyA3LjA0NzE4TDYuNTYxMTYgNy42NDk1M0M2LjkxMzEgOC4wMzM5NSA3LjQyMzExIDguMjgyNTUgOC4wMDUxNyA4LjI4MjU1QzguNTg0NjEgOC4yODI1NSA5LjA5NzU1IDguMDMzNiA5LjQ0OTE3IDcuNjQ5NTNMMTAuMDAyNCA3LjA0NTI5TDEwLjU1NTUgNy42NDk1M0MxMC45MDcyIDguMDMzNiAxMS40MjAxIDguMjgyNTUgMTEuOTk5NiA4LjI4MjU1QzEyLjU3OSA4LjI4MjU1IDEzLjA5MTkgOC4wMzM2IDEzLjQ0MzYgNy42NDk1M0wxMy45OTY3IDcuMDQ1MjlMMTQuNTQ5OSA3LjY0OTUzQzE0LjkwMTYgOC4wMzM2IDE1LjQxNDUgOC4yODI1NSAxNS45OTM5IDguMjgyNTVDMTYuMDc5MyA4LjI4MjU1IDE2LjE3MjQgOC4yNzYyNSAxNi4yNjg4IDguMjY0NUMxNy4zNjM5IDguMTE1MTggMTcuOTYxOCA2LjgwMDkxIDE3LjMyMyA1LjgwNDE2QzE3LjMyMyA1LjgwNDEgMTcuMzIzIDUuODA0MDUgMTcuMzIyOSA1LjgwMzk5TDE1LjU2NDggMy4wNjI1OEwxNS41NjQ4IDMuMDYyNThMMTUuNTYzOCAzLjA2MTExQzE1LjU0ODYgMy4wMzcyOCAxNS41MTEyIDMuMDExNzIgMTUuNDY0IDMuMDExNzJINC41MzQ1OEM0LjQ4NzQ0IDMuMDExNzIgNC40NDk5NSAzLjAzNzI4IDQuNDM0NzQgMy4wNjExMUw0LjQzNDEzIDMuMDYyMDhMMi42Nzg5MyA1LjgwMzY2Wk0xNS42NTA0IDEwLjczNjlWMTMuODY4OVYxNC42MTg5SDE0LjkwMDRINS4wOTgyMUg0LjM0ODIxVjEzLjg2ODlWMTAuNzM3NEM0LjIzNzk4IDEwLjc0NTYgNC4xMjY0NiAxMC43NDk4IDQuMDEzODQgMTAuNzQ5OEMzLjk3MTU0IDEwLjc0OTggMy45Mjk1MiAxMC43NDkyIDMuODg3NzggMTAuNzQ4VjEzLjg2ODlWMTUuODAzNEMzLjg4Nzc4IDE2LjQ0NjggNC40MjE2OCAxNi45ODc5IDUuMDk4MjEgMTYuOTg3OUgxNC45MDA0QzE1LjU3NjkgMTYuOTg3OSAxNi4xMTA4IDE2LjQ0NjggMTYuMTEwOCAxNS44MDM0VjEzLjg2ODlWMTAuNzQ4MkMxNi4wNzEgMTAuNzQ5MyAxNi4wMzEgMTAuNzQ5OCAxNS45OTA5IDEwLjc0OThDMTUuODc2NSAxMC43NDk4IDE1Ljc2MjkgMTAuNzQ1NSAxNS42NTA0IDEwLjczNjlaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+PC9zcGFuPjxzcGFuPnt7IGxvZy5fc291cmNlLnN0b3JlTmFtZSB8fCAnLScgfX08L3NwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlPy5jb3ZlcmFnZSA9PT0gJ3VzZXInIHx8ICghbG9nLl9zb3VyY2U/LmNvdmVyYWdlICYmIGxvZy5fc291cmNlPy51c2VyRW1haWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIiAqbmdJZj1cImxvZy5fc291cmNlPy51c2VyRW1haWxcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvc3Bhbj48c3Bhbj57eyBsb2cuX3NvdXJjZT8udXNlckVtYWlsIHx8ICctJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gXCJbJ3VwZGF0ZWQnLCAnZWRpdGVkJywgJ2RyYWZ0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICAqbmdJZj1cIlsndXBkYXRlZCcsICdlZGl0ZWQnXS5pbmNsdWRlcyhsb2cuX3NvdXJjZS5hY3Rpb24pIHx8IChsb2cuX3NvdXJjZS5hY3Rpb24gPT09ICdkcmFmdCcgJiYgbG9nLl9zb3VyY2UubG9nRGV0YWlscyAmJiAhaXNMb2dEZXRhaWxzRW1wdHkobG9nLl9zb3VyY2UubG9nRGV0YWlscykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld0FjdGlvbihsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ3N1Ym1pdCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvR2FsbGVyeShsb2cuX3NvdXJjZSlcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtcHJpbWFyeSBjdXJzb3ItcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dT5WaWV3PC91PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwiIVsndXBkYXRlZCcsICdlZGl0ZWQnLCAnc3VibWl0JywgJ2RyYWZ0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKVwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIVsndXBkYXRlZCcsICdlZGl0ZWQnLCAnc3VibWl0J10uaW5jbHVkZXMobG9nLl9zb3VyY2UuYWN0aW9uKSAmJiAhKGxvZy5fc291cmNlLmFjdGlvbiA9PT0gJ2RyYWZ0JyAmJiBsb2cuX3NvdXJjZS5sb2dEZXRhaWxzICYmICFpc0xvZ0RldGFpbHNFbXB0eShsb2cuX3NvdXJjZS5sb2dEZXRhaWxzKSlcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8L3RhYmxlPlxyXG5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhc2tMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFza05vRGF0YSAmJiAhdGFza0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG15LTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbWctc3JjXCIgc3JjPVwiLi9hc3NldHMvdGFuZ28vSWNvbnMvTm9kYXRhMS5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJub2RhdGFtYWludGV4dCBtdC0zXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5vZGF0YXN1YnRleHRcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIEFjdGl2aXR5IExvZzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cIiF0YXNrTG9hZGluZyAmJiAhdGFza05vRGF0YVwiPlxyXG4gICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gY2xhc3M9XCJ0ZXh0LXN0YXJ0XCIgW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48L2Rpdj4iXX0=