@rivet-health/design-system 40.44.0 → 40.44.2

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 (321) hide show
  1. package/{esm2020 → esm2022}/lib/accessibility/sr-only/sr-only.component.mjs +4 -4
  2. package/esm2022/lib/download/download.service.mjs +47 -0
  3. package/{esm2020 → esm2022}/lib/format/pipes/common.mjs +5 -5
  4. package/{esm2020 → esm2022}/lib/format/pipes/date.pipe.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/format/pipes/days.pipe.mjs +4 -4
  6. package/{esm2020 → esm2022}/lib/format/pipes/dollars.pipe.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/format/pipes/number.pipe.mjs +4 -4
  8. package/{esm2020 → esm2022}/lib/format/pipes/percentage.pipe.mjs +4 -4
  9. package/esm2022/lib/format/pipes/sentence-case.pipe.mjs +61 -0
  10. package/esm2022/lib/format/pipes/small-currency.pipe.mjs +24 -0
  11. package/esm2022/lib/format/pipes/small-number.pipe.mjs +29 -0
  12. package/esm2022/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +62 -0
  13. package/esm2022/lib/format/truncate/truncate.component.mjs +51 -0
  14. package/esm2022/lib/icon/dom-cache.mjs +32 -0
  15. package/esm2022/lib/icon/icon.component.mjs +86 -0
  16. package/{esm2020 → esm2022}/lib/icon/icons.mjs +1 -1
  17. package/{esm2020 → esm2022}/lib/input/alphabetic-field/alphabetic-field.component.mjs +4 -4
  18. package/esm2022/lib/input/auto-focus/auto-focus.directive.mjs +48 -0
  19. package/esm2022/lib/input/button/button.component.mjs +139 -0
  20. package/esm2022/lib/input/button-group/button-group.component.mjs +39 -0
  21. package/{esm2020 → esm2022}/lib/input/calendar/calendar.component.mjs +4 -4
  22. package/{esm2020 → esm2022}/lib/input/card-checkbox/card-checkbox.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/input/checkbox/checkbox.component.mjs +4 -4
  24. package/{esm2020 → esm2022}/lib/input/currency-field/currency-field.component.mjs +4 -4
  25. package/esm2022/lib/input/date/date.component.mjs +279 -0
  26. package/esm2022/lib/input/date-range/date-range.component.mjs +477 -0
  27. package/esm2022/lib/input/filter-chip/filter-chip.component.mjs +47 -0
  28. package/{esm2020 → esm2022}/lib/input/filter-dropdown/filter-dropdown.component.mjs +5 -5
  29. package/{esm2020 → esm2022}/lib/input/input-label/input-label.component.mjs +4 -4
  30. package/esm2022/lib/input/mentions-input/mentions-input.component.mjs +745 -0
  31. package/esm2022/lib/input/number-field/number-field.component.mjs +125 -0
  32. package/{esm2020 → esm2022}/lib/input/percentage-field/percentage-field.component.mjs +4 -4
  33. package/esm2022/lib/input/phone-field/phone-field.component.mjs +74 -0
  34. package/{esm2020 → esm2022}/lib/input/radio/radio.component.mjs +4 -4
  35. package/{esm2020 → esm2022}/lib/input/search/search.component.mjs +4 -4
  36. package/esm2022/lib/input/search-select/search-select.component.mjs +189 -0
  37. package/esm2022/lib/input/select/select/select.component.mjs +178 -0
  38. package/{esm2020 → esm2022}/lib/input/select/select-node/select-node.component.mjs +4 -4
  39. package/esm2022/lib/input/select/state.mjs +882 -0
  40. package/{esm2020 → esm2022}/lib/input/simple-select/option-group.pipe.mjs +4 -4
  41. package/esm2022/lib/input/simple-select/simple-select.component.mjs +178 -0
  42. package/esm2022/lib/input/switch-checkbox/switch-checkbox.component.mjs +33 -0
  43. package/esm2022/lib/input/text-field/text-field.component.mjs +115 -0
  44. package/{esm2020 → esm2022}/lib/input/textarea-field/textarea-field.component.mjs +4 -4
  45. package/{esm2020 → esm2022}/lib/input/validation-message/validation-message.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/lib/layout/card/card-actions.component.mjs +4 -4
  47. package/esm2022/lib/layout/card/card-content.component.mjs +64 -0
  48. package/esm2022/lib/layout/card/card-header.component.mjs +201 -0
  49. package/{esm2020 → esm2022}/lib/layout/card/card-link.component.mjs +5 -5
  50. package/{esm2020 → esm2022}/lib/layout/card/card-media.component.mjs +4 -4
  51. package/esm2022/lib/layout/card/card.component.mjs +291 -0
  52. package/{esm2020 → esm2022}/lib/layout/setting-row/setting-row.component.mjs +4 -4
  53. package/esm2022/lib/load/loading/loading.component.mjs +43 -0
  54. package/{esm2020 → esm2022}/lib/load/loading-cover/loading-cover.component.mjs +4 -4
  55. package/esm2022/lib/navigation/editable-heading/editable-heading.component.mjs +243 -0
  56. package/{esm2020 → esm2022}/lib/navigation/link/link.component.mjs +6 -6
  57. package/{esm2020 → esm2022}/lib/navigation/page-header/page-header.component.mjs +4 -4
  58. package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tab/simple-tab.component.mjs +4 -4
  59. package/{esm2020 → esm2022}/lib/navigation/simple-tabs/simple-tabs/simple-tabs.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/navigation/tabs/tab/tab.component.mjs +4 -4
  61. package/{esm2020 → esm2022}/lib/navigation/tabs/tabs/tabs.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/lib/navigation/views/all-views-modal/all-views-modal.component.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/navigation/views/edit-view/edit-view.component.mjs +9 -9
  64. package/esm2022/lib/navigation/views/permission-picker/permission-picker.component.mjs +151 -0
  65. package/esm2022/lib/navigation/views/state.mjs +456 -0
  66. package/{esm2020 → esm2022}/lib/navigation/views/view-menu/view-menu.component.mjs +5 -5
  67. package/esm2022/lib/navigation/views/views/views.component.mjs +90 -0
  68. package/{esm2020 → esm2022}/lib/notification/badge/badge.component.mjs +4 -4
  69. package/esm2022/lib/notification/banner/banner-action.component.mjs +48 -0
  70. package/esm2022/lib/notification/banner/banner.component.mjs +61 -0
  71. package/esm2022/lib/notification/map-indicator/map-indicator.component.mjs +50 -0
  72. package/esm2022/lib/notification/map-indicator/map-indicators.mjs +15 -0
  73. package/{esm2020 → esm2022}/lib/notification/notification-badge/notification-badge.component.mjs +4 -4
  74. package/esm2022/lib/overlay/callout/callout.component.mjs +130 -0
  75. package/esm2022/lib/overlay/callout/callout.helpers.mjs +113 -0
  76. package/{esm2020 → esm2022}/lib/overlay/callout/help/help.component.mjs +4 -4
  77. package/esm2022/lib/overlay/callout/lock-scroll.directive.mjs +69 -0
  78. package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu-item/menu-item.component.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/overlay/callout/menu/menu.component.mjs +4 -4
  80. package/esm2022/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +30 -0
  81. package/{esm2020 → esm2022}/lib/overlay/callout/tooltip/tooltip.component.mjs +4 -4
  82. package/esm2022/lib/overlay/callout/tooltip/tooltip.directive.mjs +138 -0
  83. package/esm2022/lib/overlay/modal/dialog/dialog.component.mjs +47 -0
  84. package/{esm2020 → esm2022}/lib/overlay/modal/dialog-stack.service.mjs +4 -4
  85. package/esm2022/lib/overlay/modal/form-dialog/form-dialog.component.mjs +146 -0
  86. package/esm2022/lib/overlay/modal/modal.component.mjs +31 -0
  87. package/{esm2020 → esm2022}/lib/overlay/modal/side-sheet/side-sheet.component.mjs +4 -4
  88. package/esm2022/lib/overlay/overlay-outlet.component.mjs +98 -0
  89. package/{esm2020 → esm2022}/lib/overlay/overlay.directive.mjs +5 -5
  90. package/{esm2020 → esm2022}/lib/overlay/overlay.service.mjs +5 -5
  91. package/{esm2020 → esm2022}/lib/overlay/toast/toast-action.component.mjs +4 -4
  92. package/esm2022/lib/overlay/toast/toast.component.mjs +41 -0
  93. package/{esm2020 → esm2022}/lib/riv.module.mjs +227 -227
  94. package/esm2022/lib/size/size.directive.mjs +33 -0
  95. package/esm2022/lib/table/simple-table/coordinate-helper.mjs +61 -0
  96. package/esm2022/lib/table/simple-table/simple-table-cell.component.mjs +36 -0
  97. package/esm2022/lib/table/simple-table/simple-table-header-cell.component.mjs +37 -0
  98. package/{esm2020 → esm2022}/lib/table/simple-table/simple-table-row.component.mjs +4 -4
  99. package/esm2022/lib/table/simple-table/simple-table.component.mjs +104 -0
  100. package/esm2022/lib/table/table/clipboard.mjs +182 -0
  101. package/esm2022/lib/table/table/state-helpers/collapse-helpers.mjs +116 -0
  102. package/esm2022/lib/table/table/state-helpers/column-helpers.mjs +383 -0
  103. package/{esm2020 → esm2022}/lib/table/table/state-helpers/display-helpers.mjs +1 -1
  104. package/esm2022/lib/table/table/state-helpers/nesting-helpers.mjs +123 -0
  105. package/esm2022/lib/table/table/state-helpers/order-helpers.mjs +164 -0
  106. package/esm2022/lib/table/table/state-helpers/pagination-helpers.mjs +139 -0
  107. package/esm2022/lib/table/table/state-helpers/result-helpers.mjs +70 -0
  108. package/esm2022/lib/table/table/state-helpers/search-helpers.mjs +72 -0
  109. package/esm2022/lib/table/table/state-helpers/selection-helpers.mjs +180 -0
  110. package/esm2022/lib/table/table/state.mjs +1035 -0
  111. package/esm2022/lib/table/table/table/table.component.mjs +367 -0
  112. package/{esm2020 → esm2022}/lib/table/table/table-collapse-all/table-collapse-all.component.mjs +5 -5
  113. package/esm2022/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +227 -0
  114. package/esm2022/lib/table/table/table-column-settings/table-column-settings.component.mjs +134 -0
  115. package/esm2022/lib/table/table/table-csv-export/table-csv-export.component.mjs +35 -0
  116. package/{esm2020 → esm2022}/lib/table/table/table-header-resize-handle/table-header-resize-handle.component.mjs +6 -6
  117. package/esm2022/lib/table/table/table-search/table-search.component.mjs +71 -0
  118. package/{esm2020 → esm2022}/lib/table/table/table-search-columns/table-search-columns.component.mjs +4 -4
  119. package/esm2022/lib/visibility/visibility.directive.mjs +34 -0
  120. package/esm2022/lib/visualization/chart/chart-scaling.mjs +380 -0
  121. package/esm2022/lib/visualization/chart/chart.component.mjs +626 -0
  122. package/esm2022/lib/visualization/chart/chart.mjs +3768 -0
  123. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-cell.component.mjs +5 -5
  124. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-header-cell.component.mjs +4 -4
  125. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table-row.component.mjs +4 -4
  126. package/{esm2020 → esm2022}/lib/visualization/data-table/data-table.component.mjs +4 -4
  127. package/{esm2020 → esm2022}/lib/visualization/donut/donut.component.mjs +4 -4
  128. package/{esm2020 → esm2022}/lib/visualization/funnel-chart/funnel-chart.component.mjs +5 -5
  129. package/esm2022/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +33 -0
  130. package/{esm2020 → esm2022}/lib/visualization/highlight/highlight.component.mjs +4 -4
  131. package/esm2022/lib/visualization/highlight/highlight.helpers.mjs +20 -0
  132. package/esm2022/lib/visualization/intervals.mjs +63 -0
  133. package/{esm2020 → esm2022}/lib/visualization/issue/issue.component.mjs +4 -4
  134. package/{esm2020 → esm2022}/lib/visualization/legend-item/legend-item.component.mjs +4 -4
  135. package/{esm2020 → esm2022}/lib/visualization/metric/metric.component.mjs +4 -4
  136. package/{esm2020 → esm2022}/lib/visualization/mini-pie/mini-pie.component.mjs +4 -4
  137. package/{esm2020 → esm2022}/lib/visualization/progress/progress.component.mjs +5 -5
  138. package/esm2022/lib/visualization/stacked-column/stacked-column.component.mjs +377 -0
  139. package/esm2022/lib/visualization/stacked-column/stacked-column.helpers.mjs +18 -0
  140. package/esm2022/lib/visualization/stacked-row/stacked-row.component.mjs +270 -0
  141. package/esm2022/lib/visualization/stacked-row/stacked-row.helpers.mjs +74 -0
  142. package/esm2022/lib/visualization/time-series/time-series.component.mjs +374 -0
  143. package/esm2022/lib/visualization/time-series/time-series.helpers.mjs +15 -0
  144. package/esm2022/lib/visualization/trend/trend.component.mjs +51 -0
  145. package/{esm2020 → esm2022}/lib/visualization/zero-state/zero-state.component.mjs +4 -4
  146. package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs +670 -670
  147. package/{fesm2020 → fesm2022}/rivet-health-design-system.mjs.map +1 -1
  148. package/lib/format/svg-text-truncate/svg-text-truncate.directive.d.ts +1 -1
  149. package/lib/format/truncate/truncate.component.d.ts +1 -1
  150. package/lib/icon/icon.component.d.ts +1 -1
  151. package/lib/input/auto-focus/auto-focus.directive.d.ts +1 -1
  152. package/lib/input/button/button.component.d.ts +1 -1
  153. package/lib/input/calendar/calendar.component.d.ts +1 -1
  154. package/lib/input/checkbox/checkbox.component.d.ts +1 -1
  155. package/lib/input/currency-field/currency-field.component.d.ts +1 -1
  156. package/lib/input/date/date.component.d.ts +1 -1
  157. package/lib/input/date-range/date-range.component.d.ts +1 -1
  158. package/lib/input/filter-chip/filter-chip.component.d.ts +1 -1
  159. package/lib/input/filter-dropdown/filter-dropdown.component.d.ts +1 -1
  160. package/lib/input/input-label/input-label.component.d.ts +1 -1
  161. package/lib/input/mentions-input/mentions-input.component.d.ts +1 -1
  162. package/lib/input/number-field/number-field.component.d.ts +1 -1
  163. package/lib/input/percentage-field/percentage-field.component.d.ts +1 -1
  164. package/lib/input/phone-field/phone-field.component.d.ts +1 -1
  165. package/lib/input/radio/radio.component.d.ts +1 -1
  166. package/lib/input/search/search.component.d.ts +1 -1
  167. package/lib/input/search-select/search-select.component.d.ts +1 -1
  168. package/lib/input/select/select/select.component.d.ts +1 -1
  169. package/lib/input/select/select-node/select-node.component.d.ts +1 -1
  170. package/lib/input/simple-select/simple-select.component.d.ts +1 -1
  171. package/lib/input/switch-checkbox/switch-checkbox.component.d.ts +1 -1
  172. package/lib/input/text-field/text-field.component.d.ts +1 -1
  173. package/lib/input/textarea-field/textarea-field.component.d.ts +1 -1
  174. package/lib/input/validation-message/validation-message.component.d.ts +1 -1
  175. package/lib/layout/card/card-actions.component.d.ts +1 -1
  176. package/lib/layout/card/card-content.component.d.ts +1 -1
  177. package/lib/layout/card/card-header.component.d.ts +1 -1
  178. package/lib/layout/card/card-link.component.d.ts +1 -1
  179. package/lib/layout/card/card-media.component.d.ts +1 -1
  180. package/lib/layout/card/card.component.d.ts +1 -1
  181. package/lib/layout/setting-row/setting-row.component.d.ts +1 -1
  182. package/lib/load/loading/loading.component.d.ts +1 -1
  183. package/lib/load/loading-cover/loading-cover.component.d.ts +1 -1
  184. package/lib/navigation/editable-heading/editable-heading.component.d.ts +1 -1
  185. package/lib/navigation/link/link.component.d.ts +1 -1
  186. package/lib/navigation/page-header/page-header.component.d.ts +1 -1
  187. package/lib/navigation/simple-tabs/simple-tab/simple-tab.component.d.ts +1 -1
  188. package/lib/navigation/tabs/tab/tab.component.d.ts +1 -1
  189. package/lib/navigation/views/all-views-modal/all-views-modal.component.d.ts +1 -1
  190. package/lib/navigation/views/edit-view/edit-view.component.d.ts +1 -1
  191. package/lib/navigation/views/permission-picker/permission-picker.component.d.ts +3 -3
  192. package/lib/navigation/views/view-menu/view-menu.component.d.ts +1 -1
  193. package/lib/navigation/views/views/views.component.d.ts +1 -1
  194. package/lib/notification/badge/badge.component.d.ts +1 -1
  195. package/lib/notification/banner/banner-action.component.d.ts +1 -1
  196. package/lib/notification/banner/banner.component.d.ts +1 -1
  197. package/lib/notification/map-indicator/map-indicator.component.d.ts +1 -1
  198. package/lib/notification/notification-badge/notification-badge.component.d.ts +1 -1
  199. package/lib/overlay/callout/callout.component.d.ts +1 -1
  200. package/lib/overlay/callout/help/help.component.d.ts +1 -1
  201. package/lib/overlay/callout/lock-scroll.directive.d.ts +1 -1
  202. package/lib/overlay/callout/menu/menu-item/menu-item.component.d.ts +1 -1
  203. package/lib/overlay/callout/menu/menu.component.d.ts +1 -1
  204. package/lib/overlay/callout/tooltip/locked-tooltip.directive.d.ts +1 -1
  205. package/lib/overlay/callout/tooltip/tooltip.component.d.ts +1 -1
  206. package/lib/overlay/callout/tooltip/tooltip.directive.d.ts +1 -1
  207. package/lib/overlay/modal/dialog/dialog.component.d.ts +1 -1
  208. package/lib/overlay/modal/form-dialog/form-dialog.component.d.ts +1 -1
  209. package/lib/overlay/modal/modal.component.d.ts +1 -1
  210. package/lib/overlay/modal/side-sheet/side-sheet.component.d.ts +1 -1
  211. package/lib/overlay/toast/toast.component.d.ts +1 -1
  212. package/lib/table/simple-table/simple-table-header-cell.component.d.ts +1 -1
  213. package/lib/table/simple-table/simple-table-row.component.d.ts +1 -1
  214. package/lib/table/table/table/table.component.d.ts +1 -1
  215. package/lib/table/table/table-collapse-all/table-collapse-all.component.d.ts +1 -1
  216. package/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.d.ts +1 -1
  217. package/lib/table/table/table-column-settings/table-column-settings.component.d.ts +1 -1
  218. package/lib/table/table/table-csv-export/table-csv-export.component.d.ts +1 -1
  219. package/lib/table/table/table-search/table-search.component.d.ts +1 -1
  220. package/lib/table/table/table-search-columns/table-search-columns.component.d.ts +1 -1
  221. package/lib/visualization/chart/chart.component.d.ts +1 -1
  222. package/lib/visualization/data-table/data-table-row.component.d.ts +1 -1
  223. package/lib/visualization/donut/donut.component.d.ts +1 -1
  224. package/lib/visualization/funnel-chart/funnel-chart.component.d.ts +1 -1
  225. package/lib/visualization/highlight/highlight.component.d.ts +1 -1
  226. package/lib/visualization/issue/issue.component.d.ts +1 -1
  227. package/lib/visualization/legend-item/legend-item.component.d.ts +1 -1
  228. package/lib/visualization/metric/metric.component.d.ts +1 -1
  229. package/lib/visualization/mini-pie/mini-pie.component.d.ts +1 -1
  230. package/lib/visualization/progress/progress.component.d.ts +1 -1
  231. package/lib/visualization/stacked-column/stacked-column.component.d.ts +3 -3
  232. package/lib/visualization/stacked-row/stacked-row.component.d.ts +1 -1
  233. package/lib/visualization/time-series/time-series.component.d.ts +3 -3
  234. package/lib/visualization/trend/trend.component.d.ts +1 -1
  235. package/lib/visualization/zero-state/zero-state.component.d.ts +1 -1
  236. package/package.json +5 -11
  237. package/esm2020/lib/download/download.service.mjs +0 -47
  238. package/esm2020/lib/format/pipes/sentence-case.pipe.mjs +0 -61
  239. package/esm2020/lib/format/pipes/small-currency.pipe.mjs +0 -24
  240. package/esm2020/lib/format/pipes/small-number.pipe.mjs +0 -29
  241. package/esm2020/lib/format/svg-text-truncate/svg-text-truncate.directive.mjs +0 -62
  242. package/esm2020/lib/format/truncate/truncate.component.mjs +0 -51
  243. package/esm2020/lib/icon/dom-cache.mjs +0 -32
  244. package/esm2020/lib/icon/icon.component.mjs +0 -86
  245. package/esm2020/lib/input/auto-focus/auto-focus.directive.mjs +0 -48
  246. package/esm2020/lib/input/button/button.component.mjs +0 -139
  247. package/esm2020/lib/input/button-group/button-group.component.mjs +0 -39
  248. package/esm2020/lib/input/date/date.component.mjs +0 -279
  249. package/esm2020/lib/input/date-range/date-range.component.mjs +0 -477
  250. package/esm2020/lib/input/filter-chip/filter-chip.component.mjs +0 -47
  251. package/esm2020/lib/input/mentions-input/mentions-input.component.mjs +0 -745
  252. package/esm2020/lib/input/number-field/number-field.component.mjs +0 -125
  253. package/esm2020/lib/input/phone-field/phone-field.component.mjs +0 -74
  254. package/esm2020/lib/input/search-select/search-select.component.mjs +0 -189
  255. package/esm2020/lib/input/select/select/select.component.mjs +0 -178
  256. package/esm2020/lib/input/select/state.mjs +0 -882
  257. package/esm2020/lib/input/simple-select/simple-select.component.mjs +0 -178
  258. package/esm2020/lib/input/switch-checkbox/switch-checkbox.component.mjs +0 -33
  259. package/esm2020/lib/input/text-field/text-field.component.mjs +0 -115
  260. package/esm2020/lib/layout/card/card-content.component.mjs +0 -64
  261. package/esm2020/lib/layout/card/card-header.component.mjs +0 -201
  262. package/esm2020/lib/layout/card/card.component.mjs +0 -291
  263. package/esm2020/lib/load/loading/loading.component.mjs +0 -43
  264. package/esm2020/lib/navigation/editable-heading/editable-heading.component.mjs +0 -243
  265. package/esm2020/lib/navigation/views/permission-picker/permission-picker.component.mjs +0 -151
  266. package/esm2020/lib/navigation/views/state.mjs +0 -456
  267. package/esm2020/lib/navigation/views/views/views.component.mjs +0 -90
  268. package/esm2020/lib/notification/banner/banner-action.component.mjs +0 -48
  269. package/esm2020/lib/notification/banner/banner.component.mjs +0 -61
  270. package/esm2020/lib/notification/map-indicator/map-indicator.component.mjs +0 -50
  271. package/esm2020/lib/notification/map-indicator/map-indicators.mjs +0 -15
  272. package/esm2020/lib/overlay/callout/callout.component.mjs +0 -130
  273. package/esm2020/lib/overlay/callout/callout.helpers.mjs +0 -113
  274. package/esm2020/lib/overlay/callout/lock-scroll.directive.mjs +0 -69
  275. package/esm2020/lib/overlay/callout/tooltip/locked-tooltip.directive.mjs +0 -30
  276. package/esm2020/lib/overlay/callout/tooltip/tooltip.directive.mjs +0 -138
  277. package/esm2020/lib/overlay/modal/dialog/dialog.component.mjs +0 -47
  278. package/esm2020/lib/overlay/modal/form-dialog/form-dialog.component.mjs +0 -146
  279. package/esm2020/lib/overlay/modal/modal.component.mjs +0 -31
  280. package/esm2020/lib/overlay/overlay-outlet.component.mjs +0 -98
  281. package/esm2020/lib/overlay/toast/toast.component.mjs +0 -41
  282. package/esm2020/lib/size/size.directive.mjs +0 -33
  283. package/esm2020/lib/table/simple-table/coordinate-helper.mjs +0 -61
  284. package/esm2020/lib/table/simple-table/simple-table-cell.component.mjs +0 -36
  285. package/esm2020/lib/table/simple-table/simple-table-header-cell.component.mjs +0 -37
  286. package/esm2020/lib/table/simple-table/simple-table.component.mjs +0 -104
  287. package/esm2020/lib/table/table/clipboard.mjs +0 -182
  288. package/esm2020/lib/table/table/state-helpers/collapse-helpers.mjs +0 -116
  289. package/esm2020/lib/table/table/state-helpers/column-helpers.mjs +0 -383
  290. package/esm2020/lib/table/table/state-helpers/nesting-helpers.mjs +0 -123
  291. package/esm2020/lib/table/table/state-helpers/order-helpers.mjs +0 -164
  292. package/esm2020/lib/table/table/state-helpers/pagination-helpers.mjs +0 -139
  293. package/esm2020/lib/table/table/state-helpers/result-helpers.mjs +0 -70
  294. package/esm2020/lib/table/table/state-helpers/search-helpers.mjs +0 -72
  295. package/esm2020/lib/table/table/state-helpers/selection-helpers.mjs +0 -180
  296. package/esm2020/lib/table/table/state.mjs +0 -1035
  297. package/esm2020/lib/table/table/table/table.component.mjs +0 -367
  298. package/esm2020/lib/table/table/table-column-settings/table-column-settings-side-sheet.component.mjs +0 -227
  299. package/esm2020/lib/table/table/table-column-settings/table-column-settings.component.mjs +0 -134
  300. package/esm2020/lib/table/table/table-csv-export/table-csv-export.component.mjs +0 -35
  301. package/esm2020/lib/table/table/table-search/table-search.component.mjs +0 -71
  302. package/esm2020/lib/visibility/visibility.directive.mjs +0 -34
  303. package/esm2020/lib/visualization/chart/chart-scaling.mjs +0 -380
  304. package/esm2020/lib/visualization/chart/chart.component.mjs +0 -626
  305. package/esm2020/lib/visualization/chart/chart.mjs +0 -3768
  306. package/esm2020/lib/visualization/funnel-chart/funnel-chart.helpers.mjs +0 -33
  307. package/esm2020/lib/visualization/highlight/highlight.helpers.mjs +0 -20
  308. package/esm2020/lib/visualization/intervals.mjs +0 -63
  309. package/esm2020/lib/visualization/stacked-column/stacked-column.component.mjs +0 -377
  310. package/esm2020/lib/visualization/stacked-column/stacked-column.helpers.mjs +0 -18
  311. package/esm2020/lib/visualization/stacked-row/stacked-row.component.mjs +0 -270
  312. package/esm2020/lib/visualization/stacked-row/stacked-row.helpers.mjs +0 -74
  313. package/esm2020/lib/visualization/time-series/time-series.component.mjs +0 -374
  314. package/esm2020/lib/visualization/time-series/time-series.helpers.mjs +0 -15
  315. package/esm2020/lib/visualization/trend/trend.component.mjs +0 -51
  316. package/fesm2015/rivet-health-design-system.mjs +0 -18370
  317. package/fesm2015/rivet-health-design-system.mjs.map +0 -1
  318. /package/{esm2020 → esm2022}/lib/overlay/callout/select-callout-defaults.mjs +0 -0
  319. /package/{esm2020 → esm2022}/lib/util/local-storage.mjs +0 -0
  320. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  321. /package/{esm2020 → esm2022}/rivet-health-design-system.mjs +0 -0
