@naniteninja/dashboard-components-lib 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/esm2022/lib/components/auto-delegation/animations.mjs +20 -0
  2. package/esm2022/lib/components/auto-delegation/auto-delegation-modal.component.mjs +106 -0
  3. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.mjs +6 -0
  4. package/esm2022/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.mjs +7 -0
  5. package/esm2022/lib/components/auto-delegation/interface/auto-delegation-data.interface.mjs +2 -0
  6. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.event.interface.mjs +2 -0
  7. package/esm2022/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.mjs +2 -0
  8. package/esm2022/lib/components/auto-delegation/interface/preferences.interface.mjs +2 -0
  9. package/esm2022/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.mjs +37 -0
  10. package/esm2022/lib/components/calendar/agenda/agenda.component.mjs +120 -0
  11. package/esm2022/lib/components/calendar/agenda/agenda.module.mjs +23 -0
  12. package/esm2022/lib/components/calendar/agenda/enums/agenda-item-type.enum.mjs +6 -0
  13. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.day.interface.mjs +2 -0
  14. package/esm2022/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.mjs +2 -0
  15. package/esm2022/lib/components/calendar/agenda/types/agenda-item.type.mjs +2 -0
  16. package/esm2022/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.mjs +40 -0
  17. package/esm2022/lib/components/calendar/components/event-form/event-form.component.mjs +275 -0
  18. package/esm2022/lib/components/calendar/components/event-form/event-form.module.mjs +89 -0
  19. package/esm2022/lib/components/calendar/components/event-info/event-info.component.mjs +40 -0
  20. package/esm2022/lib/components/calendar/enums/calendar.account.enum.mjs +6 -0
  21. package/esm2022/lib/components/calendar/enums/calendar.account.icons.enum.mjs +6 -0
  22. package/esm2022/lib/components/calendar/enums/event-type.enum.mjs +10 -0
  23. package/esm2022/lib/components/calendar/enums/recurring.edit.options.enum.mjs +7 -0
  24. package/esm2022/lib/components/calendar/enums/recurring.type.enum.mjs +8 -0
  25. package/esm2022/lib/components/calendar/interfaces/calendar.account.interface.mjs +2 -0
  26. package/esm2022/lib/components/calendar/interfaces/calendar.account.theme.interface.mjs +2 -0
  27. package/esm2022/lib/components/calendar/interfaces/event.form.interface.mjs +2 -0
  28. package/esm2022/lib/components/calendar/interfaces/event.form.output.interface.mjs +2 -0
  29. package/esm2022/lib/components/calendar/interfaces/event.interface.mjs +2 -0
  30. package/esm2022/lib/components/calendar/interfaces/event.time.interface.mjs +2 -0
  31. package/esm2022/lib/components/calendar/interfaces/recurring.event.interface.mjs +2 -0
  32. package/esm2022/lib/components/calendar/interfaces/recurring.exception.interface.mjs +2 -0
  33. package/esm2022/lib/components/calendar/interfaces/recurring.pattern.interface.mjs +2 -0
  34. package/esm2022/lib/components/calendar/lookups/recurring.options.lookup.mjs +30 -0
  35. package/esm2022/lib/components/calendar/scheduler/enums/schedule-date-status.enum.mjs +7 -0
  36. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.mjs +2 -0
  37. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.mjs +2 -0
  38. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.mjs +2 -0
  39. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.mjs +2 -0
  40. package/esm2022/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.mjs +2 -0
  41. package/esm2022/lib/components/calendar/scheduler/mock-schedule.mjs +80 -0
  42. package/esm2022/lib/components/calendar/scheduler/scheduler.component.mjs +144 -0
  43. package/esm2022/lib/components/calendar/services/calendar-utils.service.mjs +211 -0
  44. package/esm2022/lib/components/chat/chat.component.mjs +308 -0
  45. package/esm2022/lib/components/chat/chat.component.module.mjs +85 -0
  46. package/esm2022/lib/components/chat/chat.service.mjs +63 -0
  47. package/esm2022/lib/components/chat/enums/sender-types.enum.mjs +6 -0
  48. package/esm2022/lib/components/chat/gif-selector/gif-selector.component.mjs +77 -0
  49. package/esm2022/lib/components/chat/gif-selector/gif-selector.service.mjs +41 -0
  50. package/esm2022/lib/components/chat/gif-selector/tenor-media-format.interface.mjs +2 -0
  51. package/esm2022/lib/components/chat/gif-selector/tenor-object.interface.mjs +2 -0
  52. package/esm2022/lib/components/chat/gif-selector/tenor-result.interface.mjs +2 -0
  53. package/esm2022/lib/components/chat/interfaces/date-messages.interface.mjs +2 -0
  54. package/esm2022/lib/components/chat/interfaces/message-attachment.interface.mjs +2 -0
  55. package/esm2022/lib/components/chat/interfaces/message.interface.mjs +2 -0
  56. package/esm2022/lib/components/chat/interfaces/send-options-message.interface.mjs +2 -0
  57. package/esm2022/lib/components/chat/interfaces/type-send-message.enum.mjs +7 -0
  58. package/esm2022/lib/components/chat-suggestion/chat-suggestion.component.mjs +21 -0
  59. package/esm2022/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.mjs +2 -0
  60. package/esm2022/lib/components/circle-progress/circle-progress.component.mjs +143 -0
  61. package/esm2022/lib/components/circle-progress/circle-progress.module.mjs +18 -0
  62. package/esm2022/lib/components/circle-progress/enums/circle-variable.enum.mjs +6 -0
  63. package/esm2022/lib/components/circle-progress/interfaces/circle-progress-config.interface.mjs +2 -0
  64. package/esm2022/lib/components/client-home/client-home.component.mjs +123 -0
  65. package/esm2022/lib/components/client-home/enums/client-home-component.enum.mjs +9 -0
  66. package/esm2022/lib/components/client-home/interfaces/chat-meta.interface.mjs +2 -0
  67. package/esm2022/lib/components/client-home/interfaces/home-dashboard-inputs.interface.mjs +2 -0
  68. package/esm2022/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.mjs +2 -0
  69. package/esm2022/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.mjs +2 -0
  70. package/esm2022/lib/components/client-home/lookup/client-home.config.mjs +30 -0
  71. package/esm2022/lib/components/client-home/lookup/inner-progress-default-colors.config.mjs +6 -0
  72. package/esm2022/lib/components/client-home/lookup/inner-progress-pink-colors.config.mjs +6 -0
  73. package/esm2022/lib/components/client-home/lookup/inner-progress-purple-colors.config.mjs +6 -0
  74. package/esm2022/lib/components/client-home/lookup/inner-progress-teal-colors.config.mjs +6 -0
  75. package/esm2022/lib/components/client-home/lookup/inner-progress-white-colors.config.mjs +10 -0
  76. package/esm2022/lib/components/client-home/lookup/progress-default-colors.config.mjs +10 -0
  77. package/esm2022/lib/components/client-home/lookup/progress-white-colors.config.mjs +10 -0
  78. package/esm2022/lib/components/client-home/pipes/chat-meta.pipe.mjs +60 -0
  79. package/esm2022/lib/components/client-home/pipes/get-color-by-matcher.pipe.mjs +33 -0
  80. package/esm2022/lib/components/client-match-overview/client-match-overview.component.mjs +300 -0
  81. package/esm2022/lib/components/client-match-overview/enums/conversation-flag.enum.mjs +6 -0
  82. package/esm2022/lib/components/client-match-overview/enums/counter-flag-base.enum.mjs +6 -0
  83. package/esm2022/lib/components/client-match-overview/enums/inner-circle-state.enum.mjs +8 -0
  84. package/esm2022/lib/components/client-match-overview/interfaces/client-match-overview.interface.mjs +2 -0
  85. package/esm2022/lib/components/client-match-overview/interfaces/conversation-flag.interface.mjs +2 -0
  86. package/esm2022/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.mjs +2 -0
  87. package/esm2022/lib/components/client-match-overview/interfaces/progress-decision.interface.mjs +2 -0
  88. package/esm2022/lib/components/client-match-overview/interfaces/progress-facts.interface.mjs +2 -0
  89. package/esm2022/lib/components/client-match-overview/lookups/computer-inner-state.lookup.mjs +81 -0
  90. package/esm2022/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.mjs +8 -0
  91. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-gap.config.mjs +4 -0
  92. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.config.mjs +3 -0
  93. package/esm2022/lib/components/client-match-overview/progress-ticker/progress-ticker.service.mjs +43 -0
  94. package/esm2022/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.mjs +113 -0
  95. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.mjs +11 -0
  96. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.mjs +27 -0
  97. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.mjs +19 -0
  98. package/esm2022/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.mjs +21 -0
  99. package/esm2022/lib/components/lib-client-dashboard/client-dashboard.component.mjs +173 -0
  100. package/esm2022/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.mjs +11 -0
  101. package/esm2022/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.mjs +7 -0
  102. package/esm2022/lib/components/lib-client-dashboard/interfaces/ads.interface.mjs +2 -0
  103. package/esm2022/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.mjs +2 -0
  104. package/esm2022/lib/components/lib-client-dashboard/lookups/client-dashboard.config.mjs +15 -0
  105. package/esm2022/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.mjs +146 -0
  106. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.mjs +2 -0
  107. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.mjs +2 -0
  108. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.mjs +2 -0
  109. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.mjs +2 -0
  110. package/esm2022/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.mjs +2 -0
  111. package/esm2022/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.mjs +21 -0
  112. package/esm2022/lib/components/matcher-statuses/enums/matcher-statuses.enum.mjs +15 -0
  113. package/esm2022/lib/components/matcher-statuses/interfaces/status.interface.mjs +2 -0
  114. package/esm2022/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.mjs +54 -0
  115. package/esm2022/lib/components/matcher-statuses/matcher-statuses.component.mjs +58 -0
  116. package/esm2022/lib/components/matcher-statuses/pipes/is-status-included.pipe.mjs +19 -0
  117. package/esm2022/lib/components/profile-card/profile-card.component.mjs +35 -0
  118. package/esm2022/lib/components/profile-card/profile-card.module.mjs +19 -0
  119. package/esm2022/lib/components/spider-chart/interfaces/chart-data-circle.interface.mjs +2 -0
  120. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.mjs +2 -0
  121. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.mjs +2 -0
  122. package/esm2022/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.mjs +2 -0
  123. package/esm2022/lib/components/spider-chart/interfaces/config.interface.mjs +2 -0
  124. package/esm2022/lib/components/spider-chart/interfaces/dataset.interface.mjs +2 -0
  125. package/esm2022/lib/components/spider-chart/interfaces/polygon-color.interface.mjs +2 -0
  126. package/esm2022/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.mjs +2 -0
  127. package/esm2022/lib/components/spider-chart/lookup/default-spider-config.mjs +67 -0
  128. package/esm2022/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.mjs +11 -0
  129. package/esm2022/lib/components/spider-chart/lookup/svg-config.lookup.mjs +277 -0
  130. package/esm2022/lib/components/spider-chart/spider-chart.component.mjs +235 -0
  131. package/esm2022/lib/enums/direction.enum.mjs +6 -0
  132. package/esm2022/lib/enums/form-field-type.mjs +30 -0
  133. package/esm2022/lib/enums/local-storage-keys.enum.mjs +5 -0
  134. package/esm2022/lib/enums/status-types.mjs +8 -0
  135. package/esm2022/lib/model/select-option-template.mjs +2 -0
  136. package/esm2022/lib/operations/operations.mjs +19 -0
  137. package/esm2022/lib/pipes/array-sort/array.sort.pipe.mjs +49 -0
  138. package/esm2022/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.mjs +17 -0
  139. package/esm2022/lib/pipes/date-localization/date-localization.pipe.mjs +31 -0
  140. package/esm2022/lib/pipes/fallback-translate/fallback-translate.pipe.mjs +28 -0
  141. package/esm2022/lib/pipes/get-display-value/get-display-value.pipe.mjs +59 -0
  142. package/esm2022/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.mjs +22 -0
  143. package/esm2022/lib/pipes/initials/initials.pipe.mjs +25 -0
  144. package/esm2022/lib/pipes/round/round.pipe.mjs +17 -0
  145. package/esm2022/lib/pipes/update-llm-preference/update-llm-preference.pipe.mjs +25 -0
  146. package/esm2022/lib/services/abstract-cache.service.mjs +10 -0
  147. package/esm2022/lib/shared/shared/alert-popup/alert-popup.component.mjs +38 -0
  148. package/esm2022/lib/shared/shared/message-modal/message-modal.component.mjs +95 -0
  149. package/esm2022/lib/shared/shared/status-icon/status-icon.component.mjs +14 -0
  150. package/esm2022/lib/shared/shared.module.mjs +23 -0
  151. package/esm2022/naniteninja-dashboard-components-lib.mjs +5 -0
  152. package/esm2022/public-api.mjs +123 -0
  153. package/fesm2022/naniteninja-dashboard-components-lib.mjs +202 -178
  154. package/fesm2022/naniteninja-dashboard-components-lib.mjs.map +1 -1
  155. package/index.d.ts +3 -1669
  156. package/lib/components/auto-delegation/animations.d.ts +1 -0
  157. package/lib/components/auto-delegation/auto-delegation-modal.component.d.ts +29 -0
  158. package/lib/components/auto-delegation/enums/auto-delegation.event-type.enum.d.ts +4 -0
  159. package/lib/components/auto-delegation/enums/auto-delegation.event-value.enum.d.ts +5 -0
  160. package/lib/components/auto-delegation/interface/auto-delegation-data.interface.d.ts +31 -0
  161. package/lib/components/auto-delegation/interface/auto-delegation.event.interface.d.ts +6 -0
  162. package/lib/components/auto-delegation/interface/auto-delegation.modal-data.interface.d.ts +8 -0
  163. package/lib/components/auto-delegation/interface/preferences.interface.d.ts +17 -0
  164. package/lib/components/calendar/agenda/agenda-day-card/agenda-day-card.component.d.ts +12 -0
  165. package/lib/components/calendar/agenda/agenda.component.d.ts +27 -0
  166. package/lib/components/calendar/agenda/agenda.module.d.ts +12 -0
  167. package/lib/components/calendar/agenda/enums/agenda-item-type.enum.d.ts +4 -0
  168. package/lib/components/calendar/agenda/interfaces/agenda.day.interface.d.ts +7 -0
  169. package/lib/components/calendar/agenda/interfaces/agenda.event.inetrface.d.ts +9 -0
  170. package/lib/components/calendar/agenda/types/agenda-item.type.d.ts +7 -0
  171. package/lib/components/calendar/components/edit-recurring-event/edit-recurring-event.component.d.ts +19 -0
  172. package/lib/components/calendar/components/event-form/event-form.component.d.ts +67 -0
  173. package/lib/components/calendar/components/event-form/event-form.module.d.ts +20 -0
  174. package/lib/components/calendar/components/event-info/event-info.component.d.ts +24 -0
  175. package/lib/components/calendar/enums/calendar.account.enum.d.ts +4 -0
  176. package/lib/components/calendar/enums/calendar.account.icons.enum.d.ts +4 -0
  177. package/lib/components/calendar/enums/event-type.enum.d.ts +8 -0
  178. package/lib/components/calendar/enums/recurring.edit.options.enum.d.ts +5 -0
  179. package/lib/components/calendar/enums/recurring.type.enum.d.ts +6 -0
  180. package/lib/components/calendar/interfaces/calendar.account.interface.d.ts +14 -0
  181. package/lib/components/calendar/interfaces/calendar.account.theme.interface.d.ts +5 -0
  182. package/lib/components/calendar/interfaces/event.form.interface.d.ts +22 -0
  183. package/lib/components/calendar/interfaces/event.form.output.interface.d.ts +10 -0
  184. package/lib/components/calendar/interfaces/event.interface.d.ts +33 -0
  185. package/lib/components/calendar/interfaces/event.time.interface.d.ts +4 -0
  186. package/lib/components/calendar/interfaces/recurring.event.interface.d.ts +16 -0
  187. package/lib/components/calendar/interfaces/recurring.exception.interface.d.ts +14 -0
  188. package/lib/components/calendar/interfaces/recurring.pattern.interface.d.ts +16 -0
  189. package/lib/components/calendar/lookups/recurring.options.lookup.d.ts +2 -0
  190. package/lib/components/calendar/scheduler/enums/schedule-date-status.enum.d.ts +5 -0
  191. package/lib/components/calendar/scheduler/interfaces/scheduler.action.interface.d.ts +10 -0
  192. package/lib/components/calendar/scheduler/interfaces/scheduler.event.day.interface.d.ts +5 -0
  193. package/lib/components/calendar/scheduler/interfaces/scheduler.event.interface.d.ts +26 -0
  194. package/lib/components/calendar/scheduler/interfaces/scheduler.event.suggestion.interface.d.ts +13 -0
  195. package/lib/components/calendar/scheduler/interfaces/scheduler.slots.interface.d.ts +6 -0
  196. package/lib/components/calendar/scheduler/mock-schedule.d.ts +9 -0
  197. package/lib/components/calendar/scheduler/scheduler.component.d.ts +36 -0
  198. package/lib/components/calendar/services/calendar-utils.service.d.ts +39 -0
  199. package/lib/components/chat/chat.component.d.ts +70 -0
  200. package/lib/components/chat/chat.component.module.d.ts +22 -0
  201. package/lib/components/chat/chat.service.d.ts +15 -0
  202. package/lib/components/chat/enums/sender-types.enum.d.ts +4 -0
  203. package/lib/components/chat/gif-selector/gif-selector.component.d.ts +25 -0
  204. package/lib/components/chat/gif-selector/gif-selector.service.d.ts +15 -0
  205. package/lib/components/chat/gif-selector/tenor-media-format.interface.d.ts +7 -0
  206. package/lib/components/chat/gif-selector/tenor-object.interface.d.ts +5 -0
  207. package/lib/components/chat/gif-selector/tenor-result.interface.d.ts +16 -0
  208. package/lib/components/chat/interfaces/date-messages.interface.d.ts +6 -0
  209. package/lib/components/chat/interfaces/message-attachment.interface.d.ts +6 -0
  210. package/lib/components/chat/interfaces/message.interface.d.ts +11 -0
  211. package/lib/components/chat/interfaces/send-options-message.interface.d.ts +5 -0
  212. package/lib/components/chat/interfaces/type-send-message.enum.d.ts +5 -0
  213. package/lib/components/chat-suggestion/chat-suggestion.component.d.ts +9 -0
  214. package/lib/components/chat-suggestion/interfaces/chat-suggestion.interface.d.ts +4 -0
  215. package/lib/components/circle-progress/circle-progress.component.d.ts +31 -0
  216. package/lib/components/circle-progress/circle-progress.module.d.ts +8 -0
  217. package/lib/components/circle-progress/enums/circle-variable.enum.d.ts +4 -0
  218. package/lib/components/circle-progress/interfaces/circle-progress-config.interface.d.ts +29 -0
  219. package/lib/components/client-home/client-home.component.d.ts +44 -0
  220. package/lib/components/client-home/enums/client-home-component.enum.d.ts +7 -0
  221. package/lib/components/client-home/interfaces/chat-meta.interface.d.ts +7 -0
  222. package/lib/components/client-home/interfaces/home-dashboard-inputs.interface.d.ts +45 -0
  223. package/lib/components/client-home/interfaces/inner-partial-circle-progress-colors.interface.d.ts +5 -0
  224. package/lib/components/client-home/interfaces/partial-circle-progress-colors.interface.d.ts +9 -0
  225. package/lib/components/client-home/lookup/client-home.config.d.ts +2 -0
  226. package/lib/components/client-home/lookup/inner-progress-default-colors.config.d.ts +2 -0
  227. package/lib/components/client-home/lookup/inner-progress-pink-colors.config.d.ts +2 -0
  228. package/lib/components/client-home/lookup/inner-progress-purple-colors.config.d.ts +2 -0
  229. package/lib/components/client-home/lookup/inner-progress-teal-colors.config.d.ts +2 -0
  230. package/lib/components/client-home/lookup/inner-progress-white-colors.config.d.ts +2 -0
  231. package/lib/components/client-home/lookup/progress-default-colors.config.d.ts +2 -0
  232. package/lib/components/client-home/lookup/progress-white-colors.config.d.ts +2 -0
  233. package/lib/components/client-home/pipes/chat-meta.pipe.d.ts +10 -0
  234. package/lib/components/client-home/pipes/get-color-by-matcher.pipe.d.ts +10 -0
  235. package/lib/components/client-match-overview/client-match-overview.component.d.ts +55 -0
  236. package/lib/components/client-match-overview/enums/conversation-flag.enum.d.ts +4 -0
  237. package/lib/components/client-match-overview/enums/counter-flag-base.enum.d.ts +4 -0
  238. package/lib/components/client-match-overview/enums/inner-circle-state.enum.d.ts +6 -0
  239. package/lib/components/client-match-overview/interfaces/client-match-overview.interface.d.ts +19 -0
  240. package/lib/components/client-match-overview/interfaces/conversation-flag.interface.d.ts +8 -0
  241. package/lib/components/client-match-overview/interfaces/dashboard-match-request.interface.d.ts +7 -0
  242. package/lib/components/client-match-overview/interfaces/progress-decision.interface.d.ts +10 -0
  243. package/lib/components/client-match-overview/interfaces/progress-facts.interface.d.ts +11 -0
  244. package/lib/components/client-match-overview/lookups/computer-inner-state.lookup.d.ts +7 -0
  245. package/lib/components/client-match-overview/lookups/limit-dates-indicator.lookup.d.ts +5 -0
  246. package/lib/components/client-match-overview/progress-ticker/progress-gap.config.d.ts +2 -0
  247. package/lib/components/client-match-overview/progress-ticker/progress-ticker.config.d.ts +2 -0
  248. package/lib/components/client-match-overview/progress-ticker/progress-ticker.service.d.ts +11 -0
  249. package/lib/components/dashboard-swipeable-tabs/dashboard-swipeable-tabs.component.d.ts +29 -0
  250. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-main-swiper-options.d.ts +2 -0
  251. package/lib/components/dashboard-swipeable-tabs/lookups/dashboard-thumbs-swiper-options.d.ts +2 -0
  252. package/lib/components/dashboard-swipeable-tabs/lookups/main-swiper-default-options.d.ts +2 -0
  253. package/lib/components/dashboard-swipeable-tabs/lookups/thumbs-swiper-default-options.d.ts +2 -0
  254. package/lib/components/lib-client-dashboard/client-dashboard.component.d.ts +75 -0
  255. package/lib/components/lib-client-dashboard/enums/alert-status-fields.enum.d.ts +9 -0
  256. package/lib/components/lib-client-dashboard/enums/client-dashboard-component.enum.d.ts +5 -0
  257. package/lib/components/lib-client-dashboard/interfaces/ads.interface.d.ts +14 -0
  258. package/lib/components/lib-client-dashboard/interfaces/client-dashboard-inputs.interface.d.ts +29 -0
  259. package/lib/components/lib-client-dashboard/lookups/client-dashboard.config.d.ts +2 -0
  260. package/lib/components/lib-compose-matcher-dash/compose-matcher-dash.component.d.ts +48 -0
  261. package/lib/components/lib-compose-matcher-dash/interfaces/chart-data.interface.d.ts +5 -0
  262. package/lib/components/lib-compose-matcher-dash/interfaces/chat-identifier.interface.d.ts +5 -0
  263. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-dashboard-inputs.interface.d.ts +26 -0
  264. package/lib/components/lib-compose-matcher-dash/interfaces/matcher-profile.interface.d.ts +8 -0
  265. package/lib/components/lib-compose-matcher-dash/interfaces/prospect-data.interface.d.ts +24 -0
  266. package/lib/components/lib-compose-matcher-dash/pipes/get-profile-with-progress.pipe.d.ts +9 -0
  267. package/lib/components/matcher-statuses/enums/matcher-statuses.enum.d.ts +13 -0
  268. package/lib/components/matcher-statuses/interfaces/status.interface.d.ts +6 -0
  269. package/lib/components/matcher-statuses/lookups/matcher-statuses.lookup.d.ts +2 -0
  270. package/lib/components/matcher-statuses/matcher-statuses.component.d.ts +23 -0
  271. package/lib/components/matcher-statuses/pipes/is-status-included.pipe.d.ts +8 -0
  272. package/lib/components/profile-card/profile-card.component.d.ts +11 -0
  273. package/lib/components/profile-card/profile-card.module.d.ts +9 -0
  274. package/lib/components/spider-chart/interfaces/chart-data-circle.interface.d.ts +10 -0
  275. package/lib/components/spider-chart/interfaces/chart-data-defs-f.interface.d.ts +11 -0
  276. package/lib/components/spider-chart/interfaces/chart-data-defs-lg.interface.d.ts +11 -0
  277. package/lib/components/spider-chart/interfaces/chart-data-defs-rg.interface.d.ts +10 -0
  278. package/lib/components/spider-chart/interfaces/config.interface.d.ts +19 -0
  279. package/lib/components/spider-chart/interfaces/dataset.interface.d.ts +7 -0
  280. package/lib/components/spider-chart/interfaces/polygon-color.interface.d.ts +4 -0
  281. package/lib/components/spider-chart/interfaces/spider-chart-attribute.interface.d.ts +6 -0
  282. package/lib/components/spider-chart/lookup/default-spider-config.d.ts +2 -0
  283. package/lib/components/spider-chart/lookup/demo-polygon-colors.lookup.d.ts +2 -0
  284. package/lib/components/spider-chart/lookup/svg-config.lookup.d.ts +8 -0
  285. package/lib/components/spider-chart/spider-chart.component.d.ts +52 -0
  286. package/lib/enums/direction.enum.d.ts +4 -0
  287. package/lib/enums/form-field-type.d.ts +28 -0
  288. package/lib/enums/local-storage-keys.enum.d.ts +3 -0
  289. package/lib/enums/status-types.d.ts +6 -0
  290. package/lib/model/select-option-template.d.ts +5 -0
  291. package/lib/operations/operations.d.ts +19 -0
  292. package/lib/pipes/array-sort/array.sort.pipe.d.ts +7 -0
  293. package/lib/pipes/count-non-empty-fields/count-non-empty-fields.pipe.d.ts +7 -0
  294. package/lib/pipes/date-localization/date-localization.pipe.d.ts +8 -0
  295. package/lib/pipes/fallback-translate/fallback-translate.pipe.d.ts +11 -0
  296. package/lib/pipes/get-display-value/get-display-value.pipe.d.ts +13 -0
  297. package/lib/pipes/get-multi-select-display-text/get-multi-select-display-text.pipe.d.ts +8 -0
  298. package/lib/pipes/initials/initials.pipe.d.ts +7 -0
  299. package/lib/pipes/round/round.pipe.d.ts +7 -0
  300. package/lib/pipes/update-llm-preference/update-llm-preference.pipe.d.ts +8 -0
  301. package/lib/services/abstract-cache.service.d.ts +9 -0
  302. package/lib/shared/shared/alert-popup/alert-popup.component.d.ts +14 -0
  303. package/lib/shared/shared/message-modal/message-modal.component.d.ts +29 -0
  304. package/lib/shared/shared/status-icon/status-icon.component.d.ts +7 -0
  305. package/lib/shared/shared.module.d.ts +13 -0
  306. package/naniteninja-dashboard-components-lib-1.0.4.tgz +0 -0
  307. package/package.json +3 -1
  308. package/public-api.d.ts +122 -0
  309. package/src/lib/shared-styles/common/theme.scss +3 -3