@@ -1,201 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Optional, Output, } from '@angular/core';
2
- import { uniqueId } from 'lodash';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "./card.component";
5
- import * as i2 from "@angular/common";
6
- import * as i3 from "../../icon/icon.component";
7
- /**
8
- * Top row of a `riv-card`: heading text plus optional adornments.
9
- *
10
- * Three projection slots, all optional:
11
- * - `[leading]` — icon, avatar, or status dot shown before the heading
12
- * - default — laid out on the heading's baseline, so status badges sit beside
13
- * the title and wrap below it when space runs out. Also takes a whole custom
14
- * title (an inline rename field, say) when `heading` is left unset;
15
- * `subheading` still renders below either way.
16
- * - `[actions]` — trailing controls such as `riv-menu`
17
- *
18
- * ```html
19
- * <riv-card-header [heading]="'Commercial 2025'" [subheading]="'Aetna'">
20
- * <riv-icon leading [name]="'FileText'"></riv-icon>
21
- * <riv-badge [size]="'small'" [variant]="'categorical-8'">Draft</riv-badge>
22
- * <riv-menu actions>...</riv-menu>
23
- * </riv-card-header>
24
- * ```
25
- *
26
- * `headingLevel` renders a real `h1`–`h6` so the card fits the page's heading
27
- * outline; pick the level that follows the surrounding content rather than the
28
- * one that looks right, since size comes from the design tokens either way.
29
- *
30
- * The heading font and colour can be overridden per-instance with the
31
- * `--card-heading-font` and `--card-heading-color` custom properties.
32
- *
33
- * ## Expanding and collapsing
34
- *
35
- * `expandable` turns the header into the toggle for the card's body: it renders
36
- * a chevron and covers the row with a real `<button>` carrying `aria-expanded`
37
- * and `aria-controls`, so the pattern is keyboard operable and announces its
38
- * state. Controls in `[actions]` sit above that button and stay independently
39
- * clickable, so a menu beside the toggle needs no `stopPropagation`.
40
- *
41
- * The header holds no state of its own — bind `expanded` and act on
42
- * `expandedChange`, or use `[(expanded)]`:
43
- *
44
- * ```html
45
- * <riv-card>
46
- * <riv-card-header
47
- * [heading]="'Patient info'"
48
- * [expandable]="true"
49
- * [(expanded)]="open"
50
- * ></riv-card-header>
51
- * <riv-card-content *ngIf="open">...</riv-card-content>
52
- * </riv-card>
53
- * ```
54
- *
55
- * The toggle is named by the header's title, so an expandable header needs a
56
- * `heading` or a projected title.
57
- */
58
- export class CardHeaderComponent {
59
- constructor(card) {
60
- this.card = card;
61
- /**
62
- * Identifies the title for a clickable `riv-card`, which names its click
63
- * target from the title rather than from the card's whole text.
64
- */
65
- this.titleId = uniqueId('riv-card-title-');
66
- /**
67
- * Names the body the toggle controls. Handed to the enclosing card, which
68
- * relays it to the projected `riv-card-content`.
69
- */
70
- this.regionId = uniqueId('riv-card-region-');
71
- /** Heading element rendered for `heading`, for document outline purposes. */
72
- this.headingLevel = 3;
73
- /** `filled` gives the header its own background, separating it from the body. */
74
- this.variant = 'plain';
75
- this.padding = 'medium';
76
- /** Draws a separator below the header. Implied by the `filled` variant. */
77
- this.divider = false;
78
- /** Cross-axis alignment of the leading slot, heading block, and actions. */
79
- this.align = 'start';
80
- /** Turns the header row into the toggle for the card's body. */
81
- this.expandable = false;
82
- /** Whether the body is currently open. The consumer owns this state. */
83
- this.expanded = false;
84
- /** Side of the header the chevron sits on. */
85
- this.togglePosition = 'trailing';
86
- /**
87
- * Blocks the toggle, for a section that is not yet available to open. Set it
88
- * alongside a disabled `riv-card`, whose own `disabled` mutes the surface but
89
- * does not reach the header's controls.
90
- */
91
- this.disabled = false;
92
- /** Emitted with the state the consumer is being asked to move to. */
93
- this.expandedChange = new EventEmitter();
94
- }
95
- /**
96
- * Offers the heading to an enclosing card as the name for its click target,
97
- * and the toggle's region so a projected `riv-card-content` can wear it. Only
98
- * a text heading is offered: projected titles can be anything, so those cards
99
- * fall back to naming against their whole content.
100
- */
101
- ngOnChanges(changes) {
102
- if (changes['heading']) {
103
- if (this.heading?.trim()) {
104
- this.card?.setTitleId(this.titleId);
105
- }
106
- else {
107
- this.card?.clearTitleId(this.titleId);
108
- }
109
- }
110
- if (changes['expandable']) {
111
- if (this.expandable) {
112
- this.card?.setRegionId(this.regionId);
113
- }
114
- else {
115
- this.card?.clearRegionId(this.regionId);
116
- }
117
- }
118
- }
119
- /** Withdraws the offer, so the card stops naming itself against this header. */
120
- ngOnDestroy() {
121
- this.card?.clearTitleId(this.titleId);
122
- this.card?.clearRegionId(this.regionId);
123
- }
124
- /**
125
- * Asks for the opposite state rather than taking it, which keeps the header
126
- * free of state that could drift from the consumer's.
127
- */
128
- toggle() {
129
- this.expandedChange.emit(!this.expanded);
130
- }
131
- get classes() {
132
- return Object.entries({
133
- [this.variant]: true,
134
- [`padding-${this.padding}`]: true,
135
- [`align-${this.align}`]: true,
136
- divider: this.divider,
137
- expandable: this.expandable,
138
- })
139
- .filter(([_, v]) => v)
140
- .map(([k]) => k)
141
- .join(' ');
142
- }
143
- /**
144
- * Line clamping is applied inline so the line count stays a plain input
145
- * rather than a fixed set of CSS classes.
146
- */
147
- get clampStyle() {
148
- return this.clamp == null
149
- ? {}
150
- : {
151
- display: '-webkit-box',
152
- '-webkit-box-orient': 'vertical',
153
- '-webkit-line-clamp': `${this.clamp}`,
154
- overflow: 'hidden',
155
- };
156
- }
157
- }
158
- CardHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardHeaderComponent, deps: [{ token: i1.CardComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
159
- CardHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CardHeaderComponent, selector: "riv-card-header", inputs: { heading: "heading", subheading: "subheading", headingLevel: "headingLevel", variant: "variant", padding: "padding", divider: "divider", align: "align", clamp: "clamp", expandable: "expandable", expanded: "expanded", togglePosition: "togglePosition", disabled: "disabled" }, outputs: { expandedChange: "expandedChange" }, host: { properties: { "class": "this.classes" } }, usesOnChanges: true, ngImport: i0, template: "<button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"expand-toggle\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"regionId\"\n [attr.aria-labelledby]=\"titleId\"\n (click)=\"toggle()\"\n></button>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'leading'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"leading\"><ng-content select=\"[leading]\"></ng-content></div>\n<div class=\"main\">\n <div class=\"title-row\" [id]=\"titleId\">\n <div *ngIf=\"heading?.trim()\" class=\"heading\" [ngStyle]=\"clampStyle\">\n <ng-container [ngSwitch]=\"headingLevel\">\n <h1 *ngSwitchCase=\"1\">{{ heading }}</h1>\n <h2 *ngSwitchCase=\"2\">{{ heading }}</h2>\n <h3 *ngSwitchCase=\"3\">{{ heading }}</h3>\n <h4 *ngSwitchCase=\"4\">{{ heading }}</h4>\n <h5 *ngSwitchCase=\"5\">{{ heading }}</h5>\n <h6 *ngSwitchCase=\"6\">{{ heading }}</h6>\n </ng-container>\n </div>\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"subheading?.trim()\" class=\"subheading\">{{ subheading }}</div>\n</div>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'trailing'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></div>\n\n<ng-template #chevron>\n <riv-icon\n class=\"expand-chevron\"\n [class.expanded]=\"expanded\"\n [name]=\"'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n</ng-template>\n", styles: [":host{display:flex;gap:var(--size-medium);min-width:0}:host.expandable{position:relative}:host.align-start{align-items:flex-start}:host.align-center{align-items:center}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.filled{background-color:var(--surface-light-1)}:host.filled,:host.divider{border-bottom:var(--border-width) solid var(--border-light)}.main{flex-grow:1;min-width:0}.title-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--size-xsmall);min-width:0;font:var(--card-heading-font, var(--title-04));color:var(--card-heading-color, var(--type-light-high-contrast))}:host.filled .title-row{font:var(--card-heading-font, var(--title-02))}.leading{flex-shrink:0}.actions{position:relative;z-index:var(--card-raised-z-index);display:flex;flex-shrink:0;align-items:center;gap:var(--size-small)}.expand-toggle{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.expand-toggle:not(:disabled):hover{background-color:var(--black-20)}.expand-toggle:disabled{cursor:default}.expand-toggle:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}.expand-chevron{flex-shrink:0;transition:transform var(--medium-transition)}.expand-chevron.expanded{transform:rotate(-180deg)}.leading:not(:has(*)),.actions:not(:has(*)){display:none}.heading{min-width:0}.heading>*{display:inline;margin:0;font:inherit;color:inherit}.subheading{font:var(--body-small);color:var(--type-light-low-contrast)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.IconComponent, selector: "riv-icon", inputs: ["name", "fillColor", "size", "customSize", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardHeaderComponent, decorators: [{
161
- type: Component,
162
- args: [{ selector: 'riv-card-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"expandable\"\n type=\"button\"\n class=\"expand-toggle\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-controls]=\"regionId\"\n [attr.aria-labelledby]=\"titleId\"\n (click)=\"toggle()\"\n></button>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'leading'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"leading\"><ng-content select=\"[leading]\"></ng-content></div>\n<div class=\"main\">\n <div class=\"title-row\" [id]=\"titleId\">\n <div *ngIf=\"heading?.trim()\" class=\"heading\" [ngStyle]=\"clampStyle\">\n <ng-container [ngSwitch]=\"headingLevel\">\n <h1 *ngSwitchCase=\"1\">{{ heading }}</h1>\n <h2 *ngSwitchCase=\"2\">{{ heading }}</h2>\n <h3 *ngSwitchCase=\"3\">{{ heading }}</h3>\n <h4 *ngSwitchCase=\"4\">{{ heading }}</h4>\n <h5 *ngSwitchCase=\"5\">{{ heading }}</h5>\n <h6 *ngSwitchCase=\"6\">{{ heading }}</h6>\n </ng-container>\n </div>\n <ng-content></ng-content>\n </div>\n <div *ngIf=\"subheading?.trim()\" class=\"subheading\">{{ subheading }}</div>\n</div>\n<ng-container\n *ngIf=\"expandable && togglePosition === 'trailing'\"\n [ngTemplateOutlet]=\"chevron\"\n></ng-container>\n<div class=\"actions\"><ng-content select=\"[actions]\"></ng-content></div>\n\n<ng-template #chevron>\n <riv-icon\n class=\"expand-chevron\"\n [class.expanded]=\"expanded\"\n [name]=\"'ChevronDown'\"\n [size]=\"20\"\n ></riv-icon>\n</ng-template>\n", styles: [":host{display:flex;gap:var(--size-medium);min-width:0}:host.expandable{position:relative}:host.align-start{align-items:flex-start}:host.align-center{align-items:center}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.filled{background-color:var(--surface-light-1)}:host.filled,:host.divider{border-bottom:var(--border-width) solid var(--border-light)}.main{flex-grow:1;min-width:0}.title-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--size-xsmall);min-width:0;font:var(--card-heading-font, var(--title-04));color:var(--card-heading-color, var(--type-light-high-contrast))}:host.filled .title-row{font:var(--card-heading-font, var(--title-02))}.leading{flex-shrink:0}.actions{position:relative;z-index:var(--card-raised-z-index);display:flex;flex-shrink:0;align-items:center;gap:var(--size-small)}.expand-toggle{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.expand-toggle:not(:disabled):hover{background-color:var(--black-20)}.expand-toggle:disabled{cursor:default}.expand-toggle:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}.expand-chevron{flex-shrink:0;transition:transform var(--medium-transition)}.expand-chevron.expanded{transform:rotate(-180deg)}.leading:not(:has(*)),.actions:not(:has(*)){display:none}.heading{min-width:0}.heading>*{display:inline;margin:0;font:inherit;color:inherit}.subheading{font:var(--body-small);color:var(--type-light-low-contrast)}\n"] }]
163
- }], ctorParameters: function () { return [{ type: i1.CardComponent, decorators: [{
164
- type: Optional
165
- }] }]; }, propDecorators: { heading: [{
166
- type: Input
167
- }], subheading: [{
168
- type: Input
169
- }], headingLevel: [{
170
- type: Input
171
- }], variant: [{
172
- type: Input
173
- }], padding: [{
174
- type: Input
175
- }], divider: [{
176
- type: Input
177
- }], align: [{
178
- type: Input
179
- }], clamp: [{
180
- type: Input
181
- }], expandable: [{
182
- type: Input
183
- }], expanded: [{
184
- type: Input
185
- }], togglePosition: [{
186
- type: Input
187
- }], disabled: [{
188
- type: Input
189
- }], expandedChange: [{
190
- type: Output
191
- }], classes: [{
192
- type: HostBinding,
193
- args: ['class']
194
- }] } });
195
- (function (CardHeaderComponent) {
196
- CardHeaderComponent.Variants = ['plain', 'filled'];
197
- CardHeaderComponent.HeadingLevels = [1, 2, 3, 4, 5, 6];
198
- CardHeaderComponent.Aligns = ['start', 'center'];
199
- CardHeaderComponent.TogglePositions = ['leading', 'trailing'];
200
- })(CardHeaderComponent || (CardHeaderComponent = {}));
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbGF5b3V0L2NhcmQvY2FyZC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcml2L3NyYy9saWIvbGF5b3V0L2NhcmQvY2FyZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7OztBQUdsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrREc7QUFPSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQXlDLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBRW5FOzs7V0FHRztRQUNNLFlBQU8sR0FBVyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV2RDs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFVekQsNkVBQTZFO1FBRTdFLGlCQUFZLEdBQXFDLENBQUMsQ0FBQztRQUVuRCxpRkFBaUY7UUFFakYsWUFBTyxHQUFnQyxPQUFPLENBQUM7UUFHL0MsWUFBTyxHQUEwQixRQUFRLENBQUM7UUFFMUMsMkVBQTJFO1FBRTNFLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFFekIsNEVBQTRFO1FBRTVFLFVBQUssR0FBOEIsT0FBTyxDQUFDO1FBUzNDLGdFQUFnRTtRQUVoRSxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLHdFQUF3RTtRQUV4RSxhQUFRLEdBQVksS0FB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S0FBSztnQkFLTixLQUFLO3NCQURKLEtBQUs7Z0JBUU4sS0FBSztzQkFESixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixRQUFRO3NCQURQLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQVNOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixjQUFjO3NCQURiLE1BQU07Z0JBeUNILE9BQU87c0JBRFYsV0FBVzt1QkFBQyxPQUFPOztBQThCdEIsV0FBaUIsbUJBQW1CO0lBQ3JCLDRCQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFVLENBQUM7SUFHeEMsaUNBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFVLENBQUM7SUFHNUMsMEJBQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQVUsQ0FBQztJQUd0QyxtQ0FBZSxHQUFHLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRWxFLENBQUMsRUFaZ0IsbUJBQW1CLEtBQW5CLG1CQUFtQixRQVluQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVG9wIHJvdyBvZiBhIGByaXYtY2FyZGA6IGhlYWRpbmcgdGV4dCBwbHVzIG9wdGlvbmFsIGFkb3JubWVudHMuXG4gKlxuICogVGhyZWUgcHJvamVjdGlvbiBzbG90cywgYWxsIG9wdGlvbmFsOlxuICogLSBgW2xlYWRpbmddYCDigJQgaWNvbiwgYXZhdGFyLCBvciBzdGF0dXMgZG90IHNob3duIGJlZm9yZSB0aGUgaGVhZGluZ1xuICogLSBkZWZhdWx0IOKAlCBsYWlkIG91dCBvbiB0aGUgaGVhZGluZydzIGJhc2VsaW5lLCBzbyBzdGF0dXMgYmFkZ2VzIHNpdCBiZXNpZGVcbiAqICAgdGhlIHRpdGxlIGFuZCB3cmFwIGJlbG93IGl0IHdoZW4gc3BhY2UgcnVucyBvdXQuIEFsc28gdGFrZXMgYSB3aG9sZSBjdXN0b21cbiAqICAgdGl0bGUgKGFuIGlubGluZSByZW5hbWUgZmllbGQsIHNheSkgd2hlbiBgaGVhZGluZ2AgaXMgbGVmdCB1bnNldDtcbiAqICAgYHN1YmhlYWRpbmdgIHN0aWxsIHJlbmRlcnMgYmVsb3cgZWl0aGVyIHdheS5cbiAqIC0gYFthY3Rpb25zXWAg4oCUIHRyYWlsaW5nIGNvbnRyb2xzIHN1Y2ggYXMgYHJpdi1tZW51YFxuICpcbiAqIGBgYGh0bWxcbiAqIDxyaXYtY2FyZC1oZWFkZXIgW2hlYWRpbmddPVwiJ0NvbW1lcmNpYWwgMjAyNSdcIiBbc3ViaGVhZGluZ109XCInQWV0bmEnXCI+XG4gKiAgIDxyaXYtaWNvbiBsZWFkaW5nIFtuYW1lXT1cIidGaWxlVGV4dCdcIj48L3Jpdi1pY29uPlxuICogICA8cml2LWJhZGdlIFtzaXplXT1cIidzbWFsbCdcIiBbdmFyaWFudF09XCInY2F0ZWdvcmljYWwtOCdcIj5EcmFmdDwvcml2LWJhZGdlPlxuICogICA8cml2LW1lbnUgYWN0aW9ucz4uLi48L3Jpdi1tZW51PlxuICogPC9yaXYtY2FyZC1oZWFkZXI+XG4gKiBgYGBcbiAqXG4gKiBgaGVhZGluZ0xldmVsYCByZW5kZXJzIGEgcmVhbCBgaDFg4oCTYGg2YCBzbyB0aGUgY2FyZCBmaXRzIHRoZSBwYWdlJ3MgaGVhZGluZ1xuICogb3V0bGluZTsgcGljayB0aGUgbGV2ZWwgdGhhdCBmb2xsb3dzIHRoZSBzdXJyb3VuZGluZyBjb250ZW50IHJhdGhlciB0aGFuIHRoZVxuICogb25lIHRoYXQgbG9va3MgcmlnaHQsIHNpbmNlIHNpemUgY29tZXMgZnJvbSB0aGUgZGVzaWduIHRva2VucyBlaXRoZXIgd2F5LlxuICpcbiAqIFRoZSBoZWFkaW5nIGZvbnQgYW5kIGNvbG91ciBjYW4gYmUgb3ZlcnJpZGRlbiBwZXItaW5zdGFuY2Ugd2l0aCB0aGVcbiAqIGAtLWNhcmQtaGVhZGluZy1mb250YCBhbmQgYC0tY2FyZC1oZWFkaW5nLWNvbG9yYCBjdXN0b20gcHJvcGVydGllcy5cbiAqXG4gKiAjIyBFeHBhbmRpbmcgYW5kIGNvbGxhcHNpbmdcbiAqXG4gKiBgZXhwYW5kYWJsZWAgdHVybnMgdGhlIGhlYWRlciBpbnRvIHRoZSB0b2dnbGUgZm9yIHRoZSBjYXJkJ3MgYm9keTogaXQgcmVuZGVyc1xuICogYSBjaGV2cm9uIGFuZCBjb3ZlcnMgdGhlIHJvdyB3aXRoIGEgcmVhbCBgPGJ1dHRvbj5gIGNhcnJ5aW5nIGBhcmlhLWV4cGFuZGVkYFxuICogYW5kIGBhcmlhLWNvbnRyb2xzYCwgc28gdGhlIHBhdHRlcm4gaXMga2V5Ym9hcmQgb3BlcmFibGUgYW5kIGFubm91bmNlcyBpdHNcbiAqIHN0YXRlLiBDb250cm9scyBpbiBgW2FjdGlvbnNdYCBzaXQgYWJvdmUgdGhhdCBidXR0b24gYW5kIHN0YXkgaW5kZXBlbmRlbnRseVxuICogY2xpY2thYmxlLCBzbyBhIG1lbnUgYmVzaWRlIHRoZSB0b2dnbGUgbmVlZHMgbm8gYHN0b3BQcm9wYWdhdGlvbmAuXG4gKlxuICogVGhlIGhlYWRlciBob2xkcyBubyBzdGF0ZSBvZiBpdHMgb3duIOKAlCBiaW5kIGBleHBhbmRlZGAgYW5kIGFjdCBvblxuICogYGV4cGFuZGVkQ2hhbmdlYCwgb3IgdXNlIGBbKGV4cGFuZGVkKV1gOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxyaXYtY2FyZD5cbiAqICAgPHJpdi1jYXJkLWhlYWRlclxuICogICAgIFtoZWFkaW5nXT1cIidQYXRpZW50IGluZm8nXCJcbiAqICAgICBbZXhwYW5kYWJsZV09XCJ0cnVlXCJcbiAqICAgICBbKGV4cGFuZGVkKV09XCJvcGVuXCJcbiAqICAgPjwvcml2LWNhcmQtaGVhZGVyPlxuICogICA8cml2LWNhcmQtY29udGVudCAqbmdJZj1cIm9wZW5cIj4uLi48L3Jpdi1jYXJkLWNvbnRlbnQ+XG4gKiA8L3Jpdi1jYXJkPlxuICogYGBgXG4gKlxuICogVGhlIHRvZ2dsZSBpcyBuYW1lZCBieSB0aGUgaGVhZGVyJ3MgdGl0bGUsIHNvIGFuIGV4cGFuZGFibGUgaGVhZGVyIG5lZWRzIGFcbiAqIGBoZWFkaW5nYCBvciBhIHByb2plY3RlZCB0aXRsZS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncml2LWNhcmQtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC1oZWFkZXIuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBjYXJkOiBDYXJkQ29tcG9uZW50IHwgbnVsbCkge31cblxuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgdGl0bGUgZm9yIGEgY2xpY2thYmxlIGByaXYtY2FyZGAsIHdoaWNoIG5hbWVzIGl0cyBjbGlja1xuICAgKiB0YXJnZXQgZnJvbSB0aGUgdGl0bGUgcmF0aGVyIHRoYW4gZnJvbSB0aGUgY2FyZCdzIHdob2xlIHRleHQuXG4gICAqL1xuICByZWFkb25seSB0aXRsZUlkOiBzdHJpbmcgPSB1bmlxdWVJZCgncml2LWNhcmQtdGl0bGUtJyk7XG5cbiAgLyoqXG4gICAqIE5hbWVzIHRoZSBib2R5IHRoZSB0b2dnbGUgY29udHJvbHMuIEhhbmRlZCB0byB0aGUgZW5jbG9zaW5nIGNhcmQsIHdoaWNoXG4gICAqIHJlbGF5cyBpdCB0byB0aGUgcHJvamVjdGVkIGByaXYtY2FyZC1jb250ZW50YC5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbklkOiBzdHJpbmcgPSB1bmlxdWVJZCgncml2LWNhcmQtcmVnaW9uLScpO1xuXG4gIC8qKiBIZWFkaW5nIHRleHQuIE9taXQgd2hlbiBwcm9qZWN0aW5nIGN1c3RvbSBoZWFkaW5nIG1hcmt1cCBpbnN0ZWFkLiAqL1xuICBASW5wdXQoKVxuICBoZWFkaW5nPzogc3RyaW5nO1xuXG4gIC8qKiBTdXBwb3J0aW5nIHRleHQgcmVuZGVyZWQgYmVsb3cgdGhlIGhlYWRpbmcuICovXG4gIEBJbnB1dCgpXG4gIHN1YmhlYWRpbmc/OiBzdHJpbmc7XG5cbiAgLyoqIEhlYWRpbmcgZWxlbWVudCByZW5kZXJlZCBmb3IgYGhlYWRpbmdgLCBmb3IgZG9jdW1lbnQgb3V0bGluZSBwdXJwb3Nlcy4gKi9cbiAgQElucHV0KClcbiAgaGVhZGluZ0xldmVsOiBDYXJkSGVhZGVyQ29tcG9uZW50LkhlYWRpbmdMZXZlbCA9IDM7XG5cbiAgLyoqIGBmaWxsZWRgIGdpdmVzIHRoZSBoZWFkZXIgaXRzIG93biBiYWNrZ3JvdW5kLCBzZXBhcmF0aW5nIGl0IGZyb20gdGhlIGJvZHkuICovXG4gIEBJbnB1dCgpXG4gIHZhcmlhbnQ6IENhcmRIZWFkZXJDb21wb25lbnQuVmFyaWFudCA9ICdwbGFpbic7XG5cbiAgQElucHV0KClcbiAgcGFkZGluZzogQ2FyZENvbXBvbmVudC5QYWRkaW5nID0gJ21lZGl1bSc7XG5cbiAgLyoqIERyYXdzIGEgc2VwYXJhdG9yIGJlbG93IHRoZSBoZWFkZXIuIEltcGxpZWQgYnkgdGhlIGBmaWxsZWRgIHZhcmlhbnQuICovXG4gIEBJbnB1dCgpXG4gIGRpdmlkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQ3Jvc3MtYXhpcyBhbGlnbm1lbnQgb2YgdGhlIGxlYWRpbmcgc2xvdCwgaGVhZGluZyBibG9jaywgYW5kIGFjdGlvbnMuICovXG4gIEBJbnB1dCgpXG4gIGFsaWduOiBDYXJkSGVhZGVyQ29tcG9uZW50LkFsaWduID0gJ3N0YXJ0JztcblxuICAvKipcbiAgICogVHJ1bmNhdGVzIHRoZSBoZWFkaW5nIHRvIHRoaXMgbWFueSBsaW5lcyB3aXRoIGFuIGVsbGlwc2lzLiBMZWF2ZSB1bnNldCB0b1xuICAgKiBsZXQgdGhlIGhlYWRpbmcgd3JhcCBmcmVlbHkuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGFtcD86IG51bWJlcjtcblxuICAvKiogVHVybnMgdGhlIGhlYWRlciByb3cgaW50byB0aGUgdG9nZ2xlIGZvciB0aGUgY2FyZCdzIGJvZHkuICovXG4gIEBJbnB1dCgpXG4gIGV4cGFuZGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0aGUgYm9keSBpcyBjdXJyZW50bHkgb3Blbi4gVGhlIGNvbnN1bWVyIG93bnMgdGhpcyBzdGF0ZS4gKi9cbiAgQElucHV0KClcbiAgZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogU2lkZSBvZiB0aGUgaGVhZGVyIHRoZSBjaGV2cm9uIHNpdHMgb24uICovXG4gIEBJbnB1dCgpXG4gIHRvZ2dsZVBvc2l0aW9uOiBDYXJkSGVhZGVyQ29tcG9uZW50LlRvZ2dsZVBvc2l0aW9uID0gJ3RyYWlsaW5nJztcblxuICAvKipcbiAgICogQmxvY2tzIHRoZSB0b2dnbGUsIGZvciBhIHNlY3Rpb24gdGhhdCBpcyBub3QgeWV0IGF2YWlsYWJsZSB0byBvcGVuLiBTZXQgaXRcbiAgICogYWxvbmdzaWRlIGEgZGlzYWJsZWQgYHJpdi1jYXJkYCwgd2hvc2Ugb3duIGBkaXNhYmxlZGAgbXV0ZXMgdGhlIHN1cmZhY2UgYnV0XG4gICAqIGRvZXMgbm90IHJlYWNoIHRoZSBoZWFkZXIncyBjb250cm9scy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEVtaXR0ZWQgd2l0aCB0aGUgc3RhdGUgdGhlIGNvbnN1bWVyIGlzIGJlaW5nIGFza2VkIHRvIG1vdmUgdG8uICovXG4gIEBPdXRwdXQoKVxuICBleHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAvKipcbiAgICogT2ZmZXJzIHRoZSBoZWFkaW5nIHRvIGFuIGVuY2xvc2luZyBjYXJkIGFzIHRoZSBuYW1lIGZvciBpdHMgY2xpY2sgdGFyZ2V0LFxuICAgKiBhbmQgdGhlIHRvZ2dsZSdzIHJlZ2lvbiBzbyBhIHByb2plY3RlZCBgcml2LWNhcmQtY29udGVudGAgY2FuIHdlYXIgaXQuIE9ubHlcbiAgICogYSB0ZXh0IGhlYWRpbmcgaXMgb2ZmZXJlZDogcHJvamVjdGVkIHRpdGxlcyBjYW4gYmUgYW55dGhpbmcsIHNvIHRob3NlIGNhcmRzXG4gICAqIGZhbGwgYmFjayB0byBuYW1pbmcgYWdhaW5zdCB0aGVpciB3aG9sZSBjb250ZW50LlxuICAgKi9cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydoZWFkaW5nJ10pIHtcbiAgICAgIGlmICh0aGlzLmhlYWRpbmc/LnRyaW0oKSkge1xuICAgICAgICB0aGlzLmNhcmQ/LnNldFRpdGxlSWQodGhpcy50aXRsZUlkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FyZD8uY2xlYXJUaXRsZUlkKHRoaXMudGl0bGVJZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzWydleHBhbmRhYmxlJ10pIHtcbiAgICAgIGlmICh0aGlzLmV4cGFuZGFibGUpIHtcbiAgICAgICAgdGhpcy5jYXJkPy5zZXRSZWdpb25JZCh0aGlzLnJlZ2lvbklkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FyZD8uY2xlYXJSZWdpb25JZCh0aGlzLnJlZ2lvbklkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogV2l0aGRyYXdzIHRoZSBvZmZlciwgc28gdGhlIGNhcmQgc3RvcHMgbmFtaW5nIGl0c2VsZiBhZ2FpbnN0IHRoaXMgaGVhZGVyLiAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmNhcmQ/LmNsZWFyVGl0bGVJZCh0aGlzLnRpdGxlSWQpO1xuICAgIHRoaXMuY2FyZD8uY2xlYXJSZWdpb25JZCh0aGlzLnJlZ2lvbklkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc2tzIGZvciB0aGUgb3Bwb3NpdGUgc3RhdGUgcmF0aGVyIHRoYW4gdGFraW5nIGl0LCB3aGljaCBrZWVwcyB0aGUgaGVhZGVyXG4gICAqIGZyZWUgb2Ygc3RhdGUgdGhhdCBjb3VsZCBkcmlmdCBmcm9tIHRoZSBjb25zdW1lcidzLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRvZ2dsZSgpIHtcbiAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQoIXRoaXMuZXhwYW5kZWQpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBjbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHtcbiAgICAgIFt0aGlzLnZhcmlhbnRdOiB0cnVlLFxuICAgICAgW2BwYWRkaW5nLSR7dGhpcy5wYWRkaW5nfWBdOiB0cnVlLFxuICAgICAgW2BhbGlnbi0ke3RoaXMuYWxpZ259YF06IHRydWUsXG4gICAgICBkaXZpZGVyOiB0aGlzLmRpdmlkZXIsXG4gICAgICBleHBhbmRhYmxlOiB0aGlzLmV4cGFuZGFibGUsXG4gICAgfSlcbiAgICAgIC5maWx0ZXIoKFtfLCB2XSkgPT4gdilcbiAgICAgIC5tYXAoKFtrXSkgPT4gaylcbiAgICAgIC5qb2luKCcgJyk7XG4gIH1cblxuICAvKipcbiAgICogTGluZSBjbGFtcGluZyBpcyBhcHBsaWVkIGlubGluZSBzbyB0aGUgbGluZSBjb3VudCBzdGF5cyBhIHBsYWluIGlucHV0XG4gICAqIHJhdGhlciB0aGFuIGEgZml4ZWQgc2V0IG9mIENTUyBjbGFzc2VzLlxuICAgKi9cbiAgZ2V0IGNsYW1wU3R5bGUoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuY2xhbXAgPT0gbnVsbFxuICAgICAgPyB7fVxuICAgICAgOiB7XG4gICAgICAgICAgZGlzcGxheTogJy13ZWJraXQtYm94JyxcbiAgICAgICAgICAnLXdlYmtpdC1ib3gtb3JpZW50JzogJ3ZlcnRpY2FsJyxcbiAgICAgICAgICAnLXdlYmtpdC1saW5lLWNsYW1wJzogYCR7dGhpcy5jbGFtcH1gLFxuICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgfTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhcmRIZWFkZXJDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgVmFyaWFudHMgPSBbJ3BsYWluJywgJ2ZpbGxlZCddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBWYXJpYW50ID0gKHR5cGVvZiBWYXJpYW50cylbbnVtYmVyXTtcblxuICBleHBvcnQgY29uc3QgSGVhZGluZ0xldmVscyA9IFsxLCAyLCAzLCA0LCA1LCA2XSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgSGVhZGluZ0xldmVsID0gKHR5cGVvZiBIZWFkaW5nTGV2ZWxzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBBbGlnbnMgPSBbJ3N0YXJ0JywgJ2NlbnRlciddIGFzIGNvbnN0O1xuICBleHBvcnQgdHlwZSBBbGlnbiA9ICh0eXBlb2YgQWxpZ25zKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBUb2dnbGVQb3NpdGlvbnMgPSBbJ2xlYWRpbmcnLCAndHJhaWxpbmcnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgVG9nZ2xlUG9zaXRpb24gPSAodHlwZW9mIFRvZ2dsZVBvc2l0aW9ucylbbnVtYmVyXTtcbn1cbiIsIjxidXR0b25cbiAgKm5nSWY9XCJleHBhbmRhYmxlXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIGNsYXNzPVwiZXhwYW5kLXRvZ2dsZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJleHBhbmRlZFwiXG4gIFthdHRyLmFyaWEtY29udHJvbHNdPVwicmVnaW9uSWRcIlxuICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGl0bGVJZFwiXG4gIChjbGljayk9XCJ0b2dnbGUoKVwiXG4+PC9idXR0b24+XG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwiZXhwYW5kYWJsZSAmJiB0b2dnbGVQb3NpdGlvbiA9PT0gJ2xlYWRpbmcnXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hldnJvblwiXG4+PC9uZy1jb250YWluZXI+XG48ZGl2IGNsYXNzPVwibGVhZGluZ1wiPjxuZy1jb250ZW50IHNlbGVjdD1cIltsZWFkaW5nXVwiPjwvbmctY29udGVudD48L2Rpdj5cbjxkaXYgY2xhc3M9XCJtYWluXCI+XG4gIDxkaXYgY2xhc3M9XCJ0aXRsZS1yb3dcIiBbaWRdPVwidGl0bGVJZFwiPlxuICAgIDxkaXYgKm5nSWY9XCJoZWFkaW5nPy50cmltKClcIiBjbGFzcz1cImhlYWRpbmdcIiBbbmdTdHlsZV09XCJjbGFtcFN0eWxlXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJoZWFkaW5nTGV2ZWxcIj5cbiAgICAgICAgPGgxICpuZ1N3aXRjaENhc2U9XCIxXCI+e3sgaGVhZGluZyB9fTwvaDE+XG4gICAgICAgIDxoMiAqbmdTd2l0Y2hDYXNlPVwiMlwiPnt7IGhlYWRpbmcgfX08L2gyPlxuICAgICAgICA8aDMgKm5nU3dpdGNoQ2FzZT1cIjNcIj57eyBoZWFkaW5nIH19PC9oMz5cbiAgICAgICAgPGg0ICpuZ1N3aXRjaENhc2U9XCI0XCI+e3sgaGVhZGluZyB9fTwvaDQ+XG4gICAgICAgIDxoNSAqbmdTd2l0Y2hDYXNlPVwiNVwiPnt7IGhlYWRpbmcgfX08L2g1PlxuICAgICAgICA8aDYgKm5nU3dpdGNoQ2FzZT1cIjZcIj57eyBoZWFkaW5nIH19PC9oNj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgKm5nSWY9XCJzdWJoZWFkaW5nPy50cmltKClcIiBjbGFzcz1cInN1YmhlYWRpbmdcIj57eyBzdWJoZWFkaW5nIH19PC9kaXY+XG48L2Rpdj5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJleHBhbmRhYmxlICYmIHRvZ2dsZVBvc2l0aW9uID09PSAndHJhaWxpbmcnXCJcbiAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hldnJvblwiXG4+PC9uZy1jb250YWluZXI+XG48ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPjxuZy1jb250ZW50IHNlbGVjdD1cIlthY3Rpb25zXVwiPjwvbmctY29udGVudD48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjaGV2cm9uPlxuICA8cml2LWljb25cbiAgICBjbGFzcz1cImV4cGFuZC1jaGV2cm9uXCJcbiAgICBbY2xhc3MuZXhwYW5kZWRdPVwiZXhwYW5kZWRcIlxuICAgIFtuYW1lXT1cIidDaGV2cm9uRG93bidcIlxuICAgIFtzaXplXT1cIjIwXCJcbiAgPjwvcml2LWljb24+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,291 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, } from '@angular/core';
2
- import { uniqueId } from 'lodash';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- /**
6
- * Surface container that groups related content into a single scannable unit.
7
- *
8
- * A card is composed, not configured: project the parts you need, in the order
9
- * you need them. Every part is optional, so a bare `riv-card` is a valid
10
- * surface on its own.
11
- *
12
- * - `riv-card-media` — leading image or video
13
- * - `riv-card-header` — heading, subheading, leading adornment, actions
14
- * - `riv-card-content` — body
15
- * - `riv-card-actions` — trailing control row
16
- *
17
- * ```html
18
- * <riv-card>
19
- * <riv-card-header [heading]="workbook.name" [subheading]="payerName">
20
- * <riv-menu actions>...</riv-menu>
21
- * </riv-card-header>
22
- * <riv-card-content>
23
- * Last edit: {{ workbook.modified | rivDate }}
24
- * </riv-card-content>
25
- * </riv-card>
26
- * ```
27
- *
28
- * ## Making the card activate
29
- *
30
- * Set `clickable` and handle `cardClick` to make the whole surface act on a
31
- * click:
32
- *
33
- * ```html
34
- * <riv-card [clickable]="true" (cardClick)="goToWorkbook()">
35
- * ```
36
- *
37
- * The card renders its own full-surface button for this, so activation works
38
- * with a pointer, with Enter, and with Space, and the focus ring traces the
39
- * whole card. Controls in `riv-card-header`'s `[actions]` slot and in
40
- * `riv-card-actions` sit above it and stay independently clickable — a menu
41
- * inside a clickable card needs no `stopPropagation`. Other interactive content
42
- * projected into the card must raise itself with `position: relative` and
43
- * `z-index: var(--card-raised-z-index)`.
44
- *
45
- * When the card's action is really a navigation, prefer `[riv-card-link]` on an
46
- * `<a>` instead: that keeps the URL, middle-click, and "open in new tab".
47
- *
48
- * ## Selection
49
- *
50
- * Set `selected` to mark the card the user is currently looking at. It gives
51
- * the surface a distinct border and shadow, and announces through
52
- * `aria-current` so the state is not conveyed by colour alone.
53
- *
54
- * ```html
55
- * <riv-card [selected]="workbook.id === activeId">
56
- * ```
57
- *
58
- * Selection is separate from `tone`, so it composes with any tint — a selected
59
- * `danger` card keeps its danger background.
60
- *
61
- * ## Making the card expand and collapse
62
- *
63
- * Set `expandable` on `riv-card-header` and render the body only while it is
64
- * open. The header owns the toggle affordance and its accessibility; the
65
- * consumer owns the state:
66
- *
67
- * ```html
68
- * <riv-card>
69
- * <riv-card-header
70
- * [heading]="'Patient info'"
71
- * [expandable]="true"
72
- * [(expanded)]="open"
73
- * ></riv-card-header>
74
- * <riv-card-content *ngIf="open">...</riv-card-content>
75
- * </riv-card>
76
- * ```
77
- *
78
- * The card relays the region id from the header to the content, so the toggle's
79
- * `aria-controls` names the body with no ids wired by hand.
80
- *
81
- * Do not combine `expandable` with `clickable`: both claim the same click, and
82
- * a card that opens as well as expands leaves the user no way to tell which one
83
- * they are about to get.
84
- *
85
- * ## Notes
86
- *
87
- * When projecting raw content with no sub-components, set `padding` so the
88
- * content is not flush against the border.
89
- *
90
- * The card clips its own content so media and filled header/action rows follow
91
- * its corners. Popups (`riv-menu`, `rivTooltip`) render through the overlay
92
- * outlet, so they are not affected by that clipping.
93
- *
94
- * Set the corner radius with `radius`. The `--card-border-radius` custom
95
- * property still overrides it, for radii off the token scale.
96
- */
97
- export class CardComponent {
98
- constructor(el, renderer, cdr) {
99
- this.el = el;
100
- this.renderer = renderer;
101
- this.cdr = cdr;
102
- /** Border and shadow treatment of the surface. */
103
- this.variant = 'outlined';
104
- /** Neutral background elevation, matching the `--surface-light-*` tokens. */
105
- this.surface = '0';
106
- /** Semantic background tint. Overrides `surface` when not `neutral`. */
107
- this.tone = 'neutral';
108
- /** Stacking direction of the projected parts. */
109
- this.orientation = 'vertical';
110
- /**
111
- * Padding applied to the card itself. Leave as `none` when composing with
112
- * `riv-card-header` / `riv-card-content` / `riv-card-actions`, which own
113
- * their own padding.
114
- */
115
- this.padding = 'none';
116
- /** Corner radius, matching the `--border-radius-*` tokens. */
117
- this.radius = 'medium';
118
- /**
119
- * Makes the whole surface activate, emitting `cardClick`. Adds the hover
120
- * affordance and keyboard support.
121
- */
122
- this.clickable = false;
123
- /**
124
- * Marks the card as the current selection, giving it a distinct border and
125
- * shadow. Composes with any `tone`, so a selected danger card keeps its
126
- * tint. Announced to assistive technology through `aria-current`.
127
- */
128
- this.selected = false;
129
- /**
130
- * Mutes the surface, suppresses hover feedback, and disables the click
131
- * target. Presentational for everything else — disable the card's own
132
- * controls too.
133
- */
134
- this.disabled = false;
135
- /** Emitted when a clickable card is activated by pointer or keyboard. */
136
- this.cardClick = new EventEmitter();
137
- /**
138
- * Names the click target from the card's content. Generated only when the
139
- * consumer has not set their own id.
140
- */
141
- this.cardId = '';
142
- }
143
- /**
144
- * Id an expandable header's toggle points `aria-controls` at, worn by a
145
- * projected `riv-card-content`.
146
- */
147
- get regionId() {
148
- return this.expandRegionId;
149
- }
150
- ngOnInit() {
151
- this.cardId = this.el.nativeElement.id || uniqueId('riv-card-');
152
- if (!this.el.nativeElement.id) {
153
- this.renderer.setAttribute(this.el.nativeElement, 'id', this.cardId);
154
- }
155
- }
156
- /**
157
- * Registers the header's title as the click target's accessible name, which
158
- * keeps the announcement to the card's subject instead of every word on the
159
- * surface. Called by `riv-card-header`; not part of the public API.
160
- */
161
- setTitleId(id) {
162
- this.titleId = id;
163
- this.cdr.markForCheck();
164
- }
165
- /**
166
- * Gives up a title registered by `setTitleId`, so a header that is removed
167
- * does not leave the click target naming itself against a detached element.
168
- * Ignores ids that are no longer the one in use.
169
- */
170
- clearTitleId(id) {
171
- if (this.titleId === id) {
172
- this.setTitleId(undefined);
173
- }
174
- }
175
- /**
176
- * Relays the region an expandable header controls to the projected
177
- * `riv-card-content`, so neither side needs the consumer to wire an id.
178
- * Called by `riv-card-header`; not part of the public API.
179
- */
180
- setRegionId(id) {
181
- this.expandRegionId = id;
182
- this.cdr.markForCheck();
183
- }
184
- /**
185
- * Gives up a region registered by `setRegionId`. Ignores ids that are no
186
- * longer the one in use.
187
- */
188
- clearRegionId(id) {
189
- if (this.expandRegionId === id) {
190
- this.setRegionId(undefined);
191
- }
192
- }
193
- /**
194
- * Element whose text names the click target, unless `clickLabel` is set. The
195
- * host id is read from the DOM rather than cached, so a bound `[id]` that
196
- * changes is picked up on the card's next change detection.
197
- */
198
- get labelledBy() {
199
- if (this.clickLabel)
200
- return null;
201
- return this.titleId ?? (this.el.nativeElement.id || this.cardId);
202
- }
203
- /** Announces the current selection to assistive technology. */
204
- get ariaCurrent() {
205
- return this.selected ? 'true' : null;
206
- }
207
- get classes() {
208
- return Object.entries({
209
- [this.variant]: true,
210
- [`surface-${this.surface}`]: true,
211
- [`tone-${this.tone}`]: true,
212
- [this.orientation]: true,
213
- [`padding-${this.padding}`]: true,
214
- [`radius-${this.radius}`]: true,
215
- [`hover-depth-${this.hoverDepth ?? CardComponent.defaultHoverDepth(this)}`]: true,
216
- clickable: this.clickable,
217
- selected: this.selected,
218
- disabled: this.disabled,
219
- })
220
- .filter(([_, v]) => v)
221
- .map(([k]) => k)
222
- .join(' ');
223
- }
224
- }
225
- CardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
226
- CardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CardComponent, selector: "riv-card", inputs: { variant: "variant", surface: "surface", tone: "tone", orientation: "orientation", padding: "padding", radius: "radius", hoverDepth: "hoverDepth", clickable: "clickable", clickLabel: "clickLabel", selected: "selected", disabled: "disabled" }, outputs: { cardClick: "cardClick" }, host: { properties: { "attr.aria-current": "this.ariaCurrent", "class": "this.classes" } }, ngImport: i0, template: "<button\n *ngIf=\"clickable\"\n type=\"button\"\n class=\"click-target\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"clickLabel\"\n [attr.aria-labelledby]=\"labelledBy\"\n (click)=\"cardClick.emit($event)\"\n></button>\n<ng-content></ng-content>\n", styles: [":host{position:relative;display:flex;min-width:0;overflow:hidden;color:var(--type-light-high-contrast);font:var(--body-medium)}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host.outlined{border:var(--border-width) solid var(--border-light)}:host.dashed{border:var(--border-width) dashed var(--border-light)}:host.elevated{box-shadow:var(--depth-1)}:host.surface-0{background-color:var(--surface-light-0)}:host.surface-1{background-color:var(--surface-light-1)}:host.surface-2{background-color:var(--surface-light-2)}:host.tone-danger{background-color:var(--surface-light-danger)}:host.tone-caution{background-color:var(--surface-light-caution)}:host.tone-warning{background-color:var(--surface-light-warning)}:host.tone-safety{background-color:var(--surface-light-safety)}:host.tone-selected{background-color:var(--surface-light-selected)}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.radius-small{border-radius:var(--card-border-radius, var(--border-radius-small))}:host.radius-medium{border-radius:var(--card-border-radius, var(--border-radius-medium))}:host.radius-large{border-radius:var(--card-border-radius, var(--border-radius-large))}:host.radius-xlarge{border-radius:var(--card-border-radius, var(--border-radius-xlarge))}:host:not(.hover-depth-none){transition:box-shadow var(--short-transition)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.clickable{transition:box-shadow var(--short-transition)}:host.hover-depth-1:not(.disabled):hover{box-shadow:var(--depth-1)}:host.hover-depth-2:not(.disabled):hover{box-shadow:var(--depth-2)}:host.hover-depth-3:not(.disabled):hover{box-shadow:var(--depth-3)}:host.hover-depth-4:not(.disabled):hover{box-shadow:var(--depth-4)}.click-target{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.click-target:not(:disabled):hover{background-color:var(--black-20)}.click-target:disabled{cursor:default}.click-target:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}:host.selected{border:var(--border-width) solid var(--baloo-50);box-shadow:var(--depth-2)}:host.disabled{background-color:var(--surface-light-1)}:host.outlined.disabled,:host.dashed.disabled{border-color:var(--border-light)}@media print{:host{break-inside:avoid}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CardComponent, decorators: [{
228
- type: Component,
229
- args: [{ selector: 'riv-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngIf=\"clickable\"\n type=\"button\"\n class=\"click-target\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled ? 'true' : null\"\n [attr.aria-label]=\"clickLabel\"\n [attr.aria-labelledby]=\"labelledBy\"\n (click)=\"cardClick.emit($event)\"\n></button>\n<ng-content></ng-content>\n", styles: [":host{position:relative;display:flex;min-width:0;overflow:hidden;color:var(--type-light-high-contrast);font:var(--body-medium)}:host.vertical{flex-direction:column}:host.horizontal{flex-direction:row}:host.outlined{border:var(--border-width) solid var(--border-light)}:host.dashed{border:var(--border-width) dashed var(--border-light)}:host.elevated{box-shadow:var(--depth-1)}:host.surface-0{background-color:var(--surface-light-0)}:host.surface-1{background-color:var(--surface-light-1)}:host.surface-2{background-color:var(--surface-light-2)}:host.tone-danger{background-color:var(--surface-light-danger)}:host.tone-caution{background-color:var(--surface-light-caution)}:host.tone-warning{background-color:var(--surface-light-warning)}:host.tone-safety{background-color:var(--surface-light-safety)}:host.tone-selected{background-color:var(--surface-light-selected)}:host.padding-small{padding:var(--size-small)}:host.padding-medium{padding:var(--size-medium)}:host.padding-large{padding:var(--size-large)}:host.padding-xxlarge{padding:var(--size-xxlarge)}:host.radius-small{border-radius:var(--card-border-radius, var(--border-radius-small))}:host.radius-medium{border-radius:var(--card-border-radius, var(--border-radius-medium))}:host.radius-large{border-radius:var(--card-border-radius, var(--border-radius-large))}:host.radius-xlarge{border-radius:var(--card-border-radius, var(--border-radius-xlarge))}:host:not(.hover-depth-none){transition:box-shadow var(--short-transition)}:host.padding-xlarge{padding:var(--size-xlarge)}:host.clickable{transition:box-shadow var(--short-transition)}:host.hover-depth-1:not(.disabled):hover{box-shadow:var(--depth-1)}:host.hover-depth-2:not(.disabled):hover{box-shadow:var(--depth-2)}:host.hover-depth-3:not(.disabled):hover{box-shadow:var(--depth-3)}:host.hover-depth-4:not(.disabled):hover{box-shadow:var(--depth-4)}.click-target{position:absolute;inset:0;z-index:var(--card-click-target-z-index);padding:0;border:none;background:none;cursor:pointer;transition:background-color var(--short-transition)}.click-target:not(:disabled):hover{background-color:var(--black-20)}.click-target:disabled{cursor:default}.click-target:focus-visible{outline:var(--border-width-large) solid var(--type-light-link);outline-offset:calc(-1 * var(--border-width-large))}:host.selected{border:var(--border-width) solid var(--baloo-50);box-shadow:var(--depth-2)}:host.disabled{background-color:var(--surface-light-1)}:host.outlined.disabled,:host.dashed.disabled{border-color:var(--border-light)}@media print{:host{break-inside:avoid}}\n"] }]
230
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { variant: [{
231
- type: Input
232
- }], surface: [{
233
- type: Input
234
- }], tone: [{
235
- type: Input
236
- }], orientation: [{
237
- type: Input
238
- }], padding: [{
239
- type: Input
240
- }], radius: [{
241
- type: Input
242
- }], hoverDepth: [{
243
- type: Input
244
- }], clickable: [{
245
- type: Input
246
- }], clickLabel: [{
247
- type: Input
248
- }], selected: [{
249
- type: Input
250
- }], disabled: [{
251
- type: Input
252
- }], cardClick: [{
253
- type: Output
254
- }], ariaCurrent: [{
255
- type: HostBinding,
256
- args: ['attr.aria-current']
257
- }], classes: [{
258
- type: HostBinding,
259
- args: ['class']
260
- }] } });
261
- (function (CardComponent) {
262
- CardComponent.Variants = ['outlined', 'elevated', 'flat', 'dashed'];
263
- CardComponent.Surfaces = ['0', '1', '2'];
264
- CardComponent.Tones = [
265
- 'neutral',
266
- 'danger',
267
- 'caution',
268
- 'warning',
269
- 'safety',
270
- 'selected',
271
- ];
272
- CardComponent.Orientations = ['vertical', 'horizontal'];
273
- /** Shared padding scale for the card and its sub-components. */
274
- CardComponent.Paddings = [
275
- 'none',
276
- 'small',
277
- 'medium',
278
- 'large',
279
- 'xlarge',
280
- 'xxlarge',
281
- ];
282
- CardComponent.Radii = ['small', 'medium', 'large', 'xlarge'];
283
- CardComponent.Depths = ['none', '1', '2', '3', '4'];
284
- function defaultHoverDepth({ clickable, variant, }) {
285
- if (!clickable)
286
- return 'none';
287
- return variant === 'elevated' ? '2' : '1';
288
- }
289
- CardComponent.defaultHoverDepth = defaultHoverDepth;
290
- })(CardComponent || (CardComponent = {}));
291
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yaXYvc3JjL2xpYi9sYXlvdXQvY2FyZC9jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Jpdi9zcmMvbGliL2xheW91dC9jYXJkL2NhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7OztBQUVsQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJGRztBQU9ILE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQ21CLEVBQTJCLEVBQzNCLFFBQW1CLEVBQ25CLEdBQXNCO1FBRnRCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBQzNCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFHekMsa0RBQWtEO1FBRWxELFlBQU8sR0FBMEIsVUFBVSxDQUFDO1FBRTVDLDZFQUE2RTtRQUU3RSxZQUFPLEdBQTBCLEdBQUcsQ0FBQztRQUVyQyx3RUFBd0U7UUFFeEUsU0FBSSxHQUF1QixTQUFTLENBQUM7UUFFckMsaURBQWlEO1FBRWpELGdCQUFXLEdBQThCLFVBQVUsQ0FBQztRQUVwRDs7OztXQUlHO1FBRUgsWUFBTyxHQUEwQixNQUFNLENBQUM7UUFFeEMsOERBQThEO1FBRTlELFdBQU0sR0FBeUIsUUFBUSxDQUFDO1FBV3hDOzs7V0FHRztRQUVILGNBQVMsR0FBWSxLQUFLLENBQUM7UUFVM0I7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QUFZLENBQVUsQ0FBQztJQUdoRSxnRUFBZ0U7SUFDbkQsc0JBQVEsR0FBRztRQUN0QixNQUFNO1FBQ04sT0FBTztRQUNQLFFBQVE7UUFDUixPQUFPO1FBQ1AsUUFBUTtRQUNSLFNBQVM7S0FDRCxDQUFDO0lBR0UsbUJBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBVSxDQUFDO0lBR3hELG9CQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFVLENBQUM7SUFHNUQsU0FBZ0IsaUJBQWlCLENBQUMsRUFDaEMsU0FBUyxFQUNULE9BQU8sR0FDc0M7UUFDN0MsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUM5QixPQUFPLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzVDLENBQUM7SUFOZSwrQkFBaUIsb0JBTWhDLENBQUE7QUFDSCxDQUFDLEVBNUNnQixhQUFhLEtBQWIsYUFBYSxRQTRDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIFN1cmZhY2UgY29udGFpbmVyIHRoYXQgZ3JvdXBzIHJlbGF0ZWQgY29udGVudCBpbnRvIGEgc2luZ2xlIHNjYW5uYWJsZSB1bml0LlxuICpcbiAqIEEgY2FyZCBpcyBjb21wb3NlZCwgbm90IGNvbmZpZ3VyZWQ6IHByb2plY3QgdGhlIHBhcnRzIHlvdSBuZWVkLCBpbiB0aGUgb3JkZXJcbiAqIHlvdSBuZWVkIHRoZW0uIEV2ZXJ5IHBhcnQgaXMgb3B0aW9uYWwsIHNvIGEgYmFyZSBgcml2LWNhcmRgIGlzIGEgdmFsaWRcbiAqIHN1cmZhY2Ugb24gaXRzIG93bi5cbiAqXG4gKiAtIGByaXYtY2FyZC1tZWRpYWAg4oCUIGxlYWRpbmcgaW1hZ2Ugb3IgdmlkZW9cbiAqIC0gYHJpdi1jYXJkLWhlYWRlcmAg4oCUIGhlYWRpbmcsIHN1YmhlYWRpbmcsIGxlYWRpbmcgYWRvcm5tZW50LCBhY3Rpb25zXG4gKiAtIGByaXYtY2FyZC1jb250ZW50YCDigJQgYm9keVxuICogLSBgcml2LWNhcmQtYWN0aW9uc2Ag4oCUIHRyYWlsaW5nIGNvbnRyb2wgcm93XG4gKlxuICogYGBgaHRtbFxuICogPHJpdi1jYXJkPlxuICogICA8cml2LWNhcmQtaGVhZGVyIFtoZWFkaW5nXT1cIndvcmtib29rLm5hbWVcIiBbc3ViaGVhZGluZ109XCJwYXllck5hbWVcIj5cbiAqICAgICA8cml2LW1lbnUgYWN0aW9ucz4uLi48L3Jpdi1tZW51PlxuICogICA8L3Jpdi1jYXJkLWhlYWRlcj5cbiAqICAgPHJpdi1jYXJkLWNvbnRlbnQ+XG4gKiAgICAgTGFzdCBlZGl0OiB7eyB3b3JrYm9vay5tb2RpZmllZCB8IHJpdkRhdGUgfX1cbiAqICAgPC9yaXYtY2FyZC1jb250ZW50PlxuICogPC9yaXYtY2FyZD5cbiAqIGBgYFxuICpcbiAqICMjIE1ha2luZyB0aGUgY2FyZCBhY3RpdmF0ZVxuICpcbiAqIFNldCBgY2xpY2thYmxlYCBhbmQgaGFuZGxlIGBjYXJkQ2xpY2tgIHRvIG1ha2UgdGhlIHdob2xlIHN1cmZhY2UgYWN0IG9uIGFcbiAqIGNsaWNrOlxuICpcbiAqIGBgYGh0bWxcbiAqIDxyaXYtY2FyZCBbY2xpY2thYmxlXT1cInRydWVcIiAoY2FyZENsaWNrKT1cImdvVG9Xb3JrYm9vaygpXCI+XG4gKiBgYGBcbiAqXG4gKiBUaGUgY2FyZCByZW5kZXJzIGl0cyBvd24gZnVsbC1zdXJmYWNlIGJ1dHRvbiBmb3IgdGhpcywgc28gYWN0aXZhdGlvbiB3b3Jrc1xuICogd2l0aCBhIHBvaW50ZXIsIHdpdGggRW50ZXIsIGFuZCB3aXRoIFNwYWNlLCBhbmQgdGhlIGZvY3VzIHJpbmcgdHJhY2VzIHRoZVxuICogd2hvbGUgY2FyZC4gQ29udHJvbHMgaW4gYHJpdi1jYXJkLWhlYWRlcmAncyBgW2FjdGlvbnNdYCBzbG90IGFuZCBpblxuICogYHJpdi1jYXJkLWFjdGlvbnNgIHNpdCBhYm92ZSBpdCBhbmQgc3RheSBpbmRlcGVuZGVudGx5IGNsaWNrYWJsZSDigJQgYSBtZW51XG4gKiBpbnNpZGUgYSBjbGlja2FibGUgY2FyZCBuZWVkcyBubyBgc3RvcFByb3BhZ2F0aW9uYC4gT3RoZXIgaW50ZXJhY3RpdmUgY29udGVudFxuICogcHJvamVjdGVkIGludG8gdGhlIGNhcmQgbXVzdCByYWlzZSBpdHNlbGYgd2l0aCBgcG9zaXRpb246IHJlbGF0aXZlYCBhbmRcbiAqIGB6LWluZGV4OiB2YXIoLS1jYXJkLXJhaXNlZC16LWluZGV4KWAuXG4gKlxuICogV2hlbiB0aGUgY2FyZCdzIGFjdGlvbiBpcyByZWFsbHkgYSBuYXZpZ2F0aW9uLCBwcmVmZXIgYFtyaXYtY2FyZC1saW5rXWAgb24gYW5cbiAqIGA8YT5gIGluc3RlYWQ6IHRoYXQga2VlcHMgdGhlIFVSTCwgbWlkZGxlLWNsaWNrLCBhbmQgXCJvcGVuIGluIG5ldyB0YWJcIi5cbiAqXG4gKiAjIyBTZWxlY3Rpb25cbiAqXG4gKiBTZXQgYHNlbGVjdGVkYCB0byBtYXJrIHRoZSBjYXJkIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBsb29raW5nIGF0LiBJdCBnaXZlc1xuICogdGhlIHN1cmZhY2UgYSBkaXN0aW5jdCBib3JkZXIgYW5kIHNoYWRvdywgYW5kIGFubm91bmNlcyB0aHJvdWdoXG4gKiBgYXJpYS1jdXJyZW50YCBzbyB0aGUgc3RhdGUgaXMgbm90IGNvbnZleWVkIGJ5IGNvbG91ciBhbG9uZS5cbiAqXG4gKiBgYGBodG1sXG4gKiA8cml2LWNhcmQgW3NlbGVjdGVkXT1cIndvcmtib29rLmlkID09PSBhY3RpdmVJZFwiPlxuICogYGBgXG4gKlxuICogU2VsZWN0aW9uIGlzIHNlcGFyYXRlIGZyb20gYHRvbmVgLCBzbyBpdCBjb21wb3NlcyB3aXRoIGFueSB0aW50IOKAlCBhIHNlbGVjdGVkXG4gKiBgZGFuZ2VyYCBjYXJkIGtlZXBzIGl0cyBkYW5nZXIgYmFja2dyb3VuZC5cbiAqXG4gKiAjIyBNYWtpbmcgdGhlIGNhcmQgZXhwYW5kIGFuZCBjb2xsYXBzZVxuICpcbiAqIFNldCBgZXhwYW5kYWJsZWAgb24gYHJpdi1jYXJkLWhlYWRlcmAgYW5kIHJlbmRlciB0aGUgYm9keSBvbmx5IHdoaWxlIGl0IGlzXG4gKiBvcGVuLiBUaGUgaGVhZGVyIG93bnMgdGhlIHRvZ2dsZSBhZmZvcmRhbmNlIGFuZCBpdHMgYWNjZXNzaWJpbGl0eTsgdGhlXG4gKiBjb25zdW1lciBvd25zIHRoZSBzdGF0ZTpcbiAqXG4gKiBgYGBodG1sXG4gKiA8cml2LWNhcmQ+XG4gKiAgIDxyaXYtY2FyZC1oZWFkZXJcbiAqICAgICBbaGVhZGluZ109XCInUGF0aWVudCBpbmZvJ1wiXG4gKiAgICAgW2V4cGFuZGFibGVdPVwidHJ1ZVwiXG4gKiAgICAgWyhleHBhbmRlZCldPVwib3BlblwiXG4gKiAgID48L3Jpdi1jYXJkLWhlYWRlcj5cbiAqICAgPHJpdi1jYXJkLWNvbnRlbnQgKm5nSWY9XCJvcGVuXCI+Li4uPC9yaXYtY2FyZC1jb250ZW50PlxuICogPC9yaXYtY2FyZD5cbiAqIGBgYFxuICpcbiAqIFRoZSBjYXJkIHJlbGF5cyB0aGUgcmVnaW9uIGlkIGZyb20gdGhlIGhlYWRlciB0byB0aGUgY29udGVudCwgc28gdGhlIHRvZ2dsZSdzXG4gKiBgYXJpYS1jb250cm9sc2AgbmFtZXMgdGhlIGJvZHkgd2l0aCBubyBpZHMgd2lyZWQgYnkgaGFuZC5cbiAqXG4gKiBEbyBub3QgY29tYmluZSBgZXhwYW5kYWJsZWAgd2l0aCBgY2xpY2thYmxlYDogYm90aCBjbGFpbSB0aGUgc2FtZSBjbGljaywgYW5kXG4gKiBhIGNhcmQgdGhhdCBvcGVucyBhcyB3ZWxsIGFzIGV4cGFuZHMgbGVhdmVzIHRoZSB1c2VyIG5vIHdheSB0byB0ZWxsIHdoaWNoIG9uZVxuICogdGhleSBhcmUgYWJvdXQgdG8gZ2V0LlxuICpcbiAqICMjIE5vdGVzXG4gKlxuICogV2hlbiBwcm9qZWN0aW5nIHJhdyBjb250ZW50IHdpdGggbm8gc3ViLWNvbXBvbmVudHMsIHNldCBgcGFkZGluZ2Agc28gdGhlXG4gKiBjb250ZW50IGlzIG5vdCBmbHVzaCBhZ2FpbnN0IHRoZSBib3JkZXIuXG4gKlxuICogVGhlIGNhcmQgY2xpcHMgaXRzIG93biBjb250ZW50IHNvIG1lZGlhIGFuZCBmaWxsZWQgaGVhZGVyL2FjdGlvbiByb3dzIGZvbGxvd1xuICogaXRzIGNvcm5lcnMuIFBvcHVwcyAoYHJpdi1tZW51YCwgYHJpdlRvb2x0aXBgKSByZW5kZXIgdGhyb3VnaCB0aGUgb3ZlcmxheVxuICogb3V0bGV0LCBzbyB0aGV5IGFyZSBub3QgYWZmZWN0ZWQgYnkgdGhhdCBjbGlwcGluZy5cbiAqXG4gKiBTZXQgdGhlIGNvcm5lciByYWRpdXMgd2l0aCBgcmFkaXVzYC4gVGhlIGAtLWNhcmQtYm9yZGVyLXJhZGl1c2AgY3VzdG9tXG4gKiBwcm9wZXJ0eSBzdGlsbCBvdmVycmlkZXMgaXQsIGZvciByYWRpaSBvZmYgdGhlIHRva2VuIHNjYWxlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdyaXYtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2FyZC5jb21wb25lbnQuY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIC8qKiBCb3JkZXIgYW5kIHNoYWRvdyB0cmVhdG1lbnQgb2YgdGhlIHN1cmZhY2UuICovXG4gIEBJbnB1dCgpXG4gIHZhcmlhbnQ6IENhcmRDb21wb25lbnQuVmFyaWFudCA9ICdvdXRsaW5lZCc7XG5cbiAgLyoqIE5ldXRyYWwgYmFja2dyb3VuZCBlbGV2YXRpb24sIG1hdGNoaW5nIHRoZSBgLS1zdXJmYWNlLWxpZ2h0LSpgIHRva2Vucy4gKi9cbiAgQElucHV0KClcbiAgc3VyZmFjZTogQ2FyZENvbXBvbmVudC5TdXJmYWNlID0gJzAnO1xuXG4gIC8qKiBTZW1hbnRpYyBiYWNrZ3JvdW5kIHRpbnQuIE92ZXJyaWRlcyBgc3VyZmFjZWAgd2hlbiBub3QgYG5ldXRyYWxgLiAqL1xuICBASW5wdXQoKVxuICB0b25lOiBDYXJkQ29tcG9uZW50LlRvbmUgPSAnbmV1dHJhbCc7XG5cbiAgLyoqIFN0YWNraW5nIGRpcmVjdGlvbiBvZiB0aGUgcHJvamVjdGVkIHBhcnRzLiAqL1xuICBASW5wdXQoKVxuICBvcmllbnRhdGlvbjogQ2FyZENvbXBvbmVudC5PcmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCc7XG5cbiAgLyoqXG4gICAqIFBhZGRpbmcgYXBwbGllZCB0byB0aGUgY2FyZCBpdHNlbGYuIExlYXZlIGFzIGBub25lYCB3aGVuIGNvbXBvc2luZyB3aXRoXG4gICAqIGByaXYtY2FyZC1oZWFkZXJgIC8gYHJpdi1jYXJkLWNvbnRlbnRgIC8gYHJpdi1jYXJkLWFjdGlvbnNgLCB3aGljaCBvd25cbiAgICogdGhlaXIgb3duIHBhZGRpbmcuXG4gICAqL1xuICBASW5wdXQoKVxuICBwYWRkaW5nOiBDYXJkQ29tcG9uZW50LlBhZGRpbmcgPSAnbm9uZSc7XG5cbiAgLyoqIENvcm5lciByYWRpdXMsIG1hdGNoaW5nIHRoZSBgLS1ib3JkZXItcmFkaXVzLSpgIHRva2Vucy4gKi9cbiAgQElucHV0KClcbiAgcmFkaXVzOiBDYXJkQ29tcG9uZW50LlJhZGl1cyA9ICdtZWRpdW0nO1xuXG4gIC8qKlxuICAgKiBTaGFkb3cgcmFpc2VkIG9uIGhvdmVyLCBtYXRjaGluZyB0aGUgYC0tZGVwdGgtKmAgdG9rZW5zLiBEZWZhdWx0cyB0byBgMWBcbiAgICogZm9yIGEgY2xpY2thYmxlIGNhcmQsIGAyYCBmb3IgYSBjbGlja2FibGUgZWxldmF0ZWQgY2FyZCwgYW5kIGBub25lYFxuICAgKiBvdGhlcndpc2UuIEEgaG92ZXIgc2hhZG93IHJlYWRzIGFzIGNsaWNrYWJsZSwgc28gc2V0IGl0IG9uIGEgY2FyZCB0aGF0XG4gICAqIGlzIG5vdCBgY2xpY2thYmxlYCBvbmx5IHdoZW4gdGhlIGNhcmQncyBvd24gY29udHJvbHMgbWFrZSBpdCBpbnRlcmFjdGl2ZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGhvdmVyRGVwdGg/OiBDYXJkQ29tcG9uZW50LkRlcHRoO1xuXG4gIC8qKlxuICAgKiBNYWtlcyB0aGUgd2hvbGUgc3VyZmFjZSBhY3RpdmF0ZSwgZW1pdHRpbmcgYGNhcmRDbGlja2AuIEFkZHMgdGhlIGhvdmVyXG4gICAqIGFmZm9yZGFuY2UgYW5kIGtleWJvYXJkIHN1cHBvcnQuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGlja2FibGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQWNjZXNzaWJsZSBuYW1lIGZvciB0aGUgY2FyZCdzIGFjdGlvbi4gRGVmYXVsdHMgdG8gdGhlIGByaXYtY2FyZC1oZWFkZXJgXG4gICAqIHRpdGxlLCBmYWxsaW5nIGJhY2sgdG8gdGhlIGNhcmQncyB3aG9sZSB0ZXh0IGNvbnRlbnQgd2hlbiB0aGVyZSBpcyBub1xuICAgKiBoZWFkZXIuIFNldCB0aGlzIHdoZW4gbmVpdGhlciByZWFkcyB3ZWxsIG9uIGl0cyBvd24uXG4gICAqL1xuICBASW5wdXQoKVxuICBjbGlja0xhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXJrcyB0aGUgY2FyZCBhcyB0aGUgY3VycmVudCBzZWxlY3Rpb24sIGdpdmluZyBpdCBhIGRpc3RpbmN0IGJvcmRlciBhbmRcbiAgICogc2hhZG93LiBDb21wb3NlcyB3aXRoIGFueSBgdG9uZWAsIHNvIGEgc2VsZWN0ZWQgZGFuZ2VyIGNhcmQga2VlcHMgaXRzXG4gICAqIHRpbnQuIEFubm91bmNlZCB0byBhc3Npc3RpdmUgdGVjaG5vbG9neSB0aHJvdWdoIGBhcmlhLWN1cnJlbnRgLlxuICAgKi9cbiAgQElucHV0KClcbiAgc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogTXV0ZXMgdGhlIHN1cmZhY2UsIHN1cHByZXNzZXMgaG92ZXIgZmVlZGJhY2ssIGFuZCBkaXNhYmxlcyB0aGUgY2xpY2tcbiAgICogdGFyZ2V0LiBQcmVzZW50YXRpb25hbCBmb3IgZXZlcnl0aGluZyBlbHNlIOKAlCBkaXNhYmxlIHRoZSBjYXJkJ3Mgb3duXG4gICAqIGNvbnRyb2xzIHRvby5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEVtaXR0ZWQgd2hlbiBhIGNsaWNrYWJsZSBjYXJkIGlzIGFjdGl2YXRlZCBieSBwb2ludGVyIG9yIGtleWJvYXJkLiAqL1xuICBAT3V0cHV0KClcbiAgY2FyZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBOYW1lcyB0aGUgY2xpY2sgdGFyZ2V0IGZyb20gdGhlIGNhcmQncyBjb250ZW50LiBHZW5lcmF0ZWQgb25seSB3aGVuIHRoZVxuICAgKiBjb25zdW1lciBoYXMgbm90IHNldCB0aGVpciBvd24gaWQuXG4gICAqL1xuICBwcml2YXRlIGNhcmRJZDogc3RyaW5nID0gJyc7XG5cbiAgLyoqIFNldCBieSBhIHByb2plY3RlZCBgcml2LWNhcmQtaGVhZGVyYCB0aGF0IGhhcyBhIHRpdGxlIHRvIG5hbWUgYWdhaW5zdC4gKi9cbiAgcHJpdmF0ZSB0aXRsZUlkPzogc3RyaW5nO1xuXG4gIC8qKiBTZXQgYnkgYSBwcm9qZWN0ZWQgYHJpdi1jYXJkLWhlYWRlcmAgdGhhdCBpcyBleHBhbmRhYmxlLiAqL1xuICBwcml2YXRlIGV4cGFuZFJlZ2lvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZCBhbiBleHBhbmRhYmxlIGhlYWRlcidzIHRvZ2dsZSBwb2ludHMgYGFyaWEtY29udHJvbHNgIGF0LCB3b3JuIGJ5IGFcbiAgICogcHJvamVjdGVkIGByaXYtY2FyZC1jb250ZW50YC5cbiAgICovXG4gIGdldCByZWdpb25JZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZFJlZ2lvbklkO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jYXJkSWQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuaWQgfHwgdW5pcXVlSWQoJ3Jpdi1jYXJkLScpO1xuICAgIGlmICghdGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsICdpZCcsIHRoaXMuY2FyZElkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIHRoZSBoZWFkZXIncyB0aXRsZSBhcyB0aGUgY2xpY2sgdGFyZ2V0J3MgYWNjZXNzaWJsZSBuYW1lLCB3aGljaFxuICAgKiBrZWVwcyB0aGUgYW5ub3VuY2VtZW50IHRvIHRoZSBjYXJkJ3Mgc3ViamVjdCBpbnN0ZWFkIG9mIGV2ZXJ5IHdvcmQgb24gdGhlXG4gICAqIHN1cmZhY2UuIENhbGxlZCBieSBgcml2LWNhcmQtaGVhZGVyYDsgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuXG4gICAqL1xuICBzZXRUaXRsZUlkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnRpdGxlSWQgPSBpZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlcyB1cCBhIHRpdGxlIHJlZ2lzdGVyZWQgYnkgYHNldFRpdGxlSWRgLCBzbyBhIGhlYWRlciB0aGF0IGlzIHJlbW92ZWRcbiAgICogZG9lcyBub3QgbGVhdmUgdGhlIGNsaWNrIHRhcmdldCBuYW1pbmcgaXRzZWxmIGFnYWluc3QgYSBkZXRhY2hlZCBlbGVtZW50LlxuICAgKiBJZ25vcmVzIGlkcyB0aGF0IGFyZSBubyBsb25nZXIgdGhlIG9uZSBpbiB1c2UuXG4gICAqL1xuICBjbGVhclRpdGxlSWQoaWQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnRpdGxlSWQgPT09IGlkKSB7XG4gICAgICB0aGlzLnNldFRpdGxlSWQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVsYXlzIHRoZSByZWdpb24gYW4gZXhwYW5kYWJsZSBoZWFkZXIgY29udHJvbHMgdG8gdGhlIHByb2plY3RlZFxuICAgKiBgcml2LWNhcmQtY29udGVudGAsIHNvIG5laXRoZXIgc2lkZSBuZWVkcyB0aGUgY29uc3VtZXIgdG8gd2lyZSBhbiBpZC5cbiAgICogQ2FsbGVkIGJ5IGByaXYtY2FyZC1oZWFkZXJgOyBub3QgcGFydCBvZiB0aGUgcHVibGljIEFQSS5cbiAgICovXG4gIHNldFJlZ2lvbklkKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmV4cGFuZFJlZ2lvbklkID0gaWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogR2l2ZXMgdXAgYSByZWdpb24gcmVnaXN0ZXJlZCBieSBgc2V0UmVnaW9uSWRgLiBJZ25vcmVzIGlkcyB0aGF0IGFyZSBub1xuICAgKiBsb25nZXIgdGhlIG9uZSBpbiB1c2UuXG4gICAqL1xuICBjbGVhclJlZ2lvbklkKGlkOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5leHBhbmRSZWdpb25JZCA9PT0gaWQpIHtcbiAgICAgIHRoaXMuc2V0UmVnaW9uSWQodW5kZWZpbmVkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRWxlbWVudCB3aG9zZSB0ZXh0IG5hbWVzIHRoZSBjbGljayB0YXJnZXQsIHVubGVzcyBgY2xpY2tMYWJlbGAgaXMgc2V0LiBUaGVcbiAgICogaG9zdCBpZCBpcyByZWFkIGZyb20gdGhlIERPTSByYXRoZXIgdGhhbiBjYWNoZWQsIHNvIGEgYm91bmQgYFtpZF1gIHRoYXRcbiAgICogY2hhbmdlcyBpcyBwaWNrZWQgdXAgb24gdGhlIGNhcmQncyBuZXh0IGNoYW5nZSBkZXRlY3Rpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0IGxhYmVsbGVkQnkoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuY2xpY2tMYWJlbCkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMudGl0bGVJZCA/PyAodGhpcy5lbC5uYXRpdmVFbGVtZW50LmlkIHx8IHRoaXMuY2FyZElkKTtcbiAgfVxuXG4gIC8qKiBBbm5vdW5jZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHRvIGFzc2lzdGl2ZSB0ZWNobm9sb2d5LiAqL1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jdXJyZW50JylcbiAgZ2V0IGFyaWFDdXJyZW50KCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkID8gJ3RydWUnIDogbnVsbDtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgY2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh7XG4gICAgICBbdGhpcy52YXJpYW50XTogdHJ1ZSxcbiAgICAgIFtgc3VyZmFjZS0ke3RoaXMuc3VyZmFjZX1gXTogdHJ1ZSxcbiAgICAgIFtgdG9uZS0ke3RoaXMudG9uZX1gXTogdHJ1ZSxcbiAgICAgIFt0aGlzLm9yaWVudGF0aW9uXTogdHJ1ZSxcbiAgICAgIFtgcGFkZGluZy0ke3RoaXMucGFkZGluZ31gXTogdHJ1ZSxcbiAgICAgIFtgcmFkaXVzLSR7dGhpcy5yYWRpdXN9YF06IHRydWUsXG4gICAgICBbYGhvdmVyLWRlcHRoLSR7XG4gICAgICAgIHRoaXMuaG92ZXJEZXB0aCA/PyBDYXJkQ29tcG9uZW50LmRlZmF1bHRIb3ZlckRlcHRoKHRoaXMpXG4gICAgICB9YF06IHRydWUsXG4gICAgICBjbGlja2FibGU6IHRoaXMuY2xpY2thYmxlLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsXG4gICAgICBkaXNhYmxlZDogdGhpcy5kaXNhYmxlZCxcbiAgICB9KVxuICAgICAgLmZpbHRlcigoW18sIHZdKSA9PiB2KVxuICAgICAgLm1hcCgoW2tdKSA9PiBrKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgfVxufVxuXG5leHBvcnQgbmFtZXNwYWNlIENhcmRDb21wb25lbnQge1xuICBleHBvcnQgY29uc3QgVmFyaWFudHMgPSBbJ291dGxpbmVkJywgJ2VsZXZhdGVkJywgJ2ZsYXQnLCAnZGFzaGVkJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFZhcmlhbnQgPSAodHlwZW9mIFZhcmlhbnRzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBTdXJmYWNlcyA9IFsnMCcsICcxJywgJzInXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgU3VyZmFjZSA9ICh0eXBlb2YgU3VyZmFjZXMpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IFRvbmVzID0gW1xuICAgICduZXV0cmFsJyxcbiAgICAnZGFuZ2VyJyxcbiAgICAnY2F1dGlvbicsXG4gICAgJ3dhcm5pbmcnLFxuICAgICdzYWZldHknLFxuICAgICdzZWxlY3RlZCcsXG4gIF0gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFRvbmUgPSAodHlwZW9mIFRvbmVzKVtudW1iZXJdO1xuXG4gIGV4cG9ydCBjb25zdCBPcmllbnRhdGlvbnMgPSBbJ3ZlcnRpY2FsJywgJ2hvcml6b250YWwnXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgT3JpZW50YXRpb24gPSAodHlwZW9mIE9yaWVudGF0aW9ucylbbnVtYmVyXTtcblxuICAvKiogU2hhcmVkIHBhZGRpbmcgc2NhbGUgZm9yIHRoZSBjYXJkIGFuZCBpdHMgc3ViLWNvbXBvbmVudHMuICovXG4gIGV4cG9ydCBjb25zdCBQYWRkaW5ncyA9IFtcbiAgICAnbm9uZScsXG4gICAgJ3NtYWxsJyxcbiAgICAnbWVkaXVtJyxcbiAgICAnbGFyZ2UnLFxuICAgICd4bGFyZ2UnLFxuICAgICd4eGxhcmdlJyxcbiAgXSBhcyBjb25zdDtcbiAgZXhwb3J0IHR5cGUgUGFkZGluZyA9ICh0eXBlb2YgUGFkZGluZ3MpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IFJhZGlpID0gWydzbWFsbCcsICdtZWRpdW0nLCAnbGFyZ2UnLCAneGxhcmdlJ10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIFJhZGl1cyA9ICh0eXBlb2YgUmFkaWkpW251bWJlcl07XG5cbiAgZXhwb3J0IGNvbnN0IERlcHRocyA9IFsnbm9uZScsICcxJywgJzInLCAnMycsICc0J10gYXMgY29uc3Q7XG4gIGV4cG9ydCB0eXBlIERlcHRoID0gKHR5cGVvZiBEZXB0aHMpW251bWJlcl07XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGRlZmF1bHRIb3ZlckRlcHRoKHtcbiAgICBjbGlja2FibGUsXG4gICAgdmFyaWFudCxcbiAgfTogUGljazxDYXJkQ29tcG9uZW50LCAnY2xpY2thYmxlJyB8ICd2YXJpYW50Jz4pOiBEZXB0aCB7XG4gICAgaWYgKCFjbGlja2FibGUpIHJldHVybiAnbm9uZSc7XG4gICAgcmV0dXJuIHZhcmlhbnQgPT09ICdlbGV2YXRlZCcgPyAnMicgOiAnMSc7XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgKm5nSWY9XCJjbGlja2FibGVcIlxuICB0eXBlPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJjbGljay10YXJnZXRcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkID8gJ3RydWUnIDogbnVsbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiY2xpY2tMYWJlbFwiXG4gIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJsYWJlbGxlZEJ5XCJcbiAgKGNsaWNrKT1cImNhcmRDbGljay5lbWl0KCRldmVudClcIlxuPjwvYnV0dG9uPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19