@@ -0,0 +1,143 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import * as d3 from 'd3';
3
+ import { CommonOperations } from '../../operations/operations';
4
+ import { innerProgressDefaultColors } from '../client-home/lookup/inner-progress-default-colors.config';
5
+ import { innerProgressPinkColors } from '../client-home/lookup/inner-progress-pink-colors.config';
6
+ import { innerProgressTealColors } from '../client-home/lookup/inner-progress-teal-colors.config';
7
+ import { progressDefaultColors } from '../client-home/lookup/progress-default-colors.config';
8
+ import { INNER_CIRCLE_STATE } from '../client-match-overview/enums/inner-circle-state.enum';
9
+ import { CircleVariable } from './enums/circle-variable.enum';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ export class CircleProgressComponent {
13
+ set config(newConfig) {
14
+ if (newConfig) {
15
+ this._config = { ...this._config, ...newConfig };
16
+ }
17
+ }
18
+ get config() {
19
+ return this._config;
20
+ }
21
+ constructor(el) {
22
+ this.el = el;
23
+ this.variable = CircleVariable.Partial;
24
+ this._config = {
25
+ value: 10,
26
+ max: 100,
27
+ partialColors: progressDefaultColors,
28
+ showExternalPartialCircleProgress: true,
29
+ inner: {
30
+ value: 100,
31
+ max: 100,
32
+ colors: innerProgressDefaultColors,
33
+ state: INNER_CIRCLE_STATE.Quiet,
34
+ showIllumination: false,
35
+ },
36
+ imageUrl: '',
37
+ width: '62.6px',
38
+ height: '63.18px',
39
+ showValueProportionLabel: true,
40
+ imgObjectPosition: 'top',
41
+ hasNotification: false,
42
+ prefix: '$',
43
+ suffix: '',
44
+ };
45
+ this.innerProgressDefaultColors = innerProgressDefaultColors;
46
+ this.innerProgressPinkColors = innerProgressPinkColors;
47
+ this.innerProgressTealColors = innerProgressTealColors;
48
+ this.circleVariable = CircleVariable;
49
+ this.INNER_CIRCLE_STATE = INNER_CIRCLE_STATE;
50
+ this.pathId = CommonOperations.randomString(10);
51
+ this.innerCirclePathId = CommonOperations.randomString(10);
52
+ this.innerCircleBehindPathId = CommonOperations.randomString(10);
53
+ }
54
+ ngAfterViewInit() {
55
+ if (this.variable === CircleVariable.Complete) {
56
+ this.createCircle();
57
+ }
58
+ }
59
+ createCircle() {
60
+ const element = this.el.nativeElement.querySelector('svg');
61
+ const color = d3.interpolateRgb('#221E26', this.config.partialColors?.incomplete);
62
+ const path = d3.select(element).select('path');
63
+ d3.select(element)
64
+ .selectAll('path')
65
+ .data(this.createQuadrilateralSegments(this.generatePathSamplePoints(path.node(), 0.5)))
66
+ .enter()
67
+ .append('path')
68
+ .style('fill', (d) => color(d['t']))
69
+ .style('stroke', (d) => color(d['t']))
70
+ .attr('d', (d) => this.constructJoinedLinePath(d[0], d[1], d[2], d[3], 32));
71
+ }
72
+ generatePathSamplePoints(path, precision) {
73
+ const n = path.getTotalLength();
74
+ const t = [0];
75
+ let i = 0;
76
+ while ((i += precision) < n)
77
+ t.push(i);
78
+ t.push(n);
79
+ return t.map((r) => {
80
+ const domPoint = path.getPointAtLength(r);
81
+ const a = [domPoint.x, domPoint.y];
82
+ a['t'] = r / n;
83
+ return a;
84
+ });
85
+ }
86
+ createQuadrilateralSegments(points) {
87
+ return d3.range(points.length - 1).map((i) => {
88
+ const a = [points[i - 1], points[i], points[i + 1], points[i + 2]];
89
+ a['t'] = (points[i]['t'] + points[i + 1]['t']) / 2;
90
+ return a;
91
+ });
92
+ }
93
+ constructJoinedLinePath(p0, p1, p2, p3, width) {
94
+ const u12 = this.calculatePerpendicularVector(p1, p2);
95
+ const r = width / 6;
96
+ let a = [p1[0] + u12[0] * r, p1[1] + u12[1] * r];
97
+ let b = [p2[0] + u12[0] * r, p2[1] + u12[1] * r];
98
+ let c = [p2[0] - u12[0] * r, p2[1] - u12[1] * r];
99
+ let d = [p1[0] - u12[0] * r, p1[1] - u12[1] * r];
100
+ if (p0) {
101
+ const u01 = this.calculatePerpendicularVector(p0, p1);
102
+ const e = [p1[0] + u01[0] + u12[0], p1[1] + u01[1] + u12[1]];
103
+ a = this.computeLineIntersection(p1, e, a, b);
104
+ d = this.computeLineIntersection(p1, e, d, c);
105
+ }
106
+ if (p3) {
107
+ const u23 = this.calculatePerpendicularVector(p2, p3);
108
+ const e = [p2[0] + u23[0] + u12[0], p2[1] + u23[1] + u12[1]];
109
+ b = this.computeLineIntersection(p2, e, a, b);
110
+ c = this.computeLineIntersection(p2, e, d, c);
111
+ }
112
+ return 'M' + a + 'L' + b + ' ' + c + ' ' + d + 'Z';
113
+ }
114
+ computeLineIntersection(a, b, c, d) {
115
+ const x1 = c[0];
116
+ const x3 = a[0];
117
+ const x21 = d[0] - x1;
118
+ const x43 = b[0] - x3;
119
+ const y1 = c[1];
120
+ const y3 = a[1];
121
+ const y21 = d[1] - y1;
122
+ const y43 = b[1] - y3;
123
+ const ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
124
+ return [x1 + ua * x21, y1 + ua * y21];
125
+ }
126
+ calculatePerpendicularVector(p0, p1) {
127
+ const u01x = p0[1] - p1[1];
128
+ const u01y = p1[0] - p0[0];
129
+ const u01d = Math.sqrt(u01x * u01x + u01y * u01y);
130
+ return [u01x / u01d, u01y / u01d];
131
+ }
132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: CircleProgressComponent, selector: "lib-circle-progress", inputs: { variable: "variable", config: "config" }, ngImport: i0, template: "<img [ngStyle]=\"{ opacity: config.hasNotification ? 1 : 0 }\" src=\"assets/icons/notification-pop.svg\" class=\"notification-icon\" alt=\"menu btn notification icon\" />\n\n<div class=\"circle\" [ngClass]=\"{ 'circle-img': config.imageUrl, 'circle-text': !config.imageUrl }\">\n @if (!config.imageUrl) {\n <div class=\"text-container\">\n <span class=\"percent f-w-400 f-xl h-160\">{{ config.prefix + config.value + config.suffix }}</span>\n <span class=\"bottom-text f-w-400 f-xs h-100\">{{ type }}</span>\n </div>\n } @else {\n <img [src]=\"config.imageUrl\" [ngStyle]=\"{ 'object-position': config.imgObjectPosition }\" />\n }\n</div>\n\n@if (variable === circleVariable.Partial) {\n <div\n [ngClass]=\"{\n pulse: config.inner?.showIllumination,\n 'illuminated-external': showExternalPartialCircleProgress,\n 'illuminated-internal': !showExternalPartialCircleProgress,\n }\"\n ></div>\n <svg class=\"circle-progress__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n @if (config.showExternalPartialCircleProgress) {\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" transform=\"translate(1 0.5)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"#27242C\" transform=\"translate(2 0)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"url(#pattern0_239_3673)\" />\n }\n <g transform=\"translate(0.25)\">\n <!-- response time indicators -->\n @if (config.showExternalPartialCircleProgress) {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\" />\n } @else {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\" />\n }\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCirclePathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.inner?.value * progressPath.getTotalLength()) / config.inner?.max,\n }\"\n />\n </g>\n </mask>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCircleBehindPathId\">\n <g>\n <path d=\"M 45 0 A 45 45 0 1 1 44.9999 0\" stroke=\"white\" stroke-linecap=\"round\" stroke-width=\"5\" />\n </g>\n </mask>\n <radialGradient id=\"grad2\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerPink\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressPinkColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressPinkColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerTeal\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressTealColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressTealColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n </radialGradient>\n </defs>\n </g>\n @if (config.showValueProportionLabel) {\n <text\n x=\"25\"\n y=\"70\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"12\"\n fill=\"white\"\n stroke=\"black\"\n stroke-width=\"3\"\n stroke-linejoin=\"round\"\n stroke-linecap=\"round\"\n paint-order=\"stroke fill\"\n >\n {{ (24 * config.inner.value) / config.inner.max | number: '1.0-0' }}\n </text>\n }\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"43.5\" cy=\"43.5\" fill=\"black\"></circle>\n </mask>\n <pattern id=\"pattern0_239_3673\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_239_3673\" transform=\"scale(1)\" />\n </pattern>\n <filter id=\"filter0_f_239_3673\" x=\"0.510602\" y=\"0.145909\" width=\"87.6468\" height=\"74.376\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"4.92705\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter1_f_239_3673\" x=\"10.779\" y=\"11.1278\" width=\"65.4831\" height=\"65.4833\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"2.12309\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter2_d_239_3673\" x=\"9.88\" y=\"16.0474\" width=\"68.8873\" height=\"68.8874\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"6.63108\" />\n <feGaussianBlur stdDeviation=\"3.31554\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_239_3673\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_239_3673\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_239_3673\" x1=\"71.4224\" y1=\"13.7746\" x2=\"56.8589\" y2=\"88.1932\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0.581821\" stop-color=\"#27242C\" />\n <stop offset=\"1\" stop-color=\"#0C0B0E\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_239_3673\" x1=\"77.068\" y1=\"5.96974\" x2=\"5.2127\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint3_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint4_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(44.6705 43.9694) rotate(-90) scale(36.3006 37.8505)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint5_linear_239_3673\" x1=\"70.9798\" y1=\"11.9932\" x2=\"10.7034\" y2=\"16.6706\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint6_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(43.8027 43.8695) rotate(-90) scale(30.451 31.7512)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint7_linear_239_3673\" x1=\"71.1248\" y1=\"12.7476\" x2=\"12.2928\" y2=\"17.3129\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n </linearGradient>\n <radialGradient id=\"paint8_radial_239_3673\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(44.599 43.86) rotate(-90) scale(29.7213 30.9903)\">\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.880168\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n </defs>\n </svg>\n\n @if (config.showExternalPartialCircleProgress) {\n <svg class=\"circle-progress__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad)\" [attr.mask]=\"'url(#' + pathId + ')'\" />\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 7.2598244424559155 69.50875657567614 A 45 45 0 1 1 82.74017555754409 69.50875657567614\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"8.5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n <circle r=\"37.5\" cx=\"45\" cy=\"45\" fill=\"black\" />\n </mask>\n <radialGradient id=\"grad\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"90%\" [attr.stop-color]=\"config.partialColors?.gradientSecondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n </radialGradient>\n </defs>\n </svg>\n }\n}\n@if (variable === circleVariable.Complete) {\n <svg\n class=\"circle-progress-d3__main\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"-10 -10 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [ngStyle]=\"{ display: config.value === 0 ? 'none' : 'block' }\"\n >\n <g transform=\"translate(0.3,-0.3)\">\n <path fill=\"none\" stroke-width=\"1\" stroke=\"transparent\" d=\"M 0 45 A 45 45 0 0 1 45 0\" style=\"transform-origin: center; transform: translate(-1.4px, -0.7px)\"></path>\n </g>\n </svg>\n\n <svg class=\"circle-progress-d3__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" />\n <g transform=\"translate(0.3,-0.3)\" opacity=\"1\">\n <path\n opacity=\"0.15\"\n d=\"M 0 45 A 45 45 0 0 1 90 45 M 90 45 A 45 45 0 0 1 0 45\"\n stroke-width=\"12\"\n stroke=\"black\"\n style=\"transform-origin: center; transform: scale(0.69) translate(-1.4px, -0.7px)\"\n />\n </g>\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"44.5\" cy=\"44\" fill=\"black\"></circle>\n </mask>\n </defs>\n </svg>\n\n <svg class=\"circle-progress-d3__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.mask]=\"'url(#' + pathId + ')'\"\n [ngStyle]=\"{ fill: config.value === config.max ? config.partialColors?.complete : config.partialColors?.incomplete }\"\n />\n <defs>\n <mask class=\"circle-progress-d3__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"12\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n </mask>\n </defs>\n </svg>\n}\n", styles: [".pulse{overflow:visible!important}.pulse:before{content:\"\";position:absolute;inset:0;border-radius:50%;animation:pulse-animation 2s infinite}@keyframes pulse-animation{0%{transform:scale(.95);box-shadow:0 0 #fe3c73e3}70%{transform:scale(1);box-shadow:0 0 0 10px #fe3c7300}to{transform:scale(.95);box-shadow:0 0 #fe3c7300}}:host{position:relative;display:flex;width:var(--width);--width: 101px;--font-family: \"Calistoga\", serif;--color-text: #fff;--font-size-percentage: 17px}.label-hours{position:absolute;bottom:3.5em;left:3.5em;font-size:7px;z-index:99}.circle{position:absolute;top:48%;left:50%;height:var(--lib-circle-progress-height, 65%);width:var(--lib-circle-progress-width, 65%);transform:translate(-50%,-50%);background:linear-gradient(180deg,#27242c 61.33%,#0c0b0e 96.43%);border-radius:50%;display:grid;justify-content:center;align-items:center}.circle-text{width:85%;height:85%}.circle-img{display:block;overflow:hidden}.circle .text-container{display:grid}.circle .text-container .percent{text-align:center;color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-percentage)}.circle .text-container .bottom-text{text-align:center;opacity:.6;color:#ffffff80}.circle img{width:100%;height:100%;object-fit:cover}.circle-progress__image{z-index:5;position:relative}.circle-progress__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:5}.circle-progress__mask>g{transform:scale(.92);transform-origin:center center}.circle-progress__mask>g>path{transform-origin:center center}.circle-progress-d3__image{position:relative;z-index:8}.circle-progress-d3__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:11}.circle-progress-d3__mask>g{transform:scale(.88);transform-origin:center center}.circle-progress-d3__mask>g>path{transform-origin:center center}.circle-progress-d3__main{position:absolute;top:0;transform:scale(.69) translate(-12.05%,-11.9%);z-index:10}.pulse.illuminated-external{position:absolute;top:10%;left:11.5%;width:75%;height:75%}.pulse.illuminated-internal{position:absolute;top:14%;left:16%;width:67%;height:67%}.notification-icon{position:absolute;top:12.5%;right:12.5%;width:30%;z-index:6}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
134
+ }
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressComponent, decorators: [{
136
+ type: Component,
137
+ args: [{ selector: 'lib-circle-progress', changeDetection: ChangeDetectionStrategy.OnPush, template: "<img [ngStyle]=\"{ opacity: config.hasNotification ? 1 : 0 }\" src=\"assets/icons/notification-pop.svg\" class=\"notification-icon\" alt=\"menu btn notification icon\" />\n\n<div class=\"circle\" [ngClass]=\"{ 'circle-img': config.imageUrl, 'circle-text': !config.imageUrl }\">\n @if (!config.imageUrl) {\n <div class=\"text-container\">\n <span class=\"percent f-w-400 f-xl h-160\">{{ config.prefix + config.value + config.suffix }}</span>\n <span class=\"bottom-text f-w-400 f-xs h-100\">{{ type }}</span>\n </div>\n } @else {\n <img [src]=\"config.imageUrl\" [ngStyle]=\"{ 'object-position': config.imgObjectPosition }\" />\n }\n</div>\n\n@if (variable === circleVariable.Partial) {\n <div\n [ngClass]=\"{\n pulse: config.inner?.showIllumination,\n 'illuminated-external': showExternalPartialCircleProgress,\n 'illuminated-internal': !showExternalPartialCircleProgress,\n }\"\n ></div>\n <svg class=\"circle-progress__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n @if (config.showExternalPartialCircleProgress) {\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" transform=\"translate(1 0.5)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"#27242C\" transform=\"translate(2 0)\" />\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3028\" rx=\"27.2427\" ry=\"26.9757\" fill=\"url(#pattern0_239_3673)\" />\n }\n <g transform=\"translate(0.25)\">\n <!-- response time indicators -->\n @if (config.showExternalPartialCircleProgress) {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(0.659 0.659) translate(+22 21.5) rotate(225, 45, 45)\" />\n } @else {\n @if (config.inner?.state === INNER_CIRCLE_STATE.Waiting || config.inner?.state === INNER_CIRCLE_STATE.Unresponsive) {\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.fill]=\"config.inner?.state === INNER_CIRCLE_STATE.Waiting ? 'url(#gradInnerPink)' : 'url(#gradInnerTeal)'\"\n [attr.mask]=\"'url(#' + innerCircleBehindPathId + ')'\"\n transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\"\n />\n }\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad2)\" [attr.mask]=\"'url(#' + innerCirclePathId + ')'\" transform=\"scale(+0.70 0.70) translate(+20.0 16.5) rotate(225, 45, 45)\" />\n }\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCirclePathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.inner?.value * progressPath.getTotalLength()) / config.inner?.max,\n }\"\n />\n </g>\n </mask>\n <mask class=\"circle-progress__mask\" [attr.id]=\"innerCircleBehindPathId\">\n <g>\n <path d=\"M 45 0 A 45 45 0 1 1 44.9999 0\" stroke=\"white\" stroke-linecap=\"round\" stroke-width=\"5\" />\n </g>\n </mask>\n <radialGradient id=\"grad2\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerPink\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressPinkColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressPinkColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressPinkColors?.tertiary\" />\n </radialGradient>\n\n <radialGradient id=\"gradInnerTeal\">\n <stop offset=\"0%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n <stop offset=\"91%\" [attr.stop-color]=\"innerProgressTealColors?.primary\" />\n <stop offset=\"95%\" [attr.stop-color]=\"innerProgressTealColors?.secondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"innerProgressTealColors?.tertiary\" />\n </radialGradient>\n </defs>\n </g>\n @if (config.showValueProportionLabel) {\n <text\n x=\"25\"\n y=\"70\"\n text-anchor=\"middle\"\n dominant-baseline=\"middle\"\n font-size=\"12\"\n fill=\"white\"\n stroke=\"black\"\n stroke-width=\"3\"\n stroke-linejoin=\"round\"\n stroke-linecap=\"round\"\n paint-order=\"stroke fill\"\n >\n {{ (24 * config.inner.value) / config.inner.max | number: '1.0-0' }}\n </text>\n }\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"43.5\" cy=\"43.5\" fill=\"black\"></circle>\n </mask>\n <pattern id=\"pattern0_239_3673\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_239_3673\" transform=\"scale(1)\" />\n </pattern>\n <filter id=\"filter0_f_239_3673\" x=\"0.510602\" y=\"0.145909\" width=\"87.6468\" height=\"74.376\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"4.92705\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter1_f_239_3673\" x=\"10.779\" y=\"11.1278\" width=\"65.4831\" height=\"65.4833\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"BackgroundImageFix\" result=\"shape\" />\n <feGaussianBlur stdDeviation=\"2.12309\" result=\"effect1_foregroundBlur_239_3673\" />\n </filter>\n <filter id=\"filter2_d_239_3673\" x=\"9.88\" y=\"16.0474\" width=\"68.8873\" height=\"68.8874\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\">\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\" />\n <feOffset dy=\"6.63108\" />\n <feGaussianBlur stdDeviation=\"3.31554\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\" />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_239_3673\" />\n <feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_239_3673\" result=\"shape\" />\n </filter>\n <linearGradient id=\"paint0_linear_239_3673\" x1=\"71.4224\" y1=\"13.7746\" x2=\"56.8589\" y2=\"88.1932\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0.581821\" stop-color=\"#27242C\" />\n <stop offset=\"1\" stop-color=\"#0C0B0E\" />\n </linearGradient>\n <linearGradient id=\"paint1_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint2_linear_239_3673\" x1=\"77.068\" y1=\"5.96974\" x2=\"5.2127\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <linearGradient id=\"paint3_linear_239_3673\" x1=\"77.0682\" y1=\"5.96974\" x2=\"5.21288\" y2=\"11.5456\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint4_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(44.6705 43.9694) rotate(-90) scale(36.3006 37.8505)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint5_linear_239_3673\" x1=\"70.9798\" y1=\"11.9932\" x2=\"10.7034\" y2=\"16.6706\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.partialColors?.secondary\" />\n </linearGradient>\n <radialGradient\n id=\"paint6_radial_239_3673\"\n cx=\"0\"\n cy=\"0\"\n r=\"1\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"translate(43.8027 43.8695) rotate(-90) scale(30.451 31.7512)\"\n >\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.822917\" [attr.stop-color]=\"config.partialColors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n <linearGradient id=\"paint7_linear_239_3673\" x1=\"71.1248\" y1=\"12.7476\" x2=\"12.2928\" y2=\"17.3129\" gradientUnits=\"userSpaceOnUse\">\n <stop [attr.stop-color]=\"config.inner?.colors?.tertiary\" />\n <stop offset=\"1\" [attr.stop-color]=\"config.inner?.colors?.secondary\" />\n </linearGradient>\n <radialGradient id=\"paint8_radial_239_3673\" cx=\"0\" cy=\"0\" r=\"1\" gradientUnits=\"userSpaceOnUse\" gradientTransform=\"translate(44.599 43.86) rotate(-90) scale(29.7213 30.9903)\">\n <stop offset=\"0.629654\" stop-color=\"white\" stop-opacity=\"0\" />\n <stop offset=\"0.880168\" [attr.stop-color]=\"config.inner?.colors?.primary\" />\n <stop offset=\"0.988953\" stop-color=\"white\" stop-opacity=\"0\" />\n </radialGradient>\n </defs>\n </svg>\n\n @if (config.showExternalPartialCircleProgress) {\n <svg class=\"circle-progress__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle r=\"45\" cx=\"45\" cy=\"45\" fill=\"url(#grad)\" [attr.mask]=\"'url(#' + pathId + ')'\" />\n <defs>\n <mask class=\"circle-progress__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 7.2598244424559155 69.50875657567614 A 45 45 0 1 1 82.74017555754409 69.50875657567614\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"8.5\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n <circle r=\"37.5\" cx=\"45\" cy=\"45\" fill=\"black\" />\n </mask>\n <radialGradient id=\"grad\">\n <stop offset=\"0%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"80%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n <stop offset=\"90%\" [attr.stop-color]=\"config.partialColors?.gradientSecondary\" />\n <stop offset=\"100%\" [attr.stop-color]=\"config.partialColors?.gradientPrimary\" />\n </radialGradient>\n </defs>\n </svg>\n }\n}\n@if (variable === circleVariable.Complete) {\n <svg\n class=\"circle-progress-d3__main\"\n width=\"100%\"\n height=\"100%\"\n viewBox=\"-10 -10 90 90\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n [ngStyle]=\"{ display: config.value === 0 ? 'none' : 'block' }\"\n >\n <g transform=\"translate(0.3,-0.3)\">\n <path fill=\"none\" stroke-width=\"1\" stroke=\"transparent\" d=\"M 0 45 A 45 45 0 0 1 45 0\" style=\"transform-origin: center; transform: translate(-1.4px, -0.7px)\"></path>\n </g>\n </svg>\n\n <svg class=\"circle-progress-d3__image\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <ellipse mask=\"url(#cut-circle)\" cx=\"44.334\" cy=\"44.3024\" rx=\"33.9693\" ry=\"33.6363\" fill=\"url(#paint0_linear_239_3673)\" />\n <g transform=\"translate(0.3,-0.3)\" opacity=\"1\">\n <path\n opacity=\"0.15\"\n d=\"M 0 45 A 45 45 0 0 1 90 45 M 90 45 A 45 45 0 0 1 0 45\"\n stroke-width=\"12\"\n stroke=\"black\"\n style=\"transform-origin: center; transform: scale(0.69) translate(-1.4px, -0.7px)\"\n />\n </g>\n <defs>\n <mask id=\"cut-circle\">\n <rect x=\"0\" y=\"0\" width=\"90\" height=\"90\" fill=\"white\" />\n <circle r=\"27.5\" cx=\"44.5\" cy=\"44\" fill=\"black\"></circle>\n </mask>\n </defs>\n </svg>\n\n <svg class=\"circle-progress-d3__svg\" width=\"100%\" height=\"100%\" viewBox=\"0 0 90 90\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle\n r=\"45\"\n cx=\"45\"\n cy=\"45\"\n [attr.mask]=\"'url(#' + pathId + ')'\"\n [ngStyle]=\"{ fill: config.value === config.max ? config.partialColors?.complete : config.partialColors?.incomplete }\"\n />\n <defs>\n <mask class=\"circle-progress-d3__mask\" [attr.id]=\"pathId\">\n <g>\n <path\n #progressPath\n d=\"M 45 0 A 45 45 0 1 1 44.9999 0\"\n stroke=\"white\"\n stroke-linecap=\"round\"\n stroke-width=\"12\"\n [ngStyle]=\"{\n 'stroke-dasharray': progressPath.getTotalLength(),\n 'stroke-dashoffset': progressPath.getTotalLength() - (config.value * progressPath.getTotalLength()) / config.max,\n }\"\n />\n </g>\n </mask>\n </defs>\n </svg>\n}\n", styles: [".pulse{overflow:visible!important}.pulse:before{content:\"\";position:absolute;inset:0;border-radius:50%;animation:pulse-animation 2s infinite}@keyframes pulse-animation{0%{transform:scale(.95);box-shadow:0 0 #fe3c73e3}70%{transform:scale(1);box-shadow:0 0 0 10px #fe3c7300}to{transform:scale(.95);box-shadow:0 0 #fe3c7300}}:host{position:relative;display:flex;width:var(--width);--width: 101px;--font-family: \"Calistoga\", serif;--color-text: #fff;--font-size-percentage: 17px}.label-hours{position:absolute;bottom:3.5em;left:3.5em;font-size:7px;z-index:99}.circle{position:absolute;top:48%;left:50%;height:var(--lib-circle-progress-height, 65%);width:var(--lib-circle-progress-width, 65%);transform:translate(-50%,-50%);background:linear-gradient(180deg,#27242c 61.33%,#0c0b0e 96.43%);border-radius:50%;display:grid;justify-content:center;align-items:center}.circle-text{width:85%;height:85%}.circle-img{display:block;overflow:hidden}.circle .text-container{display:grid}.circle .text-container .percent{text-align:center;color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-percentage)}.circle .text-container .bottom-text{text-align:center;opacity:.6;color:#ffffff80}.circle img{width:100%;height:100%;object-fit:cover}.circle-progress__image{z-index:5;position:relative}.circle-progress__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:5}.circle-progress__mask>g{transform:scale(.92);transform-origin:center center}.circle-progress__mask>g>path{transform-origin:center center}.circle-progress-d3__image{position:relative;z-index:8}.circle-progress-d3__svg{position:absolute;top:0;transform:scale(.77) translate(-.65%,-1.6%);z-index:11}.circle-progress-d3__mask>g{transform:scale(.88);transform-origin:center center}.circle-progress-d3__mask>g>path{transform-origin:center center}.circle-progress-d3__main{position:absolute;top:0;transform:scale(.69) translate(-12.05%,-11.9%);z-index:10}.pulse.illuminated-external{position:absolute;top:10%;left:11.5%;width:75%;height:75%}.pulse.illuminated-internal{position:absolute;top:14%;left:16%;width:67%;height:67%}.notification-icon{position:absolute;top:12.5%;right:12.5%;width:30%;z-index:6}\n"] }]
138
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { variable: [{
139
+ type: Input
140
+ }], config: [{
141
+ type: Input
142
+ }] } });
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXByb2dyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2lyY2xlLXByb2dyZXNzL2NpcmNsZS1wcm9ncmVzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NpcmNsZS1wcm9ncmVzcy9jaXJjbGUtcHJvZ3Jlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRS9ELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBUzlELE1BQU0sT0FBTyx1QkFBdUI7SUEwQmxDLElBQ0ksTUFBTSxDQUFDLFNBQW9EO1FBQzdELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxFQUFF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QUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUzRCxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0QsQ0FBQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5QyxDQUFDLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3JELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLENBQVcsRUFBRSxDQUFXO1FBQ2hGLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekUsT0FBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEVBQVksRUFBRSxFQUFZO1FBQzdELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDOytHQXpJVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwrR0NsQnBDLHUvZUFxU0E7OzRGRG5SYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UscUJBQXFCLG1CQUdkLHVCQUF1QixDQUFDLE1BQU07K0VBR3RDLFFBQVE7c0JBQWhCLEtBQUs7Z0JBMEJGLE1BQU07c0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBDb21tb25PcGVyYXRpb25zIH0gZnJvbSAnLi4vLi4vb3BlcmF0aW9ucy9vcGVyYXRpb25zJztcbmltcG9ydCB7IElJbm5lclBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2ludGVyZmFjZXMvaW5uZXItcGFydGlhbC1jaXJjbGUtcHJvZ3Jlc3MtY29sb3JzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBpbm5lclByb2dyZXNzRGVmYXVsdENvbG9ycyB9IGZyb20gJy4uL2NsaWVudC1ob21lL2xvb2t1cC9pbm5lci1wcm9ncmVzcy1kZWZhdWx0LWNvbG9ycy5jb25maWcnO1xuaW1wb3J0IHsgaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnMgfSBmcm9tICcuLi9jbGllbnQtaG9tZS9sb29rdXAvaW5uZXItcHJvZ3Jlc3MtcGluay1jb2xvcnMuY29uZmlnJztcbmltcG9ydCB7IGlubmVyUHJvZ3Jlc3NUZWFsQ29sb3JzIH0gZnJvbSAnLi4vY2xpZW50LWhvbWUvbG9va3VwL2lubmVyLXByb2dyZXNzLXRlYWwtY29sb3JzLmNvbmZpZyc7XG5pbXBvcnQgeyBwcm9ncmVzc0RlZmF1bHRDb2xvcnMgfSBmcm9tICcuLi9jbGllbnQtaG9tZS9sb29rdXAvcHJvZ3Jlc3MtZGVmYXVsdC1jb2xvcnMuY29uZmlnJztcbmltcG9ydCB7IElOTkVSX0NJUkNMRV9TVEFURSB9IGZyb20gJy4uL2NsaWVudC1tYXRjaC1vdmVydmlldy9lbnVtcy9pbm5lci1jaXJjbGUtc3RhdGUuZW51bSc7XG5pbXBvcnQgeyBDaXJjbGVWYXJpYWJsZSB9IGZyb20gJy4vZW51bXMvY2lyY2xlLXZhcmlhYmxlLmVudW0nO1xuaW1wb3J0IHsgQ2lyY2xlUHJvZ3Jlc3NDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvY2lyY2xlLXByb2dyZXNzLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY2lyY2xlLXByb2dyZXNzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NpcmNsZS1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NpcmNsZS1wcm9ncmVzcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2lyY2xlUHJvZ3Jlc3NDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgdmFyaWFibGU6IENpcmNsZVZhcmlhYmxlID0gQ2lyY2xlVmFyaWFibGUuUGFydGlhbDtcblxuICBwcml2YXRlIF9jb25maWc6IFBhcnRpYWw8Q2lyY2xlUHJvZ3Jlc3NDb25maWc+ID0ge1xuICAgIHZhbHVlOiAxMCxcbiAgICBtYXg6IDEwMCxcbiAgICBwYXJ0aWFsQ29sb3JzOiBwcm9ncmVzc0RlZmF1bHRDb2xvcnMsXG4gICAgc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzOiB0cnVlLFxuXG4gICAgaW5uZXI6IHtcbiAgICAgIHZhbHVlOiAxMDAsXG4gICAgICBtYXg6IDEwMCxcbiAgICAgIGNvbG9yczogaW5uZXJQcm9ncmVzc0RlZmF1bHRDb2xvcnMsXG4gICAgICBzdGF0ZTogSU5ORVJfQ0lSQ0xFX1NUQVRFLlF1aWV0LFxuICAgICAgc2hvd0lsbHVtaW5hdGlvbjogZmFsc2UsXG4gICAgfSxcbiAgICBpbWFnZVVybDogJycsXG4gICAgd2lkdGg6ICc2Mi42cHgnLFxuICAgIGhlaWdodDogJzYzLjE4cHgnLFxuICAgIHNob3dWYWx1ZVByb3BvcnRpb25MYWJlbDogdHJ1ZSxcbiAgICBpbWdPYmplY3RQb3NpdGlvbjogJ3RvcCcsXG4gICAgaGFzTm90aWZpY2F0aW9uOiBmYWxzZSxcbiAgICBwcmVmaXg6ICckJyxcbiAgICBzdWZmaXg6ICcnLFxuICB9O1xuXG4gIEBJbnB1dCgpXG4gIHNldCBjb25maWcobmV3Q29uZmlnOiBQYXJ0aWFsPENpcmNsZVByb2dyZXNzQ29uZmlnPiB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChuZXdDb25maWcpIHtcbiAgICAgIHRoaXMuX2NvbmZpZyA9IHsgLi4udGhpcy5fY29uZmlnLCAuLi5uZXdDb25maWcgfTtcbiAgICB9XG4gIH1cblxuICBnZXQgY29uZmlnKCk6IFBhcnRpYWw8Q2lyY2xlUHJvZ3Jlc3NDb25maWc+IHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnO1xuICB9XG5cbiAgcHVibGljIGlubmVyUHJvZ3Jlc3NEZWZhdWx0Q29sb3JzOiBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgPSBpbm5lclByb2dyZXNzRGVmYXVsdENvbG9ycztcbiAgcHVibGljIGlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzOiBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgPSBpbm5lclByb2dyZXNzUGlua0NvbG9ycztcbiAgcHVibGljIGlubmVyUHJvZ3Jlc3NUZWFsQ29sb3JzOiBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgPSBpbm5lclByb2dyZXNzVGVhbENvbG9ycztcbiAgcHVibGljIGNpcmNsZVZhcmlhYmxlID0gQ2lyY2xlVmFyaWFibGU7XG5cbiAgcHVibGljIHJlYWRvbmx5IElOTkVSX0NJUkNMRV9TVEFURSA9IElOTkVSX0NJUkNMRV9TVEFURTtcbiAgcHVibGljIHJlYWRvbmx5IHBhdGhJZDogc3RyaW5nID0gQ29tbW9uT3BlcmF0aW9ucy5yYW5kb21TdHJpbmcoMTApO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5uZXJDaXJjbGVQYXRoSWQ6IHN0cmluZyA9IENvbW1vbk9wZXJhdGlvbnMucmFuZG9tU3RyaW5nKDEwKTtcbiAgcHVibGljIHJlYWRvbmx5IGlubmVyQ2lyY2xlQmVoaW5kUGF0aElkOiBzdHJpbmcgPSBDb21tb25PcGVyYXRpb25zLnJhbmRvbVN0cmluZygxMCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmFyaWFibGUgPT09IENpcmNsZVZhcmlhYmxlLkNvbXBsZXRlKSB7XG4gICAgICB0aGlzLmNyZWF0ZUNpcmNsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2lyY2xlKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cbiAgICBjb25zdCBjb2xvciA9IGQzLmludGVycG9sYXRlUmdiKCcjMjIxRTI2JywgdGhpcy5jb25maWcucGFydGlhbENvbG9ycz8uaW5jb21wbGV0ZSk7XG5cbiAgICBjb25zdCBwYXRoID0gZDMuc2VsZWN0KGVsZW1lbnQpLnNlbGVjdCgncGF0aCcpO1xuXG4gICAgZDMuc2VsZWN0KGVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCdwYXRoJylcbiAgICAgIC5kYXRhKHRoaXMuY3JlYXRlUXVhZHJpbGF0ZXJhbFNlZ21lbnRzKHRoaXMuZ2VuZXJhdGVQYXRoU2FtcGxlUG9pbnRzKHBhdGgubm9kZSgpLCAwLjUpKSlcbiAgICAgIC5lbnRlcigpXG4gICAgICAuYXBwZW5kKCdwYXRoJylcbiAgICAgIC5zdHlsZSgnZmlsbCcsIChkOiBudW1iZXJbXVtdKSA9PiBjb2xvcihkWyd0J10pKVxuICAgICAgLnN0eWxlKCdzdHJva2UnLCAoZDogbnVtYmVyW11bXSkgPT4gY29sb3IoZFsndCddKSlcbiAgICAgIC5hdHRyKCdkJywgKGQ6IG51bWJlcltdW10pID0+IHRoaXMuY29uc3RydWN0Sm9pbmVkTGluZVBhdGgoZFswXSwgZFsxXSwgZFsyXSwgZFszXSwgMzIpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQYXRoU2FtcGxlUG9pbnRzKHBhdGg6IFNWR1BhdGhFbGVtZW50LCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlcltdW10ge1xuICAgIGNvbnN0IG46IG51bWJlciA9IHBhdGguZ2V0VG90YWxMZW5ndGgoKTtcbiAgICBjb25zdCB0OiBudW1iZXJbXSA9IFswXTtcbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKChpICs9IHByZWNpc2lvbikgPCBuKSB0LnB1c2goaSk7XG4gICAgdC5wdXNoKG4pO1xuICAgIHJldHVybiB0Lm1hcCgocikgPT4ge1xuICAgICAgY29uc3QgZG9tUG9pbnQgPSBwYXRoLmdldFBvaW50QXRMZW5ndGgocik7XG4gICAgICBjb25zdCBhOiBudW1iZXJbXSA9IFtkb21Qb2ludC54LCBkb21Qb2ludC55XTtcbiAgICAgIGFbJ3QnXSA9IHIgLyBuO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVF1YWRyaWxhdGVyYWxTZWdtZW50cyhwb2ludHM6IG51bWJlcltdW10pOiBudW1iZXJbXVtdW10ge1xuICAgIHJldHVybiAoZDMucmFuZ2UocG9pbnRzLmxlbmd0aCAtIDEpIGFzIG51bWJlcltdKS5tYXAoKGk6IG51bWJlcikgPT4ge1xuICAgICAgY29uc3QgYTogbnVtYmVyW11bXSA9IFtwb2ludHNbaSAtIDFdLCBwb2ludHNbaV0sIHBvaW50c1tpICsgMV0sIHBvaW50c1tpICsgMl1dO1xuICAgICAgYVsndCddID0gKHBvaW50c1tpXVsndCddICsgcG9pbnRzW2kgKyAxXVsndCddKSAvIDI7XG4gICAgICByZXR1cm4gYTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0Sm9pbmVkTGluZVBhdGgocDA6IG51bWJlcltdLCBwMTogbnVtYmVyW10sIHAyOiBudW1iZXJbXSwgcDM6IG51bWJlcltdLCB3aWR0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB1MTIgPSB0aGlzLmNhbGN1bGF0ZVBlcnBlbmRpY3VsYXJWZWN0b3IocDEsIHAyKTtcbiAgICBjb25zdCByID0gd2lkdGggLyA2O1xuICAgIGxldCBhOiBudW1iZXJbXSA9IFtwMVswXSArIHUxMlswXSAqIHIsIHAxWzFdICsgdTEyWzFdICogcl07XG4gICAgbGV0IGI6IG51bWJlcltdID0gW3AyWzBdICsgdTEyWzBdICogciwgcDJbMV0gKyB1MTJbMV0gKiByXTtcbiAgICBsZXQgYzogbnVtYmVyW10gPSBbcDJbMF0gLSB1MTJbMF0gKiByLCBwMlsxXSAtIHUxMlsxXSAqIHJdO1xuICAgIGxldCBkOiBudW1iZXJbXSA9IFtwMVswXSAtIHUxMlswXSAqIHIsIHAxWzFdIC0gdTEyWzFdICogcl07XG5cbiAgICBpZiAocDApIHtcbiAgICAgIGNvbnN0IHUwMSA9IHRoaXMuY2FsY3VsYXRlUGVycGVuZGljdWxhclZlY3RvcihwMCwgcDEpO1xuICAgICAgY29uc3QgZSA9IFtwMVswXSArIHUwMVswXSArIHUxMlswXSwgcDFbMV0gKyB1MDFbMV0gKyB1MTJbMV1dO1xuICAgICAgYSA9IHRoaXMuY29tcHV0ZUxpbmVJbnRlcnNlY3Rpb24ocDEsIGUsIGEsIGIpO1xuICAgICAgZCA9IHRoaXMuY29tcHV0ZUxpbmVJbnRlcnNlY3Rpb24ocDEsIGUsIGQsIGMpO1xuICAgIH1cblxuICAgIGlmIChwMykge1xuICAgICAgY29uc3QgdTIzID0gdGhpcy5jYWxjdWxhdGVQZXJwZW5kaWN1bGFyVmVjdG9yKHAyLCBwMyk7XG4gICAgICBjb25zdCBlID0gW3AyWzBdICsgdTIzWzBdICsgdTEyWzBdLCBwMlsxXSArIHUyM1sxXSArIHUxMlsxXV07XG4gICAgICBiID0gdGhpcy5jb21wdXRlTGluZUludGVyc2VjdGlvbihwMiwgZSwgYSwgYik7XG4gICAgICBjID0gdGhpcy5jb21wdXRlTGluZUludGVyc2VjdGlvbihwMiwgZSwgZCwgYyk7XG4gICAgfVxuXG4gICAgcmV0dXJuICdNJyArIGEgKyAnTCcgKyBiICsgJyAnICsgYyArICcgJyArIGQgKyAnWic7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVMaW5lSW50ZXJzZWN0aW9uKGE6IG51bWJlcltdLCBiOiBudW1iZXJbXSwgYzogbnVtYmVyW10sIGQ6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgIGNvbnN0IHgxID0gY1swXTtcbiAgICBjb25zdCB4MyA9IGFbMF07XG4gICAgY29uc3QgeDIxID0gZFswXSAtIHgxO1xuICAgIGNvbnN0IHg0MyA9IGJbMF0gLSB4MztcbiAgICBjb25zdCB5MSA9IGNbMV07XG4gICAgY29uc3QgeTMgPSBhWzFdO1xuICAgIGNvbnN0IHkyMSA9IGRbMV0gLSB5MTtcbiAgICBjb25zdCB5NDMgPSBiWzFdIC0geTM7XG4gICAgY29uc3QgdWEgPSAoeDQzICogKHkxIC0geTMpIC0geTQzICogKHgxIC0geDMpKSAvICh5NDMgKiB4MjEgLSB4NDMgKiB5MjEpO1xuICAgIHJldHVybiBbeDEgKyB1YSAqIHgyMSwgeTEgKyB1YSAqIHkyMV07XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZVBlcnBlbmRpY3VsYXJWZWN0b3IocDA6IG51bWJlcltdLCBwMTogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgY29uc3QgdTAxeCA9IHAwWzFdIC0gcDFbMV07XG4gICAgY29uc3QgdTAxeSA9IHAxWzBdIC0gcDBbMF07XG4gICAgY29uc3QgdTAxZCA9IE1hdGguc3FydCh1MDF4ICogdTAxeCArIHUwMXkgKiB1MDF5KTtcbiAgICByZXR1cm4gW3UwMXggLyB1MDFkLCB1MDF5IC8gdTAxZF07XG4gIH1cbn1cbiIsIjxpbWcgW25nU3R5bGVdPVwieyBvcGFjaXR5OiBjb25maWcuaGFzTm90aWZpY2F0aW9uID8gMSA6IDAgfVwiIHNyYz1cImFzc2V0cy9pY29ucy9ub3RpZmljYXRpb24tcG9wLnN2Z1wiIGNsYXNzPVwibm90aWZpY2F0aW9uLWljb25cIiBhbHQ9XCJtZW51IGJ0biBub3RpZmljYXRpb24gaWNvblwiIC8+XG5cbjxkaXYgY2xhc3M9XCJjaXJjbGVcIiBbbmdDbGFzc109XCJ7ICdjaXJjbGUtaW1nJzogY29uZmlnLmltYWdlVXJsLCAnY2lyY2xlLXRleHQnOiAhY29uZmlnLmltYWdlVXJsIH1cIj5cbiAgQGlmICghY29uZmlnLmltYWdlVXJsKSB7XG4gICAgPGRpdiBjbGFzcz1cInRleHQtY29udGFpbmVyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInBlcmNlbnQgZi13LTQwMCBmLXhsIGgtMTYwXCI+e3sgY29uZmlnLnByZWZpeCArIGNvbmZpZy52YWx1ZSArIGNvbmZpZy5zdWZmaXggfX08L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImJvdHRvbS10ZXh0IGYtdy00MDAgZi14cyBoLTEwMFwiPnt7IHR5cGUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxpbWcgW3NyY109XCJjb25maWcuaW1hZ2VVcmxcIiBbbmdTdHlsZV09XCJ7ICdvYmplY3QtcG9zaXRpb24nOiBjb25maWcuaW1nT2JqZWN0UG9zaXRpb24gfVwiIC8+XG4gIH1cbjwvZGl2PlxuXG5AaWYgKHZhcmlhYmxlID09PSBjaXJjbGVWYXJpYWJsZS5QYXJ0aWFsKSB7XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICBwdWxzZTogY29uZmlnLmlubmVyPy5zaG93SWxsdW1pbmF0aW9uLFxuICAgICAgJ2lsbHVtaW5hdGVkLWV4dGVybmFsJzogc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzLFxuICAgICAgJ2lsbHVtaW5hdGVkLWludGVybmFsJzogIXNob3dFeHRlcm5hbFBhcnRpYWxDaXJjbGVQcm9ncmVzcyxcbiAgICB9XCJcbiAgPjwvZGl2PlxuICA8c3ZnIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzX19pbWFnZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwIDkwIDkwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI+XG4gICAgQGlmIChjb25maWcuc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzKSB7XG4gICAgICA8ZWxsaXBzZSBtYXNrPVwidXJsKCNjdXQtY2lyY2xlKVwiIGN4PVwiNDQuMzM0XCIgY3k9XCI0NC4zMDI0XCIgcng9XCIzMy45NjkzXCIgcnk9XCIzMy42MzYzXCIgZmlsbD1cInVybCgjcGFpbnQwX2xpbmVhcl8yMzlfMzY3MylcIiB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMSAwLjUpXCIgLz5cbiAgICAgIDxlbGxpcHNlIG1hc2s9XCJ1cmwoI2N1dC1jaXJjbGUpXCIgY3g9XCI0NC4zMzRcIiBjeT1cIjQ0LjMwMjhcIiByeD1cIjI3LjI0MjdcIiByeT1cIjI2Ljk3NTdcIiBmaWxsPVwiIzI3MjQyQ1wiIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgyIDApXCIgLz5cbiAgICAgIDxlbGxpcHNlIG1hc2s9XCJ1cmwoI2N1dC1jaXJjbGUpXCIgY3g9XCI0NC4zMzRcIiBjeT1cIjQ0LjMwMjhcIiByeD1cIjI3LjI0MjdcIiByeT1cIjI2Ljk3NTdcIiBmaWxsPVwidXJsKCNwYXR0ZXJuMF8yMzlfMzY3MylcIiAvPlxuICAgIH1cbiAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4yNSlcIj5cbiAgICAgIDwhLS0gcmVzcG9uc2UgdGltZSBpbmRpY2F0b3JzIC0tPlxuICAgICAgQGlmIChjb25maWcuc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzKSB7XG4gICAgICAgIEBpZiAoY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgfHwgY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlVucmVzcG9uc2l2ZSkge1xuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIHI9XCI0NVwiXG4gICAgICAgICAgICBjeD1cIjQ1XCJcbiAgICAgICAgICAgIGN5PVwiNDVcIlxuICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJjb25maWcuaW5uZXI/LnN0YXRlID09PSBJTk5FUl9DSVJDTEVfU1RBVEUuV2FpdGluZyA/ICd1cmwoI2dyYWRJbm5lclBpbmspJyA6ICd1cmwoI2dyYWRJbm5lclRlYWwpJ1wiXG4gICAgICAgICAgICBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBpbm5lckNpcmNsZUJlaGluZFBhdGhJZCArICcpJ1wiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJzY2FsZSgwLjY1OSAwLjY1OSkgdHJhbnNsYXRlKCsyMiAyMS41KSByb3RhdGUoMjI1LCA0NSwgNDUpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICAgIDxjaXJjbGUgcj1cIjQ1XCIgY3g9XCI0NVwiIGN5PVwiNDVcIiBmaWxsPVwidXJsKCNncmFkMilcIiBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBpbm5lckNpcmNsZVBhdGhJZCArICcpJ1wiIHRyYW5zZm9ybT1cInNjYWxlKDAuNjU5IDAuNjU5KSB0cmFuc2xhdGUoKzIyIDIxLjUpIHJvdGF0ZSgyMjUsIDQ1LCA0NSlcIiAvPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpZiAoY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLldhaXRpbmcgfHwgY29uZmlnLmlubmVyPy5zdGF0ZSA9PT0gSU5ORVJfQ0lSQ0xFX1NUQVRFLlVucmVzcG9uc2l2ZSkge1xuICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgIHI9XCI0NVwiXG4gICAgICAgICAgICBjeD1cIjQ1XCJcbiAgICAgICAgICAgIGN5PVwiNDVcIlxuICAgICAgICAgICAgW2F0dHIuZmlsbF09XCJjb25maWcuaW5uZXI/LnN0YXRlID09PSBJTk5FUl9DSVJDTEVfU1RBVEUuV2FpdGluZyA/ICd1cmwoI2dyYWRJbm5lclBpbmspJyA6ICd1cmwoI2dyYWRJbm5lclRlYWwpJ1wiXG4gICAgICAgICAgICBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBpbm5lckNpcmNsZUJlaGluZFBhdGhJZCArICcpJ1wiXG4gICAgICAgICAgICB0cmFuc2Zvcm09XCJzY2FsZSgrMC43MCAwLjcwKSB0cmFuc2xhdGUoKzIwLjAgMTYuNSkgcm90YXRlKDIyNSwgNDUsIDQ1KVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICA8Y2lyY2xlIHI9XCI0NVwiIGN4PVwiNDVcIiBjeT1cIjQ1XCIgZmlsbD1cInVybCgjZ3JhZDIpXCIgW2F0dHIubWFza109XCIndXJsKCMnICsgaW5uZXJDaXJjbGVQYXRoSWQgKyAnKSdcIiB0cmFuc2Zvcm09XCJzY2FsZSgrMC43MCAwLjcwKSB0cmFuc2xhdGUoKzIwLjAgMTYuNSkgcm90YXRlKDIyNSwgNDUsIDQ1KVwiIC8+XG4gICAgICB9XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPG1hc2sgY2xhc3M9XCJjaXJjbGUtcHJvZ3Jlc3NfX21hc2tcIiBbYXR0ci5pZF09XCJpbm5lckNpcmNsZVBhdGhJZFwiPlxuICAgICAgICAgIDxnPlxuICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgI3Byb2dyZXNzUGF0aFxuICAgICAgICAgICAgICBkPVwiTSA0NSAwIEEgNDUgNDUgMCAxIDEgNDQuOTk5OSAwXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiNVwiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICAnc3Ryb2tlLWRhc2hhcnJheSc6IHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpLFxuICAgICAgICAgICAgICAgICdzdHJva2UtZGFzaG9mZnNldCc6IHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpIC0gKGNvbmZpZy5pbm5lcj8udmFsdWUgKiBwcm9ncmVzc1BhdGguZ2V0VG90YWxMZW5ndGgoKSkgLyBjb25maWcuaW5uZXI/Lm1heCxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9tYXNrPlxuICAgICAgICA8bWFzayBjbGFzcz1cImNpcmNsZS1wcm9ncmVzc19fbWFza1wiIFthdHRyLmlkXT1cImlubmVyQ2lyY2xlQmVoaW5kUGF0aElkXCI+XG4gICAgICAgICAgPGc+XG4gICAgICAgICAgICA8cGF0aCBkPVwiTSA0NSAwIEEgNDUgNDUgMCAxIDEgNDQuOTk5OSAwXCIgc3Ryb2tlPVwid2hpdGVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLXdpZHRoPVwiNVwiIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICA8L21hc2s+XG4gICAgICAgIDxyYWRpYWxHcmFkaWVudCBpZD1cImdyYWQyXCI+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5pbm5lcj8uY29sb3JzPy50ZXJ0aWFyeVwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiODAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcuaW5uZXI/LmNvbG9ycz8udGVydGlhcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjkxJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnByaW1hcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjk1JVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnNlY29uZGFyeVwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnRlcnRpYXJ5XCIgLz5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cblxuICAgICAgICA8cmFkaWFsR3JhZGllbnQgaWQ9XCJncmFkSW5uZXJQaW5rXCI+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImlubmVyUHJvZ3Jlc3NQaW5rQ29sb3JzPy50ZXJ0aWFyeVwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiODAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJpbm5lclByb2dyZXNzUGlua0NvbG9ycz8udGVydGlhcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjkxJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnM/LnByaW1hcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjk1JVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnM/LnNlY29uZGFyeVwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1BpbmtDb2xvcnM/LnRlcnRpYXJ5XCIgLz5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cblxuICAgICAgICA8cmFkaWFsR3JhZGllbnQgaWQ9XCJncmFkSW5uZXJUZWFsXCI+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImlubmVyUHJvZ3Jlc3NUZWFsQ29sb3JzPy50ZXJ0aWFyeVwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiODAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJpbm5lclByb2dyZXNzVGVhbENvbG9ycz8udGVydGlhcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjkxJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnM/LnByaW1hcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjk1JVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnM/LnNlY29uZGFyeVwiIC8+XG4gICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiaW5uZXJQcm9ncmVzc1RlYWxDb2xvcnM/LnRlcnRpYXJ5XCIgLz5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICA8L2c+XG4gICAgQGlmIChjb25maWcuc2hvd1ZhbHVlUHJvcG9ydGlvbkxhYmVsKSB7XG4gICAgICA8dGV4dFxuICAgICAgICB4PVwiMjVcIlxuICAgICAgICB5PVwiNzBcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgIGRvbWluYW50LWJhc2VsaW5lPVwibWlkZGxlXCJcbiAgICAgICAgZm9udC1zaXplPVwiMTJcIlxuICAgICAgICBmaWxsPVwid2hpdGVcIlxuICAgICAgICBzdHJva2U9XCJibGFja1wiXG4gICAgICAgIHN0cm9rZS13aWR0aD1cIjNcIlxuICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICBwYWludC1vcmRlcj1cInN0cm9rZSBmaWxsXCJcbiAgICAgID5cbiAgICAgICAge3sgKDI0ICogY29uZmlnLmlubmVyLnZhbHVlKSAvIGNvbmZpZy5pbm5lci5tYXggfCBudW1iZXI6ICcxLjAtMCcgfX1cbiAgICAgIDwvdGV4dD5cbiAgICB9XG4gICAgPGRlZnM+XG4gICAgICA8bWFzayBpZD1cImN1dC1jaXJjbGVcIj5cbiAgICAgICAgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiOTBcIiBoZWlnaHQ9XCI5MFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgIDxjaXJjbGUgcj1cIjI3LjVcIiBjeD1cIjQzLjVcIiBjeT1cIjQzLjVcIiBmaWxsPVwiYmxhY2tcIj48L2NpcmNsZT5cbiAgICAgIDwvbWFzaz5cbiAgICAgIDxwYXR0ZXJuIGlkPVwicGF0dGVybjBfMjM5XzM2NzNcIiBwYXR0ZXJuQ29udGVudFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIiB3aWR0aD1cIjFcIiBoZWlnaHQ9XCIxXCI+XG4gICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpbWFnZTBfMjM5XzM2NzNcIiB0cmFuc2Zvcm09XCJzY2FsZSgxKVwiIC8+XG4gICAgICA8L3BhdHRlcm4+XG4gICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMF9mXzIzOV8zNjczXCIgeD1cIjAuNTEwNjAyXCIgeT1cIjAuMTQ1OTA5XCIgd2lkdGg9XCI4Ny42NDY4XCIgaGVpZ2h0PVwiNzQuMzc2XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiQmFja2dyb3VuZEltYWdlRml4XCIgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgICA8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPVwiNC45MjcwNVwiIHJlc3VsdD1cImVmZmVjdDFfZm9yZWdyb3VuZEJsdXJfMjM5XzM2NzNcIiAvPlxuICAgICAgPC9maWx0ZXI+XG4gICAgICA8ZmlsdGVyIGlkPVwiZmlsdGVyMV9mXzIzOV8zNjczXCIgeD1cIjEwLjc3OVwiIHk9XCIxMS4xMjc4XCIgd2lkdGg9XCI2NS40ODMxXCIgaGVpZ2h0PVwiNjUuNDgzM1wiIGZpbHRlclVuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9XCJzUkdCXCI+XG4gICAgICAgIDxmZUZsb29kIGZsb29kLW9wYWNpdHk9XCIwXCIgcmVzdWx0PVwiQmFja2dyb3VuZEltYWdlRml4XCIgLz5cbiAgICAgICAgPGZlQmxlbmQgbW9kZT1cIm5vcm1hbFwiIGluPVwiU291cmNlR3JhcGhpY1wiIGluMj1cIkJhY2tncm91bmRJbWFnZUZpeFwiIHJlc3VsdD1cInNoYXBlXCIgLz5cbiAgICAgICAgPGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj1cIjIuMTIzMDlcIiByZXN1bHQ9XCJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzIzOV8zNjczXCIgLz5cbiAgICAgIDwvZmlsdGVyPlxuICAgICAgPGZpbHRlciBpZD1cImZpbHRlcjJfZF8yMzlfMzY3M1wiIHg9XCI5Ljg4XCIgeT1cIjE2LjA0NzRcIiB3aWR0aD1cIjY4Ljg4NzNcIiBoZWlnaHQ9XCI2OC44ODc0XCIgZmlsdGVyVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz1cInNSR0JcIj5cbiAgICAgICAgPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT1cIjBcIiByZXN1bHQ9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiAvPlxuICAgICAgICA8ZmVDb2xvck1hdHJpeCBpbj1cIlNvdXJjZUFscGhhXCIgdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwXCIgcmVzdWx0PVwiaGFyZEFscGhhXCIgLz5cbiAgICAgICAgPGZlT2Zmc2V0IGR5PVwiNi42MzEwOFwiIC8+XG4gICAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249XCIzLjMxNTU0XCIgLz5cbiAgICAgICAgPGZlQ29tcG9zaXRlIGluMj1cImhhcmRBbHBoYVwiIG9wZXJhdG9yPVwib3V0XCIgLz5cbiAgICAgICAgPGZlQ29sb3JNYXRyaXggdHlwZT1cIm1hdHJpeFwiIHZhbHVlcz1cIjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjUgMFwiIC8+XG4gICAgICAgIDxmZUJsZW5kIG1vZGU9XCJub3JtYWxcIiBpbjI9XCJCYWNrZ3JvdW5kSW1hZ2VGaXhcIiByZXN1bHQ9XCJlZmZlY3QxX2Ryb3BTaGFkb3dfMjM5XzM2NzNcIiAvPlxuICAgICAgICA8ZmVCbGVuZCBtb2RlPVwibm9ybWFsXCIgaW49XCJTb3VyY2VHcmFwaGljXCIgaW4yPVwiZWZmZWN0MV9kcm9wU2hhZG93XzIzOV8zNjczXCIgcmVzdWx0PVwic2hhcGVcIiAvPlxuICAgICAgPC9maWx0ZXI+XG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDBfbGluZWFyXzIzOV8zNjczXCIgeDE9XCI3MS40MjI0XCIgeTE9XCIxMy43NzQ2XCIgeDI9XCI1Ni44NTg5XCIgeTI9XCI4OC4xOTMyXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuNTgxODIxXCIgc3RvcC1jb2xvcj1cIiMyNzI0MkNcIiAvPlxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIiMwQzBCMEVcIiAvPlxuICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50MV9saW5lYXJfMjM5XzM2NzNcIiB4MT1cIjc3LjA2ODJcIiB5MT1cIjUuOTY5NzRcIiB4Mj1cIjUuMjEyODhcIiB5Mj1cIjExLjU0NTZcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cbiAgICAgICAgPHN0b3AgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8ucHJpbWFyeVwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5zZWNvbmRhcnlcIiAvPlxuICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50Ml9saW5lYXJfMjM5XzM2NzNcIiB4MT1cIjc3LjA2OFwiIHkxPVwiNS45Njk3NFwiIHgyPVwiNS4yMTI3XCIgeTI9XCIxMS41NDU2XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgIDxzdG9wIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LnByaW1hcnlcIiAvPlxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uc2Vjb25kYXJ5XCIgLz5cbiAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDNfbGluZWFyXzIzOV8zNjczXCIgeDE9XCI3Ny4wNjgyXCIgeTE9XCI1Ljk2OTc0XCIgeDI9XCI1LjIxMjg4XCIgeTI9XCIxMS41NDU2XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgIDxzdG9wIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LnByaW1hcnlcIiAvPlxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uc2Vjb25kYXJ5XCIgLz5cbiAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICA8cmFkaWFsR3JhZGllbnRcbiAgICAgICAgaWQ9XCJwYWludDRfcmFkaWFsXzIzOV8zNjczXCJcbiAgICAgICAgY3g9XCIwXCJcbiAgICAgICAgY3k9XCIwXCJcbiAgICAgICAgcj1cIjFcIlxuICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxuICAgICAgICBncmFkaWVudFRyYW5zZm9ybT1cInRyYW5zbGF0ZSg0NC42NzA1IDQzLjk2OTQpIHJvdGF0ZSgtOTApIHNjYWxlKDM2LjMwMDYgMzcuODUwNSlcIlxuICAgICAgPlxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjYyOTY1NFwiIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIHN0b3Atb3BhY2l0eT1cIjBcIiAvPlxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjgyMjkxN1wiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LnByaW1hcnlcIiAvPlxuICAgICAgICA8c3RvcCBvZmZzZXQ9XCIwLjk4ODk1M1wiIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIHN0b3Atb3BhY2l0eT1cIjBcIiAvPlxuICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInBhaW50NV9saW5lYXJfMjM5XzM2NzNcIiB4MT1cIjcwLjk3OThcIiB5MT1cIjExLjk5MzJcIiB4Mj1cIjEwLjcwMzRcIiB5Mj1cIjE2LjY3MDZcIiBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIj5cbiAgICAgICAgPHN0b3AgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8ucHJpbWFyeVwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5zZWNvbmRhcnlcIiAvPlxuICAgICAgPC9saW5lYXJHcmFkaWVudD5cbiAgICAgIDxyYWRpYWxHcmFkaWVudFxuICAgICAgICBpZD1cInBhaW50Nl9yYWRpYWxfMjM5XzM2NzNcIlxuICAgICAgICBjeD1cIjBcIlxuICAgICAgICBjeT1cIjBcIlxuICAgICAgICByPVwiMVwiXG4gICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgIGdyYWRpZW50VHJhbnNmb3JtPVwidHJhbnNsYXRlKDQzLjgwMjcgNDMuODY5NSkgcm90YXRlKC05MCkgc2NhbGUoMzAuNDUxIDMxLjc1MTIpXCJcbiAgICAgID5cbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC42Mjk2NTRcIiBzdG9wLWNvbG9yPVwid2hpdGVcIiBzdG9wLW9wYWNpdHk9XCIwXCIgLz5cbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC44MjI5MTdcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5wcmltYXJ5XCIgLz5cbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMC45ODg5NTNcIiBzdG9wLWNvbG9yPVwid2hpdGVcIiBzdG9wLW9wYWNpdHk9XCIwXCIgLz5cbiAgICAgIDwvcmFkaWFsR3JhZGllbnQ+XG4gICAgICA8bGluZWFyR3JhZGllbnQgaWQ9XCJwYWludDdfbGluZWFyXzIzOV8zNjczXCIgeDE9XCI3MS4xMjQ4XCIgeTE9XCIxMi43NDc2XCIgeDI9XCIxMi4yOTI4XCIgeTI9XCIxNy4zMTI5XCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgIDxzdG9wIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnRlcnRpYXJ5XCIgLz5cbiAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLmlubmVyPy5jb2xvcnM/LnNlY29uZGFyeVwiIC8+XG4gICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgPHJhZGlhbEdyYWRpZW50IGlkPVwicGFpbnQ4X3JhZGlhbF8yMzlfMzY3M1wiIGN4PVwiMFwiIGN5PVwiMFwiIHI9XCIxXCIgZ3JhZGllbnRVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgZ3JhZGllbnRUcmFuc2Zvcm09XCJ0cmFuc2xhdGUoNDQuNTk5IDQzLjg2KSByb3RhdGUoLTkwKSBzY2FsZSgyOS43MjEzIDMwLjk5MDMpXCI+XG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuNjI5NjU0XCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMFwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuODgwMTY4XCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcuaW5uZXI/LmNvbG9ycz8ucHJpbWFyeVwiIC8+XG4gICAgICAgIDxzdG9wIG9mZnNldD1cIjAuOTg4OTUzXCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMFwiIC8+XG4gICAgICA8L3JhZGlhbEdyYWRpZW50PlxuICAgIDwvZGVmcz5cbiAgPC9zdmc+XG5cbiAgQGlmIChjb25maWcuc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzKSB7XG4gICAgPHN2ZyBjbGFzcz1cImNpcmNsZS1wcm9ncmVzc19fc3ZnXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgOTAgOTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbiAgICAgIDxjaXJjbGUgcj1cIjQ1XCIgY3g9XCI0NVwiIGN5PVwiNDVcIiBmaWxsPVwidXJsKCNncmFkKVwiIFthdHRyLm1hc2tdPVwiJ3VybCgjJyArIHBhdGhJZCArICcpJ1wiIC8+XG4gICAgICA8ZGVmcz5cbiAgICAgICAgPG1hc2sgY2xhc3M9XCJjaXJjbGUtcHJvZ3Jlc3NfX21hc2tcIiBbYXR0ci5pZF09XCJwYXRoSWRcIj5cbiAgICAgICAgICA8Zz5cbiAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICNwcm9ncmVzc1BhdGhcbiAgICAgICAgICAgICAgZD1cIk0gNy4yNTk4MjQ0NDI0NTU5MTU1IDY5LjUwODc1NjU3NTY3NjE0IEEgNDUgNDUgMCAxIDEgODIuNzQwMTc1NTU3NTQ0MDkgNjkuNTA4NzU2NTc1Njc2MTRcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCI4LjVcIlxuICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgJ3N0cm9rZS1kYXNoYXJyYXknOiBwcm9ncmVzc1BhdGguZ2V0VG90YWxMZW5ndGgoKSxcbiAgICAgICAgICAgICAgICAnc3Ryb2tlLWRhc2hvZmZzZXQnOiBwcm9ncmVzc1BhdGguZ2V0VG90YWxMZW5ndGgoKSAtIChjb25maWcudmFsdWUgKiBwcm9ncmVzc1BhdGguZ2V0VG90YWxMZW5ndGgoKSkgLyBjb25maWcubWF4LFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9nPlxuICAgICAgICAgIDxjaXJjbGUgcj1cIjM3LjVcIiBjeD1cIjQ1XCIgY3k9XCI0NVwiIGZpbGw9XCJibGFja1wiIC8+XG4gICAgICAgIDwvbWFzaz5cbiAgICAgICAgPHJhZGlhbEdyYWRpZW50IGlkPVwiZ3JhZFwiPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uZ3JhZGllbnRQcmltYXJ5XCIgLz5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCI4MCVcIiBbYXR0ci5zdG9wLWNvbG9yXT1cImNvbmZpZy5wYXJ0aWFsQ29sb3JzPy5ncmFkaWVudFByaW1hcnlcIiAvPlxuICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjkwJVwiIFthdHRyLnN0b3AtY29sb3JdPVwiY29uZmlnLnBhcnRpYWxDb2xvcnM/LmdyYWRpZW50U2Vjb25kYXJ5XCIgLz5cbiAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxMDAlXCIgW2F0dHIuc3RvcC1jb2xvcl09XCJjb25maWcucGFydGlhbENvbG9ycz8uZ3JhZGllbnRQcmltYXJ5XCIgLz5cbiAgICAgICAgPC9yYWRpYWxHcmFkaWVudD5cbiAgICAgIDwvZGVmcz5cbiAgICA8L3N2Zz5cbiAgfVxufVxuQGlmICh2YXJpYWJsZSA9PT0gY2lyY2xlVmFyaWFibGUuQ29tcGxldGUpIHtcbiAgPHN2Z1xuICAgIGNsYXNzPVwiY2lyY2xlLXByb2dyZXNzLWQzX19tYWluXCJcbiAgICB3aWR0aD1cIjEwMCVcIlxuICAgIGhlaWdodD1cIjEwMCVcIlxuICAgIHZpZXdCb3g9XCItMTAgLTEwIDkwIDkwXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICBbbmdTdHlsZV09XCJ7IGRpc3BsYXk6IGNvbmZpZy52YWx1ZSA9PT0gMCA/ICdub25lJyA6ICdibG9jaycgfVwiXG4gID5cbiAgICA8ZyB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC4zLC0wLjMpXCI+XG4gICAgICA8cGF0aCBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2U9XCJ0cmFuc3BhcmVudFwiIGQ9XCJNIDAgNDUgQSA0NSA0NSAwIDAgMSA0NSAwXCIgc3R5bGU9XCJ0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xLjRweCwgLTAuN3B4KVwiPjwvcGF0aD5cbiAgICA8L2c+XG4gIDwvc3ZnPlxuXG4gIDxzdmcgY2xhc3M9XCJjaXJjbGUtcHJvZ3Jlc3MtZDNfX2ltYWdlXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMTAwJVwiIHZpZXdCb3g9XCIwIDAgOTAgOTBcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIj5cbiAgICA8ZWxsaXBzZSBtYXNrPVwidXJsKCNjdXQtY2lyY2xlKVwiIGN4PVwiNDQuMzM0XCIgY3k9XCI0NC4zMDI0XCIgcng9XCIzMy45NjkzXCIgcnk9XCIzMy42MzYzXCIgZmlsbD1cInVybCgjcGFpbnQwX2xpbmVhcl8yMzlfMzY3MylcIiAvPlxuICAgIDxnIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjMsLTAuMylcIiBvcGFjaXR5PVwiMVwiPlxuICAgICAgPHBhdGhcbiAgICAgICAgb3BhY2l0eT1cIjAuMTVcIlxuICAgICAgICBkPVwiTSAwIDQ1IEEgNDUgNDUgMCAwIDEgOTAgNDUgTSA5MCA0NSBBIDQ1IDQ1IDAgMCAxIDAgNDVcIlxuICAgICAgICBzdHJva2Utd2lkdGg9XCIxMlwiXG4gICAgICAgIHN0cm9rZT1cImJsYWNrXCJcbiAgICAgICAgc3R5bGU9XCJ0cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXI7IHRyYW5zZm9ybTogc2NhbGUoMC42OSkgdHJhbnNsYXRlKC0xLjRweCwgLTAuN3B4KVwiXG4gICAgICAvPlxuICAgIDwvZz5cbiAgICA8ZGVmcz5cbiAgICAgIDxtYXNrIGlkPVwiY3V0LWNpcmNsZVwiPlxuICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCI5MFwiIGhlaWdodD1cIjkwXCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgPGNpcmNsZSByPVwiMjcuNVwiIGN4PVwiNDQuNVwiIGN5PVwiNDRcIiBmaWxsPVwiYmxhY2tcIj48L2NpcmNsZT5cbiAgICAgIDwvbWFzaz5cbiAgICA8L2RlZnM+XG4gIDwvc3ZnPlxuXG4gIDxzdmcgY2xhc3M9XCJjaXJjbGUtcHJvZ3Jlc3MtZDNfX3N2Z1wiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjEwMCVcIiB2aWV3Qm94PVwiMCAwIDkwIDkwXCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgPGNpcmNsZVxuICAgICAgcj1cIjQ1XCJcbiAgICAgIGN4PVwiNDVcIlxuICAgICAgY3k9XCI0NVwiXG4gICAgICBbYXR0ci5tYXNrXT1cIid1cmwoIycgKyBwYXRoSWQgKyAnKSdcIlxuICAgICAgW25nU3R5bGVdPVwieyBmaWxsOiBjb25maWcudmFsdWUgPT09IGNvbmZpZy5tYXggPyBjb25maWcucGFydGlhbENvbG9ycz8uY29tcGxldGUgOiBjb25maWcucGFydGlhbENvbG9ycz8uaW5jb21wbGV0ZSB9XCJcbiAgICAvPlxuICAgIDxkZWZzPlxuICAgICAgPG1hc2sgY2xhc3M9XCJjaXJjbGUtcHJvZ3Jlc3MtZDNfX21hc2tcIiBbYXR0ci5pZF09XCJwYXRoSWRcIj5cbiAgICAgICAgPGc+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICNwcm9ncmVzc1BhdGhcbiAgICAgICAgICAgIGQ9XCJNIDQ1IDAgQSA0NSA0NSAwIDEgMSA0NC45OTk5IDBcIlxuICAgICAgICAgICAgc3Ryb2tlPVwid2hpdGVcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxMlwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICdzdHJva2UtZGFzaGFycmF5JzogcHJvZ3Jlc3NQYXRoLmdldFRvdGFsTGVuZ3RoKCksXG4gICAgICAgICAgICAgICdzdHJva2UtZGFzaG9mZnNldCc6IHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpIC0gKGNvbmZpZy52YWx1ZSAqIHByb2dyZXNzUGF0aC5nZXRUb3RhbExlbmd0aCgpKSAvIGNvbmZpZy5tYXgsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2c+XG4gICAgICA8L21hc2s+XG4gICAgPC9kZWZzPlxuICA8L3N2Zz5cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { CircleProgressComponent } from './circle-progress.component';
4
+ import * as i0 from "@angular/core";
5
+ export class CircleProgressModule {
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, declarations: [CircleProgressComponent], imports: [CommonModule], exports: [CircleProgressComponent] }); }
8
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, imports: [CommonModule] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CircleProgressModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ declarations: [CircleProgressComponent],
14
+ imports: [CommonModule],
15
+ exports: [CircleProgressComponent],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXByb2dyZXNzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rhc2hib2FyZC1jb21wb25lbnRzLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2lyY2xlLXByb2dyZXNzL2NpcmNsZS1wcm9ncmVzcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBT3RFLE1BQU0sT0FBTyxvQkFBb0I7K0dBQXBCLG9CQUFvQjtnSEFBcEIsb0JBQW9CLGlCQUpoQix1QkFBdUIsYUFDNUIsWUFBWSxhQUNaLHVCQUF1QjtnSEFFdEIsb0JBQW9CLFlBSHJCLFlBQVk7OzRGQUdYLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENpcmNsZVByb2dyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jaXJjbGUtcHJvZ3Jlc3MuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbQ2lyY2xlUHJvZ3Jlc3NDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW0NpcmNsZVByb2dyZXNzQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgQ2lyY2xlUHJvZ3Jlc3NNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export var CircleVariable;
2
+ (function (CircleVariable) {
3
+ CircleVariable["Partial"] = "partial";
4
+ CircleVariable["Complete"] = "complete";
5
+ })(CircleVariable || (CircleVariable = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXZhcmlhYmxlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NpcmNsZS1wcm9ncmVzcy9lbnVtcy9jaXJjbGUtdmFyaWFibGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLHFDQUFtQixDQUFBO0lBQ25CLHVDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENpcmNsZVZhcmlhYmxlIHtcbiAgUGFydGlhbCA9ICdwYXJ0aWFsJyxcbiAgQ29tcGxldGUgPSAnY29tcGxldGUnLFxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lyY2xlLXByb2dyZXNzLWNvbmZpZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NpcmNsZS1wcm9ncmVzcy9pbnRlcmZhY2VzL2NpcmNsZS1wcm9ncmVzcy1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJSW5uZXJQYXJ0aWFsQ2lyY2xlUHJvZ3Jlc3NDb2xvcnMgfSBmcm9tICcuLi8uLi8vY2xpZW50LWhvbWUvaW50ZXJmYWNlcy9pbm5lci1wYXJ0aWFsLWNpcmNsZS1wcm9ncmVzcy1jb2xvcnMuaW50ZXJmYWNlJztcbmltcG9ydCB7IElOTkVSX0NJUkNMRV9TVEFURSB9IGZyb20gJy4uLy4uL2NsaWVudC1tYXRjaC1vdmVydmlldy9lbnVtcy9pbm5lci1jaXJjbGUtc3RhdGUuZW51bSc7XG5pbXBvcnQgeyBJUGFydGlhbENpcmNsZVByb2dyZXNzQ29sb3JzIH0gZnJvbSAnLi8uLi8uLi9jbGllbnQtaG9tZS9pbnRlcmZhY2VzL3BhcnRpYWwtY2lyY2xlLXByb2dyZXNzLWNvbG9ycy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENpcmNsZVByb2dyZXNzQ29uZmlnIHtcbiAgLyoqIE91dGVyIC8gbWFpbiByaW5nICovXG4gIHZhbHVlOiBudW1iZXI7XG4gIG1heDogbnVtYmVyO1xuICBwYXJ0aWFsQ29sb3JzPzogSVBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycztcbiAgc2hvd0V4dGVybmFsUGFydGlhbENpcmNsZVByb2dyZXNzPzogYm9vbGVhbjtcblxuICAvKiogSW5uZXIgcmluZyAqL1xuICBpbm5lcj86IHtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICAgIG1heDogbnVtYmVyO1xuICAgIGNvbG9ycz86IElJbm5lclBhcnRpYWxDaXJjbGVQcm9ncmVzc0NvbG9ycztcbiAgICBzdGF0ZTogSU5ORVJfQ0lSQ0xFX1NUQVRFO1xuICAgIHNob3dJbGx1bWluYXRpb24/OiBib29sZWFuO1xuICB9O1xuXG4gIC8qKiBWaXN1YWxzICovXG4gIGltYWdlVXJsPzogc3RyaW5nO1xuXG4gIHdpZHRoPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBzdHJpbmc7XG5cbiAgc2hvd1ZhbHVlUHJvcG9ydGlvbkxhYmVsPzogYm9vbGVhbjtcbiAgaW1nT2JqZWN0UG9zaXRpb24/OiAndG9wJyB8ICdib3R0b20nIHwgJ3JpZ2h0JyB8ICdsZWZ0JztcbiAgaGFzTm90aWZpY2F0aW9uPzogYm9vbGVhbjtcbiAgcHJlZml4Pzogc3RyaW5nO1xuICBzdWZmaXg/OiBzdHJpbmc7XG4gIGhpZGVQcm9ncmVzcz86IGJvb2xlYW47XG4gIHR5cGU/OiBzdHJpbmc7XG59XG4iXX0=
@@ -0,0 +1,123 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output } from '@angular/core';
3
+ import { TranslateModule } from '@ngx-translate/core';
4
+ import { Subject, takeUntil } from 'rxjs';
5
+ import { ButtonsModule } from '@naniteninja/ionic-lib';
6
+ import { LibChatComponentModule } from '../chat/chat.component.module';
7
+ import { SharedModule } from '../../shared/shared.module';
8
+ import { LibSchedulerComponent } from '../calendar/scheduler/scheduler.component';
9
+ import { LibClientMatchOverviewComponent } from '../client-match-overview/client-match-overview.component';
10
+ import { ProgressTickerService } from '../client-match-overview/progress-ticker/progress-ticker.service';
11
+ import { AlertStatusFields } from '../lib-client-dashboard/enums/alert-status-fields.enum';
12
+ import { MATCHER_STATUSES } from '../matcher-statuses/lookups/matcher-statuses.lookup';
13
+ import { MatcherStatusesComponent } from '../matcher-statuses/matcher-statuses.component';
14
+ import { SpiderChartComponent } from '../spider-chart/spider-chart.component';
15
+ import { LibDashboardSwipeableTabsComponent } from '../dashboard-swipeable-tabs/dashboard-swipeable-tabs.component';
16
+ import { ClientHomeComponent } from './enums/client-home-component.enum';
17
+ import { defaultClientHomeConfig } from './lookup/client-home.config';
18
+ import { ChatMetaPipe } from './pipes/chat-meta.pipe';
19
+ import { GetColorByMatcherPipe } from './pipes/get-color-by-matcher.pipe';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "@angular/common";
22
+ export class LibClientHomeComponent {
23
+ constructor(cdr) {
24
+ this.cdr = cdr;
25
+ this.activeIndexChange = new EventEmitter();
26
+ this.addMessage = new EventEmitter();
27
+ this.getMessages = new EventEmitter();
28
+ this.bookEvent = new EventEmitter();
29
+ this.removeSuggestion = new EventEmitter();
30
+ this.handleAppearPopup = new EventEmitter();
31
+ this.alertStatusFields = AlertStatusFields;
32
+ this.components = ClientHomeComponent;
33
+ this.assetPaths = {
34
+ traitVisual: 'assets/trait-visual/force-directed-graph.png',
35
+ };
36
+ this.MATCHER_STATUSES = MATCHER_STATUSES;
37
+ this.defaultNumberOfItems = Array.from({ length: 10 }, () => null);
38
+ this.ticker = inject(ProgressTickerService);
39
+ }
40
+ ngOnInit() {
41
+ this.config = {
42
+ ...defaultClientHomeConfig,
43
+ ...this.config,
44
+ };
45
+ this.componentDestroyed$ = new Subject();
46
+ this.config?.clientMatches$?.pipe(takeUntil(this.componentDestroyed$)).subscribe((clientMatches) => {
47
+ this.clientMatches = [];
48
+ this.cdr.detectChanges();
49
+ this.clientMatches = clientMatches;
50
+ this.updateSpiderChart();
51
+ this.cdr.detectChanges();
52
+ });
53
+ }
54
+ ngOnDestroy() {
55
+ this.componentDestroyed$.next();
56
+ this.componentDestroyed$.complete();
57
+ }
58
+ onActiveIndexChange(index) {
59
+ this.config.activeIndex = index;
60
+ this.activeIndexChange.emit(index);
61
+ this.cdr.detectChanges();
62
+ }
63
+ handleClientMatch(match, index) {
64
+ match.isExpanded = !match.isExpanded;
65
+ this.clientMatches[index].isExpanded = match.isExpanded;
66
+ this.updateSpiderChart();
67
+ }
68
+ updateSpiderChart() {
69
+ if (!this.config.default && this.config.spiderConfig && this.components.ClientMatchSpiderChart === this.config.component) {
70
+ this.config.spiderConfig.datasets = this.clientMatches
71
+ .filter((clientMatche) => clientMatche.isExpanded)
72
+ .map((clientMatche, index) => {
73
+ const values = {};
74
+ this.config?.spiderConfig?.attributes?.forEach((attribute) => {
75
+ values[attribute.key] = clientMatche[attribute.key];
76
+ });
77
+ return {
78
+ title: clientMatche.primary?.name || clientMatche?.secondary?.name,
79
+ keys: this.config?.spiderConfig?.attributes.map((attribute) => attribute.key),
80
+ values,
81
+ polygon_color: this.config?.polygonColors?.[index],
82
+ };
83
+ });
84
+ }
85
+ }
86
+ addMessageEmit(event, prospectId, matchRequest) {
87
+ this.addMessage.emit({ message: event, prospectId, matchRequest });
88
+ }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibClientHomeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LibClientHomeComponent, isStandalone: true, selector: "lib-client-home", inputs: { config: "config" }, outputs: { activeIndexChange: "activeIndexChange", addMessage: "addMessage", getMessages: "getMessages", bookEvent: "bookEvent", removeSuggestion: "removeSuggestion", handleAppearPopup: "handleAppearPopup" }, ngImport: i0, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div style=\"display: flex; justify-content: center\">\n <img class=\"trait-visual\" [src]=\"assetPaths.traitVisual\" />\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual{max-width:270px;width:100%;height:240px;aspect-ratio:270/240}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: LibClientMatchOverviewComponent, selector: "lib-client-match-overview", inputs: ["overview", "meta", "expand", "loading", "default", "hideProgressBar", "partialColors", "showExternalPartialCircleProgress", "maxValue", "enableChangeOverview"], outputs: ["sendConversationFlag"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "component", type: LibDashboardSwipeableTabsComponent, selector: "lib-dashboard-swipeable-tabs", inputs: ["thumbsSwiperOptions", "mainSwiperOptions", "activeIndex", "bottomThumbs", "slideContentMaxHeight", "mainSwiperHeight", "subMainSwiperHeight", "thumbsSwiperHeight", "generalSwiperHeight"], outputs: ["activeIndexChange"] }, { kind: "ngmodule", type: LibChatComponentModule }, { kind: "component", type: LibSchedulerComponent, selector: "lib-scheduler", inputs: ["adsTemplate", "loading$", "emptyMessage", "displayBookedStatuses", "displayEmptyDays", "events$", "startDate", "endDate", "default"], outputs: ["bookEvent", "removeSuggestion"] }, { kind: "component", type: SpiderChartComponent, selector: "lib-spider-chart", inputs: ["datasets", "config", "polygon_colors", "showChartInfo"] }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SharedModule }, { kind: "component", type: MatcherStatusesComponent, selector: "lib-matcher-statuses", inputs: ["adsTemplate", "status", "hideStatuses", "messages", "inputValue", "maxLength", "responseTime", "disabled", "prospectJoinDate"], outputs: ["getMessages", "sendMessage"] }, { kind: "pipe", type: GetColorByMatcherPipe, name: "getColorByMatcher" }, { kind: "pipe", type: ChatMetaPipe, name: "chatMeta" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
91
+ }
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LibClientHomeComponent, decorators: [{
93
+ type: Component,
94
+ args: [{ selector: 'lib-client-home', standalone: true, imports: [
95
+ CommonModule,
96
+ LibClientMatchOverviewComponent,
97
+ TranslateModule,
98
+ LibDashboardSwipeableTabsComponent,
99
+ LibChatComponentModule,
100
+ LibSchedulerComponent,
101
+ SpiderChartComponent,
102
+ ButtonsModule,
103
+ SharedModule,
104
+ MatcherStatusesComponent,
105
+ GetColorByMatcherPipe,
106
+ ChatMetaPipe,
107
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"client-home\">\n @if (components.ClientMatchSpiderChart === config?.component) {\n <lib-spider-chart\n [datasets]=\"config.spiderConfig?.datasets\"\n [config]=\"config?.spiderConfig\"\n [polygon_colors]=\"config?.polygonColors\"\n [showChartInfo]=\"false\"\n ></lib-spider-chart>\n } @else if (components.ClientMatchTraitChart === config?.component) {\n <div style=\"display: flex; justify-content: center\">\n <img class=\"trait-visual\" [src]=\"assetPaths.traitVisual\" />\n </div>\n }\n\n <lib-dashboard-swipeable-tabs\n [activeIndex]=\"config?.activeIndex\"\n [slideContentMaxHeight]=\"config?.slideContentMaxHeight\"\n [thumbsSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 8,\n addSlidesBefore: 8,\n cache: true,\n },\n slidesPerView: 'auto',\n grabCursor: true,\n centeredSlides: false,\n freeMode: {\n enabled: true,\n sticky: true,\n },\n observer: true,\n observeParents: true,\n }\"\n [mainSwiperOptions]=\"{\n virtual: {\n enabled: clientMatches?.length > 5,\n addSlidesAfter: 2,\n addSlidesBefore: 2,\n cache: true,\n },\n centeredSlides: true,\n grabCursor: true,\n keyboard: { enabled: true, onlyInViewport: false },\n effect: 'coverflow',\n spaceBetween: 5,\n coverflowEffect: {\n rotate: 0,\n slideShadows: false,\n scale: 0.9,\n },\n observer: true,\n observeParents: true,\n }\"\n [bottomThumbs]=\"config?.bottomThumbs\"\n [generalSwiperHeight]=\"'100%'\"\n [enableMainSwiper]=\"true\"\n (activeIndexChange)=\"onActiveIndexChange($event)\"\n *ngIf=\"(config?.loading$ | async) !== true || config?.default; else empty\"\n >\n <ng-container thumb-slides>\n @if (config.default || !clientMatches?.length) {\n @for (match of defaultNumberOfItems; let i = $index; track match) {\n <swiper-slide>\n <lib-client-match-overview\n [overview]=\"{}\"\n [expand]=\"0\"\n [class.lib-client-match-overview-expand]=\"true\"\n (click)=\"(null)\"\n [partialColors]=\"null\"\n [default]=\"config.default\"\n [showValueProportionLabel]=\"false\"\n [hideProgressBar]=\"false\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n } @else {\n @for (match of clientMatches; let i = $index; track match._id) {\n <swiper-slide>\n @if (config?.chatAdsTemplate && i === 0) {\n <ng-container *ngTemplateOutlet=\"config?.chatAdsTemplate\"></ng-container>\n }\n <lib-client-match-overview\n [overview]=\"match\"\n [expand]=\"config?.activeIndex === i\"\n [class.lib-client-match-overview-expand]=\"config?.activeIndex === i\"\n [partialColors]=\"match | getColorByMatcher: config\"\n [loading]=\"config?.loading?.clientMatches\"\n [showValueProportionLabel]=\"config?.showValueProportionLabel\"\n [hideProgressBar]=\"config?.hideProgressBar\"\n [meta]=\"config?.clientMatches$ | chatMeta: match._id | async\"\n ></lib-client-match-overview>\n </swiper-slide>\n }\n }\n </ng-container>\n <ng-container main-slides>\n @switch (config?.component) {\n @case (components.ChatScheduler) {\n @if (config.default || !(config?.schedulers$ | async)?.length) {\n @for (item of defaultNumberOfItems; track $index) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler [loading$]=\"config?.loading$\" [default]=\"config.default\" [adsTemplate]=\"config?.schedulerAdsTemplate\" style=\"width: 100%\"></lib-scheduler>\n </div>\n </swiper-slide>\n }\n } @else {\n @for (scheduler of config?.schedulers$ | async; let i = $index; track scheduler) {\n <swiper-slide class=\"scheduler\">\n <div class=\"slide-content without-shadow\">\n <lib-scheduler\n [adsTemplate]=\"config?.schedulerAdsTemplate\"\n [events$]=\"scheduler.events$\"\n [loading$]=\"config?.loading$\"\n (bookEvent)=\"bookEvent.emit($event, scheduler.matchRequest)\"\n (removeSuggestion)=\"removeSuggestion.emit($event)\"\n ></lib-scheduler>\n </div>\n </swiper-slide>\n }\n }\n }\n @case (components.ChatHandoff) {\n @if (config.default || !(config?.clientMatches$ | async)?.length) {\n @for (chat of defaultNumberOfItems; let i = $index; track chat) {\n <swiper-slide class=\"chat\">\n <lib-matcher-statuses\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"chat?.messages || []\"\n (sendMessage)=\"addMessageEmit($event, chat.prospectId, {})\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"maxLength\"\n [responseTime]=\"chat?.prospectResponseTime || ''\"\n [hideStatuses]=\"config.hideStatuses\"\n ></lib-matcher-statuses>\n </swiper-slide>\n }\n } @else {\n @for (clientMatch of config?.clientMatches$ | async; let i = $index; track clientMatch.prospectData.prospectId) {\n <swiper-slide class=\"chat\">\n <div class=\"slide-content\">\n <lib-matcher-statuses\n [status]=\"clientMatch.prospectData.status\"\n [adsTemplate]=\"config?.chatTabAdsTemplate\"\n [inputValue]=\"config.chatInputValue\"\n [messages]=\"clientMatch.prospectData?.messages || []\"\n [includeTime]=\"config?.includeTime\"\n [includeGifMessage]=\"config?.includeGifMessage\"\n (getMessages)=\"getMessages.emit()\"\n [maxLength]=\"config?.maxLength\"\n [responseTime]=\"clientMatch.prospectData.prospectResponseTime\"\n (sendMessage)=\"addMessageEmit($event, clientMatch.prospectData.prospectId, clientMatch.matchRequest)\"\n [hideStatuses]=\"config.hideStatuses\"\n [prospectJoinDate]=\"clientMatch.prospectData.prospectJoinDate\"\n ></lib-matcher-statuses>\n </div>\n </swiper-slide>\n }\n }\n }\n }\n </ng-container>\n </lib-dashboard-swipeable-tabs>\n\n <ng-template #empty>\n <lib-section-separator></lib-section-separator>\n <div class=\"messsage f-lg f-gilroy-regular\">{{ emptyMessage }}</div>\n </ng-template>\n</div>\n", styles: [":host{--match-percentage-font-size: 1.5em;--container-sides-shadow-width: 15px;--match-percentage-value-height: 3em;position:relative}.messsage{margin-bottom:40px}.padding-20{padding:20px!important}swiper-slide{display:flex;overflow:hidden;position:relative;align-items:center;min-height:120px}swiper-slide.chat.swiper-slide-next,swiper-slide.chat.swiper-slide-prev{opacity:.5}swiper-slide.chat.swiper-slide-next:before,swiper-slide.chat.swiper-slide-prev:before{content:\"\";position:absolute;top:0;left:0;width:100%;height:100%;background:gray;opacity:.4;border-radius:10px}lib-client-match-overview{cursor:pointer}lib-client-match-overview:not(.lib-client-match-overview-expand){--lib-circle-progress-height: 65%;--lib-circle-progress-width: 65%;--primary-profile-height: 7em;--primary-profile-width: 7em;margin:auto 6px}lib-client-match-overview.lib-client-match-overview-expand{--primary-profile-height: 11em;--primary-profile-width: 11em;--secondary-profile-height: 3em;--secondary-profile-width: 3em}.slide-content{height:auto;width:100%;position:relative;display:block;overflow:visible;padding:0 5px}.slide-content:not(.without-shadow){border-radius:10px;box-shadow:5.70371px 5.70371px 11.40741px #00000052 inset,-3.42222px -3.42222px 4.56296px #ffffff1a inset}.slide-content:has(lib-chat){padding:0}.slide-content lib-chat{--max-width-container: 100%}.slide-content .status-list{position:absolute;top:.9em;left:.5em;display:flex;flex-direction:column;gap:.32em}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}@media (min-width: 350px){.left-side{left:0!important}}@media (max-width: 768px){swiper-slide{min-height:80px}}@media (max-width: 768px){swiper-slide{min-height:80px}lib-client-match-overview{--secondary-profile-margin: 0 0 0 -5px}.trait-visual{max-width:270px;width:100%;height:240px;aspect-ratio:270/240}}\n"] }]
108
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
109
+ type: Input
110
+ }], activeIndexChange: [{
111
+ type: Output
112
+ }], addMessage: [{
113
+ type: Output
114
+ }], getMessages: [{
115
+ type: Output
116
+ }], bookEvent: [{
117
+ type: Output
118
+ }], removeSuggestion: [{
119
+ type: Output
120
+ }], handleAppearPopup: [{
121
+ type: Output
122
+ }] } });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWhvbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGFzaGJvYXJkLWNvbXBvbmVudHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jbGllbnQtaG9tZS9jbGllbnQtaG9tZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NsaWVudC1ob21lL2NsaWVudC1ob21lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBRzNHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFEQUFx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LENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWUsRUFBRSxVQUFrQixFQUFFLFlBQW9DO1FBQzdGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDOytHQTdFVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwwVEM5Q25DLHkrTkEwS0EsNjJERDdJSSxZQUFZLCtWQUNaLCtCQUErQixtUkFDL0IsZUFBZSwrQkFDZixrQ0FBa0MsOFNBQ2xDLHNCQUFzQiwrQkFDdEIscUJBQXFCLHNQQUNyQixvQkFBb0IsK0hBQ3BCLGFBQWEsOEJBQ2IsWUFBWSwrQkFDWix3QkFBd0IsK09BQ3hCLHFCQUFxQixxREFDckIsWUFBWTs7NEZBTUgsc0JBQXNCO2tCQXJCbEMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWiwrQkFBK0I7d0JBQy9CLGVBQWU7d0JBQ2Ysa0NBQWtDO3dCQUNsQyxzQkFBc0I7d0JBQ3RCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLFlBQVk7cUJBQ2IsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU07c0ZBR3RDLE1BQU07c0JBQWQsS0FBSztnQkFFSSxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQnV0dG9uc01vZHVsZSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xuaW1wb3J0IHsgTGliQ2hhdENvbXBvbmVudE1vZHVsZSB9IGZyb20gJy4uL2NoYXQvY2hhdC5jb21wb25lbnQubW9kdWxlJztcbmltcG9ydCB7IElNZXNzYWdlIH0gZnJvbSAnLi4vY2hhdC9pbnRlcmZhY2VzL21lc3NhZ2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IFNoYXJlZE1vZHVsZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7IElTY2hlZHVsZXJBY3Rpb24gfSBmcm9tICcuLi9jYWxlbmRhci9zY2hlZHVsZXIvaW50ZXJmYWNlcy9zY2hlZHVsZXIuYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMaWJTY2hlZHVsZXJDb21wb25lbnQgfSBmcm9tICcuLi9jYWxlbmRhci9zY2hlZHVsZXIvc2NoZWR1bGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJDbGllbnRNYXRjaE92ZXJ2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3L2NsaWVudC1tYXRjaC1vdmVydmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUxpYkNsaWVudE1hdGNoT3ZlcnZpZXcgfSBmcm9tICcuLi9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcuaW50ZXJmYWNlJztcbmltcG9ydCB7IElEYXNoYm9hcmRNYXRjaFJlcXVlc3QgfSBmcm9tICcuLi9jbGllbnQtbWF0Y2gtb3ZlcnZpZXcvaW50ZXJmYWNlcy9kYXNoYm9hcmQtbWF0Y2gtcmVxdWVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NUaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY2xpZW50LW1hdGNoLW92ZXJ2aWV3L3Byb2dyZXNzLXRpY2tlci9wcm9ncmVzcy10aWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFN0YXR1c0ZpZWxkcyB9IGZyb20gJy4uL2xpYi1jbGllbnQtZGFzaGJvYXJkL2VudW1zL2FsZXJ0LXN0YXR1cy1maWVsZHMuZW51bSc7XG5pbXBvcnQgeyBNQVRDSEVSX1NUQVRVU0VTIH0gZnJvbSAnLi4vbWF0Y2hlci1zdGF0dXNlcy9sb29rdXBzL21hdGNoZXItc3RhdHVzZXMubG9va3VwJztcbmltcG9ydCB7IE1hdGNoZXJTdGF0dXNlc0NvbXBvbmVudCB9IGZyb20gJy4uL21hdGNoZXItc3RhdHVzZXMvbWF0Y2hlci1zdGF0dXNlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3BpZGVyQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuLi9zcGlkZXItY2hhcnQvc3BpZGVyLWNoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaWJEYXNoYm9hcmRTd2lwZWFibGVUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vZGFzaGJvYXJkLXN3aXBlYWJsZS10YWJzL2Rhc2hib2FyZC1zd2lwZWFibGUtdGFicy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2xpZW50SG9tZUNvbXBvbmVudCB9IGZyb20gJy4vZW51bXMvY2xpZW50LWhvbWUtY29tcG9uZW50LmVudW0nO1xuaW1wb3J0IHsgSUhvbWVEYXNoYm9hcmRJbnB1dHMgfSBmcm9tICcuL2ludGVyZmFjZXMvaG9tZS1kYXNoYm9hcmQtaW5wdXRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBkZWZhdWx0Q2xpZW50SG9tZUNvbmZpZyB9IGZyb20gJy4vbG9va3VwL2NsaWVudC1ob21lLmNvbmZpZyc7XG5pbXBvcnQgeyBDaGF0TWV0YVBpcGUgfSBmcm9tICcuL3BpcGVzL2NoYXQtbWV0YS5waXBlJztcbmltcG9ydCB7IEdldENvbG9yQnlNYXRjaGVyUGlwZSB9IGZyb20gJy4vcGlwZXMvZ2V0LWNvbG9yLWJ5LW1hdGNoZXIucGlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jbGllbnQtaG9tZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTGliQ2xpZW50TWF0Y2hPdmVydmlld0NvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGliRGFzaGJvYXJkU3dpcGVhYmxlVGFic0NvbXBvbmVudCxcbiAgICBMaWJDaGF0Q29tcG9uZW50TW9kdWxlLFxuICAgIExpYlNjaGVkdWxlckNvbXBvbmVudCxcbiAgICBTcGlkZXJDaGFydENvbXBvbmVudCxcbiAgICBCdXR0b25zTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcbiAgICBNYXRjaGVyU3RhdHVzZXNDb21wb25lbnQsXG4gICAgR2V0Q29sb3JCeU1hdGNoZXJQaXBlLFxuICAgIENoYXRNZXRhUGlwZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2NsaWVudC1ob21lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2xpZW50LWhvbWUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpYkNsaWVudEhvbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbmZpZzogSUhvbWVEYXNoYm9hcmRJbnB1dHM7XG5cbiAgQE91dHB1dCgpIGFjdGl2ZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGFkZE1lc3NhZ2U6IEV2ZW50RW1pdHRlcjx7IG1lc3NhZ2U6IElNZXNzYWdlOyBwcm9zcGVjdElkOiBzdHJpbmc7IG1hdGNoUmVxdWVzdDogSURhc2hib2FyZE1hdGNoUmVxdWVzdCB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGdldE1lc3NhZ2VzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBib29rRXZlbnQ6IEV2ZW50RW1pdHRlcjxJU2NoZWR1bGVyQWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlbW92ZVN1Z2dlc3Rpb246IEV2ZW50RW1pdHRlcjxJU2NoZWR1bGVyQWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZUFwcGVhclBvcHVwOiBFdmVudEVtaXR0ZXI8QWxlcnRTdGF0dXNGaWVsZHM+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBhbGVydFN0YXR1c0ZpZWxkcyA9IEFsZXJ0U3RhdHVzRmllbGRzO1xuICBwdWJsaWMgY29tcG9uZW50cyA9IENsaWVudEhvbWVDb21wb25lbnQ7XG4gIHB1YmxpYyBjbGllbnRNYXRjaGVzOiBJTGliQ2xpZW50TWF0Y2hPdmVydmlld1tdO1xuICBwdWJsaWMgYWN0aXZlQ2hhdEhlYWRJbmRleDogbnVtYmVyO1xuICBwdWJsaWMgYXNzZXRQYXRocyA9IHtcbiAgICB0cmFpdFZpc3VhbDogJ2Fzc2V0cy90cmFpdC12aXN1YWwvZm9yY2UtZGlyZWN0ZWQtZ3JhcGgucG5nJyxcbiAgfTtcbiAgcHJpdmF0ZSBjb21wb25lbnREZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+O1xuICBwdWJsaWMgTUFUQ0hFUl9TVEFUVVNFUzogdHlwZW9mIE1BVENIRVJfU1RBVFVTRVMgPSBNQVRDSEVSX1NUQVRVU0VTO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdE51bWJlck9mSXRlbXMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMCB9LCAoKSA9PiBudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRpY2tlciA9IGluamVjdChQcm9ncmVzc1RpY2tlclNlcnZpY2UpO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5kZWZhdWx0Q2xpZW50SG9tZUNvbmZpZyxcbiAgICAgIC4uLnRoaXMuY29uZmlnLFxuICAgIH07XG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLmNvbmZpZz8uY2xpZW50TWF0Y2hlcyQ/LnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkJCkpLnN1YnNjcmliZSgoY2xpZW50TWF0Y2hlczogSUxpYkNsaWVudE1hdGNoT3ZlcnZpZXdbXSkgPT4ge1xuICAgICAgdGhpcy5jbGllbnRNYXRjaGVzID0gW107XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLmNsaWVudE1hdGNoZXMgPSBjbGllbnRNYXRjaGVzO1xuICAgICAgdGhpcy51cGRhdGVTcGlkZXJDaGFydCgpO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb21wb25lbnREZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFjdGl2ZUluZGV4Q2hhbmdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuYWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNsaWVudE1hdGNoKG1hdGNoOiBJTGliQ2xpZW50TWF0Y2hPdmVydmlldywgaW5kZXg6IG51bWJlcikge1xuICAgIG1hdGNoLmlzRXhwYW5kZWQgPSAhbWF0Y2guaXNFeHBhbmRlZDtcbiAgICB0aGlzLmNsaWVudE1hdGNoZXNbaW5kZXhdLmlzRXhwYW5kZWQgPSBtYXRjaC5pc0V4cGFuZGVkO1xuICAgIHRoaXMudXBkYXRlU3BpZGVyQ2hhcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVTcGlkZXJDaGFydCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmRlZmF1bHQgJiYgdGhpcy5jb25maWcuc3BpZGVyQ29uZmlnICYmIHRoaXMuY29tcG9uZW50cy5DbGllbnRNYXRjaFNwaWRlckNoYXJ0ID09PSB0aGlzLmNvbmZpZy5jb21wb25lbnQpIHtcbiAgICAgIHRoaXMuY29uZmlnLnNwaWRlckNvbmZpZy5kYXRhc2V0cyA9IHRoaXMuY2xpZW50TWF0Y2hlc1xuICAgICAgICAuZmlsdGVyKChjbGllbnRNYXRjaGU6IElMaWJDbGllbnRNYXRjaE92ZXJ2aWV3KSA9PiBjbGllbnRNYXRjaGUuaXNFeHBhbmRlZClcbiAgICAgICAgLm1hcCgoY2xpZW50TWF0Y2hlOiBJTGliQ2xpZW50TWF0Y2hPdmVydmlldywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHt9O1xuICAgICAgICAgIHRoaXMuY29uZmlnPy5zcGlkZXJDb25maWc/LmF0dHJpYnV0ZXM/LmZvckVhY2goKGF0dHJpYnV0ZSkgPT4ge1xuICAgICAgICAgICAgdmFsdWVzW2F0dHJpYnV0ZS5rZXldID0gY2xpZW50TWF0Y2hlW2F0dHJpYnV0ZS5rZXldO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0aXRsZTogY2xpZW50TWF0Y2hlLnByaW1hcnk/Lm5hbWUgfHwgY2xpZW50TWF0Y2hlPy5zZWNvbmRhcnk/Lm5hbWUsXG4gICAgICAgICAgICBrZXlzOiB0aGlzLmNvbmZpZz8uc3BpZGVyQ29uZmlnPy5hdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUua2V5KSxcbiAgICAgICAgICAgIHZhbHVlcyxcbiAgICAgICAgICAgIHBvbHlnb25fY29sb3I6IHRoaXMuY29uZmlnPy5wb2x5Z29uQ29sb3JzPy5baW5kZXhdLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRNZXNzYWdlRW1pdChldmVudDogSU1lc3NhZ2UsIHByb3NwZWN0SWQ6IHN0cmluZywgbWF0Y2hSZXF1ZXN0OiBJRGFzaGJvYXJkTWF0Y2hSZXF1ZXN0KTogdm9pZCB7XG4gICAgdGhpcy5hZGRNZXNzYWdlLmVtaXQoeyBtZXNzYWdlOiBldmVudCwgcHJvc3BlY3RJZCwgbWF0Y2hSZXF1ZXN0IH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY2xpZW50LWhvbWVcIj5cbiAgQGlmIChjb21wb25lbnRzLkNsaWVudE1hdGNoU3BpZGVyQ2hhcnQgPT09IGNvbmZpZz8uY29tcG9uZW50KSB7XG4gICAgPGxpYi1zcGlkZXItY2hhcnRcbiAgICAgIFtkYXRhc2V0c109XCJjb25maWcuc3BpZGVyQ29uZmlnPy5kYXRhc2V0c1wiXG4gICAgICBbY29uZmlnXT1cImNvbmZpZz8uc3BpZGVyQ29uZmlnXCJcbiAgICAgIFtwb2x5Z29uX2NvbG9yc109XCJjb25maWc/LnBvbHlnb25Db2xvcnNcIlxuICAgICAgW3Nob3dDaGFydEluZm9dPVwiZmFsc2VcIlxuICAgID48L2xpYi1zcGlkZXItY2hhcnQ+XG4gIH0gQGVsc2UgaWYgKGNvbXBvbmVudHMuQ2xpZW50TWF0Y2hUcmFpdENoYXJ0ID09PSBjb25maWc/LmNvbXBvbmVudCkge1xuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlclwiPlxuICAgICAgPGltZyBjbGFzcz1cInRyYWl0LXZpc3VhbFwiIFtzcmNdPVwiYXNzZXRQYXRocy50cmFpdFZpc3VhbFwiIC8+XG4gICAgPC9kaXY+XG4gIH1cblxuICA8bGliLWRhc2hib2FyZC1zd2lwZWFibGUtdGFic1xuICAgIFthY3RpdmVJbmRleF09XCJjb25maWc/LmFjdGl2ZUluZGV4XCJcbiAgICBbc2xpZGVDb250ZW50TWF4SGVpZ2h0XT1cImNvbmZpZz8uc2xpZGVDb250ZW50TWF4SGVpZ2h0XCJcbiAgICBbdGh1bWJzU3dpcGVyT3B0aW9uc109XCJ7XG4gICAgICB2aXJ0dWFsOiB7XG4gICAgICAgIGVuYWJsZWQ6IGNsaWVudE1hdGNoZXM/Lmxlbmd0aCA+IDUsXG4gICAgICAgIGFkZFNsaWRlc0FmdGVyOiA4LFxuICAgICAgICBhZGRTbGlkZXNCZWZvcmU6IDgsXG4gICAgICAgIGNhY2hlOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIHNsaWRlc1BlclZpZXc6ICdhdXRvJyxcbiAgICAgIGdyYWJDdXJzb3I6IHRydWUsXG4gICAgICBjZW50ZXJlZFNsaWRlczogZmFsc2UsXG4gICAgICBmcmVlTW9kZToge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICB9LFxuICAgICAgb2JzZXJ2ZXI6IHRydWUsXG4gICAgICBvYnNlcnZlUGFyZW50czogdHJ1ZSxcbiAgICB9XCJcbiAgICBbbWFpblN3aXBlck9wdGlvbnNdPVwie1xuICAgICAgdmlydHVhbDoge1xuICAgICAgICBlbmFibGVkOiBjbGllbnRNYXRjaGVzPy5sZW5ndGggPiA1LFxuICAgICAgICBhZGRTbGlkZXNBZnRlcjogMixcbiAgICAgICAgYWRkU2xpZGVzQmVmb3JlOiAyLFxuICAgICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjZW50ZXJlZFNsaWRlczogdHJ1ZSxcbiAgICAgIGdyYWJDdXJzb3I6IHRydWUsXG4gICAgICBrZXlib2FyZDogeyBlbmFibGVkOiB0cnVlLCBvbmx5SW5WaWV3cG9ydDogZmFsc2UgfSxcbiAgICAgIGVmZmVjdDogJ2NvdmVyZmxvdycsXG4gICAgICBzcGFjZUJldHdlZW46IDUsXG4gICAgICBjb3ZlcmZsb3dFZmZlY3Q6IHtcbiAgICAgICAgcm90YXRlOiAwLFxuICAgICAgICBzbGlkZVNoYWRvd3M6IGZhbHNlLFxuICAgICAgICBzY2FsZTogMC45LFxuICAgICAgfSxcbiAgICAgIG9ic2VydmVyOiB0cnVlLFxuICAgICAgb2JzZXJ2ZVBhcmVudHM6IHRydWUsXG4gICAgfVwiXG4gICAgW2JvdHRvbVRodW1ic109XCJjb25maWc/LmJvdHRvbVRodW1ic1wiXG4gICAgW2dlbmVyYWxTd2lwZXJIZWlnaHRdPVwiJzEwMCUnXCJcbiAgICBbZW5hYmxlTWFpblN3aXBlcl09XCJ0cnVlXCJcbiAgICAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwib25BY3RpdmVJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAqbmdJZj1cIihjb25maWc/LmxvYWRpbmckIHwgYXN5bmMpICE9PSB0cnVlIHx8IGNvbmZpZz8uZGVmYXVsdDsgZWxzZSBlbXB0eVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIHRodW1iLXNsaWRlcz5cbiAgICAgIEBpZiAoY29uZmlnLmRlZmF1bHQgfHwgIWNsaWVudE1hdGNoZXM/Lmxlbmd0aCkge1xuICAgICAgICBAZm9yIChtYXRjaCBvZiBkZWZhdWx0TnVtYmVyT2ZJdGVtczsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIG1hdGNoKSB7XG4gICAgICAgICAgPHN3aXBlci1zbGlkZT5cbiAgICAgICAgICAgIDxsaWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3XG4gICAgICAgICAgICAgIFtvdmVydmlld109XCJ7fVwiXG4gICAgICAgICAgICAgIFtleHBhbmRdPVwiMFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3LWV4cGFuZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIihudWxsKVwiXG4gICAgICAgICAgICAgIFtwYXJ0aWFsQ29sb3JzXT1cIm51bGxcIlxuICAgICAgICAgICAgICBbZGVmYXVsdF09XCJjb25maWcuZGVmYXVsdFwiXG4gICAgICAgICAgICAgIFtzaG93VmFsdWVQcm9wb3J0aW9uTGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbaGlkZVByb2dyZXNzQmFyXT1cImZhbHNlXCJcbiAgICAgICAgICAgID48L2xpYi1jbGllbnQtbWF0Y2gtb3ZlcnZpZXc+XG4gICAgICAgICAgPC9zd2lwZXItc2xpZGU+XG4gICAgICAgIH1cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAZm9yIChtYXRjaCBvZiBjbGllbnRNYXRjaGVzOyBsZXQgaSA9ICRpbmRleDsgdHJhY2sgbWF0Y2guX2lkKSB7XG4gICAgICAgICAgPHN3aXBlci1zbGlkZT5cbiAgICAgICAgICAgIEBpZiAoY29uZmlnPy5jaGF0QWRzVGVtcGxhdGUgJiYgaSA9PT0gMCkge1xuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29uZmlnPy5jaGF0QWRzVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxsaWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3XG4gICAgICAgICAgICAgIFtvdmVydmlld109XCJtYXRjaFwiXG4gICAgICAgICAgICAgIFtleHBhbmRdPVwiY29uZmlnPy5hY3RpdmVJbmRleCA9PT0gaVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5saWItY2xpZW50LW1hdGNoLW92ZXJ2aWV3LWV4cGFuZF09XCJjb25maWc/LmFjdGl2ZUluZGV4ID09PSBpXCJcbiAgICAgICAgICAgICAgW3BhcnRpYWxDb2xvcnNdPVwibWF0Y2ggfCBnZXRDb2xvckJ5TWF0Y2hlcjogY29uZmlnXCJcbiAgICAgICAgICAgICAgW2xvYWRpbmddPVwiY29uZmlnPy5sb2FkaW5nPy5jbGllbnRNYXRjaGVzXCJcbiAgICAgICAgICAgICAgW3Nob3dWYWx1ZVByb3BvcnRpb25MYWJlbF09XCJjb25maWc/LnNob3dWYWx1ZVByb3BvcnRpb25MYWJlbFwiXG4gICAgICAgICAgICAgIFtoaWRlUHJvZ3Jlc3NCYXJdPVwiY29uZmlnPy5oaWRlUHJvZ3Jlc3NCYXJcIlxuICAgICAgICAgICAgICBbbWV0YV09XCJjb25maWc/LmNsaWVudE1hdGNoZXMkIHwgY2hhdE1ldGE6IG1hdGNoLl9pZCB8IGFzeW5jXCJcbiAgICAgICAgICAgID48L2xpYi1jbGllbnQtbWF0Y2gtb3ZlcnZpZXc+XG4gICAgICAgICAgPC9zd2lwZXItc2xpZGU+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIG1haW4tc2xpZGVzPlxuICAgICAgQHN3aXRjaCAoY29uZmlnPy5jb21wb25lbnQpIHtcbiAgICAgICAgQGNhc2UgKGNvbXBvbmVudHMuQ2hhdFNjaGVkdWxlcikge1xuICAgICAgICAgIEBpZiAoY29uZmlnLmRlZmF1bHQgfHwgIShjb25maWc/LnNjaGVkdWxlcnMkIHwgYXN5bmMpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZGVmYXVsdE51bWJlck9mSXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICA8c3dpcGVyLXNsaWRlIGNsYXNzPVwic2NoZWR1bGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlLWNvbnRlbnQgd2l0aG91dC1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxsaWItc2NoZWR1bGVyIFtsb2FkaW5nJF09XCJjb25maWc/LmxvYWRpbmckXCIgW2RlZmF1bHRdPVwiY29uZmlnLmRlZmF1bHRcIiBbYWRzVGVtcGxhdGVdPVwiY29uZmlnPy5zY2hlZHVsZXJBZHNUZW1wbGF0ZVwiIHN0eWxlPVwid2lkdGg6IDEwMCVcIj48L2xpYi1zY2hlZHVsZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgQGZvciAoc2NoZWR1bGVyIG9mIGNvbmZpZz8uc2NoZWR1bGVycyQgfCBhc3luYzsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIHNjaGVkdWxlcikge1xuICAgICAgICAgICAgICA8c3dpcGVyLXNsaWRlIGNsYXNzPVwic2NoZWR1bGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlLWNvbnRlbnQgd2l0aG91dC1zaGFkb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxsaWItc2NoZWR1bGVyXG4gICAgICAgICAgICAgICAgICAgIFthZHNUZW1wbGF0ZV09XCJjb25maWc/LnNjaGVkdWxlckFkc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2V2ZW50cyRdPVwic2NoZWR1bGVyLmV2ZW50cyRcIlxuICAgICAgICAgICAgICAgICAgICBbbG9hZGluZyRdPVwiY29uZmlnPy5sb2FkaW5nJFwiXG4gICAgICAgICAgICAgICAgICAgIChib29rRXZlbnQpPVwiYm9va0V2ZW50LmVtaXQoJGV2ZW50LCBzY2hlZHVsZXIubWF0Y2hSZXF1ZXN0KVwiXG4gICAgICAgICAgICAgICAgICAgIChyZW1vdmVTdWdnZXN0aW9uKT1cInJlbW92ZVN1Z2dlc3Rpb24uZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID48L2xpYi1zY2hlZHVsZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvc3dpcGVyLXNsaWRlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoY29tcG9uZW50cy5DaGF0SGFuZG9mZikge1xuICAgICAgICAgIEBpZiAoY29uZmlnLmRlZmF1bHQgfHwgIShjb25maWc/LmNsaWVudE1hdGNoZXMkIHwgYXN5bmMpPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIEBmb3IgKGNoYXQgb2YgZGVmYXVsdE51bWJlck9mSXRlbXM7IGxldCBpID0gJGluZGV4OyB0cmFjayBjaGF0KSB7XG4gICAgICAgICAgICAgIDxzd2lwZXItc2xpZGUgY2xhc3M9XCJjaGF0XCI+XG4gICAgICAgICAgICAgICAgPGxpYi1tYXRjaGVyLXN0YXR1c2VzXG4gICAgICAgICAgICAgICAgICBbaW5wdXRWYWx1ZV09XCJjb25maWcuY2hhdElucHV0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW21lc3NhZ2VzXT1cImNoYXQ/Lm1lc3NhZ2VzIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgIChzZW5kTWVzc2FnZSk9XCJhZGRNZXNzYWdlRW1pdCgkZXZlbnQsIGNoYXQucHJvc3BlY3RJZCwge30pXCJcbiAgICAgICAgICAgICAgICAgIChnZXRNZXNzYWdlcyk9XCJnZXRNZXNzYWdlcy5lbWl0KClcIlxuICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNlVGltZV09XCJjaGF0Py5wcm9zcGVjdFJlc3BvbnNlVGltZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICBbaGlkZVN0YXR1c2VzXT1cImNvbmZpZy5oaWRlU3RhdHVzZXNcIlxuICAgICAgICAgICAgICAgID48L2xpYi1tYXRjaGVyLXN0YXR1c2VzPlxuICAgICAgICAgICAgICA8L3N3aXBlci1zbGlkZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBmb3IgKGNsaWVudE1hdGNoIG9mIGNvbmZpZz8uY2xpZW50TWF0Y2hlcyQgfCBhc3luYzsgbGV0IGkgPSAkaW5kZXg7IHRyYWNrIGNsaWVudE1hdGNoLnByb3NwZWN0RGF0YS5wcm9zcGVjdElkKSB7XG4gICAgICAgICAgICAgIDxzd2lwZXItc2xpZGUgY2xhc3M9XCJjaGF0XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsaWRlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgIDxsaWItbWF0Y2hlci1zdGF0dXNlc1xuICAgICAgICAgICAgICAgICAgICBbc3RhdHVzXT1cImNsaWVudE1hdGNoLnByb3NwZWN0RGF0YS5zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBbYWRzVGVtcGxhdGVdPVwiY29uZmlnPy5jaGF0VGFiQWRzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRWYWx1ZV09XCJjb25maWcuY2hhdElucHV0VmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbbWVzc2FnZXNdPVwiY2xpZW50TWF0Y2gucHJvc3BlY3REYXRhPy5tZXNzYWdlcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlVGltZV09XCJjb25maWc/LmluY2x1ZGVUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVHaWZNZXNzYWdlXT1cImNvbmZpZz8uaW5jbHVkZUdpZk1lc3NhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAoZ2V0TWVzc2FnZXMpPVwiZ2V0TWVzc2FnZXMuZW1pdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW21heExlbmd0aF09XCJjb25maWc/Lm1heExlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtyZXNwb25zZVRpbWVdPVwiY2xpZW50TWF0Y2gucHJvc3BlY3REYXRhLnByb3NwZWN0UmVzcG9uc2VUaW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbmRNZXNzYWdlKT1cImFkZE1lc3NhZ2VFbWl0KCRldmVudCwgY2xpZW50TWF0Y2gucHJvc3BlY3REYXRhLnByb3NwZWN0SWQsIGNsaWVudE1hdGNoLm1hdGNoUmVxdWVzdClcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZVN0YXR1c2VzXT1cImNvbmZpZy5oaWRlU3RhdHVzZXNcIlxuICAgICAgICAgICAgICAgICAgICBbcHJvc3BlY3RKb2luRGF0ZV09XCJjbGllbnRNYXRjaC5wcm9zcGVjdERhdGEucHJvc3BlY3RKb2luRGF0ZVwiXG4gICAgICAgICAgICAgICAgICA+PC9saWItbWF0Y2hlci1zdGF0dXNlcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9zd2lwZXItc2xpZGU+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbGliLWRhc2hib2FyZC1zd2lwZWFibGUtdGFicz5cblxuICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgIDxsaWItc2VjdGlvbi1zZXBhcmF0b3I+PC9saWItc2VjdGlvbi1zZXBhcmF0b3I+XG4gICAgPGRpdiBjbGFzcz1cIm1lc3NzYWdlIGYtbGcgZi1naWxyb3ktcmVndWxhclwiPnt7IGVtcHR5TWVzc2FnZSB9fTwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,9 @@
1
+ export var ClientHomeComponent;
2
+ (function (ClientHomeComponent) {
3
+ ClientHomeComponent["ChatCompatibility"] = "ChatCompatibility";
4
+ ClientHomeComponent["ChatHandoff"] = "ChatHandoff";
5
+ ClientHomeComponent["ChatScheduler"] = "ChatScheduler";
6
+ ClientHomeComponent["ClientMatchSpiderChart"] = "ClientMatchSpiderChart";
7
+ ClientHomeComponent["ClientMatchTraitChart"] = "ClientMatchTraitChart";
8
+ })(ClientHomeComponent || (ClientHomeComponent = {}));
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LWhvbWUtY29tcG9uZW50LmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXNoYm9hcmQtY29tcG9uZW50cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2NsaWVudC1ob21lL2VudW1zL2NsaWVudC1ob21lLWNvbXBvbmVudC5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLG1CQU1YO0FBTkQsV0FBWSxtQkFBbUI7SUFDN0IsOERBQXVDLENBQUE7SUFDdkMsa0RBQTJCLENBQUE7SUFDM0Isc0RBQStCLENBQUE7SUFDL0Isd0VBQWlELENBQUE7SUFDakQsc0VBQStDLENBQUE7QUFDakQsQ0FBQyxFQU5XLG1CQUFtQixLQUFuQixtQkFBbUIsUUFNOUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBDbGllbnRIb21lQ29tcG9uZW50IHtcbiAgQ2hhdENvbXBhdGliaWxpdHkgPSAnQ2hhdENvbXBhdGliaWxpdHknLFxuICBDaGF0SGFuZG9mZiA9ICdDaGF0SGFuZG9mZicsXG4gIENoYXRTY2hlZHVsZXIgPSAnQ2hhdFNjaGVkdWxlcicsXG4gIENsaWVudE1hdGNoU3BpZGVyQ2hhcnQgPSAnQ2xpZW50TWF0Y2hTcGlkZXJDaGFydCcsXG4gIENsaWVudE1hdGNoVHJhaXRDaGFydCA9ICdDbGllbnRNYXRjaFRyYWl0Q2hhcnQnLFxufVxuIl19