@fundamental-ngx/core 0.37.2-rc.0 → 0.37.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 (1412) hide show
  1. package/action-bar/action-bar-actions/action-bar-actions.directive.d.ts +1 -1
  2. package/action-bar/action-bar-back/action-bar-back.directive.d.ts +1 -1
  3. package/action-bar/action-bar-description/action-bar-description.directive.d.ts +1 -1
  4. package/action-bar/action-bar-header/action-bar-header.directive.d.ts +1 -1
  5. package/action-bar/action-bar-mobile/action-bar-mobile.directive.d.ts +1 -1
  6. package/action-bar/action-bar-title/action-bar-title.component.d.ts +1 -1
  7. package/action-bar/action-bar.component.d.ts +1 -1
  8. package/action-sheet/action-sheet-body/action-sheet-body.component.d.ts +1 -1
  9. package/action-sheet/action-sheet-control/action-sheet-control.component.d.ts +1 -1
  10. package/action-sheet/action-sheet-item/action-sheet-item.component.d.ts +1 -1
  11. package/action-sheet/action-sheet-mobile/action-sheet-mobile.component.d.ts +1 -1
  12. package/action-sheet/action-sheet.component.d.ts +1 -1
  13. package/action-sheet/deprecated-action-sheet-compact.directive.d.ts +1 -1
  14. package/alert/alert-utils/alert-container.component.d.ts +1 -1
  15. package/alert/alert.component.d.ts +1 -1
  16. package/avatar/avatar.component.d.ts +1 -1
  17. package/avatar-group/avatar-group.component.d.ts +1 -1
  18. package/avatar-group/directives/avatar-group-focusable-avatar.directive.d.ts +1 -1
  19. package/avatar-group/directives/avatar-group-item.directive.d.ts +1 -1
  20. package/avatar-group/directives/avatar-group-overflow-body.directive.d.ts +1 -1
  21. package/avatar-group/directives/avatar-group-overflow-button-text.directive.d.ts +1 -1
  22. package/avatar-group/directives/avatar-group-overflow-button.directive.d.ts +1 -1
  23. package/avatar-group/directives/avatar-group-overflow-item.directive.d.ts +1 -1
  24. package/avatar-group/directives/avatar-group-popover-control.directive.d.ts +1 -1
  25. package/bar/bar.component.d.ts +1 -1
  26. package/bar/button-bar/button-bar.component.d.ts +1 -1
  27. package/bar/deprecated-bar-button-content-density.directive.d.ts +1 -1
  28. package/bar/deprecated-bar-content-density.directive.d.ts +1 -1
  29. package/bar/directives/bar-element.directive.d.ts +1 -1
  30. package/bar/directives/bar-left.directive.d.ts +1 -1
  31. package/bar/directives/bar-middle.directive.d.ts +1 -1
  32. package/bar/directives/bar-right.directive.d.ts +1 -1
  33. package/breadcrumb/breadcrumb-item.component.d.ts +1 -1
  34. package/breadcrumb/breadcrumb.component.d.ts +1 -1
  35. package/breadcrumb/deprecated-breadcrumbs-compact.directive.d.ts +1 -1
  36. package/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.d.ts +1 -1
  37. package/busy-indicator/busy-indicator.component.d.ts +1 -1
  38. package/button/base-button.d.ts +1 -1
  39. package/button/button.component.d.ts +1 -1
  40. package/button/deprecated-button-content-density.directive.d.ts +1 -1
  41. package/calendar/calendar-directives.d.ts +1 -1
  42. package/calendar/calendar-header/calendar-header.component.d.ts +1 -1
  43. package/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.d.ts +1 -1
  44. package/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +1 -1
  45. package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +1 -1
  46. package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +1 -1
  47. package/calendar/calendar.component.d.ts +1 -1
  48. package/calendar/deprecated-calendar-content-density.directive.d.ts +1 -1
  49. package/card/card-content.component.d.ts +1 -1
  50. package/card/card-counter.directive.d.ts +1 -1
  51. package/card/card-footer-action-item.directive.d.ts +1 -1
  52. package/card/card-footer.component.d.ts +1 -1
  53. package/card/card-header.component.d.ts +1 -1
  54. package/card/card-loader.component.d.ts +1 -1
  55. package/card/card-second-subtitle.directive.d.ts +1 -1
  56. package/card/card-subtitle.directive.d.ts +1 -1
  57. package/card/card-title.directive.d.ts +1 -1
  58. package/card/card.component.d.ts +1 -1
  59. package/card/deprecated-card-content-density.directive.d.ts +1 -1
  60. package/card/kpi/card-kpi-analytics-content.directive.d.ts +1 -1
  61. package/card/kpi/card-kpi-analytics-label.directive.d.ts +1 -1
  62. package/card/kpi/card-kpi-analytics.directive.d.ts +1 -1
  63. package/card/kpi/card-kpi-header.component.d.ts +1 -1
  64. package/card/kpi/card-kpi-scale-icon.directive.d.ts +1 -1
  65. package/card/kpi/card-kpi-scale-text.directive.d.ts +1 -1
  66. package/card/kpi/card-kpi-value.directive.d.ts +1 -1
  67. package/carousel/carousel-item/carousel-item.component.d.ts +1 -1
  68. package/carousel/carousel-item.directive.d.ts +1 -1
  69. package/carousel/carousel.component.d.ts +1 -1
  70. package/carousel/carousel.directive.d.ts +1 -1
  71. package/checkbox/checkbox/checkbox.component.d.ts +1 -1
  72. package/checkbox/deprecated-checkbox-content-density.directive.d.ts +1 -1
  73. package/combobox/combobox-mobile/combobox-mobile.component.d.ts +1 -1
  74. package/combobox/combobox.component.d.ts +1 -1
  75. package/combobox/deprecated-combobox-content-density.directive.d.ts +1 -1
  76. package/content-density/classes/deprecated-compact.directive.d.ts +1 -1
  77. package/content-density/classes/deprecated-condensed.directive.d.ts +1 -1
  78. package/content-density/classes/deprecated-content-density.directive.d.ts +1 -1
  79. package/content-density/classes/deprecated-cozy.directive.d.ts +1 -1
  80. package/content-density/directives/content-density.directive.d.ts +1 -1
  81. package/date-picker/date-picker.component.d.ts +1 -1
  82. package/date-picker/deprecated-date-picker-compact.directive.d.ts +1 -1
  83. package/datetime-picker/datetime-picker.component.d.ts +1 -1
  84. package/datetime-picker/deprecated-date-time-picker-content-density.directive.d.ts +1 -1
  85. package/dialog/base/dialog-base.class.d.ts +1 -1
  86. package/dialog/base/dialog-footer-base.class.d.ts +1 -1
  87. package/dialog/base/dialog-header-base.class.d.ts +1 -1
  88. package/dialog/dialog-body/dialog-body.component.d.ts +1 -1
  89. package/dialog/dialog-close-button/dialog-close-button.component.d.ts +1 -1
  90. package/dialog/dialog-container/dialog-container.component.d.ts +1 -1
  91. package/dialog/dialog-default/dialog-default.component.d.ts +1 -1
  92. package/dialog/dialog-footer/dialog-footer.component.d.ts +1 -1
  93. package/dialog/dialog-footer-button/dialog-footer-button.component.d.ts +1 -1
  94. package/dialog/dialog-header/dialog-header.component.d.ts +1 -1
  95. package/dialog/dialog.component.d.ts +1 -1
  96. package/dialog/directives/dialog-decisive-button.directive.d.ts +1 -1
  97. package/dialog/directives/dialog-title.directive.d.ts +1 -1
  98. package/dynamic-page/deprecated-dynamic-page-compact.directive.d.ts +1 -1
  99. package/dynamic-page/dynamic-page-content/dynamic-page-content.component.d.ts +1 -1
  100. package/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.d.ts +1 -1
  101. package/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.d.ts +1 -1
  102. package/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.d.ts +1 -1
  103. package/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.d.ts +1 -1
  104. package/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.d.ts +1 -1
  105. package/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.d.ts +1 -1
  106. package/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.d.ts +1 -1
  107. package/dynamic-page/dynamic-page-wrapper.directive.d.ts +1 -1
  108. package/dynamic-page/dynamic-page.component.d.ts +1 -1
  109. package/dynamic-side-content/dynamic-side-content-main.component.d.ts +1 -1
  110. package/dynamic-side-content/dynamic-side-content-side.component.d.ts +1 -1
  111. package/dynamic-side-content/dynamic-side-content.component.d.ts +1 -1
  112. package/esm2020/action-bar/action-bar-actions/action-bar-actions.directive.mjs +3 -3
  113. package/esm2020/action-bar/action-bar-back/action-bar-back.directive.mjs +3 -3
  114. package/esm2020/action-bar/action-bar-description/action-bar-description.directive.mjs +3 -3
  115. package/esm2020/action-bar/action-bar-header/action-bar-header.directive.mjs +3 -3
  116. package/esm2020/action-bar/action-bar-mobile/action-bar-mobile.directive.mjs +3 -3
  117. package/esm2020/action-bar/action-bar-title/action-bar-title.component.mjs +3 -3
  118. package/esm2020/action-bar/action-bar.component.mjs +4 -4
  119. package/esm2020/action-bar/action-bar.module.mjs +4 -4
  120. package/esm2020/action-sheet/action-sheet-body/action-sheet-body.component.mjs +3 -3
  121. package/esm2020/action-sheet/action-sheet-control/action-sheet-control.component.mjs +3 -3
  122. package/esm2020/action-sheet/action-sheet-item/action-sheet-item.component.mjs +3 -3
  123. package/esm2020/action-sheet/action-sheet-mobile/action-sheet-mobile.component.mjs +3 -3
  124. package/esm2020/action-sheet/action-sheet-mobile/action-sheet-mobile.module.mjs +4 -4
  125. package/esm2020/action-sheet/action-sheet.component.mjs +4 -4
  126. package/esm2020/action-sheet/action-sheet.module.mjs +4 -4
  127. package/esm2020/action-sheet/deprecated-action-sheet-compact.directive.mjs +3 -3
  128. package/esm2020/alert/alert-service/alert.service.mjs +3 -3
  129. package/esm2020/alert/alert-utils/alert-container.component.mjs +3 -3
  130. package/esm2020/alert/alert.component.mjs +5 -5
  131. package/esm2020/alert/alert.module.mjs +4 -4
  132. package/esm2020/avatar/avatar.component.mjs +5 -5
  133. package/esm2020/avatar/avatar.module.mjs +4 -4
  134. package/esm2020/avatar-group/avatar-group.component.mjs +5 -5
  135. package/esm2020/avatar-group/avatar-group.module.mjs +4 -4
  136. package/esm2020/avatar-group/directives/avatar-group-focusable-avatar.directive.mjs +3 -3
  137. package/esm2020/avatar-group/directives/avatar-group-item.directive.mjs +3 -3
  138. package/esm2020/avatar-group/directives/avatar-group-overflow-body.directive.mjs +3 -3
  139. package/esm2020/avatar-group/directives/avatar-group-overflow-button-text.directive.mjs +3 -3
  140. package/esm2020/avatar-group/directives/avatar-group-overflow-button.directive.mjs +4 -4
  141. package/esm2020/avatar-group/directives/avatar-group-overflow-item.directive.mjs +3 -3
  142. package/esm2020/avatar-group/directives/avatar-group-popover-control.directive.mjs +3 -3
  143. package/esm2020/bar/bar.component.mjs +6 -6
  144. package/esm2020/bar/bar.module.mjs +4 -4
  145. package/esm2020/bar/button-bar/button-bar.component.mjs +3 -3
  146. package/esm2020/bar/deprecated-bar-button-content-density.directive.mjs +3 -3
  147. package/esm2020/bar/deprecated-bar-content-density.directive.mjs +3 -3
  148. package/esm2020/bar/directives/bar-element.directive.mjs +3 -3
  149. package/esm2020/bar/directives/bar-left.directive.mjs +3 -3
  150. package/esm2020/bar/directives/bar-middle.directive.mjs +3 -3
  151. package/esm2020/bar/directives/bar-right.directive.mjs +3 -3
  152. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +3 -3
  153. package/esm2020/breadcrumb/breadcrumb.component.mjs +4 -4
  154. package/esm2020/breadcrumb/breadcrumb.module.mjs +4 -4
  155. package/esm2020/breadcrumb/deprecated-breadcrumbs-compact.directive.mjs +3 -3
  156. package/esm2020/busy-indicator/busy-indicator-extended/busy-indicator-extended.directive.mjs +3 -3
  157. package/esm2020/busy-indicator/busy-indicator.component.mjs +4 -4
  158. package/esm2020/busy-indicator/busy-indicator.module.mjs +4 -4
  159. package/esm2020/button/base-button.mjs +3 -3
  160. package/esm2020/button/button.component.mjs +6 -6
  161. package/esm2020/button/button.module.mjs +4 -4
  162. package/esm2020/button/deprecated-button-content-density.directive.mjs +3 -3
  163. package/esm2020/calendar/calendar-directives.mjs +3 -3
  164. package/esm2020/calendar/calendar-header/calendar-header.component.mjs +3 -3
  165. package/esm2020/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +3 -3
  166. package/esm2020/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +3 -3
  167. package/esm2020/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +3 -3
  168. package/esm2020/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +3 -3
  169. package/esm2020/calendar/calendar.component.mjs +5 -5
  170. package/esm2020/calendar/calendar.module.mjs +4 -4
  171. package/esm2020/calendar/calendar.service.mjs +3 -3
  172. package/esm2020/calendar/deprecated-calendar-content-density.directive.mjs +3 -3
  173. package/esm2020/calendar/i18n/calendar-i18n-labels.mjs +3 -3
  174. package/esm2020/card/card-content.component.mjs +4 -4
  175. package/esm2020/card/card-counter.directive.mjs +4 -4
  176. package/esm2020/card/card-footer-action-item.directive.mjs +3 -3
  177. package/esm2020/card/card-footer.component.mjs +3 -3
  178. package/esm2020/card/card-header.component.mjs +4 -4
  179. package/esm2020/card/card-loader.component.mjs +4 -4
  180. package/esm2020/card/card-second-subtitle.directive.mjs +4 -4
  181. package/esm2020/card/card-subtitle.directive.mjs +4 -4
  182. package/esm2020/card/card-title.directive.mjs +4 -4
  183. package/esm2020/card/card.component.mjs +6 -6
  184. package/esm2020/card/card.module.mjs +4 -4
  185. package/esm2020/card/deprecated-card-content-density.directive.mjs +3 -3
  186. package/esm2020/card/kpi/card-kpi-analytics-content.directive.mjs +4 -4
  187. package/esm2020/card/kpi/card-kpi-analytics-label.directive.mjs +4 -4
  188. package/esm2020/card/kpi/card-kpi-analytics.directive.mjs +4 -4
  189. package/esm2020/card/kpi/card-kpi-header.component.mjs +4 -4
  190. package/esm2020/card/kpi/card-kpi-scale-icon.directive.mjs +4 -4
  191. package/esm2020/card/kpi/card-kpi-scale-text.directive.mjs +4 -4
  192. package/esm2020/card/kpi/card-kpi-value.directive.mjs +4 -4
  193. package/esm2020/carousel/carousel-item/carousel-item.component.mjs +3 -3
  194. package/esm2020/carousel/carousel-item.directive.mjs +3 -3
  195. package/esm2020/carousel/carousel.component.mjs +4 -4
  196. package/esm2020/carousel/carousel.directive.mjs +3 -3
  197. package/esm2020/carousel/carousel.module.mjs +4 -4
  198. package/esm2020/carousel/carousel.service.mjs +4 -4
  199. package/esm2020/checkbox/checkbox/checkbox.component.mjs +5 -5
  200. package/esm2020/checkbox/checkbox.module.mjs +4 -4
  201. package/esm2020/checkbox/deprecated-checkbox-content-density.directive.mjs +3 -3
  202. package/esm2020/combobox/combobox-mobile/combobox-mobile.component.mjs +3 -3
  203. package/esm2020/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  204. package/esm2020/combobox/combobox.component.mjs +3 -3
  205. package/esm2020/combobox/combobox.module.mjs +4 -4
  206. package/esm2020/combobox/deprecated-combobox-content-density.directive.mjs +3 -3
  207. package/esm2020/combobox/list-group.pipe.mjs +3 -3
  208. package/esm2020/content-density/classes/deprecated-compact.directive.mjs +3 -3
  209. package/esm2020/content-density/classes/deprecated-condensed.directive.mjs +3 -3
  210. package/esm2020/content-density/classes/deprecated-content-density.directive.mjs +3 -3
  211. package/esm2020/content-density/classes/deprecated-cozy.directive.mjs +3 -3
  212. package/esm2020/content-density/content-density.module.mjs +4 -4
  213. package/esm2020/content-density/directives/content-density.directive.mjs +3 -3
  214. package/esm2020/content-density/providers/local-content-density-storage.mjs +3 -3
  215. package/esm2020/content-density/providers/memory-content-density-storage.mjs +3 -3
  216. package/esm2020/content-density/providers/url-content-density-storage.mjs +3 -3
  217. package/esm2020/content-density/services/content-density-observer.service.mjs +3 -3
  218. package/esm2020/content-density/services/deprecated-content-density.service.mjs +3 -3
  219. package/esm2020/content-density/services/global-content-density.service.mjs +3 -3
  220. package/esm2020/date-picker/date-picker.component.mjs +3 -3
  221. package/esm2020/date-picker/date-picker.module.mjs +4 -4
  222. package/esm2020/date-picker/deprecated-date-picker-compact.directive.mjs +3 -3
  223. package/esm2020/datetime/datetime-format.pipes.mjs +9 -9
  224. package/esm2020/datetime/fd-datetime-adapter.mjs +3 -3
  225. package/esm2020/datetime/fd-datetime-pipes.module.mjs +4 -4
  226. package/esm2020/datetime/fd-datetime.module.mjs +8 -8
  227. package/esm2020/datetime-picker/datetime-picker.component.mjs +3 -3
  228. package/esm2020/datetime-picker/datetime-picker.module.mjs +4 -4
  229. package/esm2020/datetime-picker/deprecated-date-time-picker-content-density.directive.mjs +3 -3
  230. package/esm2020/dialog/base/dialog-base.class.mjs +3 -3
  231. package/esm2020/dialog/base/dialog-footer-base.class.mjs +3 -3
  232. package/esm2020/dialog/base/dialog-header-base.class.mjs +3 -3
  233. package/esm2020/dialog/dialog-body/dialog-body.component.mjs +3 -3
  234. package/esm2020/dialog/dialog-close-button/dialog-close-button.component.mjs +3 -3
  235. package/esm2020/dialog/dialog-container/dialog-container.component.mjs +4 -4
  236. package/esm2020/dialog/dialog-default/dialog-default.component.mjs +3 -3
  237. package/esm2020/dialog/dialog-footer/dialog-footer.component.mjs +3 -3
  238. package/esm2020/dialog/dialog-footer-button/dialog-footer-button.component.mjs +3 -3
  239. package/esm2020/dialog/dialog-header/dialog-header.component.mjs +3 -3
  240. package/esm2020/dialog/dialog-service/dialog.service.mjs +3 -3
  241. package/esm2020/dialog/dialog.component.mjs +5 -5
  242. package/esm2020/dialog/dialog.module.mjs +4 -4
  243. package/esm2020/dialog/directives/dialog-decisive-button.directive.mjs +3 -3
  244. package/esm2020/dialog/directives/dialog-title.directive.mjs +3 -3
  245. package/esm2020/dialog/utils/dialog-config.class.mjs +3 -3
  246. package/esm2020/dialog/utils/dialog-ref.class.mjs +3 -3
  247. package/esm2020/dynamic-page/deprecated-dynamic-page-compact.directive.mjs +3 -3
  248. package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
  249. package/esm2020/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  250. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-base-actions.mjs +3 -3
  251. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-global-actions.component.mjs +3 -3
  252. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-layout-actions.component.mjs +3 -3
  253. package/esm2020/dynamic-page/dynamic-page-header/actions/dynamic-page-title-content.component.mjs +3 -3
  254. package/esm2020/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
  255. package/esm2020/dynamic-page/dynamic-page-header/subheader/dynamic-page-subheader.component.mjs +3 -3
  256. package/esm2020/dynamic-page/dynamic-page-wrapper.directive.mjs +3 -3
  257. package/esm2020/dynamic-page/dynamic-page.component.mjs +4 -4
  258. package/esm2020/dynamic-page/dynamic-page.config.mjs +3 -3
  259. package/esm2020/dynamic-page/dynamic-page.module.mjs +4 -4
  260. package/esm2020/dynamic-page/dynamic-page.service.mjs +3 -3
  261. package/esm2020/dynamic-side-content/dynamic-side-content-main.component.mjs +3 -3
  262. package/esm2020/dynamic-side-content/dynamic-side-content-side.component.mjs +3 -3
  263. package/esm2020/dynamic-side-content/dynamic-side-content.component.mjs +5 -5
  264. package/esm2020/dynamic-side-content/dynamic-side-content.module.mjs +4 -4
  265. package/esm2020/facets/content/facet-content.component.mjs +3 -3
  266. package/esm2020/facets/facet/facet.component.mjs +4 -4
  267. package/esm2020/facets/facet-group.component.mjs +3 -3
  268. package/esm2020/facets/facet.module.mjs +4 -4
  269. package/esm2020/feed-input/directives/feed-input-avatar.directive.mjs +4 -4
  270. package/esm2020/feed-input/directives/feed-input-button.directive.mjs +3 -3
  271. package/esm2020/feed-input/directives/feed-input-textarea.directive.mjs +3 -3
  272. package/esm2020/feed-input/feed-input.component.mjs +4 -4
  273. package/esm2020/feed-input/feed-input.module.mjs +4 -4
  274. package/esm2020/feed-list-item/components/feed-list-action/feed-list-action.component.mjs +3 -3
  275. package/esm2020/feed-list-item/components/feed-list-avatar/feed-list-avatar.component.mjs +3 -3
  276. package/esm2020/feed-list-item/components/feed-list-footer/feed-list-footer.component.mjs +3 -3
  277. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +4 -4
  278. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +5 -5
  279. package/esm2020/feed-list-item/directives/byline.directive.mjs +3 -3
  280. package/esm2020/feed-list-item/feed-list-item.module.mjs +4 -4
  281. package/esm2020/file-uploader/deprecated-file-uploader-content-density.directive.mjs +3 -3
  282. package/esm2020/file-uploader/directives/file-uploader-dragndrop.directive.mjs +3 -3
  283. package/esm2020/file-uploader/directives/file-uploader-select.directive.mjs +3 -3
  284. package/esm2020/file-uploader/file-uploader.component.mjs +5 -5
  285. package/esm2020/file-uploader/file-uploader.module.mjs +4 -4
  286. package/esm2020/file-uploader/file-uploader.service.mjs +3 -3
  287. package/esm2020/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.mjs +3 -3
  288. package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +7 -7
  289. package/esm2020/fixed-card-layout/fixed-card-layout.module.mjs +4 -4
  290. package/esm2020/flexible-column-layout/flexible-column-layout.component.mjs +4 -4
  291. package/esm2020/flexible-column-layout/flexible-column-layout.module.mjs +4 -4
  292. package/esm2020/form/fieldset/fieldset.component.mjs +4 -4
  293. package/esm2020/form/fieldset/fieldset.module.mjs +4 -4
  294. package/esm2020/form/form-control/deprecated-form-control-content-density.directive.mjs +3 -3
  295. package/esm2020/form/form-control/form-control.component.mjs +5 -5
  296. package/esm2020/form/form-control/form-control.module.mjs +4 -4
  297. package/esm2020/form/form-control/input-form-control.directive.mjs +3 -3
  298. package/esm2020/form/form-control/textarea-form-control.directive.mjs +3 -3
  299. package/esm2020/form/form-group/form-group.component.mjs +5 -5
  300. package/esm2020/form/form-group/form-group.module.mjs +4 -4
  301. package/esm2020/form/form-header/form-header.component.mjs +4 -4
  302. package/esm2020/form/form-header/form-header.module.mjs +4 -4
  303. package/esm2020/form/form-input-message-group/form-input-message-group.component.mjs +3 -3
  304. package/esm2020/form/form-input-message-group/form-input-message-group.module.mjs +4 -4
  305. package/esm2020/form/form-item/form-item.component.mjs +4 -4
  306. package/esm2020/form/form-item/form-item.module.mjs +4 -4
  307. package/esm2020/form/form-label/form-label.component.mjs +4 -4
  308. package/esm2020/form/form-label/form-label.module.mjs +4 -4
  309. package/esm2020/form/form-legend/form-legend.directive.mjs +3 -3
  310. package/esm2020/form/form-legend/form-legend.module.mjs +4 -4
  311. package/esm2020/form/form-message/form-message.component.mjs +5 -5
  312. package/esm2020/form/form-message/form-message.module.mjs +4 -4
  313. package/esm2020/form/form-message/popover-form-message.service.mjs +3 -3
  314. package/esm2020/form/form.module.mjs +4 -4
  315. package/esm2020/formatted-text/formatted-text.component.mjs +3 -3
  316. package/esm2020/formatted-text/formatted-text.module.mjs +4 -4
  317. package/esm2020/fundamental-ngx.module.mjs +4 -4
  318. package/esm2020/grid-list/components/grid-list/grid-list-base.component.mjs +3 -3
  319. package/esm2020/grid-list/components/grid-list/grid-list.component.mjs +4 -4
  320. package/esm2020/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.mjs +3 -3
  321. package/esm2020/grid-list/components/grid-list-footer/grid-list-footer.component.mjs +3 -3
  322. package/esm2020/grid-list/components/grid-list-group-header/grid-list-group-header.component.mjs +3 -3
  323. package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
  324. package/esm2020/grid-list/components/grid-list-item-footer-bar/grid-list-item-footer-bar.component.mjs +3 -3
  325. package/esm2020/grid-list/components/grid-list-item-toolbar/grid-list-item-toolbar.component.mjs +3 -3
  326. package/esm2020/grid-list/components/grid-list-more-btn/grid-list-more-btn.component.mjs +3 -3
  327. package/esm2020/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.mjs +3 -3
  328. package/esm2020/grid-list/components/grid-list-title-bar/grid-list-title-bar.directive.mjs +3 -3
  329. package/esm2020/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.mjs +3 -3
  330. package/esm2020/grid-list/directives/grid-list-item-body.directive.mjs +3 -3
  331. package/esm2020/grid-list/directives/grid-list-item-image.directive.mjs +3 -3
  332. package/esm2020/grid-list/grid-list.module.mjs +4 -4
  333. package/esm2020/icon/icon.component.mjs +5 -5
  334. package/esm2020/icon/icon.module.mjs +4 -4
  335. package/esm2020/illustrated-message/components/illustrated-message-actions/illustrated-message-actions.component.mjs +3 -3
  336. package/esm2020/illustrated-message/components/illustrated-message-figcaption/illustrated-message-figcaption.component.mjs +3 -3
  337. package/esm2020/illustrated-message/directives/illustrated-message-text/illustrated-message-text.directive.mjs +3 -3
  338. package/esm2020/illustrated-message/directives/illustrated-message-title/illustrated-message-title.directive.mjs +3 -3
  339. package/esm2020/illustrated-message/illustrated-message.component.mjs +6 -6
  340. package/esm2020/illustrated-message/illustrated-message.module.mjs +4 -4
  341. package/esm2020/infinite-scroll/infinite-scroll.directive.mjs +3 -3
  342. package/esm2020/infinite-scroll/infinite-scroll.module.mjs +4 -4
  343. package/esm2020/info-label/info-label.component.mjs +5 -5
  344. package/esm2020/info-label/info-label.module.mjs +4 -4
  345. package/esm2020/inline-help/inline-help.directive.mjs +3 -3
  346. package/esm2020/inline-help/inline-help.module.mjs +4 -4
  347. package/esm2020/input-group/deprecated-input-group-compact.directive.mjs +3 -3
  348. package/esm2020/input-group/input-group-directives.mjs +10 -10
  349. package/esm2020/input-group/input-group.component.mjs +5 -5
  350. package/esm2020/input-group/input-group.module.mjs +4 -4
  351. package/esm2020/layout-grid/directives/layout-grid-col.directive.mjs +4 -4
  352. package/esm2020/layout-grid/directives/layout-grid-row.directive.mjs +3 -3
  353. package/esm2020/layout-grid/layout-grid.component.mjs +5 -5
  354. package/esm2020/layout-grid/layout-grid.module.mjs +4 -4
  355. package/esm2020/layout-panel/layout-panel-actions/layout-panel-actions.component.mjs +3 -3
  356. package/esm2020/layout-panel/layout-panel-body/layout-panel-body.component.mjs +3 -3
  357. package/esm2020/layout-panel/layout-panel-description/layout-panel-description.component.mjs +3 -3
  358. package/esm2020/layout-panel/layout-panel-filters/layout-panel-filters.component.mjs +3 -3
  359. package/esm2020/layout-panel/layout-panel-footer/layout-panel-footer.component.mjs +3 -3
  360. package/esm2020/layout-panel/layout-panel-head/layout-panel-head.component.mjs +3 -3
  361. package/esm2020/layout-panel/layout-panel-header/layout-panel-header.component.mjs +3 -3
  362. package/esm2020/layout-panel/layout-panel-title/layout-panel-title.directive.mjs +3 -3
  363. package/esm2020/layout-panel/layout-panel.component.mjs +4 -4
  364. package/esm2020/layout-panel/layout-panel.module.mjs +4 -4
  365. package/esm2020/link/link.component.mjs +16 -14
  366. package/esm2020/link/link.module.mjs +4 -4
  367. package/esm2020/list/deprecated-list-content-density,directive.mjs +3 -3
  368. package/esm2020/list/directives/byline/list-byline-left.directive.mjs +3 -3
  369. package/esm2020/list/directives/byline/list-byline-right.directive.mjs +3 -3
  370. package/esm2020/list/directives/byline/list-byline.directive.mjs +3 -3
  371. package/esm2020/list/directives/byline/list-content.directive.mjs +3 -3
  372. package/esm2020/list/directives/byline/list-thumbnail.directive.mjs +3 -3
  373. package/esm2020/list/directives/list-footer.directive.mjs +3 -3
  374. package/esm2020/list/directives/list-group-header.directive.mjs +3 -3
  375. package/esm2020/list/directives/list-icon.directive.mjs +4 -4
  376. package/esm2020/list/directives/list-link.directive.mjs +3 -3
  377. package/esm2020/list/directives/list-navigation-item-arrow.directive.mjs +3 -3
  378. package/esm2020/list/directives/list-navigation-item-text.directive.mjs +3 -3
  379. package/esm2020/list/directives/list-secondary.directive.mjs +3 -3
  380. package/esm2020/list/directives/list-title-text.directive.mjs +3 -3
  381. package/esm2020/list/directives/list-title.directive.mjs +3 -3
  382. package/esm2020/list/list-focus-item.model.mjs +3 -3
  383. package/esm2020/list/list-item/list-item.component.mjs +3 -3
  384. package/esm2020/list/list-message.directive.mjs +4 -4
  385. package/esm2020/list/list-navigation-item/list-navigation-item.component.mjs +3 -3
  386. package/esm2020/list/list.component.mjs +5 -5
  387. package/esm2020/list/list.module.mjs +4 -4
  388. package/esm2020/menu/directives/deprecated-menu-compact.directive.mjs +3 -3
  389. package/esm2020/menu/directives/menu-addon.directive.mjs +3 -3
  390. package/esm2020/menu/directives/menu-interactive.directive.mjs +3 -3
  391. package/esm2020/menu/directives/menu-shortcut.directive.mjs +3 -3
  392. package/esm2020/menu/directives/menu-title.directive.mjs +3 -3
  393. package/esm2020/menu/directives/menu-trigger.directive.mjs +3 -3
  394. package/esm2020/menu/menu-item/menu-item.component.mjs +6 -6
  395. package/esm2020/menu/menu-keyboard.service.mjs +3 -3
  396. package/esm2020/menu/menu-mobile/menu-mobile.component.mjs +3 -3
  397. package/esm2020/menu/menu-mobile/menu-mobile.module.mjs +4 -4
  398. package/esm2020/menu/menu-separator/menu-separator.component.mjs +3 -3
  399. package/esm2020/menu/menu.component.mjs +4 -4
  400. package/esm2020/menu/menu.module.mjs +4 -4
  401. package/esm2020/menu/services/menu.service.mjs +3 -3
  402. package/esm2020/message-box/directives/message-box-decisive-button.directive.mjs +3 -3
  403. package/esm2020/message-box/message-box-body/message-box-body.component.mjs +3 -3
  404. package/esm2020/message-box/message-box-container/message-box-container.component.mjs +4 -4
  405. package/esm2020/message-box/message-box-default/message-box-default.component.mjs +3 -3
  406. package/esm2020/message-box/message-box-footer/message-box-footer.component.mjs +3 -3
  407. package/esm2020/message-box/message-box-footer-button/message-box-footer-button.component.mjs +3 -3
  408. package/esm2020/message-box/message-box-header/message-box-header.component.mjs +3 -3
  409. package/esm2020/message-box/message-box-semantic-icon/message-box-semantic-icon.component.mjs +3 -3
  410. package/esm2020/message-box/message-box.component.mjs +5 -5
  411. package/esm2020/message-box/message-box.module.mjs +4 -4
  412. package/esm2020/message-box/services/message-box.service.mjs +3 -3
  413. package/esm2020/message-box/utils/message-box-config.class.mjs +3 -3
  414. package/esm2020/message-box/utils/message-box-ref.class.mjs +3 -3
  415. package/esm2020/message-page/message-page-actions/message-page-actions.component.mjs +3 -3
  416. package/esm2020/message-page/message-page-more/message-page-more.component.mjs +3 -3
  417. package/esm2020/message-page/message-page-subtitle/message-page-subtitle.component.mjs +3 -3
  418. package/esm2020/message-page/message-page-title/message-page-title.component.mjs +3 -3
  419. package/esm2020/message-page/message-page.component.mjs +5 -5
  420. package/esm2020/message-page/message-page.module.mjs +4 -4
  421. package/esm2020/message-strip/message-strip.component.mjs +5 -5
  422. package/esm2020/message-strip/message-strip.module.mjs +4 -4
  423. package/esm2020/message-toast/message-toast-service/message-toast.service.mjs +3 -3
  424. package/esm2020/message-toast/message-toast-utils/message-toast-container.component.mjs +3 -3
  425. package/esm2020/message-toast/message-toast.component.mjs +4 -4
  426. package/esm2020/message-toast/message-toast.module.mjs +4 -4
  427. package/esm2020/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.mjs +3 -3
  428. package/esm2020/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +3 -3
  429. package/esm2020/micro-process-flow/components/micro-process-flow-icon/micro-process-flow-icon.component.mjs +3 -3
  430. package/esm2020/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.mjs +3 -3
  431. package/esm2020/micro-process-flow/micro-process-flow-focusable-item.directive.mjs +3 -3
  432. package/esm2020/micro-process-flow/micro-process-flow-intermediary-item.directive.mjs +3 -3
  433. package/esm2020/micro-process-flow/micro-process-flow.module.mjs +4 -4
  434. package/esm2020/multi-input/deprecated-multi-input-compact.directive.mjs +3 -3
  435. package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +3 -3
  436. package/esm2020/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  437. package/esm2020/multi-input/multi-input.component.mjs +4 -4
  438. package/esm2020/multi-input/multi-input.module.mjs +4 -4
  439. package/esm2020/nested-list/deprecated-nested-list-compact.directive.mjs +3 -3
  440. package/esm2020/nested-list/nested-content/nested-list-content.directive.mjs +3 -3
  441. package/esm2020/nested-list/nested-item/nested-item.directive.mjs +3 -3
  442. package/esm2020/nested-list/nested-link/nested-link.directive.mjs +3 -3
  443. package/esm2020/nested-list/nested-list/nested-list.directive.mjs +3 -3
  444. package/esm2020/nested-list/nested-list-directives.mjs +13 -13
  445. package/esm2020/nested-list/nested-list-keyboard.service.mjs +3 -3
  446. package/esm2020/nested-list/nested-list-popover/nested-list-popover.component.mjs +3 -3
  447. package/esm2020/nested-list/nested-list-state.service.mjs +3 -3
  448. package/esm2020/nested-list/nested-list.module.mjs +4 -4
  449. package/esm2020/nested-list/prepared-nested-list/prepared-nested-list.component.mjs +4 -4
  450. package/esm2020/notification/directives/notification-footer-content.directive.mjs +3 -3
  451. package/esm2020/notification/directives/notification-indicator.directive.mjs +4 -4
  452. package/esm2020/notification/directives/notification-limit-description.directive.mjs +3 -3
  453. package/esm2020/notification/directives/notification-limit-title.directive.mjs +3 -3
  454. package/esm2020/notification/directives/notification-paragraph.directive.mjs +3 -3
  455. package/esm2020/notification/directives/notification-separator.directive.mjs +3 -3
  456. package/esm2020/notification/directives/notification-title.directive.mjs +3 -3
  457. package/esm2020/notification/notification/notification.component.mjs +5 -5
  458. package/esm2020/notification/notification-actions/notification-actions.component.mjs +3 -3
  459. package/esm2020/notification/notification-body/notification-body.component.mjs +3 -3
  460. package/esm2020/notification/notification-content/notification-content.component.mjs +3 -3
  461. package/esm2020/notification/notification-footer/notification-footer.component.mjs +3 -3
  462. package/esm2020/notification/notification-group/notification-group.component.mjs +4 -4
  463. package/esm2020/notification/notification-group-header/notification-group-header.component.mjs +3 -3
  464. package/esm2020/notification/notification-group-list/notification-group-list.component.mjs +3 -3
  465. package/esm2020/notification/notification-header/notification-header.component.mjs +3 -3
  466. package/esm2020/notification/notification-limit/notification-limit.component.mjs +3 -3
  467. package/esm2020/notification/notification-service/notification.service.mjs +4 -4
  468. package/esm2020/notification/notification-utils/notification-container.mjs +3 -3
  469. package/esm2020/notification/notification-utils/notification-group-base.mjs +3 -3
  470. package/esm2020/notification/notification.module.mjs +4 -4
  471. package/esm2020/object-identifier/object-identifier.component.mjs +5 -5
  472. package/esm2020/object-identifier/object-identifier.module.mjs +4 -4
  473. package/esm2020/object-marker/object-marker.component.mjs +6 -6
  474. package/esm2020/object-marker/object-marker.module.mjs +4 -4
  475. package/esm2020/object-number/object-number.component.mjs +5 -5
  476. package/esm2020/object-number/object-number.module.mjs +4 -4
  477. package/esm2020/object-status/object-status.component.mjs +6 -6
  478. package/esm2020/object-status/object-status.module.mjs +4 -4
  479. package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +3 -3
  480. package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +3 -3
  481. package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +3 -3
  482. package/esm2020/overflow-layout/directives/overflow-layout-focusable-item.directive.mjs +3 -3
  483. package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +3 -3
  484. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +3 -3
  485. package/esm2020/overflow-layout/directives/overflow-layout-popover-content.directive.mjs +3 -3
  486. package/esm2020/overflow-layout/overflow-layout.component.mjs +3 -3
  487. package/esm2020/overflow-layout/overflow-layout.module.mjs +4 -4
  488. package/esm2020/overflow-layout/overflow-layout.service.mjs +3 -3
  489. package/esm2020/pagination/deprecated-pagination-compact.directive.mjs +3 -3
  490. package/esm2020/pagination/pagination.component.mjs +4 -4
  491. package/esm2020/pagination/pagination.module.mjs +4 -4
  492. package/esm2020/pagination/pagination.service.mjs +3 -3
  493. package/esm2020/panel/deprecated-panel-compact.directive.mjs +3 -3
  494. package/esm2020/panel/panel-content/panel-content.directive.mjs +3 -3
  495. package/esm2020/panel/panel-title/panel-title.directive.mjs +3 -3
  496. package/esm2020/panel/panel.component.mjs +4 -4
  497. package/esm2020/panel/panel.module.mjs +4 -4
  498. package/esm2020/popover/base/base-popover.class.mjs +3 -3
  499. package/esm2020/popover/popover-body/popover-body-directives/popover-body-footer.directive.mjs +3 -3
  500. package/esm2020/popover/popover-body/popover-body-directives/popover-body-header.directive.mjs +3 -3
  501. package/esm2020/popover/popover-body/popover-body.component.mjs +4 -4
  502. package/esm2020/popover/popover-container/popover-container.directive.mjs +3 -3
  503. package/esm2020/popover/popover-control/popover-control.component.mjs +3 -3
  504. package/esm2020/popover/popover-mobile/popover-mobile.component.mjs +3 -3
  505. package/esm2020/popover/popover-mobile/popover-mobile.module.mjs +4 -4
  506. package/esm2020/popover/popover-service/popover.service.mjs +3 -3
  507. package/esm2020/popover/popover-trigger.directive.mjs +3 -3
  508. package/esm2020/popover/popover.component.mjs +3 -3
  509. package/esm2020/popover/popover.module.mjs +4 -4
  510. package/esm2020/product-switch/product-switch/product-switch.component.mjs +3 -3
  511. package/esm2020/product-switch/product-switch-body/product-switch-body.component.mjs +4 -4
  512. package/esm2020/product-switch/product-switch.module.mjs +4 -4
  513. package/esm2020/progress-indicator/progress-indicator.component.mjs +4 -4
  514. package/esm2020/progress-indicator/progress-indicator.module.mjs +4 -4
  515. package/esm2020/quick-view/quick-view/quick-view.component.mjs +4 -4
  516. package/esm2020/quick-view/quick-view-group/quick-view-group.component.mjs +3 -3
  517. package/esm2020/quick-view/quick-view-group-item/quick-view-group-item.component.mjs +3 -3
  518. package/esm2020/quick-view/quick-view-group-item-content/quick-view-group-item-content-element.directive.mjs +3 -3
  519. package/esm2020/quick-view/quick-view-group-item-content/quick-view-group-item-content.component.mjs +3 -3
  520. package/esm2020/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +3 -3
  521. package/esm2020/quick-view/quick-view-group-title/quick-view-group-title.component.mjs +3 -3
  522. package/esm2020/quick-view/quick-view-subheader/quick-view-subheader.component.mjs +3 -3
  523. package/esm2020/quick-view/quick-view-subheader-subtitle/quick-view-subheader-subtitle.component.mjs +3 -3
  524. package/esm2020/quick-view/quick-view-subheader-title/quick-view-subheader-title.component.mjs +3 -3
  525. package/esm2020/quick-view/quick-view-title/quick-view-title.component.mjs +3 -3
  526. package/esm2020/quick-view/quick-view.module.mjs +4 -4
  527. package/esm2020/radio/deprecated-radio-button-compact.directive.mjs +3 -3
  528. package/esm2020/radio/radio-button/radio-button.component.mjs +6 -6
  529. package/esm2020/radio/radio.module.mjs +4 -4
  530. package/esm2020/rating-indicator/components/rating-indicator.component.mjs +6 -6
  531. package/esm2020/rating-indicator/pipes/rating-star-label.pipe.mjs +3 -3
  532. package/esm2020/rating-indicator/rating-indicator.module.mjs +4 -4
  533. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +4 -4
  534. package/esm2020/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +4 -4
  535. package/esm2020/resizable-card-layout/resizable-card-layout.module.mjs +4 -4
  536. package/esm2020/scroll-spy/scroll-spy.directive.mjs +3 -3
  537. package/esm2020/scroll-spy/scroll-spy.module.mjs +4 -4
  538. package/esm2020/scrollbar/scrollbar.component.mjs +4 -4
  539. package/esm2020/scrollbar/scrollbar.module.mjs +4 -4
  540. package/esm2020/segmented-button/segmented-button.component.mjs +5 -5
  541. package/esm2020/segmented-button/segmented-button.module.mjs +4 -4
  542. package/esm2020/select/deprecated-select-compact.directive.mjs +3 -3
  543. package/esm2020/select/option/option.component.mjs +3 -3
  544. package/esm2020/select/select-key-manager.service.mjs +3 -3
  545. package/esm2020/select/select-mobile/select-mobile.component.mjs +3 -3
  546. package/esm2020/select/select-mobile/select-mobile.module.mjs +4 -4
  547. package/esm2020/select/select.component.mjs +8 -8
  548. package/esm2020/select/select.module.mjs +4 -4
  549. package/esm2020/shared/services/value-state-message.service.mjs +3 -3
  550. package/esm2020/shellbar/deprecated-shellbar-compact.directive.mjs +3 -3
  551. package/esm2020/shellbar/product-menu/product-menu.component.mjs +3 -3
  552. package/esm2020/shellbar/shellbar-action/shellbar-action.component.mjs +3 -3
  553. package/esm2020/shellbar/shellbar-actions/shellbar-actions.component.mjs +3 -3
  554. package/esm2020/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.mjs +3 -3
  555. package/esm2020/shellbar/shellbar-logo/shellbar-logo.component.mjs +3 -3
  556. package/esm2020/shellbar/shellbar-sidenav.directive.mjs +3 -3
  557. package/esm2020/shellbar/shellbar-subtitle/shellbar-subtitle.component.mjs +3 -3
  558. package/esm2020/shellbar/shellbar-title/shellbar-title.component.mjs +3 -3
  559. package/esm2020/shellbar/shellbar.component.mjs +4 -4
  560. package/esm2020/shellbar/shellbar.module.mjs +4 -4
  561. package/esm2020/shellbar/user-menu/shellbar-user-menu.component.mjs +5 -5
  562. package/esm2020/side-navigation/side-navigation-main.directive.mjs +3 -3
  563. package/esm2020/side-navigation/side-navigation-utility.directive.mjs +3 -3
  564. package/esm2020/side-navigation/side-navigation.component.mjs +4 -4
  565. package/esm2020/side-navigation/side-navigation.module.mjs +4 -4
  566. package/esm2020/slider/deprecated-slider-cozy.directive.mjs +3 -3
  567. package/esm2020/slider/slider-position.directive.mjs +3 -3
  568. package/esm2020/slider/slider.component.mjs +6 -6
  569. package/esm2020/slider/slider.module.mjs +4 -4
  570. package/esm2020/split-button/deprecated-split-button-compact.directive.mjs +3 -3
  571. package/esm2020/split-button/split-button-utils/split-button.directives.mjs +3 -3
  572. package/esm2020/split-button/split-button.component.mjs +4 -4
  573. package/esm2020/split-button/split-button.module.mjs +4 -4
  574. package/esm2020/splitter/splitter-pagination/splitter-pagination.component.mjs +3 -3
  575. package/esm2020/splitter/splitter-pane-container/splitter-pane-container.component.mjs +7 -7
  576. package/esm2020/splitter/splitter-resizer/splitter-resizer.component.mjs +4 -4
  577. package/esm2020/splitter/splitter-split-pane/splitter-split-pane.component.mjs +4 -4
  578. package/esm2020/splitter/splitter.component.mjs +4 -4
  579. package/esm2020/splitter/splitter.module.mjs +4 -4
  580. package/esm2020/status-indicator/status-indicator.component.mjs +5 -5
  581. package/esm2020/status-indicator/status-indicator.module.mjs +4 -4
  582. package/esm2020/step-input/deprecated-step-input-compact.directive.mjs +3 -3
  583. package/esm2020/step-input/step-input.component.mjs +5 -5
  584. package/esm2020/step-input/step-input.module.mjs +4 -4
  585. package/esm2020/switch/deprecated-switch-compact.directive.mjs +3 -3
  586. package/esm2020/switch/switch.component.mjs +5 -5
  587. package/esm2020/switch/switch.module.mjs +4 -4
  588. package/esm2020/table/deprecated-table-compact.directive.mjs +3 -3
  589. package/esm2020/table/deprecated-table-condensed.directive.mjs +3 -3
  590. package/esm2020/table/directives/table-body.directive.mjs +3 -3
  591. package/esm2020/table/directives/table-cell.directive.mjs +3 -3
  592. package/esm2020/table/directives/table-footer.directive.mjs +3 -3
  593. package/esm2020/table/directives/table-header.directive.mjs +3 -3
  594. package/esm2020/table/directives/table-icon.directive.mjs +4 -4
  595. package/esm2020/table/directives/table-inner.directive.mjs +3 -3
  596. package/esm2020/table/directives/table-popover.directive.mjs +3 -3
  597. package/esm2020/table/directives/table-responsive-wrapper.directive.mjs +3 -3
  598. package/esm2020/table/directives/table-row.directive.mjs +3 -3
  599. package/esm2020/table/directives/table-status-indicator.directive.mjs +3 -3
  600. package/esm2020/table/directives/table-text.directive.mjs +3 -3
  601. package/esm2020/table/table-wrapper.component.mjs +4 -4
  602. package/esm2020/table/table.component.mjs +5 -5
  603. package/esm2020/table/table.module.mjs +4 -4
  604. package/esm2020/tabs/deprecated-tabs-compact.directive.mjs +3 -3
  605. package/esm2020/tabs/tab-item/tab-item.directive.mjs +4 -4
  606. package/esm2020/tabs/tab-item-expand/tab-item-expand.component.mjs +3 -3
  607. package/esm2020/tabs/tab-link/tab-link.directive.mjs +3 -3
  608. package/esm2020/tabs/tab-list.component.mjs +5 -5
  609. package/esm2020/tabs/tab-nav/tab-nav.component.mjs +5 -5
  610. package/esm2020/tabs/tab-panel/tab-panel.component.mjs +3 -3
  611. package/esm2020/tabs/tab-utils/tab-directives.mjs +31 -31
  612. package/esm2020/tabs/tabs.module.mjs +4 -4
  613. package/esm2020/text/text.component.mjs +4 -4
  614. package/esm2020/text/text.module.mjs +4 -4
  615. package/esm2020/theming/theming.module.mjs +4 -4
  616. package/esm2020/theming/theming.service.mjs +4 -4
  617. package/esm2020/tile/directives/numeric-content.directives.mjs +28 -28
  618. package/esm2020/tile/directives/tile.directives.mjs +70 -70
  619. package/esm2020/tile/tile.component.mjs +5 -5
  620. package/esm2020/tile/tile.module.mjs +4 -4
  621. package/esm2020/time/deprecated-time-content-density.directive.mjs +3 -3
  622. package/esm2020/time/i18n/time-i18n.mjs +3 -3
  623. package/esm2020/time/time-column/time-column.component.mjs +3 -3
  624. package/esm2020/time/time.component.mjs +5 -5
  625. package/esm2020/time/time.module.mjs +4 -4
  626. package/esm2020/time-picker/deprecated-timepicker-compact.directive.mjs +3 -3
  627. package/esm2020/time-picker/time-picker.component.mjs +3 -3
  628. package/esm2020/time-picker/time-picker.module.mjs +4 -4
  629. package/esm2020/timeline/components/timeline-node/timeline-node.component.mjs +3 -3
  630. package/esm2020/timeline/components/timeline-node-body/timeline-node-body.component.mjs +3 -3
  631. package/esm2020/timeline/components/timeline-node-footer/timeline-node-footer.component.mjs +3 -3
  632. package/esm2020/timeline/components/timeline-node-header/timeline-node-header-info/timeline-node-header-info.component.mjs +3 -3
  633. package/esm2020/timeline/components/timeline-node-header/timeline-node-header.component.mjs +3 -3
  634. package/esm2020/timeline/directives/class-bindings/timeline-header-info-sub-title.directive.mjs +3 -3
  635. package/esm2020/timeline/directives/class-bindings/timeline-node-header-info-text.directive.mjs +3 -3
  636. package/esm2020/timeline/directives/class-bindings/timeline-node-header-info-title.directive.mjs +3 -3
  637. package/esm2020/timeline/directives/timeline-first-list-outlet.directive.mjs +3 -3
  638. package/esm2020/timeline/directives/timeline-node-def.directive.mjs +3 -3
  639. package/esm2020/timeline/directives/timeline-second-list-outlet.directive.mjs +3 -3
  640. package/esm2020/timeline/services/timeline-position-control.service.mjs +3 -3
  641. package/esm2020/timeline/timeline.component.mjs +3 -3
  642. package/esm2020/timeline/timeline.module.mjs +4 -4
  643. package/esm2020/title/title.component.mjs +4 -4
  644. package/esm2020/title/title.module.mjs +4 -4
  645. package/esm2020/token/deprecated-tokenizer-content-density.directive.mjs +3 -3
  646. package/esm2020/token/token-input.directive.mjs +4 -4
  647. package/esm2020/token/token.component.mjs +4 -4
  648. package/esm2020/token/token.module.mjs +4 -4
  649. package/esm2020/token/tokenizer.component.mjs +5 -5
  650. package/esm2020/toolbar/deprecated-toolbar-size.directive.mjs +3 -3
  651. package/esm2020/toolbar/toolbar-form-label.directive.mjs +3 -3
  652. package/esm2020/toolbar/toolbar-item.directive.mjs +3 -3
  653. package/esm2020/toolbar/toolbar-label.directive.mjs +3 -3
  654. package/esm2020/toolbar/toolbar-overflow-button-menu.directive.mjs +3 -3
  655. package/esm2020/toolbar/toolbar-overflow-button.directive.mjs +3 -3
  656. package/esm2020/toolbar/toolbar-overflow-group.directive.mjs +3 -3
  657. package/esm2020/toolbar/toolbar-overflow-priority.directive.mjs +3 -3
  658. package/esm2020/toolbar/toolbar-separator.component.mjs +3 -3
  659. package/esm2020/toolbar/toolbar-spacer.component.mjs +3 -3
  660. package/esm2020/toolbar/toolbar.component.mjs +6 -6
  661. package/esm2020/toolbar/toolbar.module.mjs +4 -4
  662. package/esm2020/tree/tree-child.component.mjs +3 -3
  663. package/esm2020/tree/tree.component.mjs +4 -4
  664. package/esm2020/tree/tree.module.mjs +4 -4
  665. package/esm2020/upload-collection/upload-collection-button-group/upload-collection-button-group.component.mjs +3 -3
  666. package/esm2020/upload-collection/upload-collection-form-item/upload-collection-form-item.component.mjs +3 -3
  667. package/esm2020/upload-collection/upload-collection-item.directive.mjs +3 -3
  668. package/esm2020/upload-collection/upload-collection-simple.directives.mjs +21 -21
  669. package/esm2020/upload-collection/upload-collection.component.mjs +5 -5
  670. package/esm2020/upload-collection/upload-collection.module.mjs +4 -4
  671. package/esm2020/utils/abstract-fd-ngx-class.mjs +3 -3
  672. package/esm2020/utils/directives/auto-complete/auto-complete.directive.mjs +3 -3
  673. package/esm2020/utils/directives/auto-complete/auto-complete.module.mjs +4 -4
  674. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-helpers.module.mjs +4 -4
  675. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-item.directive.mjs +3 -3
  676. package/esm2020/utils/directives/focus-key-manager/focus-key-manager-list.directive.mjs +3 -3
  677. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.mjs +4 -4
  678. package/esm2020/utils/directives/ignore-click-on-selection/ignore-click-on-selection.module.mjs +4 -4
  679. package/esm2020/utils/directives/initial-focus/initial-focus.directive.mjs +3 -3
  680. package/esm2020/utils/directives/initial-focus/initial-focus.module.mjs +4 -4
  681. package/esm2020/utils/directives/line-clamp/line-clamp.directive.mjs +6 -6
  682. package/esm2020/utils/directives/line-clamp/line-clamp.module.mjs +4 -4
  683. package/esm2020/utils/directives/only-digits/only-digits.directive.mjs +3 -3
  684. package/esm2020/utils/directives/only-digits/only-digits.module.mjs +4 -4
  685. package/esm2020/utils/directives/overflow-list/overflow-list-item.directive.mjs +3 -3
  686. package/esm2020/utils/directives/overflow-list/overflow-list.directive.mjs +3 -3
  687. package/esm2020/utils/directives/overflow-list/overflow-list.module.mjs +4 -4
  688. package/esm2020/utils/directives/resize/resize-handle.directive.mjs +3 -3
  689. package/esm2020/utils/directives/resize/resize.directive.mjs +3 -3
  690. package/esm2020/utils/directives/resize/resize.module.mjs +4 -4
  691. package/esm2020/utils/directives/template/template.directive.mjs +3 -3
  692. package/esm2020/utils/directives/template/template.module.mjs +4 -4
  693. package/esm2020/utils/directives/truncate/truncate.directive.mjs +3 -3
  694. package/esm2020/utils/directives/truncate/truncate.module.mjs +4 -4
  695. package/esm2020/utils/drag-and-drop/dnd-item/dnd-item.directive.mjs +3 -3
  696. package/esm2020/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.mjs +3 -3
  697. package/esm2020/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.mjs +3 -3
  698. package/esm2020/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +3 -3
  699. package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +4 -4
  700. package/esm2020/utils/dynamic-component/dynamic-component-injector.mjs +1 -1
  701. package/esm2020/utils/dynamic-component/dynamic-component.service.mjs +3 -3
  702. package/esm2020/utils/pipes/displayFn.pipe.mjs +3 -3
  703. package/esm2020/utils/pipes/is-compact.pipe.mjs +3 -3
  704. package/esm2020/utils/pipes/pipe.module.mjs +4 -4
  705. package/esm2020/utils/pipes/safe.pipe.mjs +3 -3
  706. package/esm2020/utils/pipes/search-highlight.pipe.mjs +3 -3
  707. package/esm2020/utils/pipes/truncate.pipe.mjs +3 -3
  708. package/esm2020/utils/pipes/two-digits.pipe.mjs +3 -3
  709. package/esm2020/utils/pipes/value-by-path.pipe.mjs +3 -3
  710. package/esm2020/utils/services/content-density.service.mjs +3 -3
  711. package/esm2020/utils/services/destroyed.service.mjs +3 -3
  712. package/esm2020/utils/services/focus-trap.service.mjs +3 -3
  713. package/esm2020/utils/services/local-storage.service.mjs +3 -3
  714. package/esm2020/utils/services/resize-observer.service.mjs +7 -7
  715. package/esm2020/utils/services/rtl.service.mjs +3 -3
  716. package/esm2020/utils/services/tabbable-element.service.mjs +4 -4
  717. package/esm2020/utils/services/themes.service.mjs +3 -3
  718. package/esm2020/utils/utils.module.mjs +4 -4
  719. package/esm2020/vertical-navigation/vertical-navigation-group-header.directive.mjs +3 -3
  720. package/esm2020/vertical-navigation/vertical-navigation-main-navigation.component.mjs +4 -4
  721. package/esm2020/vertical-navigation/vertical-navigation.component.mjs +4 -4
  722. package/esm2020/vertical-navigation/vertical-navigation.module.mjs +4 -4
  723. package/esm2020/wizard/deprecated-wizard-compact.directive.mjs +3 -3
  724. package/esm2020/wizard/wizard-content/wizard-content.component.mjs +3 -3
  725. package/esm2020/wizard/wizard-navigation/wizard-navigation.component.mjs +3 -3
  726. package/esm2020/wizard/wizard-next-step/wizard-next-step.component.mjs +3 -3
  727. package/esm2020/wizard/wizard-progress-bar/wizard-progress-bar.directive.mjs +3 -3
  728. package/esm2020/wizard/wizard-step/wizard-step.component.mjs +3 -3
  729. package/esm2020/wizard/wizard-step-indicator/wizard-step-indicator.component.mjs +3 -3
  730. package/esm2020/wizard/wizard.component.mjs +5 -5
  731. package/esm2020/wizard/wizard.module.mjs +4 -4
  732. package/esm2020/wizard/wizard.service.mjs +3 -3
  733. package/facets/content/facet-content.component.d.ts +1 -1
  734. package/facets/facet/facet.component.d.ts +1 -1
  735. package/facets/facet-group.component.d.ts +1 -1
  736. package/feed-input/directives/feed-input-avatar.directive.d.ts +1 -1
  737. package/feed-input/directives/feed-input-button.directive.d.ts +1 -1
  738. package/feed-input/directives/feed-input-textarea.directive.d.ts +1 -1
  739. package/feed-input/feed-input.component.d.ts +1 -1
  740. package/feed-list-item/components/feed-list-action/feed-list-action.component.d.ts +1 -1
  741. package/feed-list-item/components/feed-list-avatar/feed-list-avatar.component.d.ts +1 -1
  742. package/feed-list-item/components/feed-list-footer/feed-list-footer.component.d.ts +1 -1
  743. package/feed-list-item/components/item/feed-list-item.component.d.ts +1 -1
  744. package/feed-list-item/components/list/feed-list.component.d.ts +1 -1
  745. package/feed-list-item/directives/byline.directive.d.ts +1 -1
  746. package/fesm2015/fundamental-ngx-core-action-bar.mjs +26 -26
  747. package/fesm2015/fundamental-ngx-core-action-bar.mjs.map +1 -1
  748. package/fesm2015/fundamental-ngx-core-action-sheet.mjs +27 -27
  749. package/fesm2015/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  750. package/fesm2015/fundamental-ngx-core-alert.mjs +14 -14
  751. package/fesm2015/fundamental-ngx-core-alert.mjs.map +1 -1
  752. package/fesm2015/fundamental-ngx-core-avatar-group.mjs +30 -30
  753. package/fesm2015/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  754. package/fesm2015/fundamental-ngx-core-avatar.mjs +8 -8
  755. package/fesm2015/fundamental-ngx-core-avatar.mjs.map +1 -1
  756. package/fesm2015/fundamental-ngx-core-bar.mjs +30 -30
  757. package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
  758. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +14 -14
  759. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  760. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs +11 -11
  761. package/fesm2015/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  762. package/fesm2015/fundamental-ngx-core-button.mjs +15 -15
  763. package/fesm2015/fundamental-ngx-core-button.mjs.map +1 -1
  764. package/fesm2015/fundamental-ngx-core-calendar.mjs +36 -36
  765. package/fesm2015/fundamental-ngx-core-calendar.mjs.map +1 -1
  766. package/fesm2015/fundamental-ngx-core-card.mjs +60 -60
  767. package/fesm2015/fundamental-ngx-core-card.mjs.map +1 -1
  768. package/fesm2015/fundamental-ngx-core-carousel.mjs +20 -20
  769. package/fesm2015/fundamental-ngx-core-carousel.mjs.map +1 -1
  770. package/fesm2015/fundamental-ngx-core-checkbox.mjs +12 -12
  771. package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
  772. package/fesm2015/fundamental-ngx-core-combobox.mjs +20 -20
  773. package/fesm2015/fundamental-ngx-core-content-density.mjs +37 -37
  774. package/fesm2015/fundamental-ngx-core-date-picker.mjs +10 -10
  775. package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +10 -10
  776. package/fesm2015/fundamental-ngx-core-datetime.mjs +24 -24
  777. package/fesm2015/fundamental-ngx-core-dialog.mjs +53 -53
  778. package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
  779. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +44 -44
  780. package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  781. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs +14 -14
  782. package/fesm2015/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  783. package/fesm2015/fundamental-ngx-core-facets.mjs +14 -14
  784. package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
  785. package/fesm2015/fundamental-ngx-core-feed-input.mjs +17 -17
  786. package/fesm2015/fundamental-ngx-core-feed-input.mjs.map +1 -1
  787. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +23 -23
  788. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  789. package/fesm2015/fundamental-ngx-core-file-uploader.mjs +21 -21
  790. package/fesm2015/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  791. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +14 -14
  792. package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  793. package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs +8 -8
  794. package/fesm2015/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  795. package/fesm2015/fundamental-ngx-core-form.mjs +86 -86
  796. package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
  797. package/fesm2015/fundamental-ngx-core-formatted-text.mjs +7 -7
  798. package/fesm2015/fundamental-ngx-core-grid-list.mjs +47 -47
  799. package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
  800. package/fesm2015/fundamental-ngx-core-icon.mjs +8 -8
  801. package/fesm2015/fundamental-ngx-core-icon.mjs.map +1 -1
  802. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs +21 -21
  803. package/fesm2015/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  804. package/fesm2015/fundamental-ngx-core-infinite-scroll.mjs +7 -7
  805. package/fesm2015/fundamental-ngx-core-info-label.mjs +8 -8
  806. package/fesm2015/fundamental-ngx-core-info-label.mjs.map +1 -1
  807. package/fesm2015/fundamental-ngx-core-inline-help.mjs +7 -7
  808. package/fesm2015/fundamental-ngx-core-input-group.mjs +21 -21
  809. package/fesm2015/fundamental-ngx-core-input-group.mjs.map +1 -1
  810. package/fesm2015/fundamental-ngx-core-layout-grid.mjs +14 -14
  811. package/fesm2015/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  812. package/fesm2015/fundamental-ngx-core-layout-panel.mjs +32 -32
  813. package/fesm2015/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  814. package/fesm2015/fundamental-ngx-core-link.mjs +18 -17
  815. package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
  816. package/fesm2015/fundamental-ngx-core-list.mjs +66 -66
  817. package/fesm2015/fundamental-ngx-core-list.mjs.map +1 -1
  818. package/fesm2015/fundamental-ngx-core-menu.mjs +48 -48
  819. package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
  820. package/fesm2015/fundamental-ngx-core-message-box.mjs +41 -41
  821. package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
  822. package/fesm2015/fundamental-ngx-core-message-page.mjs +20 -20
  823. package/fesm2015/fundamental-ngx-core-message-page.mjs.map +1 -1
  824. package/fesm2015/fundamental-ngx-core-message-strip.mjs +8 -8
  825. package/fesm2015/fundamental-ngx-core-message-strip.mjs.map +1 -1
  826. package/fesm2015/fundamental-ngx-core-message-toast.mjs +14 -14
  827. package/fesm2015/fundamental-ngx-core-message-toast.mjs.map +1 -1
  828. package/fesm2015/fundamental-ngx-core-micro-process-flow.mjs +22 -22
  829. package/fesm2015/fundamental-ngx-core-multi-input.mjs +17 -17
  830. package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
  831. package/fesm2015/fundamental-ngx-core-nested-list.mjs +43 -43
  832. package/fesm2015/fundamental-ngx-core-nested-list.mjs.map +1 -1
  833. package/fesm2015/fundamental-ngx-core-notification.mjs +66 -66
  834. package/fesm2015/fundamental-ngx-core-notification.mjs.map +1 -1
  835. package/fesm2015/fundamental-ngx-core-object-identifier.mjs +9 -9
  836. package/fesm2015/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  837. package/fesm2015/fundamental-ngx-core-object-marker.mjs +9 -9
  838. package/fesm2015/fundamental-ngx-core-object-marker.mjs.map +1 -1
  839. package/fesm2015/fundamental-ngx-core-object-number.mjs +8 -8
  840. package/fesm2015/fundamental-ngx-core-object-number.mjs.map +1 -1
  841. package/fesm2015/fundamental-ngx-core-object-status.mjs +9 -9
  842. package/fesm2015/fundamental-ngx-core-object-status.mjs.map +1 -1
  843. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +31 -31
  844. package/fesm2015/fundamental-ngx-core-pagination.mjs +14 -14
  845. package/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
  846. package/fesm2015/fundamental-ngx-core-panel.mjs +17 -17
  847. package/fesm2015/fundamental-ngx-core-panel.mjs.map +1 -1
  848. package/fesm2015/fundamental-ngx-core-popover.mjs +39 -39
  849. package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
  850. package/fesm2015/fundamental-ngx-core-product-switch.mjs +11 -11
  851. package/fesm2015/fundamental-ngx-core-product-switch.mjs.map +1 -1
  852. package/fesm2015/fundamental-ngx-core-progress-indicator.mjs +8 -8
  853. package/fesm2015/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
  854. package/fesm2015/fundamental-ngx-core-quick-view.mjs +38 -38
  855. package/fesm2015/fundamental-ngx-core-quick-view.mjs.map +1 -1
  856. package/fesm2015/fundamental-ngx-core-radio.mjs +12 -12
  857. package/fesm2015/fundamental-ngx-core-radio.mjs.map +1 -1
  858. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +12 -12
  859. package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  860. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs +12 -12
  861. package/fesm2015/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  862. package/fesm2015/fundamental-ngx-core-scroll-spy.mjs +7 -7
  863. package/fesm2015/fundamental-ngx-core-scrollbar.mjs +8 -8
  864. package/fesm2015/fundamental-ngx-core-scrollbar.mjs.map +1 -1
  865. package/fesm2015/fundamental-ngx-core-segmented-button.mjs +9 -9
  866. package/fesm2015/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  867. package/fesm2015/fundamental-ngx-core-select.mjs +27 -27
  868. package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
  869. package/fesm2015/fundamental-ngx-core-shared.mjs +3 -3
  870. package/fesm2015/fundamental-ngx-core-shellbar.mjs +39 -39
  871. package/fesm2015/fundamental-ngx-core-shellbar.mjs.map +1 -1
  872. package/fesm2015/fundamental-ngx-core-side-navigation.mjs +14 -14
  873. package/fesm2015/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  874. package/fesm2015/fundamental-ngx-core-slider.mjs +15 -15
  875. package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
  876. package/fesm2015/fundamental-ngx-core-split-button.mjs +14 -14
  877. package/fesm2015/fundamental-ngx-core-split-button.mjs.map +1 -1
  878. package/fesm2015/fundamental-ngx-core-splitter.mjs +23 -23
  879. package/fesm2015/fundamental-ngx-core-splitter.mjs.map +1 -1
  880. package/fesm2015/fundamental-ngx-core-status-indicator.mjs +8 -8
  881. package/fesm2015/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  882. package/fesm2015/fundamental-ngx-core-step-input.mjs +12 -12
  883. package/fesm2015/fundamental-ngx-core-step-input.mjs.map +1 -1
  884. package/fesm2015/fundamental-ngx-core-switch.mjs +12 -12
  885. package/fesm2015/fundamental-ngx-core-switch.mjs.map +1 -1
  886. package/fesm2015/fundamental-ngx-core-table.mjs +52 -52
  887. package/fesm2015/fundamental-ngx-core-table.mjs.map +1 -1
  888. package/fesm2015/fundamental-ngx-core-tabs.mjs +58 -58
  889. package/fesm2015/fundamental-ngx-core-tabs.mjs.map +1 -1
  890. package/fesm2015/fundamental-ngx-core-text.mjs +8 -8
  891. package/fesm2015/fundamental-ngx-core-text.mjs.map +1 -1
  892. package/fesm2015/fundamental-ngx-core-theming.mjs +7 -7
  893. package/fesm2015/fundamental-ngx-core-theming.mjs.map +1 -1
  894. package/fesm2015/fundamental-ngx-core-tile.mjs +104 -104
  895. package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  896. package/fesm2015/fundamental-ngx-core-time-picker.mjs +10 -10
  897. package/fesm2015/fundamental-ngx-core-time.mjs +18 -18
  898. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  899. package/fesm2015/fundamental-ngx-core-timeline.mjs +43 -43
  900. package/fesm2015/fundamental-ngx-core-title.mjs +8 -8
  901. package/fesm2015/fundamental-ngx-core-title.mjs.map +1 -1
  902. package/fesm2015/fundamental-ngx-core-token.mjs +18 -18
  903. package/fesm2015/fundamental-ngx-core-token.mjs.map +1 -1
  904. package/fesm2015/fundamental-ngx-core-toolbar.mjs +39 -39
  905. package/fesm2015/fundamental-ngx-core-toolbar.mjs.map +1 -1
  906. package/fesm2015/fundamental-ngx-core-tree.mjs +11 -11
  907. package/fesm2015/fundamental-ngx-core-tree.mjs.map +1 -1
  908. package/fesm2015/fundamental-ngx-core-upload-collection.mjs +39 -39
  909. package/fesm2015/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  910. package/fesm2015/fundamental-ngx-core-utils.mjs +160 -160
  911. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  912. package/fesm2015/fundamental-ngx-core-vertical-navigation.mjs +15 -15
  913. package/fesm2015/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  914. package/fesm2015/fundamental-ngx-core-wizard.mjs +33 -33
  915. package/fesm2015/fundamental-ngx-core-wizard.mjs.map +1 -1
  916. package/fesm2015/fundamental-ngx-core.mjs +4 -4
  917. package/fesm2020/fundamental-ngx-core-action-bar.mjs +26 -26
  918. package/fesm2020/fundamental-ngx-core-action-bar.mjs.map +1 -1
  919. package/fesm2020/fundamental-ngx-core-action-sheet.mjs +27 -27
  920. package/fesm2020/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  921. package/fesm2020/fundamental-ngx-core-alert.mjs +14 -14
  922. package/fesm2020/fundamental-ngx-core-alert.mjs.map +1 -1
  923. package/fesm2020/fundamental-ngx-core-avatar-group.mjs +30 -30
  924. package/fesm2020/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  925. package/fesm2020/fundamental-ngx-core-avatar.mjs +8 -8
  926. package/fesm2020/fundamental-ngx-core-avatar.mjs.map +1 -1
  927. package/fesm2020/fundamental-ngx-core-bar.mjs +30 -30
  928. package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
  929. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +14 -14
  930. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  931. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs +11 -11
  932. package/fesm2020/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  933. package/fesm2020/fundamental-ngx-core-button.mjs +15 -15
  934. package/fesm2020/fundamental-ngx-core-button.mjs.map +1 -1
  935. package/fesm2020/fundamental-ngx-core-calendar.mjs +36 -36
  936. package/fesm2020/fundamental-ngx-core-calendar.mjs.map +1 -1
  937. package/fesm2020/fundamental-ngx-core-card.mjs +60 -60
  938. package/fesm2020/fundamental-ngx-core-card.mjs.map +1 -1
  939. package/fesm2020/fundamental-ngx-core-carousel.mjs +20 -20
  940. package/fesm2020/fundamental-ngx-core-carousel.mjs.map +1 -1
  941. package/fesm2020/fundamental-ngx-core-checkbox.mjs +12 -12
  942. package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
  943. package/fesm2020/fundamental-ngx-core-combobox.mjs +20 -20
  944. package/fesm2020/fundamental-ngx-core-content-density.mjs +37 -37
  945. package/fesm2020/fundamental-ngx-core-date-picker.mjs +10 -10
  946. package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +10 -10
  947. package/fesm2020/fundamental-ngx-core-datetime.mjs +24 -24
  948. package/fesm2020/fundamental-ngx-core-dialog.mjs +53 -53
  949. package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
  950. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +44 -44
  951. package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  952. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs +14 -14
  953. package/fesm2020/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  954. package/fesm2020/fundamental-ngx-core-facets.mjs +14 -14
  955. package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
  956. package/fesm2020/fundamental-ngx-core-feed-input.mjs +17 -17
  957. package/fesm2020/fundamental-ngx-core-feed-input.mjs.map +1 -1
  958. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +23 -23
  959. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  960. package/fesm2020/fundamental-ngx-core-file-uploader.mjs +21 -21
  961. package/fesm2020/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  962. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +14 -14
  963. package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  964. package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs +8 -8
  965. package/fesm2020/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  966. package/fesm2020/fundamental-ngx-core-form.mjs +86 -86
  967. package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
  968. package/fesm2020/fundamental-ngx-core-formatted-text.mjs +7 -7
  969. package/fesm2020/fundamental-ngx-core-grid-list.mjs +47 -47
  970. package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
  971. package/fesm2020/fundamental-ngx-core-icon.mjs +8 -8
  972. package/fesm2020/fundamental-ngx-core-icon.mjs.map +1 -1
  973. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs +21 -21
  974. package/fesm2020/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  975. package/fesm2020/fundamental-ngx-core-infinite-scroll.mjs +7 -7
  976. package/fesm2020/fundamental-ngx-core-info-label.mjs +8 -8
  977. package/fesm2020/fundamental-ngx-core-info-label.mjs.map +1 -1
  978. package/fesm2020/fundamental-ngx-core-inline-help.mjs +7 -7
  979. package/fesm2020/fundamental-ngx-core-input-group.mjs +21 -21
  980. package/fesm2020/fundamental-ngx-core-input-group.mjs.map +1 -1
  981. package/fesm2020/fundamental-ngx-core-layout-grid.mjs +14 -14
  982. package/fesm2020/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  983. package/fesm2020/fundamental-ngx-core-layout-panel.mjs +32 -32
  984. package/fesm2020/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  985. package/fesm2020/fundamental-ngx-core-link.mjs +18 -17
  986. package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
  987. package/fesm2020/fundamental-ngx-core-list.mjs +66 -66
  988. package/fesm2020/fundamental-ngx-core-list.mjs.map +1 -1
  989. package/fesm2020/fundamental-ngx-core-menu.mjs +48 -48
  990. package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
  991. package/fesm2020/fundamental-ngx-core-message-box.mjs +41 -41
  992. package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
  993. package/fesm2020/fundamental-ngx-core-message-page.mjs +20 -20
  994. package/fesm2020/fundamental-ngx-core-message-page.mjs.map +1 -1
  995. package/fesm2020/fundamental-ngx-core-message-strip.mjs +8 -8
  996. package/fesm2020/fundamental-ngx-core-message-strip.mjs.map +1 -1
  997. package/fesm2020/fundamental-ngx-core-message-toast.mjs +14 -14
  998. package/fesm2020/fundamental-ngx-core-message-toast.mjs.map +1 -1
  999. package/fesm2020/fundamental-ngx-core-micro-process-flow.mjs +22 -22
  1000. package/fesm2020/fundamental-ngx-core-multi-input.mjs +17 -17
  1001. package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
  1002. package/fesm2020/fundamental-ngx-core-nested-list.mjs +43 -43
  1003. package/fesm2020/fundamental-ngx-core-nested-list.mjs.map +1 -1
  1004. package/fesm2020/fundamental-ngx-core-notification.mjs +66 -66
  1005. package/fesm2020/fundamental-ngx-core-notification.mjs.map +1 -1
  1006. package/fesm2020/fundamental-ngx-core-object-identifier.mjs +9 -9
  1007. package/fesm2020/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  1008. package/fesm2020/fundamental-ngx-core-object-marker.mjs +9 -9
  1009. package/fesm2020/fundamental-ngx-core-object-marker.mjs.map +1 -1
  1010. package/fesm2020/fundamental-ngx-core-object-number.mjs +8 -8
  1011. package/fesm2020/fundamental-ngx-core-object-number.mjs.map +1 -1
  1012. package/fesm2020/fundamental-ngx-core-object-status.mjs +9 -9
  1013. package/fesm2020/fundamental-ngx-core-object-status.mjs.map +1 -1
  1014. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +31 -31
  1015. package/fesm2020/fundamental-ngx-core-pagination.mjs +14 -14
  1016. package/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
  1017. package/fesm2020/fundamental-ngx-core-panel.mjs +17 -17
  1018. package/fesm2020/fundamental-ngx-core-panel.mjs.map +1 -1
  1019. package/fesm2020/fundamental-ngx-core-popover.mjs +39 -39
  1020. package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
  1021. package/fesm2020/fundamental-ngx-core-product-switch.mjs +11 -11
  1022. package/fesm2020/fundamental-ngx-core-product-switch.mjs.map +1 -1
  1023. package/fesm2020/fundamental-ngx-core-progress-indicator.mjs +8 -8
  1024. package/fesm2020/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
  1025. package/fesm2020/fundamental-ngx-core-quick-view.mjs +38 -38
  1026. package/fesm2020/fundamental-ngx-core-quick-view.mjs.map +1 -1
  1027. package/fesm2020/fundamental-ngx-core-radio.mjs +12 -12
  1028. package/fesm2020/fundamental-ngx-core-radio.mjs.map +1 -1
  1029. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +12 -12
  1030. package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  1031. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs +12 -12
  1032. package/fesm2020/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  1033. package/fesm2020/fundamental-ngx-core-scroll-spy.mjs +7 -7
  1034. package/fesm2020/fundamental-ngx-core-scrollbar.mjs +8 -8
  1035. package/fesm2020/fundamental-ngx-core-scrollbar.mjs.map +1 -1
  1036. package/fesm2020/fundamental-ngx-core-segmented-button.mjs +9 -9
  1037. package/fesm2020/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  1038. package/fesm2020/fundamental-ngx-core-select.mjs +27 -27
  1039. package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
  1040. package/fesm2020/fundamental-ngx-core-shared.mjs +3 -3
  1041. package/fesm2020/fundamental-ngx-core-shellbar.mjs +39 -39
  1042. package/fesm2020/fundamental-ngx-core-shellbar.mjs.map +1 -1
  1043. package/fesm2020/fundamental-ngx-core-side-navigation.mjs +14 -14
  1044. package/fesm2020/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  1045. package/fesm2020/fundamental-ngx-core-slider.mjs +15 -15
  1046. package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
  1047. package/fesm2020/fundamental-ngx-core-split-button.mjs +14 -14
  1048. package/fesm2020/fundamental-ngx-core-split-button.mjs.map +1 -1
  1049. package/fesm2020/fundamental-ngx-core-splitter.mjs +23 -23
  1050. package/fesm2020/fundamental-ngx-core-splitter.mjs.map +1 -1
  1051. package/fesm2020/fundamental-ngx-core-status-indicator.mjs +8 -8
  1052. package/fesm2020/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  1053. package/fesm2020/fundamental-ngx-core-step-input.mjs +12 -12
  1054. package/fesm2020/fundamental-ngx-core-step-input.mjs.map +1 -1
  1055. package/fesm2020/fundamental-ngx-core-switch.mjs +12 -12
  1056. package/fesm2020/fundamental-ngx-core-switch.mjs.map +1 -1
  1057. package/fesm2020/fundamental-ngx-core-table.mjs +52 -52
  1058. package/fesm2020/fundamental-ngx-core-table.mjs.map +1 -1
  1059. package/fesm2020/fundamental-ngx-core-tabs.mjs +58 -58
  1060. package/fesm2020/fundamental-ngx-core-tabs.mjs.map +1 -1
  1061. package/fesm2020/fundamental-ngx-core-text.mjs +8 -8
  1062. package/fesm2020/fundamental-ngx-core-text.mjs.map +1 -1
  1063. package/fesm2020/fundamental-ngx-core-theming.mjs +7 -7
  1064. package/fesm2020/fundamental-ngx-core-theming.mjs.map +1 -1
  1065. package/fesm2020/fundamental-ngx-core-tile.mjs +104 -104
  1066. package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  1067. package/fesm2020/fundamental-ngx-core-time-picker.mjs +10 -10
  1068. package/fesm2020/fundamental-ngx-core-time.mjs +18 -18
  1069. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  1070. package/fesm2020/fundamental-ngx-core-timeline.mjs +43 -43
  1071. package/fesm2020/fundamental-ngx-core-title.mjs +8 -8
  1072. package/fesm2020/fundamental-ngx-core-title.mjs.map +1 -1
  1073. package/fesm2020/fundamental-ngx-core-token.mjs +18 -18
  1074. package/fesm2020/fundamental-ngx-core-token.mjs.map +1 -1
  1075. package/fesm2020/fundamental-ngx-core-toolbar.mjs +39 -39
  1076. package/fesm2020/fundamental-ngx-core-toolbar.mjs.map +1 -1
  1077. package/fesm2020/fundamental-ngx-core-tree.mjs +11 -11
  1078. package/fesm2020/fundamental-ngx-core-tree.mjs.map +1 -1
  1079. package/fesm2020/fundamental-ngx-core-upload-collection.mjs +39 -39
  1080. package/fesm2020/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  1081. package/fesm2020/fundamental-ngx-core-utils.mjs +160 -160
  1082. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  1083. package/fesm2020/fundamental-ngx-core-vertical-navigation.mjs +15 -15
  1084. package/fesm2020/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  1085. package/fesm2020/fundamental-ngx-core-wizard.mjs +33 -33
  1086. package/fesm2020/fundamental-ngx-core-wizard.mjs.map +1 -1
  1087. package/fesm2020/fundamental-ngx-core.mjs +4 -4
  1088. package/file-uploader/deprecated-file-uploader-content-density.directive.d.ts +1 -1
  1089. package/file-uploader/directives/file-uploader-dragndrop.directive.d.ts +1 -1
  1090. package/file-uploader/directives/file-uploader-select.directive.d.ts +1 -1
  1091. package/file-uploader/file-uploader.component.d.ts +1 -1
  1092. package/fixed-card-layout/fixed-card-layout-item/fixed-card-layout-item.component.d.ts +1 -1
  1093. package/fixed-card-layout/fixed-card-layout.component.d.ts +2 -2
  1094. package/flexible-column-layout/flexible-column-layout.component.d.ts +1 -1
  1095. package/form/fieldset/fieldset.component.d.ts +1 -1
  1096. package/form/form-control/deprecated-form-control-content-density.directive.d.ts +1 -1
  1097. package/form/form-control/form-control.component.d.ts +1 -1
  1098. package/form/form-control/input-form-control.directive.d.ts +1 -1
  1099. package/form/form-control/textarea-form-control.directive.d.ts +1 -1
  1100. package/form/form-group/form-group.component.d.ts +1 -1
  1101. package/form/form-header/form-header.component.d.ts +1 -1
  1102. package/form/form-input-message-group/form-input-message-group.component.d.ts +1 -1
  1103. package/form/form-item/form-item.component.d.ts +1 -1
  1104. package/form/form-label/form-label.component.d.ts +1 -1
  1105. package/form/form-legend/form-legend.directive.d.ts +1 -1
  1106. package/form/form-message/form-message.component.d.ts +1 -1
  1107. package/formatted-text/formatted-text.component.d.ts +1 -1
  1108. package/fundamental-ngx-core-v0.37.2.tgz +0 -0
  1109. package/grid-list/components/grid-list/grid-list-base.component.d.ts +1 -1
  1110. package/grid-list/components/grid-list/grid-list.component.d.ts +1 -1
  1111. package/grid-list/components/grid-list-filter-bar/grid-list-filter-bar.component.d.ts +1 -1
  1112. package/grid-list/components/grid-list-footer/grid-list-footer.component.d.ts +1 -1
  1113. package/grid-list/components/grid-list-group-header/grid-list-group-header.component.d.ts +1 -1
  1114. package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +1 -1
  1115. package/grid-list/components/grid-list-item-footer-bar/grid-list-item-footer-bar.component.d.ts +1 -1
  1116. package/grid-list/components/grid-list-item-toolbar/grid-list-item-toolbar.component.d.ts +1 -1
  1117. package/grid-list/components/grid-list-more-btn/grid-list-more-btn.component.d.ts +1 -1
  1118. package/grid-list/components/grid-list-title-bar/grid-list-title-bar.component.d.ts +1 -1
  1119. package/grid-list/components/grid-list-title-bar/grid-list-title-bar.directive.d.ts +1 -1
  1120. package/grid-list/components/grid-list-title-bar-spacer/grid-list-title-bar-spacer.component.d.ts +1 -1
  1121. package/grid-list/directives/grid-list-item-body.directive.d.ts +1 -1
  1122. package/grid-list/directives/grid-list-item-image.directive.d.ts +1 -1
  1123. package/icon/icon.component.d.ts +1 -1
  1124. package/illustrated-message/components/illustrated-message-actions/illustrated-message-actions.component.d.ts +1 -1
  1125. package/illustrated-message/components/illustrated-message-figcaption/illustrated-message-figcaption.component.d.ts +1 -1
  1126. package/illustrated-message/directives/illustrated-message-text/illustrated-message-text.directive.d.ts +1 -1
  1127. package/illustrated-message/directives/illustrated-message-title/illustrated-message-title.directive.d.ts +1 -1
  1128. package/illustrated-message/illustrated-message.component.d.ts +1 -1
  1129. package/infinite-scroll/infinite-scroll.directive.d.ts +1 -1
  1130. package/info-label/info-label.component.d.ts +1 -1
  1131. package/inline-help/inline-help.directive.d.ts +1 -1
  1132. package/input-group/deprecated-input-group-compact.directive.d.ts +1 -1
  1133. package/input-group/input-group-directives.d.ts +3 -3
  1134. package/input-group/input-group.component.d.ts +1 -1
  1135. package/layout-grid/directives/layout-grid-col.directive.d.ts +1 -1
  1136. package/layout-grid/directives/layout-grid-row.directive.d.ts +1 -1
  1137. package/layout-grid/layout-grid.component.d.ts +1 -1
  1138. package/layout-panel/layout-panel-actions/layout-panel-actions.component.d.ts +1 -1
  1139. package/layout-panel/layout-panel-body/layout-panel-body.component.d.ts +1 -1
  1140. package/layout-panel/layout-panel-description/layout-panel-description.component.d.ts +1 -1
  1141. package/layout-panel/layout-panel-filters/layout-panel-filters.component.d.ts +1 -1
  1142. package/layout-panel/layout-panel-footer/layout-panel-footer.component.d.ts +1 -1
  1143. package/layout-panel/layout-panel-head/layout-panel-head.component.d.ts +1 -1
  1144. package/layout-panel/layout-panel-header/layout-panel-header.component.d.ts +1 -1
  1145. package/layout-panel/layout-panel-title/layout-panel-title.directive.d.ts +1 -1
  1146. package/layout-panel/layout-panel.component.d.ts +1 -1
  1147. package/link/link.component.d.ts +6 -4
  1148. package/list/deprecated-list-content-density,directive.d.ts +1 -1
  1149. package/list/directives/byline/list-byline-left.directive.d.ts +1 -1
  1150. package/list/directives/byline/list-byline-right.directive.d.ts +1 -1
  1151. package/list/directives/byline/list-byline.directive.d.ts +1 -1
  1152. package/list/directives/byline/list-content.directive.d.ts +1 -1
  1153. package/list/directives/byline/list-thumbnail.directive.d.ts +1 -1
  1154. package/list/directives/list-footer.directive.d.ts +1 -1
  1155. package/list/directives/list-group-header.directive.d.ts +1 -1
  1156. package/list/directives/list-icon.directive.d.ts +1 -1
  1157. package/list/directives/list-link.directive.d.ts +1 -1
  1158. package/list/directives/list-navigation-item-arrow.directive.d.ts +1 -1
  1159. package/list/directives/list-navigation-item-text.directive.d.ts +1 -1
  1160. package/list/directives/list-secondary.directive.d.ts +1 -1
  1161. package/list/directives/list-title-text.directive.d.ts +1 -1
  1162. package/list/directives/list-title.directive.d.ts +1 -1
  1163. package/list/list-focus-item.model.d.ts +1 -1
  1164. package/list/list-item/list-item.component.d.ts +1 -1
  1165. package/list/list-message.directive.d.ts +1 -1
  1166. package/list/list-navigation-item/list-navigation-item.component.d.ts +1 -1
  1167. package/list/list.component.d.ts +1 -1
  1168. package/menu/directives/deprecated-menu-compact.directive.d.ts +1 -1
  1169. package/menu/directives/menu-addon.directive.d.ts +1 -1
  1170. package/menu/directives/menu-interactive.directive.d.ts +1 -1
  1171. package/menu/directives/menu-shortcut.directive.d.ts +1 -1
  1172. package/menu/directives/menu-title.directive.d.ts +1 -1
  1173. package/menu/directives/menu-trigger.directive.d.ts +1 -1
  1174. package/menu/menu-item/menu-item.component.d.ts +2 -2
  1175. package/menu/menu-mobile/menu-mobile.component.d.ts +1 -1
  1176. package/menu/menu-separator/menu-separator.component.d.ts +1 -1
  1177. package/menu/menu.component.d.ts +1 -1
  1178. package/message-box/directives/message-box-decisive-button.directive.d.ts +1 -1
  1179. package/message-box/message-box-body/message-box-body.component.d.ts +1 -1
  1180. package/message-box/message-box-container/message-box-container.component.d.ts +1 -1
  1181. package/message-box/message-box-default/message-box-default.component.d.ts +1 -1
  1182. package/message-box/message-box-footer/message-box-footer.component.d.ts +1 -1
  1183. package/message-box/message-box-footer-button/message-box-footer-button.component.d.ts +1 -1
  1184. package/message-box/message-box-header/message-box-header.component.d.ts +1 -1
  1185. package/message-box/message-box-semantic-icon/message-box-semantic-icon.component.d.ts +1 -1
  1186. package/message-box/message-box.component.d.ts +1 -1
  1187. package/message-page/message-page-actions/message-page-actions.component.d.ts +1 -1
  1188. package/message-page/message-page-more/message-page-more.component.d.ts +1 -1
  1189. package/message-page/message-page-subtitle/message-page-subtitle.component.d.ts +1 -1
  1190. package/message-page/message-page-title/message-page-title.component.d.ts +1 -1
  1191. package/message-page/message-page.component.d.ts +1 -1
  1192. package/message-strip/message-strip.component.d.ts +1 -1
  1193. package/message-toast/message-toast-utils/message-toast-container.component.d.ts +1 -1
  1194. package/message-toast/message-toast.component.d.ts +1 -1
  1195. package/micro-process-flow/components/micro-process-flow/deprecated-micro-process-flow-content-density.directive.d.ts +1 -1
  1196. package/micro-process-flow/components/micro-process-flow/micro-process-flow.component.d.ts +1 -1
  1197. package/micro-process-flow/components/micro-process-flow-icon/micro-process-flow-icon.component.d.ts +1 -1
  1198. package/micro-process-flow/components/micro-process-flow-item/micro-process-flow-item.component.d.ts +1 -1
  1199. package/micro-process-flow/micro-process-flow-focusable-item.directive.d.ts +1 -1
  1200. package/micro-process-flow/micro-process-flow-intermediary-item.directive.d.ts +1 -1
  1201. package/multi-input/deprecated-multi-input-compact.directive.d.ts +1 -1
  1202. package/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +1 -1
  1203. package/multi-input/multi-input.component.d.ts +1 -1
  1204. package/nested-list/deprecated-nested-list-compact.directive.d.ts +1 -1
  1205. package/nested-list/nested-content/nested-list-content.directive.d.ts +1 -1
  1206. package/nested-list/nested-item/nested-item.directive.d.ts +1 -1
  1207. package/nested-list/nested-link/nested-link.directive.d.ts +1 -1
  1208. package/nested-list/nested-list/nested-list.directive.d.ts +1 -1
  1209. package/nested-list/nested-list-directives.d.ts +4 -4
  1210. package/nested-list/nested-list-popover/nested-list-popover.component.d.ts +1 -1
  1211. package/nested-list/prepared-nested-list/prepared-nested-list.component.d.ts +1 -1
  1212. package/notification/directives/notification-footer-content.directive.d.ts +1 -1
  1213. package/notification/directives/notification-indicator.directive.d.ts +1 -1
  1214. package/notification/directives/notification-limit-description.directive.d.ts +1 -1
  1215. package/notification/directives/notification-limit-title.directive.d.ts +1 -1
  1216. package/notification/directives/notification-paragraph.directive.d.ts +1 -1
  1217. package/notification/directives/notification-separator.directive.d.ts +1 -1
  1218. package/notification/directives/notification-title.directive.d.ts +1 -1
  1219. package/notification/notification/notification.component.d.ts +1 -1
  1220. package/notification/notification-actions/notification-actions.component.d.ts +1 -1
  1221. package/notification/notification-body/notification-body.component.d.ts +1 -1
  1222. package/notification/notification-content/notification-content.component.d.ts +1 -1
  1223. package/notification/notification-footer/notification-footer.component.d.ts +1 -1
  1224. package/notification/notification-group/notification-group.component.d.ts +1 -1
  1225. package/notification/notification-group-header/notification-group-header.component.d.ts +1 -1
  1226. package/notification/notification-group-list/notification-group-list.component.d.ts +1 -1
  1227. package/notification/notification-header/notification-header.component.d.ts +1 -1
  1228. package/notification/notification-limit/notification-limit.component.d.ts +1 -1
  1229. package/notification/notification-utils/notification-container.d.ts +1 -1
  1230. package/notification/notification-utils/notification-group-base.d.ts +1 -1
  1231. package/object-identifier/object-identifier.component.d.ts +1 -1
  1232. package/object-marker/object-marker.component.d.ts +1 -1
  1233. package/object-number/object-number.component.d.ts +1 -1
  1234. package/object-status/object-status.component.d.ts +1 -1
  1235. package/overflow-layout/directives/overflow-expand.directive.d.ts +1 -1
  1236. package/overflow-layout/directives/overflow-item-container-ref.directive.d.ts +1 -1
  1237. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +1 -1
  1238. package/overflow-layout/directives/overflow-layout-focusable-item.directive.d.ts +1 -1
  1239. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +1 -1
  1240. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +1 -1
  1241. package/overflow-layout/directives/overflow-layout-popover-content.directive.d.ts +1 -1
  1242. package/overflow-layout/overflow-layout.component.d.ts +1 -1
  1243. package/package.json +9 -9
  1244. package/pagination/deprecated-pagination-compact.directive.d.ts +1 -1
  1245. package/pagination/pagination.component.d.ts +1 -1
  1246. package/panel/deprecated-panel-compact.directive.d.ts +1 -1
  1247. package/panel/panel-content/panel-content.directive.d.ts +1 -1
  1248. package/panel/panel-title/panel-title.directive.d.ts +1 -1
  1249. package/panel/panel.component.d.ts +1 -1
  1250. package/popover/base/base-popover.class.d.ts +1 -1
  1251. package/popover/popover-body/popover-body-directives/popover-body-footer.directive.d.ts +1 -1
  1252. package/popover/popover-body/popover-body-directives/popover-body-header.directive.d.ts +1 -1
  1253. package/popover/popover-body/popover-body.component.d.ts +1 -1
  1254. package/popover/popover-container/popover-container.directive.d.ts +1 -1
  1255. package/popover/popover-control/popover-control.component.d.ts +1 -1
  1256. package/popover/popover-mobile/popover-mobile.component.d.ts +1 -1
  1257. package/popover/popover-trigger.directive.d.ts +1 -1
  1258. package/popover/popover.component.d.ts +1 -1
  1259. package/product-switch/product-switch/product-switch.component.d.ts +1 -1
  1260. package/product-switch/product-switch-body/product-switch-body.component.d.ts +1 -1
  1261. package/progress-indicator/progress-indicator.component.d.ts +1 -1
  1262. package/quick-view/quick-view/quick-view.component.d.ts +1 -1
  1263. package/quick-view/quick-view-group/quick-view-group.component.d.ts +1 -1
  1264. package/quick-view/quick-view-group-item/quick-view-group-item.component.d.ts +1 -1
  1265. package/quick-view/quick-view-group-item-content/quick-view-group-item-content-element.directive.d.ts +1 -1
  1266. package/quick-view/quick-view-group-item-content/quick-view-group-item-content.component.d.ts +1 -1
  1267. package/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.d.ts +1 -1
  1268. package/quick-view/quick-view-group-title/quick-view-group-title.component.d.ts +1 -1
  1269. package/quick-view/quick-view-subheader/quick-view-subheader.component.d.ts +1 -1
  1270. package/quick-view/quick-view-subheader-subtitle/quick-view-subheader-subtitle.component.d.ts +1 -1
  1271. package/quick-view/quick-view-subheader-title/quick-view-subheader-title.component.d.ts +1 -1
  1272. package/quick-view/quick-view-title/quick-view-title.component.d.ts +1 -1
  1273. package/radio/deprecated-radio-button-compact.directive.d.ts +1 -1
  1274. package/radio/radio-button/radio-button.component.d.ts +1 -1
  1275. package/rating-indicator/components/rating-indicator.component.d.ts +1 -1
  1276. package/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.d.ts +1 -1
  1277. package/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.d.ts +1 -1
  1278. package/scroll-spy/scroll-spy.directive.d.ts +1 -1
  1279. package/scrollbar/scrollbar.component.d.ts +1 -1
  1280. package/segmented-button/segmented-button.component.d.ts +1 -1
  1281. package/select/deprecated-select-compact.directive.d.ts +1 -1
  1282. package/select/option/option.component.d.ts +1 -1
  1283. package/select/select-mobile/select-mobile.component.d.ts +1 -1
  1284. package/select/select.component.d.ts +1 -1
  1285. package/shellbar/deprecated-shellbar-compact.directive.d.ts +1 -1
  1286. package/shellbar/product-menu/product-menu.component.d.ts +1 -1
  1287. package/shellbar/shellbar-action/shellbar-action.component.d.ts +1 -1
  1288. package/shellbar/shellbar-actions/shellbar-actions.component.d.ts +1 -1
  1289. package/shellbar/shellbar-actions-mobile/shellbar-actions-mobile.component.d.ts +1 -1
  1290. package/shellbar/shellbar-logo/shellbar-logo.component.d.ts +1 -1
  1291. package/shellbar/shellbar-sidenav.directive.d.ts +1 -1
  1292. package/shellbar/shellbar-subtitle/shellbar-subtitle.component.d.ts +1 -1
  1293. package/shellbar/shellbar-title/shellbar-title.component.d.ts +1 -1
  1294. package/shellbar/shellbar.component.d.ts +1 -1
  1295. package/shellbar/user-menu/shellbar-user-menu.component.d.ts +1 -1
  1296. package/side-navigation/side-navigation-main.directive.d.ts +1 -1
  1297. package/side-navigation/side-navigation-utility.directive.d.ts +1 -1
  1298. package/side-navigation/side-navigation.component.d.ts +1 -1
  1299. package/slider/deprecated-slider-cozy.directive.d.ts +1 -1
  1300. package/slider/slider-position.directive.d.ts +1 -1
  1301. package/slider/slider.component.d.ts +1 -1
  1302. package/split-button/deprecated-split-button-compact.directive.d.ts +1 -1
  1303. package/split-button/split-button-utils/split-button.directives.d.ts +1 -1
  1304. package/split-button/split-button.component.d.ts +1 -1
  1305. package/splitter/splitter-pagination/splitter-pagination.component.d.ts +1 -1
  1306. package/splitter/splitter-pane-container/splitter-pane-container.component.d.ts +1 -1
  1307. package/splitter/splitter-resizer/splitter-resizer.component.d.ts +1 -1
  1308. package/splitter/splitter-split-pane/splitter-split-pane.component.d.ts +1 -1
  1309. package/splitter/splitter.component.d.ts +1 -1
  1310. package/status-indicator/status-indicator.component.d.ts +1 -1
  1311. package/step-input/deprecated-step-input-compact.directive.d.ts +1 -1
  1312. package/step-input/step-input.component.d.ts +1 -1
  1313. package/switch/deprecated-switch-compact.directive.d.ts +1 -1
  1314. package/switch/switch.component.d.ts +1 -1
  1315. package/table/deprecated-table-compact.directive.d.ts +1 -1
  1316. package/table/deprecated-table-condensed.directive.d.ts +1 -1
  1317. package/table/directives/table-body.directive.d.ts +1 -1
  1318. package/table/directives/table-cell.directive.d.ts +1 -1
  1319. package/table/directives/table-footer.directive.d.ts +1 -1
  1320. package/table/directives/table-header.directive.d.ts +1 -1
  1321. package/table/directives/table-icon.directive.d.ts +1 -1
  1322. package/table/directives/table-inner.directive.d.ts +1 -1
  1323. package/table/directives/table-popover.directive.d.ts +1 -1
  1324. package/table/directives/table-responsive-wrapper.directive.d.ts +1 -1
  1325. package/table/directives/table-row.directive.d.ts +1 -1
  1326. package/table/directives/table-status-indicator.directive.d.ts +1 -1
  1327. package/table/directives/table-text.directive.d.ts +1 -1
  1328. package/table/table-wrapper.component.d.ts +1 -1
  1329. package/table/table.component.d.ts +1 -1
  1330. package/tabs/deprecated-tabs-compact.directive.d.ts +1 -1
  1331. package/tabs/tab-item/tab-item.directive.d.ts +1 -1
  1332. package/tabs/tab-item-expand/tab-item-expand.component.d.ts +1 -1
  1333. package/tabs/tab-link/tab-link.directive.d.ts +1 -1
  1334. package/tabs/tab-list.component.d.ts +1 -1
  1335. package/tabs/tab-nav/tab-nav.component.d.ts +1 -1
  1336. package/tabs/tab-panel/tab-panel.component.d.ts +1 -1
  1337. package/tabs/tab-utils/tab-directives.d.ts +10 -10
  1338. package/text/text.component.d.ts +1 -1
  1339. package/tile/directives/numeric-content.directives.d.ts +9 -9
  1340. package/tile/directives/tile.directives.d.ts +23 -23
  1341. package/tile/tile.component.d.ts +1 -1
  1342. package/time/deprecated-time-content-density.directive.d.ts +1 -1
  1343. package/time/time-column/time-column.component.d.ts +1 -1
  1344. package/time/time.component.d.ts +1 -1
  1345. package/time-picker/deprecated-timepicker-compact.directive.d.ts +1 -1
  1346. package/time-picker/time-picker.component.d.ts +1 -1
  1347. package/timeline/components/timeline-node/timeline-node.component.d.ts +1 -1
  1348. package/timeline/components/timeline-node-body/timeline-node-body.component.d.ts +1 -1
  1349. package/timeline/components/timeline-node-footer/timeline-node-footer.component.d.ts +1 -1
  1350. package/timeline/components/timeline-node-header/timeline-node-header-info/timeline-node-header-info.component.d.ts +1 -1
  1351. package/timeline/components/timeline-node-header/timeline-node-header.component.d.ts +1 -1
  1352. package/timeline/directives/class-bindings/timeline-header-info-sub-title.directive.d.ts +1 -1
  1353. package/timeline/directives/class-bindings/timeline-node-header-info-text.directive.d.ts +1 -1
  1354. package/timeline/directives/class-bindings/timeline-node-header-info-title.directive.d.ts +1 -1
  1355. package/timeline/directives/timeline-first-list-outlet.directive.d.ts +1 -1
  1356. package/timeline/directives/timeline-node-def.directive.d.ts +1 -1
  1357. package/timeline/directives/timeline-second-list-outlet.directive.d.ts +1 -1
  1358. package/timeline/timeline.component.d.ts +1 -1
  1359. package/title/title.component.d.ts +1 -1
  1360. package/token/deprecated-tokenizer-content-density.directive.d.ts +1 -1
  1361. package/token/token-input.directive.d.ts +1 -1
  1362. package/token/token.component.d.ts +1 -1
  1363. package/token/tokenizer.component.d.ts +1 -1
  1364. package/toolbar/deprecated-toolbar-size.directive.d.ts +1 -1
  1365. package/toolbar/toolbar-form-label.directive.d.ts +1 -1
  1366. package/toolbar/toolbar-item.directive.d.ts +1 -1
  1367. package/toolbar/toolbar-label.directive.d.ts +1 -1
  1368. package/toolbar/toolbar-overflow-button-menu.directive.d.ts +1 -1
  1369. package/toolbar/toolbar-overflow-button.directive.d.ts +1 -1
  1370. package/toolbar/toolbar-overflow-group.directive.d.ts +1 -1
  1371. package/toolbar/toolbar-overflow-priority.directive.d.ts +1 -1
  1372. package/toolbar/toolbar-separator.component.d.ts +1 -1
  1373. package/toolbar/toolbar-spacer.component.d.ts +1 -1
  1374. package/toolbar/toolbar.component.d.ts +1 -1
  1375. package/tree/tree-child.component.d.ts +1 -1
  1376. package/tree/tree.component.d.ts +1 -1
  1377. package/upload-collection/upload-collection-button-group/upload-collection-button-group.component.d.ts +1 -1
  1378. package/upload-collection/upload-collection-form-item/upload-collection-form-item.component.d.ts +1 -1
  1379. package/upload-collection/upload-collection-item.directive.d.ts +1 -1
  1380. package/upload-collection/upload-collection-simple.directives.d.ts +7 -7
  1381. package/upload-collection/upload-collection.component.d.ts +1 -1
  1382. package/utils/abstract-fd-ngx-class.d.ts +1 -1
  1383. package/utils/directives/auto-complete/auto-complete.directive.d.ts +1 -1
  1384. package/utils/directives/focus-key-manager/focus-key-manager-item.directive.d.ts +1 -1
  1385. package/utils/directives/focus-key-manager/focus-key-manager-list.directive.d.ts +1 -1
  1386. package/utils/directives/ignore-click-on-selection/ignore-click-on-selection.directive.d.ts +1 -1
  1387. package/utils/directives/initial-focus/initial-focus.directive.d.ts +1 -1
  1388. package/utils/directives/line-clamp/line-clamp.directive.d.ts +2 -2
  1389. package/utils/directives/only-digits/only-digits.directive.d.ts +1 -1
  1390. package/utils/directives/overflow-list/overflow-list-item.directive.d.ts +1 -1
  1391. package/utils/directives/overflow-list/overflow-list.directive.d.ts +1 -1
  1392. package/utils/directives/resize/resize-handle.directive.d.ts +1 -1
  1393. package/utils/directives/resize/resize.directive.d.ts +1 -1
  1394. package/utils/directives/template/template.directive.d.ts +1 -1
  1395. package/utils/directives/truncate/truncate.directive.d.ts +1 -1
  1396. package/utils/drag-and-drop/dnd-item/dnd-item.directive.d.ts +1 -1
  1397. package/utils/drag-and-drop/dnd-keyboard-group/dnd-keyboard-group.directive.d.ts +1 -1
  1398. package/utils/drag-and-drop/dnd-keyboard-item/dnd-keyboard-item.directive.d.ts +1 -1
  1399. package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +1 -1
  1400. package/utils/dynamic-component/dynamic-component-injector.d.ts +0 -11
  1401. package/vertical-navigation/vertical-navigation-group-header.directive.d.ts +1 -1
  1402. package/vertical-navigation/vertical-navigation-main-navigation.component.d.ts +1 -1
  1403. package/vertical-navigation/vertical-navigation.component.d.ts +1 -1
  1404. package/wizard/deprecated-wizard-compact.directive.d.ts +1 -1
  1405. package/wizard/wizard-content/wizard-content.component.d.ts +1 -1
  1406. package/wizard/wizard-navigation/wizard-navigation.component.d.ts +1 -1
  1407. package/wizard/wizard-next-step/wizard-next-step.component.d.ts +1 -1
  1408. package/wizard/wizard-progress-bar/wizard-progress-bar.directive.d.ts +1 -1
  1409. package/wizard/wizard-step/wizard-step.component.d.ts +1 -1
  1410. package/wizard/wizard-step-indicator/wizard-step-indicator.component.d.ts +1 -1
  1411. package/wizard/wizard.component.d.ts +1 -1
  1412. package/fundamental-ngx-core-v0.37.2-rc.0.tgz +0 -0
@@ -680,22 +680,22 @@ export class SliderComponent {
680
680
  return of(false);
681
681
  }
682
682
  }
683
- SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SliderComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.Platform }, { token: i2.LiveAnnouncer }, { token: i3.RtlService, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
684
- SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: SliderComponent, selector: "fd-slider", inputs: { id: "id", class: "class", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", min: "min", max: "max", step: "step", jump: "jump", tickmarksBetweenLabels: "tickmarksBetweenLabels", mode: "mode", showTicks: "showTicks", showTicksLabels: "showTicksLabels", customValues: "customValues", tooltipMode: "tooltipMode", hideProgressBar: "hideProgressBar", disabled: "disabled", singleSliderCurrentValuePrefix: "singleSliderCurrentValuePrefix", rangeSliderHandle1CurrentValuePrefix: "rangeSliderHandle1CurrentValuePrefix", rangeSliderHandle2CurrentValuePrefix: "rangeSliderHandle2CurrentValuePrefix", value: "value" }, host: { listeners: { "mouseenter": "this._componentHovered$.next(true)", "mouseleave": "this._componentHovered$.next(false)", "focusout": "onTouched()" }, properties: { "attr.id": "this.id", "class.fd-slider--range": "this._isRange" } }, providers: [
683
+ SliderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SliderComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.Platform }, { token: i2.LiveAnnouncer }, { token: i3.RtlService, optional: true }, { token: i4.ContentDensityObserver }], target: i0.ɵɵFactoryTarget.Component });
684
+ SliderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.3", type: SliderComponent, selector: "fd-slider", inputs: { id: "id", class: "class", ariaLabelledBy: "ariaLabelledBy", ariaLabel: "ariaLabel", min: "min", max: "max", step: "step", jump: "jump", tickmarksBetweenLabels: "tickmarksBetweenLabels", mode: "mode", showTicks: "showTicks", showTicksLabels: "showTicksLabels", customValues: "customValues", tooltipMode: "tooltipMode", hideProgressBar: "hideProgressBar", disabled: "disabled", singleSliderCurrentValuePrefix: "singleSliderCurrentValuePrefix", rangeSliderHandle1CurrentValuePrefix: "rangeSliderHandle1CurrentValuePrefix", rangeSliderHandle2CurrentValuePrefix: "rangeSliderHandle2CurrentValuePrefix", value: "value" }, host: { listeners: { "mouseenter": "this._componentHovered$.next(true)", "mouseleave": "this._componentHovered$.next(false)", "focusout": "onTouched()" }, properties: { "attr.id": "this.id", "class.fd-slider--range": "this._isRange" } }, providers: [
685
685
  SLIDER_VALUE_ACCESSOR,
686
686
  registerFormItemControl(SliderComponent),
687
687
  contentDensityObserverProviders({
688
688
  defaultContentDensity: ContentDensityMode.COMPACT,
689
689
  modifiers: { [ContentDensityMode.COZY]: 'fd-slider--lg' }
690
690
  })
691
- ], viewQueries: [{ propertyName: "trackEl", first: true, predicate: ["track"], descendants: true, read: ElementRef }, { propertyName: "handle", first: true, predicate: ["handle"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle1", first: true, predicate: ["rangeHandle1"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle2", first: true, predicate: ["rangeHandle2"], descendants: true, read: ElementRef }, { propertyName: "_popovers", predicate: PopoverComponent, descendants: true }, { propertyName: "_sliderTooltipWrappers", predicate: ["sliderTooltipWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [innerText]=\"tick.label\"\n ></div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div *ngIf=\"!hideProgressBar\" class=\"fd-slider__track-range\" [style.width.%]=\"_progress\"></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.width.%]=\"_rangeProgress\"\n fd-slider-position\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n ></div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div\n *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\"\n class=\"fd-slider--tooltip\"\n [innerText]=\"\n customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target]\n \"\n ></div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fd-only-digits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: ["@import\"~fundamental-styles/dist/slider.css\";@import\"~fundamental-styles/dist/input.css\";.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i6.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdOnlyDigits], [fd-only-digits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i8.SliderPositionDirective, selector: "[fd-slider-position]", inputs: ["position"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
691
+ ], viewQueries: [{ propertyName: "trackEl", first: true, predicate: ["track"], descendants: true, read: ElementRef }, { propertyName: "handle", first: true, predicate: ["handle"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle1", first: true, predicate: ["rangeHandle1"], descendants: true, read: ElementRef }, { propertyName: "rangeHandle2", first: true, predicate: ["rangeHandle2"], descendants: true, read: ElementRef }, { propertyName: "_popovers", predicate: PopoverComponent, descendants: true }, { propertyName: "_sliderTooltipWrappers", predicate: ["sliderTooltipWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [innerText]=\"tick.label\"\n ></div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div *ngIf=\"!hideProgressBar\" class=\"fd-slider__track-range\" [style.width.%]=\"_progress\"></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.width.%]=\"_rangeProgress\"\n fd-slider-position\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n ></div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div\n *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\"\n class=\"fd-slider--tooltip\"\n [innerText]=\"\n customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target]\n \"\n ></div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fd-only-digits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider__inner:after,.fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);-webkit-box-shadow:var(--fdSlider_Handle_Box_Shadow);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-shadow:var(--fdSlider_Handle_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);outline:.0625rem var(--sapContent_FocusStyle) var(--fdSlider_Focus_Handle_Outline_Color);outline-offset:.0625rem;z-index:5}.fd-slider__handle.is-hover,.fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color);box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow)}.fd-slider__handle.is-active,.fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);box-shadow:var(--fdSlider_Active_Handle_Box_Shadow)}.fd-slider__handle--lg{height:var(--fdSlider_Mobile_Handle_Height);width:var(--fdSlider_Mobile_Handle_Width)}.fd-slider__handle--lg:before{height:var(--fdSlider_Mobile_Handle_Active_Size);width:var(--fdSlider_Mobile_Handle_Active_Size)}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before,.fd-slider--range .fd-slider__inner[dir=rtl]:after,.fd-slider--range .fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider--range .fd-slider__inner:after,[dir=rtl] .fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{-webkit-box-shadow:var(--fdSlider_Range_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border);box-shadow:var(--fdSlider_Range_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:none}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{-webkit-box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:none}/*!\n * Fundamental Library Styles v0.26.0-rc.27\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-input{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle);background-color:var(--sapField_Background);border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2.25rem;line-height:var(--sapContent_LineHeight);margin:.25rem 0;min-height:2.25rem;min-width:2.75rem;outline:none;overflow:hidden;padding:0 .625rem;text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle);background-color:var(--sapField_Hover_Background);border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input:last-child{margin-bottom:.25rem}.fd-input--compact{box-sizing:border-box;height:1.625rem;margin:.1875rem 0;min-height:1.625rem;min-width:2rem;padding:0 .5rem}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);pointer-events:none}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly.is-hover,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-hover,.fd-input[readonly]:hover{box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{background:var(--sapField_Focus_Background);border-radius:var(--sapField_BorderCornerRadius);z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"], dependencies: [{ kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "directive", type: i6.PopoverTriggerDirective, selector: "[fdPopoverTrigger], [fd-popover-trigger]", inputs: ["fdPopoverTrigger"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.OnlyDigitsDirective, selector: "[fdOnlyDigits], [fd-only-digits]", inputs: ["decimal", "decimalSeparator"] }, { kind: "directive", type: i8.SliderPositionDirective, selector: "[fd-slider-position]", inputs: ["position"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i9.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
692
692
  __decorate([
693
693
  applyCssClass,
694
694
  __metadata("design:type", Function),
695
695
  __metadata("design:paramtypes", []),
696
696
  __metadata("design:returntype", Array)
697
697
  ], SliderComponent.prototype, "buildComponentCssClass", null);
698
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SliderComponent, decorators: [{
698
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImport: i0, type: SliderComponent, decorators: [{
699
699
  type: Component,
700
700
  args: [{ selector: 'fd-slider', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
701
701
  SLIDER_VALUE_ACCESSOR,
@@ -708,7 +708,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
708
708
  '(mouseenter)': 'this._componentHovered$.next(true)',
709
709
  '(mouseleave)': 'this._componentHovered$.next(false)',
710
710
  '(focusout)': 'onTouched()'
711
- }, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [innerText]=\"tick.label\"\n ></div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div *ngIf=\"!hideProgressBar\" class=\"fd-slider__track-range\" [style.width.%]=\"_progress\"></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.width.%]=\"_rangeProgress\"\n fd-slider-position\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n ></div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div\n *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\"\n class=\"fd-slider--tooltip\"\n [innerText]=\"\n customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target]\n \"\n ></div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fd-only-digits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: ["@import\"~fundamental-styles/dist/slider.css\";@import\"~fundamental-styles/dist/input.css\";.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"] }]
711
+ }, template: "<div class=\"fd-slider__inner\">\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeMode : singleMode\"></ng-container>\n\n <div class=\"fd-slider__track\" (click)=\"onTrackClick($event)\" #track>\n <ng-container *ngTemplateOutlet=\"_isRange ? rangeModeTrack : singleModeTrack\"></ng-container>\n </div>\n\n <div class=\"fd-slider__tick-wrapper\">\n <div class=\"fd-slider__ticks\" (click)=\"onTrackClick($event)\">\n <ng-container *ngIf=\"showTicks\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i\">\n <div\n class=\"fd-slider__tick\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [class.fd-slider__tick--in-range]=\"\n !hideProgressBar &&\n (_isRange\n ? tick.value >= _position[0] && tick.value <= _position[1]\n : tick.value <= _position)\n \"\n ></div>\n </ng-container>\n </ng-container>\n </div>\n\n <div class=\"fd-slider__labels\" *ngIf=\"showTicks && showTicksLabels\">\n <ng-container *ngFor=\"let tick of _tickMarks; index as i; last as last; first as first\">\n <div\n *ngIf=\"first || last || i % tickmarksBetweenLabels === 0\"\n class=\"fd-slider__label\"\n fd-slider-position\n [position]=\"tick.position || 0\"\n [innerText]=\"tick.label\"\n ></div>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #singleModeTrack>\n <div *ngIf=\"!hideProgressBar\" class=\"fd-slider__track-range\" [style.width.%]=\"_progress\"></div>\n</ng-template>\n\n<ng-template #rangeModeTrack>\n <div\n *ngIf=\"!hideProgressBar\"\n class=\"fd-slider__track-range\"\n [style.width.%]=\"_rangeProgress\"\n fd-slider-position\n [position]=\"_handle1Position < _handle2Position ? _handle1Position : _handle2Position\"\n ></div>\n</ng-template>\n\n<ng-template #singleMode>\n <div\n #handle\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.singleMinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? singleSliderPopover : null\"\n [attr.aria-valuemin]=\"'coreSlider.singleValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.singleValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.singleValueNowDetails'\n | fdTranslate: { value: getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER) })\n : getValuenow(_position, _sliderValueTargets.SINGLE_SLIDER)\n \"\n fd-slider-position\n [position]=\"_progress\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (focus)=\"_handleFocused$.next(true)\"\n (blur)=\"_handleFocused$.next(false)\"\n (keydown)=\"onKeyDown($event)\"\n ></div>\n\n <fd-popover\n #singleSliderPopover\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"handle\"\n [disabled]=\"!tooltipMode\"\n class=\"fd-popover--slider\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.SINGLE_SLIDER, position: _position }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #rangeMode>\n <div\n #rangeHandle1\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle1MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover1 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle1ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle1ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle1ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1) })\n : getValuenow(_handle1Value, _sliderValueTargets.RANGE_SLIDER1)\n \"\n fd-slider-position\n [position]=\"_handle1Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle1Focused$.next(true)\"\n (blur)=\"_rangeHandle1Focused$.next(false)\"\n ></div>\n\n <div\n #rangeHandle2\n class=\"fd-slider__handle\"\n [class.fd-slider__handle--lg]=\"_contentDensityObserver.isCozy$ | async\"\n [attr.tabindex]=\"disabled ? -1 : 0\"\n role=\"slider\"\n [attr.aria-label]=\"\n ariaLabel || 'coreSlider.multipleHandle2MinMaxDetails' | fdTranslate: { min: minValue, max: maxValue }\n \"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [fdPopoverTrigger]=\"tooltipMode ? rangeSliderPopover2 : null\"\n [attr.aria-valuemin]=\"'coreSlider.multipleHandle2ValueminDetails' | fdTranslate: { value: minValue }\"\n [attr.aria-valuemax]=\"'coreSlider.multipleHandle2ValuemaxDetails' | fdTranslate: { value: maxValue }\"\n [attr.aria-valuenow]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n [attr.aria-valuetext]=\"\n _useSliderValuePrefix\n ? ('coreSlider.multipleHandle2ValueNowDetails'\n | fdTranslate: { value: getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2) })\n : getValuenow(_handle2Value, _sliderValueTargets.RANGE_SLIDER2)\n \"\n fd-slider-position\n [position]=\"_handle2Position\"\n (mousedown)=\"onHandleClick($event); $event.stopPropagation()\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"_rangeHandle2Focused$.next(true)\"\n (blur)=\"_rangeHandle2Focused$.next(false)\"\n ></div>\n\n <fd-popover\n #rangeSliderPopover1\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle1\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER1, position: _handle1Value }\n \"\n ></ng-container>\n </fd-popover>\n\n <fd-popover\n #rangeSliderPopover2\n [triggers]=\"[]\"\n [closeOnOutsideClick]=\"false\"\n [appendTo]=\"rangeHandle2\"\n [disabled]=\"!tooltipMode\"\n additionalBodyClass=\"fd-slider--tooltip-popover\"\n class=\"fd-popover--slider\"\n placement=\"top\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n popoverInner;\n context: { target: _sliderValueTargets.RANGE_SLIDER2, position: _handle2Value }\n \"\n ></ng-container>\n </fd-popover>\n</ng-template>\n\n<ng-template #popoverInner let-target=\"target\" let-position=\"position\">\n <div\n #sliderTooltipWrapper\n class=\"fd-slider--tooltip-wrapper\"\n (click)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\"\n (mouseenter)=\"_popoverInputFieldHovered$.next(true)\"\n (mouseleave)=\"_popoverInputFieldHovered$.next(false)\"\n >\n <div\n *ngIf=\"(customValues && customValues.length > 0) || tooltipMode === 'readonly'\"\n class=\"fd-slider--tooltip\"\n [innerText]=\"\n customValues && customValues.length > 0 ? customValues[position].label : _popoverValueRef[target]\n \"\n ></div>\n\n <input\n #popoverInputField\n tabindex=\"-1\"\n type=\"text\"\n [disabled]=\"disabled\"\n fd-only-digits\n [decimal]=\"true\"\n [style.width.ch]=\"('' + _popoverValueRef[target]).length + 2\"\n class=\"fd-input fd-slider--tooltip {{ _popoverInputFieldClass }}\"\n *ngIf=\"customValues?.length === 0 && tooltipMode === 'editable'\"\n [(ngModel)]=\"_popoverValueRef[target]\"\n (blur)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (keydown.enter)=\"_updateValueFromInput(popoverInputField.value, target)\"\n (focus)=\"_popoverInputFieldFocused$.next(true)\"\n (blur)=\"_popoverInputFieldFocused$.next(false)\"\n />\n </div>\n</ng-template>\n", styles: [".fd-slider{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;max-width:100%;min-width:4rem;padding:0;padding:1rem calc(var(--fdSlider_Handle_Width) * .5 + .125rem);position:relative}.fd-slider:after,.fd-slider:before{box-sizing:inherit;font-size:inherit}.fd-slider.is-disabled,.fd-slider:disabled,.fd-slider[aria-disabled=true]{cursor:not-allowed}.fd-slider--lg{padding-left:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem);padding-right:calc(var(--fdSlider_Mobile_Handle_Width) * .5 + .125rem)}.fd-slider__inner{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__inner:after,.fd-slider__inner:before{-webkit-box-sizing:inherit;-webkit-box-sizing:border-box;-webkit-transform:translateY(-50%);background-color:var(--fdSlider_Endpoint_Active_Background);border:0;border:var(--fdSlider_Endpoint_Active_Border);border-radius:50%;box-sizing:inherit;box-sizing:border-box;color:var(--sapTextColor);content:\"\";font-family:var(--sapFontFamily);font-size:inherit;font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Endpoint_Size);left:-.7rem;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:var(--fdSlider_Endpoint_Size)}.fd-slider__inner:after:after,.fd-slider__inner:after:before,.fd-slider__inner:before:after,.fd-slider__inner:before:before{box-sizing:inherit;font-size:inherit}.fd-slider__inner:after{left:auto;right:-.7rem}.fd-slider__inner:after,.fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider__inner[dir=rtl]:after,[dir=rtl] .fd-slider__inner:after{background-color:var(--fdSlider_Endpoint_Active_Background);border:var(--fdSlider_Endpoint_Active_Border)}.fd-slider__track{-webkit-box-sizing:border-box;-webkit-box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);background-color:var(--fdSlider_Track_Background);border:0;border-radius:var(--fdSlider_Track_BorderRadius);box-shadow:inset 0 0 0 var(--fdSlider_Track_Border_Width) var(--fdSlider_Track_Border_Color);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Track_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:100%;z-index:1}.fd-slider__track:after,.fd-slider__track:before{box-sizing:inherit;font-size:inherit}.fd-slider__track-range{-webkit-box-sizing:border-box;-webkit-box-shadow:var(--fdSlider_Track_Active_Box_Shadow);background-color:var(--fdSlider_Track_Active_Background);border:0;border:.0625rem solid var(--fdSlider_Track_Active_Border);border-radius:.25rem;box-shadow:var(--fdSlider_Track_Active_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__track-range:after,.fd-slider__track-range:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick-wrapper{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:calc((var(--fdSlider_Track_Height) - var(--fdSlider_Tick_Height)) / 2);width:100%;z-index:2}.fd-slider__tick-wrapper:after,.fd-slider__tick-wrapper:before{box-sizing:inherit;font-size:inherit}.fd-slider__ticks{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-slider__ticks:after,.fd-slider__ticks:before{box-sizing:inherit;font-size:inherit}.fd-slider__labels{-webkit-box-sizing:border-box;-webkit-box-pack:justify;-ms-flex-pack:justify;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:1rem;justify-content:space-between;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;top:.5rem}.fd-slider__labels:after,.fd-slider__labels:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick{-webkit-box-sizing:border-box;border:0;border-left:.0625rem solid var(--fdSlider_Tick_Background);box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Tick_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative}.fd-slider__tick:after,.fd-slider__tick:before{box-sizing:inherit;font-size:inherit}.fd-slider__tick--in-range{border-color:var(--fdSlider_Active_Tick_Background)}.fd-slider__label{-webkit-box-sizing:border-box;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-size:var(--sapFontSmallSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:relative;width:0}.fd-slider__label:after,.fd-slider__label:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle{-webkit-box-sizing:border-box;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-transform:translate(-50%,-50%);-webkit-box-shadow:var(--fdSlider_Handle_Box_Shadow);align-items:center;background-color:var(--fdSlider_Handle_Background);border:0;border:var(--fdSlider_Handle_Border);border-radius:var(--fdSlider_Handle_Border_Radius);box-shadow:var(--fdSlider_Handle_Box_Shadow);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:var(--fdSlider_Handle_Height);justify-content:center;line-height:var(--sapContent_LineHeight);margin:0;padding:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Width);z-index:3}.fd-slider__handle:after,.fd-slider__handle:before{box-sizing:inherit;font-size:inherit}.fd-slider__handle:before{-webkit-transform:translate(-50%,-50%);content:\"\";height:var(--fdSlider_Handle_Active_Height);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:var(--fdSlider_Handle_Active_Width)}.fd-slider__handle:after{color:var(--sapContent_Selected_ForegroundColor);content:\"\\e29c\";display:var(--fdSlider_Handle_Icon_Display);font-family:SAP-icons;font-size:.875rem;line-height:1}.fd-slider__handle.is-focus,.fd-slider__handle:focus{background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);outline:.0625rem var(--sapContent_FocusStyle) var(--fdSlider_Focus_Handle_Outline_Color);outline-offset:.0625rem;z-index:5}.fd-slider__handle.is-hover,.fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Hover_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);border-color:var(--fdSlider_Handle_Border_Hover_Color);box-shadow:var(--fdSlider_Hover_Handle_Box_Shadow)}.fd-slider__handle.is-active,.fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Active_Handle_Background);border:var(--fdSlider_Hover_Handle_Border);box-shadow:var(--fdSlider_Active_Handle_Box_Shadow)}.fd-slider__handle--lg{height:var(--fdSlider_Mobile_Handle_Height);width:var(--fdSlider_Mobile_Handle_Width)}.fd-slider__handle--lg:before{height:var(--fdSlider_Mobile_Handle_Active_Size);width:var(--fdSlider_Mobile_Handle_Active_Size)}.fd-slider--range .fd-slider__inner:after,.fd-slider--range .fd-slider__inner:before,.fd-slider--range .fd-slider__inner[dir=rtl]:after,.fd-slider--range .fd-slider__inner[dir=rtl]:before,[dir=rtl] .fd-slider--range .fd-slider__inner:after,[dir=rtl] .fd-slider--range .fd-slider__inner:before{background-color:var(--fdSlider_Endpoint_Background);border:var(--fdSlider_Endpoint_Border)}.fd-slider--range .fd-slider__inner .fd-slider__handle{-webkit-box-shadow:var(--fdSlider_Range_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Handle_Background);border:var(--fdSlider_Range_Handle_Border);box-shadow:var(--fdSlider_Range_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-hover,.fd-slider--range .fd-slider__inner .fd-slider__handle:hover{-webkit-box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Hover_Handle_Background);border-color:var(--fdSlider_Range_Hover_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Hover_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active,.fd-slider--range .fd-slider__inner .fd-slider__handle:active{-webkit-box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Active_Handle_Background);border-color:var(--fdSlider_Range_Active_Handle_Border_Color);box-shadow:var(--fdSlider_Range_Active_Handle_Box_Shadow)}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-active:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:active:after{display:none}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus{-webkit-box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);background-color:var(--fdSlider_Range_Focus_Handle_Background);border:var(--fdSlider_Range_Focus_Handle_Border);box-shadow:var(--fdSlider_Range_Focus_Handle_Box_Shadow);z-index:5}.fd-slider--range .fd-slider__inner .fd-slider__handle.is-focus:after,.fd-slider--range .fd-slider__inner .fd-slider__handle:focus:after{display:none}/*!\n * Fundamental Library Styles v0.26.0-rc.27\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-input{-webkit-box-sizing:border-box;-webkit-box-shadow:none;-webkit-appearance:none;appearance:none;background:var(--sapField_BackgroundStyle);background-color:var(--sapField_Background);border:0;border:var(--sapField_BorderWidth) var(--sapField_BorderStyle) var(--sapField_BorderColor);border-radius:var(--sapField_BorderCornerRadius);box-shadow:none;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapField_TextColor);cursor:text;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;height:2.25rem;line-height:var(--sapContent_LineHeight);margin:.25rem 0;min-height:2.25rem;min-width:2.75rem;outline:none;overflow:hidden;padding:0 .625rem;text-overflow:ellipsis;text-shadow:var(--fdInput_Text_Shadow);white-space:nowrap;width:100%;z-index:1}.fd-input:after,.fd-input:before{box-sizing:inherit;font-size:inherit}.fd-input::placeholder{color:var(--sapField_PlaceholderTextColor);font-style:var(--fdPlaceholder_Font_Style)}.fd-input[dir=rtl]::placeholder,[dir=rtl] .fd-input::placeholder{text-indent:.125rem}.fd-input::selection{background-color:var(--sapSelectedColor);color:var(--sapContent_ContrastTextColor)}.fd-input::-ms-clear{display:none}.fd-input.is-hover,.fd-input:hover{-webkit-box-shadow:var(--fdInput_Box_Shadow_Hover);background:var(--sapField_Hover_BackgroundStyle);background-color:var(--sapField_Hover_Background);border-color:var(--sapField_Hover_BorderColor);box-shadow:var(--fdInput_Box_Shadow_Hover)}.fd-input.is-focus,.fd-input:focus{-webkit-box-shadow:none;background:var(--sapField_Focus_Background);box-shadow:none;outline-color:var(--fdInput_Outline_Color);outline-offset:var(--fdInput_Outline_Offset);outline-style:var(--sapContent_FocusStyle);outline-width:var(--sapContent_FocusWidth);z-index:5}.fd-input[type=search]::-webkit-search-cancel-button,.fd-input[type=search]::-webkit-search-decoration,.fd-input[type=search]::-webkit-search-results-button,.fd-input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none}.fd-input[aria-expanded=false]{z-index:0}.fd-input.is-expanded,.fd-input[aria-expanded=true]{z-index:4}.fd-input:last-child{margin-bottom:.25rem}.fd-input--compact{box-sizing:border-box;height:1.625rem;margin:.1875rem 0;min-height:1.625rem;min-width:2rem;padding:0 .5rem}.fd-input--no-number-spinner{-moz-appearance:textfield}.fd-input--no-number-spinner::-webkit-inner-spin-button,.fd-input--no-number-spinner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.fd-input.right-align{text-align:right}.fd-input.is-success{background:var(--sapField_SuccessBackgroundStyle);background-color:var(--sapField_SuccessBackground);border:var(--sapField_SuccessColor) var(--sapField_SuccessBorderWidth) var(--sapField_SuccessBorderStyle)}.fd-input.is-success.is-hover,.fd-input.is-success:hover{-webkit-box-shadow:var(--fdInput_Success_Box_Shadow_Hover);background-color:var(--fdInput_Success_Background_Color_Hover);border-color:var(--sapField_SuccessColor);box-shadow:var(--fdInput_Success_Box_Shadow_Hover)}.fd-input.is-success.is-focus,.fd-input.is-success:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Success_Outline_Color);z-index:5}.fd-input.is-success.is-focus.is-hover,.fd-input.is-success.is-focus:hover,.fd-input.is-success:focus.is-hover,.fd-input.is-success:focus:hover{box-shadow:none}.fd-input.is-error{background:var(--sapField_InvalidBackgroundStyle);background-color:var(--sapField_InvalidBackground);border:var(--sapField_InvalidColor) var(--sapField_InvalidBorderWidth) var(--sapField_InvalidBorderStyle)}.fd-input.is-error.is-hover,.fd-input.is-error:hover{-webkit-box-shadow:var(--fdInput_Error_Box_Shadow_Hover);background-color:var(--fdInput_Error_Background_Color_Hover);border-color:var(--sapField_InvalidColor);box-shadow:var(--fdInput_Error_Box_Shadow_Hover)}.fd-input.is-error.is-focus,.fd-input.is-error:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Error_Outline_Color);z-index:5}.fd-input.is-error.is-focus.is-hover,.fd-input.is-error.is-focus:hover,.fd-input.is-error:focus.is-hover,.fd-input.is-error:focus:hover{box-shadow:none}.fd-input.is-warning{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-warning.is-hover,.fd-input.is-warning:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-warning.is-focus.is-hover,.fd-input.is-warning.is-focus:hover,.fd-input.is-warning:focus.is-hover,.fd-input.is-warning:focus:hover{box-shadow:none}.fd-input.is-alert{background:var(--sapField_WarningBackgroundStyle);background-color:var(--sapField_WarningBackground);border:var(--sapField_WarningColor) var(--sapField_WarningBorderWidth) var(--sapField_WarningBorderStyle)}.fd-input.is-alert.is-hover,.fd-input.is-alert:hover{-webkit-box-shadow:var(--fdInput_Warning_Box_Shadow_Hover);background-color:var(--fdInput_Warning_Background_Color_Hover);border-color:var(--sapField_WarningColor);box-shadow:var(--fdInput_Warning_Box_Shadow_Hover)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Warning_Outline_Color);z-index:5}.fd-input.is-alert.is-focus.is-hover,.fd-input.is-alert.is-focus:hover,.fd-input.is-alert:focus.is-hover,.fd-input.is-alert:focus:hover{box-shadow:none}.fd-input.is-information{background:var(--sapField_InformationBackgroundStyle);background-color:var(--sapField_InformationBackground);border:var(--sapField_InformationColor) var(--sapField_InformationBorderWidth) var(--sapField_InformationBorderStyle)}.fd-input.is-information.is-hover,.fd-input.is-information:hover{-webkit-box-shadow:var(--fdInput_Information_Box_Shadow_Hover);background-color:var(--fdInput_Information_Background_Color_Hover);border-color:var(--sapField_InformationColor);box-shadow:var(--fdInput_Information_Box_Shadow_Hover)}.fd-input.is-information.is-focus,.fd-input.is-information:focus{background:var(--sapField_Focus_Background);outline-color:var(--fdInput_Information_Outline_Color);z-index:5}.fd-input.is-information.is-focus.is-hover,.fd-input.is-information.is-focus:hover,.fd-input.is-information:focus.is-hover,.fd-input.is-information:focus:hover{box-shadow:none}.fd-input.is-alert,.fd-input.is-error,.fd-input.is-warning{font-style:var(--fdInput_State_Text_Style);font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert::placeholder,.fd-input.is-error::placeholder,.fd-input.is-warning::placeholder{font-weight:var(--fdInput_State_Font_Weight)}.fd-input.is-alert.is-focus,.fd-input.is-alert:focus,.fd-input.is-error.is-focus,.fd-input.is-error:focus,.fd-input.is-information.is-focus,.fd-input.is-information:focus,.fd-input.is-warning.is-focus,.fd-input.is-warning:focus{outline-offset:var(--fdInput_Outline_Offset_States);z-index:5}.fd-input.is-error::placeholder{color:var(--sapField_TextColor)}.fd-input.is-disabled,.fd-input:disabled,.fd-input[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);pointer-events:none}.fd-input.is-disabled::placeholder,.fd-input:disabled::placeholder,.fd-input[aria-disabled=true]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly,.fd-input[aria-readonly=true],.fd-input[readonly]{background:var(--sapField_ReadOnly_BackgroundStyle);background-color:var(--sapField_ReadOnly_Background);border-color:var(--sapField_ReadOnly_BorderColor);border-radius:var(--fdInput_ReadOnly_Border_Radius);pointer-events:none}.fd-input.is-readonly::placeholder,.fd-input[aria-readonly=true]::placeholder,.fd-input[readonly]::placeholder{color:var(--fdInput_Non_Interactive_State_Placeholder_Color)}.fd-input.is-readonly.is-hover,.fd-input.is-readonly:hover,.fd-input[aria-readonly=true].is-hover,.fd-input[aria-readonly=true]:hover,.fd-input[readonly].is-hover,.fd-input[readonly]:hover{box-shadow:none}.fd-input.is-readonly.is-focus,.fd-input.is-readonly:focus,.fd-input[aria-readonly=true].is-focus,.fd-input[aria-readonly=true]:focus,.fd-input[readonly].is-focus,.fd-input[readonly]:focus{background:var(--sapField_Focus_Background);border-radius:var(--sapField_BorderCornerRadius);z-index:5}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.fd-popover--slider{display:block!important}.fd-popover__body.fd-slider--tooltip-popover{top:-7px!important;overflow:hidden}.fd-popover__body.fd-slider--tooltip-popover .fd-slider--tooltip{padding:.25rem;min-width:2rem;text-align:center;height:1.375rem;line-height:1;direction:ltr;box-sizing:border-box;margin:0!important;border:0;color:#6a6d70;color:var(--sapContent_LabelColor, #6a6d70);font-size:.875rem;font-size:var(--sapFontSize)}.fd-slider{display:block}.fd-slider.fd-slider--with-labels{padding-bottom:2rem}.fd-slider__tick-wrapper .fd-slider__label,.fd-slider__tick-wrapper .fd-slider__tick{position:absolute}.fd-slider__ticks{height:var(--fdSlider_Tick_Height)}.fd-slider__track .fd-slider__handle:focus{z-index:2;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.fd-slider__track .fd-popover-custom{display:none}.fd-slider__labels .fd-slider__label{white-space:nowrap}.fd-slider__alternative-tick-width .fd-slider__tick{width:1px}[dir=rtl] .fd-slider__handle{transform:translate(50%,-50%)}\n"] }]
712
712
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: i1.Platform }, { type: i2.LiveAnnouncer }, { type: i3.RtlService, decorators: [{
713
713
  type: Optional
714
714
  }] }, { type: i4.ContentDensityObserver }]; }, propDecorators: { id: [{
@@ -776,4 +776,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
776
776
  type: HostBinding,
777
777
  args: ['class.fd-slider--range']
778
778
  }], buildComponentCssClass: [] } });
779
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwr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O3VCQUFDLFNBQVM7Z0JBS3RCLEtBQUs7c0JBREosS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtGLEdBQUc7c0JBRE4sS0FBSztnQkFlRixHQUFHO3NCQUROLEtBQUs7Z0JBZUYsSUFBSTtzQkFEUCxLQUFLO2dCQWVGLElBQUk7c0JBRFAsS0FBSztnQkFVRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBY04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLDhCQUE4QjtzQkFEN0IsS0FBSztnQkFVTixvQ0FBb0M7c0JBRG5DLEtBQUs7Z0JBVU4sb0NBQW9DO3NCQURuQyxLQUFLO2dCQVFGLEtBQUs7c0JBRFIsS0FBSztnQkFlTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLeEMsTUFBTTtzQkFETCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3pDLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsvQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLL0MsU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsc0JBQXNCO3NCQURyQixZQUFZO3VCQUFDLHNCQUFzQjtnQkFXcEMsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkF5SnJDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIG1hcFRvLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgICBTbGlkZXJDb250cm9sVmFsdWUsXG4gICAgU2xpZGVyQ3VzdG9tVmFsdWUsXG4gICAgU2xpZGVyUmFuZ2VIYW5kbGVzLFxuICAgIFNsaWRlclRpY2tNYXJrLFxuICAgIFNsaWRlclZhbHVlVGFyZ2V0c1xufSBmcm9tICcuL3NsaWRlci5tb2RlbCc7XG5pbXBvcnQgeyBNSU5fRElTVEFOQ0VfQkVUV0VFTl9USUNLUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciwgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZGUsXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5leHBvcnQgY29uc3QgU0xJREVSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmxldCBzbGlkZXJJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtc2xpZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBTTElERVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFNsaWRlckNvbXBvbmVudCksXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgICAgIG1vZGlmaWVyczogeyBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAnZmQtc2xpZGVyLS1sZycgfVxuICAgICAgICB9KVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKG1vdXNlZW50ZXIpJzogJ3RoaXMuX2NvbXBvbmVudEhvdmVyZWQkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ3RoaXMuX2NvbXBvbmVudEhvdmVyZWQkLm5leHQoZmFsc2UpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnb25Ub3VjaGVkKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBDc3NDbGFzc0J1aWxkZXIsIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBTbGlkZXIgaWQsIGl0IGhhcyBzb21lIGRlZmF1bHQgdmFsdWUgaWYgbm90IHNldCwgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIGlkID0gJ2ZkLXNsaWRlci1pZC0nICsgc2xpZGVySWQrKztcblxuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogSWQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHMgc2xpZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkQnk6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBNaW5pbXVtIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMuX21pbik7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gbmV3VmFsdWUpIC8gdGhpcy5zdGVwKSAlIDEgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW47XG4gICAgfVxuXG4gICAgLyoqIE1heGltdW0gdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fbWF4KTtcbiAgICAgICAgaWYgKCgobmV3VmFsdWUgLSB0aGlzLm1pbikgLyB0aGlzLnN0ZXApICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU3RlcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fc3RlcCk7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gbmV3VmFsdWUpICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RlcCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcDtcbiAgICB9XG5cbiAgICAvKiogSnVtcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBqdW1wKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fanVtcCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9qdW1wKTtcbiAgICB9XG4gICAgZ2V0IGp1bXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2p1bXA7XG4gICAgfVxuXG4gICAgLyoqIFB1dCBhIGxhYmVsIG9uIGV2ZXJ5IE4tdGggdGlja21hcmsuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGlja21hcmtzQmV0d2VlbkxhYmVscyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RpY2ttYXJrc0JldHdlZW5MYWJlbHMgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fdGlja21hcmtzQmV0d2VlbkxhYmVscyk7XG4gICAgfVxuICAgIGdldCB0aWNrbWFya3NCZXR3ZWVuTGFiZWxzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aWNrbWFya3NCZXR3ZWVuTGFiZWxzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNsaWRlciBtb2RlLlxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTogJ3NpbmdsZScgfCAncmFuZ2UnXG4gICAgICogVGhlIGRlZmF1bHQgaXMgc2V0IHRvICdzaW5nbGUnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiAnc2luZ2xlJyB8ICdyYW5nZScgPSAnc2luZ2xlJztcblxuICAgIC8qKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRpY2sgbWFya3MuICovXG4gICAgQElucHV0KClcbiAgICBzaG93VGlja3MgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRpY2sgbWFyayBsYWJlbHMuIE11c3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoICdzaG93VGlja3MnICovXG4gICAgQElucHV0KClcbiAgICBzaG93VGlja3NMYWJlbHMgPSBmYWxzZTtcblxuICAgIC8qKiBBcnJheSBvZiBjdXN0b20gdmFsdWVzIHRvIHVzZSBmb3IgU2xpZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tVmFsdWVzOiBTbGlkZXJDdXN0b21WYWx1ZVtdID0gW107XG5cbiAgICAvKiogVG9vbHRpcCBjYW4gYmUgdHdvIHR5cGVzLCAncmVhZG9ubHknIHRvIGRpc3BsYXkgdmFsdWUgYW5kICdlZGl0YWJsZScgdG8gbWFrZSB0aGUgYWJpbGl0eSB0byBzZXQgYW5kIGRpc3BsYXkgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICB0b29sdGlwTW9kZTogJ3JlYWRvbmx5JyB8ICdlZGl0YWJsZSc7XG5cbiAgICAvKiogSGlkZXMgZGlzcGxheSBvZiBjb2xvcmVkIHByb2dyZXNzIGJhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVQcm9ncmVzc0JhciA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogc2xpZGVyIGN1cnJlbnQgdmFsdWUgdmVyYm9zZSBzdHJpbmcuXG4gICAgICogVGhpcyB3aWxsIGJlIHJlYWQgb25seSBvbmNlIGJ5IHNjcmVlbiByZWFkZXIgYW5kIHVwb24gc2xpZGVyIHZhbHVlIGNoYW5nZSxcbiAgICAgKiB0aGlzIHN0cmluZyB3aWxsIG5vdCBiZSByZWFkLlxuICAgICAqIEBkZXByZWNhdGVkIG5vIGxvbmdlciB1c2VkLCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2luZ2xlU2xpZGVyQ3VycmVudFZhbHVlUHJlZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHJhbmdlIHNsaWRlciBoYW5kbGUgMSBjdXJyZW50IHZhbHVlIHN1cHBvcnRpbmcgc3RyaW5nXG4gICAgICogVGhpcyB3aWxsIGJlIHJlYWQgb25seSBvbmNlIGJ5IHNjcmVlbiByZWFkZXIgYW5kIHVwb24gc2xpZGVyIHZhbHVlIGNoYW5nZSxcbiAgICAgKiB0aGlzIHN0cmluZyB3aWxsIG5vdCBiZSByZWFkLlxuICAgICAqICogQGRlcHJlY2F0ZWQgbm8gbG9uZ2VyIHVzZWQsIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByYW5nZVNsaWRlckhhbmRsZTFDdXJyZW50VmFsdWVQcmVmaXg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gcmFuZ2Ugc2xpZGVyIGhhbmRsZSAyIGN1cnJlbnQgdmFsdWUgc3VwcG9ydGluZyBzdHJpbmdcbiAgICAgKiBUaGlzIHdpbGwgYmUgcmVhZCBvbmx5IG9uY2UgYnkgc2NyZWVuIHJlYWRlciBhbmQgdXBvbiBzbGlkZXIgdmFsdWUgY2hhbmdlLFxuICAgICAqIHRoaXMgc3RyaW5nIHdpbGwgbm90IGJlIHJlYWQuXG4gICAgICogKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgdXNlZCwgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJhbmdlU2xpZGVySGFuZGxlMkN1cnJlbnRWYWx1ZVByZWZpeDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9zaXRpb246IG51bWJlciB8IG51bWJlcltdID0gMDtcblxuICAgIC8qKiBDb250cm9sIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBTbGlkZXJDb250cm9sVmFsdWUge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3BvcG92ZXJWYWx1ZVJlZigpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyLCB0aGlzLl9oYW5kbGUxVmFsdWUsIHRoaXMuX2hhbmRsZTJWYWx1ZV07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd0cmFjaycsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHRyYWNrRWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoYW5kbGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBoYW5kbGU6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyYW5nZUhhbmRsZTEnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByYW5nZUhhbmRsZTE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyYW5nZUhhbmRsZTInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByYW5nZUhhbmRsZTI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFBvcG92ZXJDb21wb25lbnQpXG4gICAgX3BvcG92ZXJzOiBRdWVyeUxpc3Q8UG9wb3ZlckNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3NsaWRlclRvb2x0aXBXcmFwcGVyJylcbiAgICBfc2xpZGVyVG9vbHRpcFdyYXBwZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrIHwgU2xpZGVyVGlja01hcmtbXSB8IG51bWJlcltdID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2dyZXNzID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1zbGlkZXItLXJhbmdlJylcbiAgICBfaXNSYW5nZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMVBvc2l0aW9uID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTJQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGUxVmFsdWUgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMlZhbHVlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JhbmdlUHJvZ3Jlc3MgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGlja01hcmtzOiBTbGlkZXJUaWNrTWFya1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zbGlkZXJWYWx1ZVRhcmdldHMgPSBTbGlkZXJWYWx1ZVRhcmdldHM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVySW5wdXRGaWVsZENsYXNzID0gYGZkLXNsaWRlci1wb3BvdmVyLWlucHV0LSR7c2xpZGVySWR9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUnRsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogd2hldGhlciB0byB1c2UgdmFsdWUgd2l0aCBhIHByZWZpeCBmb3IgYW5ub3VuY2luZ1xuICAgICAqL1xuICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21pbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21heCA9IDEwMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2p1bXAgPSAxMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGlja21hcmtzQmV0d2VlbkxhYmVscyA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlc0J5U3RlcHM6IG51bWJlcltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY29tcG9uZW50SG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2hhbmRsZUZvY3VzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yYW5nZUhhbmRsZTFGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcmFuZ2VIYW5kbGUyRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9SdGwoKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoUmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5fb25SZXNpemUoKTtcblxuICAgICAgICBpZiAodGhpcy5fdmFsdWVzQnlTdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja0lzSW5SYW5nZU1vZGUoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgdGhpcy5fcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlbm93KHBvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSwgc2xpZGVyVmFsdWVUYXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY3VzdG9tVmFsdWVzW3Bvc2l0aW9uIGFzIG51bWJlcl0ubGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fcG9wb3ZlclZhbHVlUmVmW3NsaWRlclZhbHVlVGFyZ2V0XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWluIGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtYXhWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWF4IGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2ZkLXNsaWRlcicsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID8gJ2lzLWRpc2FibGVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faXNSYW5nZSA/ICdmZC1zbGlkZXItLXJhbmdlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5zaG93VGlja3MgJiYgdGhpcy5zaG93VGlja3NMYWJlbHMgPyAnZmQtc2xpZGVyLS13aXRoLWxhYmVscycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAgICAgICB0aGlzLl9wbGF0Zm9ybS5FREdFIHx8IHRoaXMuX3BsYXRmb3JtLlRSSURFTlQgPyAnZmQtc2xpZGVyX19hbHRlcm5hdGl2ZS10aWNrLXdpZHRoJyA6ICcnXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRyYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKGV2ZW50KSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5oYW5kbGUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25IYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmVGcm9tTW91c2Vtb3ZlID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZW1vdmUnLCAobW92ZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXM7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQsIGZhbHNlKSBhcyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXgsIHZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB1bnN1YnNjcmliZUZyb21Nb3VzZXVwID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmVGcm9tTW91c2Vtb3ZlKCk7XG4gICAgICAgICAgICB1bnN1YnNjcmliZUZyb21Nb3VzZXVwKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbGxvd2VkS2V5czogbnVtYmVyW10gPSBbTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XLCBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0VdO1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBhbGxvd2VkS2V5cykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IGRpZmYgPSBldmVudC5zaGlmdEtleSA/IHRoaXMuanVtcCA6IHRoaXMuc3RlcDtcbiAgICAgICAgbGV0IG5ld1ZhbHVlOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB8IG51bGwgPSBudWxsO1xuICAgICAgICBsZXQgcHJldlZhbHVlID0gdGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyO1xuICAgICAgICBsZXQgaGFuZGxlSW5kZXg6IFNsaWRlclJhbmdlSGFuZGxlcyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwcmV2VmFsdWUgPSB0aGlzLl9oYW5kbGUxVmFsdWU7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHByZXZWYWx1ZSA9IHRoaXMuX2hhbmRsZTJWYWx1ZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNSdGwoKSkge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2VmFsdWUgKyBkaWZmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFJJR0hUX0FSUk9XKSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZWYWx1ZSAtIGRpZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIExFRlRfQVJST1cpIHx8IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlIC0gZGlmZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUobmV3VmFsdWUgYXMgbnVtYmVyLCAhdGhpcy5faXNSYW5nZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihoYW5kbGVJbmRleCwgbmV3VmFsdWUgYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91cGRhdGVWYWx1ZUZyb21JbnB1dCh2YWx1ZTogc3RyaW5nLCB0YXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX3Byb2Nlc3NOZXdWYWx1ZSgrdmFsdWUpIGFzIG51bWJlcjtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlICYmIHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXQgPT09IFNsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCkpO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFZhbHVlKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGUoKHZhbHVlID8/IFswLjBdKSBhcyBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZSgodmFsdWUgPz8gMCkgYXMgbnVtYmVyIHwgU2xpZGVyVGlja01hcmspO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIucmVmcmVzaFBvc2l0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50LCB0YWtlQ3VzdG9tVmFsdWUgPSB0cnVlKTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsge1xuICAgICAgICBjb25zdCB7IGxlZnQsIHdpZHRoIH0gPSB0aGlzLnRyYWNrRWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2UgPSAoZXZlbnQuY2xpZW50WCAtIGxlZnQpIC8gd2lkdGg7XG5cbiAgICAgICAgaWYgKHRoaXMuX2lzUnRsKSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlID0gMSAtIHBlcmNlbnRhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMubWluICsgcGVyY2VudGFnZSAqICh0aGlzLm1heCAtIHRoaXMubWluKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlLCB0YWtlQ3VzdG9tVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlOiBudW1iZXIsIHRha2VDdXN0b21WYWx1ZSA9IHRydWUpOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5taW47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgY29uc3Qgc3RlcERpZmZBcnJheSA9IHRoaXMuX3ZhbHVlc0J5U3RlcHNcbiAgICAgICAgICAgIC5tYXAoKHN0ZXBWYWx1ZSkgPT4gKHsgZGlmZjogTWF0aC5hYnMoc3RlcFZhbHVlIC0gbmV3VmFsdWUpLCB2YWx1ZTogc3RlcFZhbHVlIH0pKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZGlmZiAtIGIuZGlmZik7XG4gICAgICAgIGxldCB2YWx1ZTogU2xpZGVyVGlja01hcmsgfCBudW1iZXIgPSBzdGVwRGlmZkFycmF5WzBdLnZhbHVlO1xuXG4gICAgICAgIGlmICh0YWtlQ3VzdG9tVmFsdWUgJiYgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbVZhbHVlc1t2YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXg6IFNsaWRlclJhbmdlSGFuZGxlcywgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuX2NhbGNQcm9ncmVzcyh2YWx1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKGhhbmRsZUluZGV4ID09PSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yYW5nZVByb2dyZXNzID0gTWF0aC5hYnModGhpcy5faGFuZGxlMlBvc2l0aW9uIC0gdGhpcy5faGFuZGxlMVBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpOiBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10ge1xuICAgICAgICBsZXQgcmFuZ2VMb3dlclZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgICAgIGxldCByYW5nZUhpZ2hlclZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgICAgIGxldCByYW5nZVZhbHVlOiBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10gPSBbXG4gICAgICAgICAgICBNYXRoLm1pbih0aGlzLl9oYW5kbGUxVmFsdWUsIHRoaXMuX2hhbmRsZTJWYWx1ZSksXG4gICAgICAgICAgICBNYXRoLm1heCh0aGlzLl9oYW5kbGUxVmFsdWUsIHRoaXMuX2hhbmRsZTJWYWx1ZSlcbiAgICAgICAgXTtcblxuICAgICAgICByYW5nZUxvd2VyVmFsdWUgPSByYW5nZVZhbHVlWzBdO1xuICAgICAgICByYW5nZUhpZ2hlclZhbHVlID0gcmFuZ2VWYWx1ZVsxXTtcblxuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWluID0gdGhpcy5jdXN0b21WYWx1ZXNbcmFuZ2VWYWx1ZVswXV0gfHwgdGhpcy5jdXN0b21WYWx1ZXNbMF07XG4gICAgICAgICAgICBjb25zdCBtYXggPSB0aGlzLmN1c3RvbVZhbHVlc1tyYW5nZVZhbHVlWzFdXSB8fCB0aGlzLmN1c3RvbVZhbHVlc1t0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgcmFuZ2VWYWx1ZSA9IFttaW4sIG1heF07XG4gICAgICAgICAgICByYW5nZUxvd2VyVmFsdWUgPSByYW5nZVZhbHVlWzBdLmxhYmVsO1xuICAgICAgICAgICAgcmFuZ2VIaWdoZXJWYWx1ZSA9IHJhbmdlVmFsdWVbMV0ubGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSgncmFuZ2UgdmFsdWUgYmV0d2VlbiAnICsgcmFuZ2VMb3dlclZhbHVlICsgJyBhbmQgJyArIHJhbmdlSGlnaGVyVmFsdWUsICdwb2xpdGUnKTtcbiAgICAgICAgcmV0dXJuIHJhbmdlVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hdHRhY2hSZXNpemVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vblJlc2l6ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RUaWNrTWFya3MoKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0VmFsdWVzQnlTdGVwcygpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlc0J5U3RlcHMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAodGhpcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnN0ZXAgKyAxIH0sIChfLCBpKSA9PlxuICAgICAgICAgICAgICAgIE51bWJlcigodGhpcy5taW4gKyBpICogdGhpcy5zdGVwKS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFRpY2tNYXJrcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykge1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gW107XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21WYWx1ZXNMZW5ndGggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gdGhpcy5jdXN0b21WYWx1ZXMubWFwKChpdGVtLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICgxMDAgLyBjdXN0b21WYWx1ZXNMZW5ndGgpICogaVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLm1heCAtIHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgdGlja01hcmtzQ291bnQgPSB0b3RhbCAvIHRoaXMuc3RlcCArIDE7XG4gICAgICAgICAgICBpZiAodGhpcy5fbWF4VGlja01hcmtzTnVtYmVyICE9PSB1bmRlZmluZWQgJiYgdGlja01hcmtzQ291bnQgPiB0aGlzLl9tYXhUaWNrTWFya3NOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSBbXG4gICAgICAgICAgICAgICAgICAgIHsgcG9zaXRpb246IDAsIHZhbHVlOiAwLCBsYWJlbDogYCR7dGhpcy5taW59YCB9LFxuICAgICAgICAgICAgICAgICAgICB7IHBvc2l0aW9uOiAxMDAsIHZhbHVlOiB0b3RhbCwgbGFiZWw6IGAke3RoaXMubWF4fWAgfVxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aWNrTWFya3NDb3VudCAlIDEgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aWNrTWFya3NDb3VudCB9LCAoXywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgucm91bmQoaSAqIHRoaXMuc3RlcCAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gKHZhbHVlIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgcG9zaXRpb24sIGxhYmVsOiBgJHt0aGlzLm1pbiArIHZhbHVlfWAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX21heFRpY2tNYXJrc051bWJlcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMudHJhY2tFbCB8fCAhdGhpcy50cmFja0VsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudHJhY2tFbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gTUlOX0RJU1RBTkNFX0JFVFdFRU5fVElDS1MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY1Byb2dyZXNzKHZhbHVlOiBudW1iZXIsIHNraXBSdGwgPSBmYWxzZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBwcm9ncmVzcyA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuXG4gICAgICAgIGlmICghc2tpcFJ0bCAmJiB0aGlzLl9pc1J0bCkge1xuICAgICAgICAgICAgcHJvZ3Jlc3MgPSAxMDAgLSBwcm9ncmVzcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9ncmVzcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb2dyZXNzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVBvc2l0aW9uID0gdGhpcy5fY2FsY1Byb2dyZXNzKHRoaXMuX2hhbmRsZTFWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUyUG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5faGFuZGxlMlZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlUHJvZ3Jlc3MgPSBNYXRoLmFicyh0aGlzLl9oYW5kbGUyUG9zaXRpb24gLSB0aGlzLl9oYW5kbGUxUG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrSXNJblJhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNSYW5nZSA9IHRoaXMubW9kZSA9PT0gJ3JhbmdlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzUnRsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc1J0bCA9IGlzUnRsO1xuICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGUodmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlV2l0aEN1c3RvbVZhbHVlKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZURlZmF1bHQoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMubWluKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2luZ2VNb2RlRGVmYXVsdCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNpbmdlTW9kZVdpdGhDdXN0b21WYWx1ZShzbGlkZXJUaWNrTWFyazogU2xpZGVyVGlja01hcmspOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5fZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb24oc2xpZGVyVGlja01hcmspIGFzIG51bWJlcikgfHwgdGhpcy5taW47XG5cbiAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZURlZmF1bHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFJhbmdlTW9kZSh2YWx1ZTogbnVtYmVyW10gfCBTbGlkZXJUaWNrTWFya1tdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0UmFuZ2VNb2RlV2l0aEN1c3RvbVZhbHVlcyh2YWx1ZSBhcyBTbGlkZXJUaWNrTWFya1tdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3RIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVswXSwgdGhpcy5taW4pO1xuICAgICAgICBjb25zdCBzZWNvbmRIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVsxXSwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVEZWZhdWx0KFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlRGVmYXVsdChbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV06IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdO1xuXG4gICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIGZpcnN0SGFuZGxlKTtcbiAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIHNlY29uZEhhbmRsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlV2l0aEN1c3RvbVZhbHVlcyhbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV06IFNsaWRlclRpY2tNYXJrW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbihbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0pIHx8IFt0aGlzLm1pbiwgdGhpcy5tYXhdO1xuXG4gICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVEZWZhdWx0KHZhbHVlIGFzIG51bWJlcltdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbnModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb25zKHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrW10pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmFuZ2UgPyBbMCwgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV0gOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShzZWNvbmRIYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kSGFuZGxlID0gdGhpcy5jdXN0b21WYWx1ZXNbdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SGFuZGxlUG9zaXRpb24gPSB0aGlzLmN1c3RvbVZhbHVlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGZpcnN0SGFuZGxlLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZEhhbmRsZVBvc2l0aW9uID0gdGhpcy5jdXN0b21WYWx1ZXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBzZWNvbmRIYW5kbGUudmFsdWUpO1xuXG4gICAgICAgICAgICBjb25zdCBpbmRleGVzID0gW1xuICAgICAgICAgICAgICAgIGZpcnN0SGFuZGxlUG9zaXRpb24gPj0gMCA/IGZpcnN0SGFuZGxlUG9zaXRpb24gOiAwLFxuICAgICAgICAgICAgICAgIHNlY29uZEhhbmRsZVBvc2l0aW9uID49IDAgPyBzZWNvbmRIYW5kbGVQb3NpdGlvbiA6IHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZpcnN0SGFuZGxlID0gdmFsdWUgYXMgU2xpZGVyVGlja01hcms7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBmaXJzdEhhbmRsZS52YWx1ZSkgfHwgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5zdGFuY2VPZkN1c3RvbVZhbHVlKG9iamVjdDogYW55KTogb2JqZWN0IGlzIFNsaWRlckN1c3RvbVZhbHVlIHtcbiAgICAgICAgcmV0dXJuICEhb2JqZWN0ICYmICd2YWx1ZScgaW4gb2JqZWN0ICYmICdsYWJlbCcgaW4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9JbnRlcmFjdGlvbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9yYW5nZUhhbmRsZTFGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlSGFuZGxlMkZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudEhvdmVyZWQkLFxuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJFxuICAgICAgICBdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICBtYXAoKHN0YXRlcykgPT4gc3RhdGVzLnNvbWUoQm9vbGVhbikpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoZm9jdXNlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIG5vdCBmb2N1c2VkLCBjaGVjayBmb3IgdGhlIGVkZ2UgY2FzZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBob3ZlciBpcyBvbiB0aGUgZmQtcG9wb3Zlci1ib2R5LCB0aGF0IGlzIGEgcGFyZW50IGZvciB0aGUgdG9vbHRpcC5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0cnVlLCB3aGVuIGhvdmVyaW5nIHRoZSBnYXAgYmV0d2VlbiBoYW5kbGUgYW5kIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faXNQb3BvdmVySG92ZXJlZCgpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMCksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzZWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVycy5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLm9wZW4oKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRQcmVmaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcnMuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5jbG9zZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiByZXNldCBkZWZhdWx0IHByZWZpeCBvbiBsZWF2aW5nIHRoZSBzbGlkZXIgKi9cbiAgICBwcml2YXRlIF9yZXNldFByZWZpeCgpOiB2b2lkIHtcbiAgICAgICAgLy8gcmVzZXQgcHJlZml4IHN0cmluZyBmb3Igc2xpZGVyIGN1cnJlbnQgdmFsdWUgdGhhdCBuZWVkIHRvIGJlIGFubm91bmNlZFxuICAgICAgICB0aGlzLl91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgaW5wdXQgcG9wb3ZlciBlbGVtZW50IGlzIGhvdmVyZWQuXG4gICAgICogV2lsbCBhbHNvIHJldHVybiB0cnVlLCB3aGVuIGhvdmVyaW5nIHRoZSBnYXAgYmV0d2VlbiBoYW5kbGUgYW5kIHRoZSB0b29sdGlwLlxuICAgICAqIElmIHllcywgcmV0dXJucyBcInRydWVcIiBpbnN0YW50bHkgYW5kIFwiZmFsc2VcIiBvbmNlIGl0J3Mgbm90IGhvdmVyZWQgYW55bW9yZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pc1BvcG92ZXJIb3ZlcmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBwb3BvdmVyQm9keSA9IHRoaXMuX3NsaWRlclRvb2x0aXBXcmFwcGVycy5maXJzdD8ubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdmZC1wb3BvdmVyLWJvZHknKTtcbiAgICAgICAgaWYgKHBvcG92ZXJCb2R5Py5tYXRjaGVzKCc6aG92ZXInKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21FdmVudChwb3BvdmVyQm9keSwgJ21vdXNlbGVhdmUnKS5waXBlKG1hcFRvKGZhbHNlKSwgdGFrZSgxKSwgc3RhcnRXaXRoKHRydWUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX2lubmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIl9pc1JhbmdlID8gcmFuZ2VNb2RlIDogc2luZ2xlTW9kZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fdHJhY2tcIiAoY2xpY2spPVwib25UcmFja0NsaWNrKCRldmVudClcIiAjdHJhY2s+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaXNSYW5nZSA/IHJhbmdlTW9kZVRyYWNrIDogc2luZ2xlTW9kZVRyYWNrXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX190aWNrLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fdGlja3NcIiAoY2xpY2spPVwib25UcmFja0NsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGlja3NcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIF90aWNrTWFya3M7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX3RpY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwidGljay5wb3NpdGlvbiB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX3RpY2stLWluLXJhbmdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFoaWRlUHJvZ3Jlc3NCYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2lzUmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aWNrLnZhbHVlID49IF9wb3NpdGlvblswXSAmJiB0aWNrLnZhbHVlIDw9IF9wb3NpdGlvblsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRpY2sudmFsdWUgPD0gX3Bvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX2xhYmVsc1wiICpuZ0lmPVwic2hvd1RpY2tzICYmIHNob3dUaWNrc0xhYmVsc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGljayBvZiBfdGlja01hcmtzOyBpbmRleCBhcyBpOyBsYXN0IGFzIGxhc3Q7IGZpcnN0IGFzIGZpcnN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpcnN0IHx8IGxhc3QgfHwgaSAlIHRpY2ttYXJrc0JldHdlZW5MYWJlbHMgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInRpY2sucG9zaXRpb24gfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lclRleHRdPVwidGljay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTW9kZVRyYWNrPlxuICAgIDxkaXYgKm5nSWY9XCIhaGlkZVByb2dyZXNzQmFyXCIgY2xhc3M9XCJmZC1zbGlkZXJfX3RyYWNrLXJhbmdlXCIgW3N0eWxlLndpZHRoLiVdPVwiX3Byb2dyZXNzXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3JhbmdlTW9kZVRyYWNrPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaGlkZVByb2dyZXNzQmFyXCJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX3RyYWNrLXJhbmdlXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiX3JhbmdlUHJvZ3Jlc3NcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUxUG9zaXRpb24gPCBfaGFuZGxlMlBvc2l0aW9uID8gX2hhbmRsZTFQb3NpdGlvbiA6IF9oYW5kbGUyUG9zaXRpb25cIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTW9kZT5cbiAgICA8ZGl2XG4gICAgICAgICNoYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAnY29yZVNsaWRlci5zaW5nbGVNaW5NYXhEZXRhaWxzJyB8IGZkVHJhbnNsYXRlOiB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHNpbmdsZVNsaWRlclBvcG92ZXIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5zaW5nbGVWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLnNpbmdsZVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogbWF4VmFsdWUgfVwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5zaW5nbGVWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfcG9zaXRpb24sIF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVldGV4dF09XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLnNpbmdsZVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX3Bvc2l0aW9uLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpXG4gICAgICAgIFwiXG4gICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICBbcG9zaXRpb25dPVwiX3Byb2dyZXNzXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChmb2N1cyk9XCJfaGFuZGxlRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgIChibHVyKT1cIl9oYW5kbGVGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjc2luZ2xlU2xpZGVyUG9wb3ZlclxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFthcHBlbmRUb109XCJoYW5kbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2x0aXBNb2RlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1wb3BvdmVyLS1zbGlkZXJcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwb3BvdmVySW5uZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyB0YXJnZXQ6IF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUiwgcG9zaXRpb246IF9wb3NpdGlvbiB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyYW5nZU1vZGU+XG4gICAgPGRpdlxuICAgICAgICAjcmFuZ2VIYW5kbGUxXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19oYW5kbGVcIlxuICAgICAgICBbY2xhc3MuZmQtc2xpZGVyX19oYW5kbGUtLWxnXT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBhcmlhTGFiZWwgfHwgJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZTogeyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH1cbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgW2ZkUG9wb3ZlclRyaWdnZXJdPVwidG9vbHRpcE1vZGUgPyByYW5nZVNsaWRlclBvcG92ZXIxIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwiJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVtaW5EZXRhaWxzJyB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVldGV4dF09XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSkgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSlcbiAgICAgICAgXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMVBvc2l0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9yYW5nZUhhbmRsZTFGb2N1c2VkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiX3JhbmdlSGFuZGxlMUZvY3VzZWQkLm5leHQoZmFsc2UpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICNyYW5nZUhhbmRsZTJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJNaW5NYXhEZXRhaWxzJyB8IGZkVHJhbnNsYXRlOiB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHJhbmdlU2xpZGVyUG9wb3ZlcjIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMlZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogbWF4VmFsdWUgfVwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpIH0pXG4gICAgICAgICAgICAgICAgOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTJWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTJWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUyUG9zaXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGFuZGxlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwiX3JhbmdlSGFuZGxlMkZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfcmFuZ2VIYW5kbGUyRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgID48L2Rpdj5cblxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNyYW5nZVNsaWRlclBvcG92ZXIxXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cInJhbmdlSGFuZGxlMVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbHRpcE1vZGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cImZkLXBvcG92ZXItLXNsaWRlclwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJJbm5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHRhcmdldDogX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxLCBwb3NpdGlvbjogX2hhbmRsZTFWYWx1ZSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuXG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgI3JhbmdlU2xpZGVyUG9wb3ZlcjJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYXBwZW5kVG9dPVwicmFuZ2VIYW5kbGUyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0b29sdGlwTW9kZVwiXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXAtcG9wb3ZlclwiXG4gICAgICAgIGNsYXNzPVwiZmQtcG9wb3Zlci0tc2xpZGVyXCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlcklubmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFyZ2V0OiBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIsIHBvc2l0aW9uOiBfaGFuZGxlMlZhbHVlIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvcG92ZXJJbm5lciBsZXQtdGFyZ2V0PVwidGFyZ2V0XCIgbGV0LXBvc2l0aW9uPVwicG9zaXRpb25cIj5cbiAgICA8ZGl2XG4gICAgICAgICNzbGlkZXJUb29sdGlwV3JhcHBlclxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC13cmFwcGVyXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIl9wb3BvdmVySW5wdXRGaWVsZEhvdmVyZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJC5uZXh0KGZhbHNlKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIihjdXN0b21WYWx1ZXMgJiYgY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHx8IHRvb2x0aXBNb2RlID09PSAncmVhZG9ubHknXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwXCJcbiAgICAgICAgICAgIFtpbm5lclRleHRdPVwiXG4gICAgICAgICAgICAgICAgY3VzdG9tVmFsdWVzICYmIGN1c3RvbVZhbHVlcy5sZW5ndGggPiAwID8gY3VzdG9tVmFsdWVzW3Bvc2l0aW9uXS5sYWJlbCA6IF9wb3BvdmVyVmFsdWVSZWZbdGFyZ2V0XVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3BvcG92ZXJJbnB1dEZpZWxkXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBmZC1vbmx5LWRpZ2l0c1xuICAgICAgICAgICAgW2RlY2ltYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGguY2hdPVwiKCcnICsgX3BvcG92ZXJWYWx1ZVJlZlt0YXJnZXRdKS5sZW5ndGggKyAyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtc2xpZGVyLS10b29sdGlwIHt7IF9wb3BvdmVySW5wdXRGaWVsZENsYXNzIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY3VzdG9tVmFsdWVzPy5sZW5ndGggPT09IDAgJiYgdG9vbHRpcE1vZGUgPT09ICdlZGl0YWJsZSdcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfcG9wb3ZlclZhbHVlUmVmW3RhcmdldF1cIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3VwZGF0ZVZhbHVlRnJvbUlucHV0KHBvcG92ZXJJbnB1dEZpZWxkLnZhbHVlLCB0YXJnZXQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl91cGRhdGVWYWx1ZUZyb21JbnB1dChwb3BvdmVySW5wdXRGaWVsZC52YWx1ZSwgdGFyZ2V0KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJfcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
779
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3NsaWRlci9zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2xpZGVyL3NsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFJTCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRixPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixHQUFHLEVBQ0gsS0FBSyxFQUNMLElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1osTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwr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O3VCQUFDLFNBQVM7Z0JBS3RCLEtBQUs7c0JBREosS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtGLEdBQUc7c0JBRE4sS0FBSztnQkFlRixHQUFHO3NCQUROLEtBQUs7Z0JBZUYsSUFBSTtzQkFEUCxLQUFLO2dCQWVGLElBQUk7c0JBRFAsS0FBSztnQkFVRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBY04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sWUFBWTtzQkFEWCxLQUFLO2dCQUtOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQVVOLDhCQUE4QjtzQkFEN0IsS0FBSztnQkFVTixvQ0FBb0M7c0JBRG5DLEtBQUs7Z0JBVU4sb0NBQW9DO3NCQURuQyxLQUFLO2dCQVFGLEtBQUs7c0JBRFIsS0FBSztnQkFlTixPQUFPO3NCQUROLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLeEMsTUFBTTtzQkFETCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3pDLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUsvQyxZQUFZO3NCQURYLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLL0MsU0FBUztzQkFEUixZQUFZO3VCQUFDLGdCQUFnQjtnQkFLOUIsc0JBQXNCO3NCQURyQixZQUFZO3VCQUFDLHNCQUFzQjtnQkFXcEMsUUFBUTtzQkFEUCxXQUFXO3VCQUFDLHdCQUF3QjtnQkF5SnJDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlbixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERPV05fQVJST1csIEVOVEVSLCBMRUZUX0FSUk9XLCBSSUdIVF9BUlJPVywgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BsYXRmb3JtJztcbmltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IExpdmVBbm5vdW5jZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBkZWJvdW5jZVRpbWUsXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gICAgbWFwLFxuICAgIG1hcFRvLFxuICAgIHNraXAsXG4gICAgc3RhcnRXaXRoLFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlLFxuICAgIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvcG9wb3Zlcic7XG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9zaGFyZWQnO1xuaW1wb3J0IHtcbiAgICBTbGlkZXJDb250cm9sVmFsdWUsXG4gICAgU2xpZGVyQ3VzdG9tVmFsdWUsXG4gICAgU2xpZGVyUmFuZ2VIYW5kbGVzLFxuICAgIFNsaWRlclRpY2tNYXJrLFxuICAgIFNsaWRlclZhbHVlVGFyZ2V0c1xufSBmcm9tICcuL3NsaWRlci5tb2RlbCc7XG5pbXBvcnQgeyBNSU5fRElTVEFOQ0VfQkVUV0VFTl9USUNLUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MsIENzc0NsYXNzQnVpbGRlciwgS2V5VXRpbCwgUnRsU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBGb3JtSXRlbUNvbnRyb2wsIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm0nO1xuaW1wb3J0IHtcbiAgICBDb250ZW50RGVuc2l0eU1vZGUsXG4gICAgQ29udGVudERlbnNpdHlPYnNlcnZlcixcbiAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuXG5leHBvcnQgY29uc3QgU0xJREVSX1ZBTFVFX0FDQ0VTU09SID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNsaWRlckNvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWVcbn07XG5cbmxldCBzbGlkZXJJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtc2xpZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zbGlkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBTTElERVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgIHJlZ2lzdGVyRm9ybUl0ZW1Db250cm9sKFNsaWRlckNvbXBvbmVudCksXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgICAgIG1vZGlmaWVyczogeyBbQ29udGVudERlbnNpdHlNb2RlLkNPWlldOiAnZmQtc2xpZGVyLS1sZycgfVxuICAgICAgICB9KVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnKG1vdXNlZW50ZXIpJzogJ3RoaXMuX2NvbXBvbmVudEhvdmVyZWQkLm5leHQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlbGVhdmUpJzogJ3RoaXMuX2NvbXBvbmVudEhvdmVyZWQkLm5leHQoZmFsc2UpJyxcbiAgICAgICAgJyhmb2N1c291dCknOiAnb25Ub3VjaGVkKCknXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBDc3NDbGFzc0J1aWxkZXIsIEZvcm1JdGVtQ29udHJvbFxue1xuICAgIC8qKiBTbGlkZXIgaWQsIGl0IGhhcyBzb21lIGRlZmF1bHQgdmFsdWUgaWYgbm90IHNldCwgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIGlkID0gJ2ZkLXNsaWRlci1pZC0nICsgc2xpZGVySWQrKztcblxuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG5cbiAgICAvKiogSWQgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHMgc2xpZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkQnk6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHNsaWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBNaW5pbXVtIHZhbHVlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMuX21pbik7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gbmV3VmFsdWUpIC8gdGhpcy5zdGVwKSAlIDEgIT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgbWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW47XG4gICAgfVxuXG4gICAgLyoqIE1heGltdW0gdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4KHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fbWF4KTtcbiAgICAgICAgaWYgKCgobmV3VmFsdWUgLSB0aGlzLm1pbikgLyB0aGlzLnN0ZXApICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heDtcbiAgICB9XG5cbiAgICAvKiogU3RlcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fc3RlcCk7XG4gICAgICAgIGlmICgoKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gbmV3VmFsdWUpICUgMSAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RlcCA9IHZhbHVlO1xuICAgIH1cbiAgICBnZXQgc3RlcCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RlcDtcbiAgICB9XG5cbiAgICAvKiogSnVtcCB2YWx1ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBqdW1wKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fanVtcCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCB0aGlzLl9qdW1wKTtcbiAgICB9XG4gICAgZ2V0IGp1bXAoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2p1bXA7XG4gICAgfVxuXG4gICAgLyoqIFB1dCBhIGxhYmVsIG9uIGV2ZXJ5IE4tdGggdGlja21hcmsuICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGlja21hcmtzQmV0d2VlbkxhYmVscyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RpY2ttYXJrc0JldHdlZW5MYWJlbHMgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSwgdGhpcy5fdGlja21hcmtzQmV0d2VlbkxhYmVscyk7XG4gICAgfVxuICAgIGdldCB0aWNrbWFya3NCZXR3ZWVuTGFiZWxzKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aWNrbWFya3NCZXR3ZWVuTGFiZWxzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNsaWRlciBtb2RlLlxuICAgICAqIE9wdGlvbnMgaW5jbHVkZTogJ3NpbmdsZScgfCAncmFuZ2UnXG4gICAgICogVGhlIGRlZmF1bHQgaXMgc2V0IHRvICdzaW5nbGUnXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2RlOiAnc2luZ2xlJyB8ICdyYW5nZScgPSAnc2luZ2xlJztcblxuICAgIC8qKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRpY2sgbWFya3MuICovXG4gICAgQElucHV0KClcbiAgICBzaG93VGlja3MgPSBmYWxzZTtcblxuICAgIC8qKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRpY2sgbWFyayBsYWJlbHMuIE11c3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoICdzaG93VGlja3MnICovXG4gICAgQElucHV0KClcbiAgICBzaG93VGlja3NMYWJlbHMgPSBmYWxzZTtcblxuICAgIC8qKiBBcnJheSBvZiBjdXN0b20gdmFsdWVzIHRvIHVzZSBmb3IgU2xpZGVyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY3VzdG9tVmFsdWVzOiBTbGlkZXJDdXN0b21WYWx1ZVtdID0gW107XG5cbiAgICAvKiogVG9vbHRpcCBjYW4gYmUgdHdvIHR5cGVzLCAncmVhZG9ubHknIHRvIGRpc3BsYXkgdmFsdWUgYW5kICdlZGl0YWJsZScgdG8gbWFrZSB0aGUgYWJpbGl0eSB0byBzZXQgYW5kIGRpc3BsYXkgdmFsdWUuICovXG4gICAgQElucHV0KClcbiAgICB0b29sdGlwTW9kZTogJ3JlYWRvbmx5JyB8ICdlZGl0YWJsZSc7XG5cbiAgICAvKiogSGlkZXMgZGlzcGxheSBvZiBjb2xvcmVkIHByb2dyZXNzIGJhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGhpZGVQcm9ncmVzc0JhciA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWQuICovXG4gICAgQElucHV0KClcbiAgICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogc2xpZGVyIGN1cnJlbnQgdmFsdWUgdmVyYm9zZSBzdHJpbmcuXG4gICAgICogVGhpcyB3aWxsIGJlIHJlYWQgb25seSBvbmNlIGJ5IHNjcmVlbiByZWFkZXIgYW5kIHVwb24gc2xpZGVyIHZhbHVlIGNoYW5nZSxcbiAgICAgKiB0aGlzIHN0cmluZyB3aWxsIG5vdCBiZSByZWFkLlxuICAgICAqIEBkZXByZWNhdGVkIG5vIGxvbmdlciB1c2VkLCB1c2UgaTE4biBjYXBhYmlsaXRpZXMgaW5zdGVhZFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2luZ2xlU2xpZGVyQ3VycmVudFZhbHVlUHJlZml4OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIHJhbmdlIHNsaWRlciBoYW5kbGUgMSBjdXJyZW50IHZhbHVlIHN1cHBvcnRpbmcgc3RyaW5nXG4gICAgICogVGhpcyB3aWxsIGJlIHJlYWQgb25seSBvbmNlIGJ5IHNjcmVlbiByZWFkZXIgYW5kIHVwb24gc2xpZGVyIHZhbHVlIGNoYW5nZSxcbiAgICAgKiB0aGlzIHN0cmluZyB3aWxsIG5vdCBiZSByZWFkLlxuICAgICAqICogQGRlcHJlY2F0ZWQgbm8gbG9uZ2VyIHVzZWQsIHVzZSBpMThuIGNhcGFiaWxpdGllcyBpbnN0ZWFkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByYW5nZVNsaWRlckhhbmRsZTFDdXJyZW50VmFsdWVQcmVmaXg6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gcmFuZ2Ugc2xpZGVyIGhhbmRsZSAyIGN1cnJlbnQgdmFsdWUgc3VwcG9ydGluZyBzdHJpbmdcbiAgICAgKiBUaGlzIHdpbGwgYmUgcmVhZCBvbmx5IG9uY2UgYnkgc2NyZWVuIHJlYWRlciBhbmQgdXBvbiBzbGlkZXIgdmFsdWUgY2hhbmdlLFxuICAgICAqIHRoaXMgc3RyaW5nIHdpbGwgbm90IGJlIHJlYWQuXG4gICAgICogKiBAZGVwcmVjYXRlZCBubyBsb25nZXIgdXNlZCwgdXNlIGkxOG4gY2FwYWJpbGl0aWVzIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJhbmdlU2xpZGVySGFuZGxlMkN1cnJlbnRWYWx1ZVByZWZpeDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9zaXRpb246IG51bWJlciB8IG51bWJlcltdID0gMDtcblxuICAgIC8qKiBDb250cm9sIHZhbHVlICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdmFsdWUodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkge1xuICAgICAgICB0aGlzLl9zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBTbGlkZXJDb250cm9sVmFsdWUge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3BvcG92ZXJWYWx1ZVJlZigpOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyLCB0aGlzLl9oYW5kbGUxVmFsdWUsIHRoaXMuX2hhbmRsZTJWYWx1ZV07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd0cmFjaycsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHRyYWNrRWw6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdoYW5kbGUnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBoYW5kbGU6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyYW5nZUhhbmRsZTEnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByYW5nZUhhbmRsZTE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyYW5nZUhhbmRsZTInLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICByYW5nZUhhbmRsZTI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkcmVuKFBvcG92ZXJDb21wb25lbnQpXG4gICAgX3BvcG92ZXJzOiBRdWVyeUxpc3Q8UG9wb3ZlckNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3NsaWRlclRvb2x0aXBXcmFwcGVyJylcbiAgICBfc2xpZGVyVG9vbHRpcFdyYXBwZXJzOiBRdWVyeUxpc3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrIHwgU2xpZGVyVGlja01hcmtbXSB8IG51bWJlcltdID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Byb2dyZXNzID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5mZC1zbGlkZXItLXJhbmdlJylcbiAgICBfaXNSYW5nZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMVBvc2l0aW9uID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2hhbmRsZTJQb3NpdGlvbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9oYW5kbGUxVmFsdWUgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaGFuZGxlMlZhbHVlID0gMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JhbmdlUHJvZ3Jlc3MgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdGlja01hcmtzOiBTbGlkZXJUaWNrTWFya1tdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zbGlkZXJWYWx1ZVRhcmdldHMgPSBTbGlkZXJWYWx1ZVRhcmdldHM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVySW5wdXRGaWVsZENsYXNzID0gYGZkLXNsaWRlci1wb3BvdmVyLWlucHV0LSR7c2xpZGVySWR9YDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lzUnRsID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogd2hldGhlciB0byB1c2UgdmFsdWUgd2l0aCBhIHByZWZpeCBmb3IgYW5ub3VuY2luZ1xuICAgICAqL1xuICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IHRydWU7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21pbiA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX21heCA9IDEwMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcCA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2p1bXAgPSAxMDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfdGlja21hcmtzQmV0d2VlbkxhYmVscyA9IDE7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZhbHVlc0J5U3RlcHM6IG51bWJlcltdID0gW107XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfY29tcG9uZW50SG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX2hhbmRsZUZvY3VzZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlYWRvbmx5IF9yYW5nZUhhbmRsZTFGb2N1c2VkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWFkb25seSBfcmFuZ2VIYW5kbGUyRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVhZG9ubHkgX3BvcG92ZXJJbnB1dEZpZWxkSG92ZXJlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBfbGl2ZUFubm91bmNlcjogTGl2ZUFubm91bmNlcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBfcnRsU2VydmljZTogUnRsU2VydmljZSxcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXJcbiAgICApIHtcbiAgICAgICAgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9SdGwoKTtcbiAgICAgICAgdGhpcy5fYXR0YWNoUmVzaXplTGlzdGVuZXIoKTtcbiAgICAgICAgdGhpcy5fb25SZXNpemUoKTtcblxuICAgICAgICBpZiAodGhpcy5fdmFsdWVzQnlTdGVwcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICB0aGlzLl9jaGVja0lzSW5SYW5nZU1vZGUoKTtcbiAgICAgICAgdGhpcy5fY29uc3RydWN0VGlja01hcmtzKCk7XG4gICAgICAgIHRoaXMuX2NvbnN0cnVjdFZhbHVlc0J5U3RlcHMoKTtcbiAgICAgICAgdGhpcy5fcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xpc3RlblRvSW50ZXJhY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydGxTZXJ2aWNlPy5ydGwuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldFZhbHVlbm93KHBvc2l0aW9uOiBudW1iZXIgfCBudW1iZXJbXSwgc2xpZGVyVmFsdWVUYXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHN0cmluZyB8IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY3VzdG9tVmFsdWVzW3Bvc2l0aW9uIGFzIG51bWJlcl0ubGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fcG9wb3ZlclZhbHVlUmVmW3NsaWRlclZhbHVlVGFyZ2V0XTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtaW5WYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWluIGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBtYXhWYWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCA/IHRoaXMuY3VzdG9tVmFsdWVzW3RoaXMubWF4IGFzIG51bWJlcl0ubGFiZWwgOiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3NzQ2xhc3NCdWlsZGVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvblxuICAgICAqIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHNpbmdsZSBzdHJpbmdcbiAgICAgKiBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igb3JkZXIgd2hpY2ggY3NzIGNsYXNzZXMgYXJlIGFwcGxpZWRcbiAgICAgKi9cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgJ2ZkLXNsaWRlcicsXG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkID8gJ2lzLWRpc2FibGVkJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5faXNSYW5nZSA/ICdmZC1zbGlkZXItLXJhbmdlJyA6ICcnLFxuICAgICAgICAgICAgdGhpcy5zaG93VGlja3MgJiYgdGhpcy5zaG93VGlja3NMYWJlbHMgPyAnZmQtc2xpZGVyLS13aXRoLWxhYmVscycgOiAnJyxcbiAgICAgICAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAgICAgICB0aGlzLl9wbGF0Zm9ybS5FREdFIHx8IHRoaXMuX3BsYXRmb3JtLlRSSURFTlQgPyAnZmQtc2xpZGVyX19hbHRlcm5hdGl2ZS10aWNrLXdpZHRoJyA6ICcnXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6ICh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IFNsaWRlckNvbnRyb2xWYWx1ZSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogU2xpZGVyQ29udHJvbFZhbHVlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldFZhbHVlKHZhbHVlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRyYWNrQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKGV2ZW50KSk7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5oYW5kbGUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25IYW5kbGVDbGljayhldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdW5zdWJzY3JpYmVGcm9tTW91c2Vtb3ZlID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZW1vdmUnLCAobW92ZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQpKTtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGhhbmRsZUluZGV4OiBTbGlkZXJSYW5nZUhhbmRsZXM7XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSB0aGlzLnJhbmdlSGFuZGxlMS5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGhhbmRsZUluZGV4ID0gU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuX2NhbGN1bGF0ZVZhbHVlRnJvbVBvaW50ZXJQb3NpdGlvbihtb3ZlRXZlbnQsIGZhbHNlKSBhcyBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXgsIHZhbHVlKTtcblxuICAgICAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB1bnN1YnNjcmliZUZyb21Nb3VzZXVwID0gdGhpcy5fcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgICAgICAgdW5zdWJzY3JpYmVGcm9tTW91c2Vtb3ZlKCk7XG4gICAgICAgICAgICB1bnN1YnNjcmliZUZyb21Nb3VzZXVwKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhbGxvd2VkS2V5czogbnVtYmVyW10gPSBbTEVGVF9BUlJPVywgUklHSFRfQVJST1csIFVQX0FSUk9XLCBET1dOX0FSUk9XLCBFTlRFUiwgU1BBQ0VdO1xuICAgICAgICBpZiAoIUtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBhbGxvd2VkS2V5cykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGNvbnN0IGRpZmYgPSBldmVudC5zaGlmdEtleSA/IHRoaXMuanVtcCA6IHRoaXMuc3RlcDtcbiAgICAgICAgbGV0IG5ld1ZhbHVlOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB8IG51bGwgPSBudWxsO1xuICAgICAgICBsZXQgcHJldlZhbHVlID0gdGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyO1xuICAgICAgICBsZXQgaGFuZGxlSW5kZXg6IFNsaWRlclJhbmdlSGFuZGxlcyB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwcmV2VmFsdWUgPSB0aGlzLl9oYW5kbGUxVmFsdWU7XG4gICAgICAgICAgICAgICAgaGFuZGxlSW5kZXggPSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHByZXZWYWx1ZSA9IHRoaXMuX2hhbmRsZTJWYWx1ZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVJbmRleCA9IFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNSdGwoKSkge1xuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBMRUZUX0FSUk9XKSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgVVBfQVJST1cpKSB7XG4gICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBwcmV2VmFsdWUgKyBkaWZmO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFJJR0hUX0FSUk9XKSB8fCBLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRE9XTl9BUlJPVykpIHtcbiAgICAgICAgICAgICAgICBuZXdWYWx1ZSA9IHByZXZWYWx1ZSAtIGRpZmY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIExFRlRfQVJST1cpIHx8IEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBET1dOX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlIC0gZGlmZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBSSUdIVF9BUlJPVykgfHwgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFVQX0FSUk9XKSkge1xuICAgICAgICAgICAgICAgIG5ld1ZhbHVlID0gcHJldlZhbHVlICsgZGlmZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3VmFsdWUgPSB0aGlzLl9wcm9jZXNzTmV3VmFsdWUobmV3VmFsdWUgYXMgbnVtYmVyLCAhdGhpcy5faXNSYW5nZSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaGFuZGxlSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihoYW5kbGVJbmRleCwgbmV3VmFsdWUgYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKHRoaXMuX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91cGRhdGVWYWx1ZUZyb21JbnB1dCh2YWx1ZTogc3RyaW5nLCB0YXJnZXQ6IFNsaWRlclZhbHVlVGFyZ2V0cyk6IHZvaWQge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuX3Byb2Nlc3NOZXdWYWx1ZSgrdmFsdWUpIGFzIG51bWJlcjtcbiAgICAgICAgaWYgKCF0aGlzLl9pc1JhbmdlICYmIHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gU2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjEpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMucmFuZ2VIYW5kbGUxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXQgPT09IFNsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oU2xpZGVyUmFuZ2VIYW5kbGVzLlNlY29uZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5yYW5nZUhhbmRsZTIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2V0VmFsdWUodGhpcy5fY29uc3RydWN0UmFuZ2VNb2RlbFZhbHVlKCkpO1xuXG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJzUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFZhbHVlKHZhbHVlOiBTbGlkZXJDb250cm9sVmFsdWUsIGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGUoKHZhbHVlID8/IFswLjBdKSBhcyBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZSgodmFsdWUgPz8gMCkgYXMgbnVtYmVyIHwgU2xpZGVyVGlja01hcmspO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF91cGRhdGVQb3BvdmVyc1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuX3BvcG92ZXJzLmZvckVhY2goKHBvcG92ZXIpID0+IHBvcG92ZXIucmVmcmVzaFBvc2l0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlVmFsdWVGcm9tUG9pbnRlclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50LCB0YWtlQ3VzdG9tVmFsdWUgPSB0cnVlKTogbnVtYmVyIHwgU2xpZGVyVGlja01hcmsge1xuICAgICAgICBjb25zdCB7IGxlZnQsIHdpZHRoIH0gPSB0aGlzLnRyYWNrRWwubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgbGV0IHBlcmNlbnRhZ2UgPSAoZXZlbnQuY2xpZW50WCAtIGxlZnQpIC8gd2lkdGg7XG5cbiAgICAgICAgaWYgKHRoaXMuX2lzUnRsKSB7XG4gICAgICAgICAgICBwZXJjZW50YWdlID0gMSAtIHBlcmNlbnRhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMubWluICsgcGVyY2VudGFnZSAqICh0aGlzLm1heCAtIHRoaXMubWluKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlLCB0YWtlQ3VzdG9tVmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcHJvY2Vzc05ld1ZhbHVlKG5ld1ZhbHVlOiBudW1iZXIsIHRha2VDdXN0b21WYWx1ZSA9IHRydWUpOiBudW1iZXIgfCBTbGlkZXJUaWNrTWFyayB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSA+IHRoaXMubWF4KSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMubWF4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIDwgdGhpcy5taW4pIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5taW47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgY29uc3Qgc3RlcERpZmZBcnJheSA9IHRoaXMuX3ZhbHVlc0J5U3RlcHNcbiAgICAgICAgICAgIC5tYXAoKHN0ZXBWYWx1ZSkgPT4gKHsgZGlmZjogTWF0aC5hYnMoc3RlcFZhbHVlIC0gbmV3VmFsdWUpLCB2YWx1ZTogc3RlcFZhbHVlIH0pKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuZGlmZiAtIGIuZGlmZik7XG4gICAgICAgIGxldCB2YWx1ZTogU2xpZGVyVGlja01hcmsgfCBudW1iZXIgPSBzdGVwRGlmZkFycmF5WzBdLnZhbHVlO1xuXG4gICAgICAgIGlmICh0YWtlQ3VzdG9tVmFsdWUgJiYgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmN1c3RvbVZhbHVlc1t2YWx1ZV07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRSYW5nZUhhbmRsZVZhbHVlQW5kUG9zaXRpb24oaGFuZGxlSW5kZXg6IFNsaWRlclJhbmdlSGFuZGxlcywgdmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuX2NhbGNQcm9ncmVzcyh2YWx1ZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKGhhbmRsZUluZGV4ID09PSBTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTFWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFuZGxlSW5kZXggPT09IFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQpIHtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZTJWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMlBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9yYW5nZVByb2dyZXNzID0gTWF0aC5hYnModGhpcy5faGFuZGxlMlBvc2l0aW9uIC0gdGhpcy5faGFuZGxlMVBvc2l0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFJhbmdlTW9kZWxWYWx1ZSgpOiBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10ge1xuICAgICAgICBsZXQgcmFuZ2VMb3dlclZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgICAgIGxldCByYW5nZUhpZ2hlclZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgICAgIGxldCByYW5nZVZhbHVlOiBudW1iZXJbXSB8IFNsaWRlclRpY2tNYXJrW10gPSBbXG4gICAgICAgICAgICBNYXRoLm1pbih0aGlzLl9oYW5kbGUxVmFsdWUsIHRoaXMuX2hhbmRsZTJWYWx1ZSksXG4gICAgICAgICAgICBNYXRoLm1heCh0aGlzLl9oYW5kbGUxVmFsdWUsIHRoaXMuX2hhbmRsZTJWYWx1ZSlcbiAgICAgICAgXTtcblxuICAgICAgICByYW5nZUxvd2VyVmFsdWUgPSByYW5nZVZhbHVlWzBdO1xuICAgICAgICByYW5nZUhpZ2hlclZhbHVlID0gcmFuZ2VWYWx1ZVsxXTtcblxuICAgICAgICBpZiAodGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgbWluID0gdGhpcy5jdXN0b21WYWx1ZXNbcmFuZ2VWYWx1ZVswXV0gfHwgdGhpcy5jdXN0b21WYWx1ZXNbMF07XG4gICAgICAgICAgICBjb25zdCBtYXggPSB0aGlzLmN1c3RvbVZhbHVlc1tyYW5nZVZhbHVlWzFdXSB8fCB0aGlzLmN1c3RvbVZhbHVlc1t0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxXTtcblxuICAgICAgICAgICAgcmFuZ2VWYWx1ZSA9IFttaW4sIG1heF07XG4gICAgICAgICAgICByYW5nZUxvd2VyVmFsdWUgPSByYW5nZVZhbHVlWzBdLmxhYmVsO1xuICAgICAgICAgICAgcmFuZ2VIaWdoZXJWYWx1ZSA9IHJhbmdlVmFsdWVbMV0ubGFiZWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSgncmFuZ2UgdmFsdWUgYmV0d2VlbiAnICsgcmFuZ2VMb3dlclZhbHVlICsgJyBhbmQgJyArIHJhbmdlSGlnaGVyVmFsdWUsICdwb2xpdGUnKTtcbiAgICAgICAgcmV0dXJuIHJhbmdlVmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hdHRhY2hSZXNpemVMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9vblJlc2l6ZSgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX29uUmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jb25zdHJ1Y3RUaWNrTWFya3MoKTtcbiAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY29uc3RydWN0VmFsdWVzQnlTdGVwcygpOiB2b2lkIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlc0J5U3RlcHMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAodGhpcy5tYXggLSB0aGlzLm1pbikgLyB0aGlzLnN0ZXAgKyAxIH0sIChfLCBpKSA9PlxuICAgICAgICAgICAgICAgIE51bWJlcigodGhpcy5taW4gKyBpICogdGhpcy5zdGVwKS50b0ZpeGVkKDIpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NvbnN0cnVjdFRpY2tNYXJrcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykge1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gW107XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21WYWx1ZXNMZW5ndGggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgdGhpcy5fdGlja01hcmtzID0gdGhpcy5jdXN0b21WYWx1ZXMubWFwKChpdGVtLCBpKSA9PiAoe1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgcG9zaXRpb246ICgxMDAgLyBjdXN0b21WYWx1ZXNMZW5ndGgpICogaVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdG90YWwgPSB0aGlzLm1heCAtIHRoaXMubWluO1xuICAgICAgICAgICAgY29uc3QgdGlja01hcmtzQ291bnQgPSB0b3RhbCAvIHRoaXMuc3RlcCArIDE7XG4gICAgICAgICAgICBpZiAodGhpcy5fbWF4VGlja01hcmtzTnVtYmVyICE9PSB1bmRlZmluZWQgJiYgdGlja01hcmtzQ291bnQgPiB0aGlzLl9tYXhUaWNrTWFya3NOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSBbXG4gICAgICAgICAgICAgICAgICAgIHsgcG9zaXRpb246IDAsIHZhbHVlOiAwLCBsYWJlbDogYCR7dGhpcy5taW59YCB9LFxuICAgICAgICAgICAgICAgICAgICB7IHBvc2l0aW9uOiAxMDAsIHZhbHVlOiB0b3RhbCwgbGFiZWw6IGAke3RoaXMubWF4fWAgfVxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aWNrTWFya3NDb3VudCAlIDEgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWNrTWFya3MgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiB0aWNrTWFya3NDb3VudCB9LCAoXywgaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IE1hdGgucm91bmQoaSAqIHRoaXMuc3RlcCAqIDEwMCkgLyAxMDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uID0gKHZhbHVlIC8gKHRoaXMubWF4IC0gdGhpcy5taW4pKSAqIDEwMDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB2YWx1ZSwgcG9zaXRpb24sIGxhYmVsOiBgJHt0aGlzLm1pbiArIHZhbHVlfWAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX21heFRpY2tNYXJrc051bWJlcigpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXRoaXMudHJhY2tFbCB8fCAhdGhpcy50cmFja0VsLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMudHJhY2tFbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gTUlOX0RJU1RBTkNFX0JFVFdFRU5fVElDS1MpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY1Byb2dyZXNzKHZhbHVlOiBudW1iZXIsIHNraXBSdGwgPSBmYWxzZSk6IG51bWJlciB7XG4gICAgICAgIGxldCBwcm9ncmVzcyA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAodGhpcy5tYXggLSB0aGlzLm1pbikpICogMTAwO1xuXG4gICAgICAgIGlmICghc2tpcFJ0bCAmJiB0aGlzLl9pc1J0bCkge1xuICAgICAgICAgICAgcHJvZ3Jlc3MgPSAxMDAgLSBwcm9ncmVzcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9ncmVzcyA+IDEwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDEwMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9ncmVzcyA8IDApIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb2dyZXNzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVjYWxjSGFuZGxlUG9zaXRpb25zKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNSYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlMVBvc2l0aW9uID0gdGhpcy5fY2FsY1Byb2dyZXNzKHRoaXMuX2hhbmRsZTFWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9oYW5kbGUyUG9zaXRpb24gPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5faGFuZGxlMlZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlUHJvZ3Jlc3MgPSBNYXRoLmFicyh0aGlzLl9oYW5kbGUyUG9zaXRpb24gLSB0aGlzLl9oYW5kbGUxUG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModGhpcy5fcG9zaXRpb24gYXMgbnVtYmVyLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoZWNrSXNJblJhbmdlTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNSYW5nZSA9IHRoaXMubW9kZSA9PT0gJ3JhbmdlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBSdGwgY2hhbmdlIHN1YnNjcmlwdGlvbiAqL1xuICAgIHByaXZhdGUgX3N1YnNjcmliZVRvUnRsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3J0bFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3J0bFNlcnZpY2UucnRsLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGlzUnRsOiBib29sZWFuKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pc1J0bCA9IGlzUnRsO1xuICAgICAgICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2luaXRTaW5nZU1vZGUodmFsdWU6IG51bWJlciB8IFNsaWRlclRpY2tNYXJrKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0U2luZ2VNb2RlV2l0aEN1c3RvbVZhbHVlKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZURlZmF1bHQoY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIHRoaXMubWluKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0U2luZ2VNb2RlRGVmYXVsdCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB0aGlzLl9jYWxjUHJvZ3Jlc3ModmFsdWUsIHRydWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFNpbmdlTW9kZVdpdGhDdXN0b21WYWx1ZShzbGlkZXJUaWNrTWFyazogU2xpZGVyVGlja01hcmspOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAodGhpcy5fZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb24oc2xpZGVyVGlja01hcmspIGFzIG51bWJlcikgfHwgdGhpcy5taW47XG5cbiAgICAgICAgdGhpcy5faW5pdFNpbmdlTW9kZURlZmF1bHQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5pdFJhbmdlTW9kZSh2YWx1ZTogbnVtYmVyW10gfCBTbGlkZXJUaWNrTWFya1tdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9pbml0UmFuZ2VNb2RlV2l0aEN1c3RvbVZhbHVlcyh2YWx1ZSBhcyBTbGlkZXJUaWNrTWFya1tdKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3RIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVswXSwgdGhpcy5taW4pO1xuICAgICAgICBjb25zdCBzZWNvbmRIYW5kbGUgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZVsxXSwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVEZWZhdWx0KFtmaXJzdEhhbmRsZSwgc2Vjb25kSGFuZGxlXSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlRGVmYXVsdChbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV06IG51bWJlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdO1xuXG4gICAgICAgIHRoaXMuX3NldFJhbmdlSGFuZGxlVmFsdWVBbmRQb3NpdGlvbihTbGlkZXJSYW5nZUhhbmRsZXMuRmlyc3QsIGZpcnN0SGFuZGxlKTtcbiAgICAgICAgdGhpcy5fc2V0UmFuZ2VIYW5kbGVWYWx1ZUFuZFBvc2l0aW9uKFNsaWRlclJhbmdlSGFuZGxlcy5TZWNvbmQsIHNlY29uZEhhbmRsZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0UmFuZ2VNb2RlV2l0aEN1c3RvbVZhbHVlcyhbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV06IFNsaWRlclRpY2tNYXJrW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLl9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbihbZmlyc3RIYW5kbGUsIHNlY29uZEhhbmRsZV0pIHx8IFt0aGlzLm1pbiwgdGhpcy5tYXhdO1xuXG4gICAgICAgIHRoaXMuX2luaXRSYW5nZU1vZGVEZWZhdWx0KHZhbHVlIGFzIG51bWJlcltdKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEN1c3RvbVZhbHVlc1Bvc2l0aW9uKHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICAgIHRoaXMubWluID0gMDtcbiAgICAgICAgdGhpcy5tYXggPSB0aGlzLmN1c3RvbVZhbHVlcy5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRDdXN0b21WYWx1ZXNQb3NpdGlvbnModmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VzdG9tVmFsdWVzUG9zaXRpb25zKHZhbHVlOiBTbGlkZXJUaWNrTWFyayB8IFNsaWRlclRpY2tNYXJrW10pOiBudW1iZXIgfCBudW1iZXJbXSB7XG4gICAgICAgIGlmICghdmFsdWUgfHwgKHZhbHVlIGFzIFNsaWRlclRpY2tNYXJrW10pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmFuZ2UgPyBbMCwgdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV0gOiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgW2ZpcnN0SGFuZGxlLCBzZWNvbmRIYW5kbGVdID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShzZWNvbmRIYW5kbGUpKSB7XG4gICAgICAgICAgICAgICAgc2Vjb25kSGFuZGxlID0gdGhpcy5jdXN0b21WYWx1ZXNbdGhpcy5jdXN0b21WYWx1ZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0SGFuZGxlUG9zaXRpb24gPSB0aGlzLmN1c3RvbVZhbHVlcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0udmFsdWUgPT09IGZpcnN0SGFuZGxlLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IHNlY29uZEhhbmRsZVBvc2l0aW9uID0gdGhpcy5jdXN0b21WYWx1ZXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBzZWNvbmRIYW5kbGUudmFsdWUpO1xuXG4gICAgICAgICAgICBjb25zdCBpbmRleGVzID0gW1xuICAgICAgICAgICAgICAgIGZpcnN0SGFuZGxlUG9zaXRpb24gPj0gMCA/IGZpcnN0SGFuZGxlUG9zaXRpb24gOiAwLFxuICAgICAgICAgICAgICAgIHNlY29uZEhhbmRsZVBvc2l0aW9uID49IDAgPyBzZWNvbmRIYW5kbGVQb3NpdGlvbiA6IHRoaXMuY3VzdG9tVmFsdWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIHJldHVybiBpbmRleGVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGZpcnN0SGFuZGxlID0gdmFsdWUgYXMgU2xpZGVyVGlja01hcms7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlT2ZDdXN0b21WYWx1ZShmaXJzdEhhbmRsZSkpIHtcbiAgICAgICAgICAgICAgICBmaXJzdEhhbmRsZSA9IHRoaXMuY3VzdG9tVmFsdWVzWzBdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21WYWx1ZXMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLnZhbHVlID09PSBmaXJzdEhhbmRsZS52YWx1ZSkgfHwgMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5zdGFuY2VPZkN1c3RvbVZhbHVlKG9iamVjdDogYW55KTogb2JqZWN0IGlzIFNsaWRlckN1c3RvbVZhbHVlIHtcbiAgICAgICAgcmV0dXJuICEhb2JqZWN0ICYmICd2YWx1ZScgaW4gb2JqZWN0ICYmICdsYWJlbCcgaW4gb2JqZWN0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9JbnRlcmFjdGlvbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlRm9jdXNlZCQsXG4gICAgICAgICAgICB0aGlzLl9yYW5nZUhhbmRsZTFGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX3JhbmdlSGFuZGxlMkZvY3VzZWQkLFxuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJCxcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvbmVudEhvdmVyZWQkLFxuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJFxuICAgICAgICBdKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICBtYXAoKHN0YXRlcykgPT4gc3RhdGVzLnNvbWUoQm9vbGVhbikpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoZm9jdXNlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIG5vdCBmb2N1c2VkLCBjaGVjayBmb3IgdGhlIGVkZ2UgY2FzZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBob3ZlciBpcyBvbiB0aGUgZmQtcG9wb3Zlci1ib2R5LCB0aGF0IGlzIGEgcGFyZW50IGZvciB0aGUgdG9vbHRpcC5cbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0cnVlLCB3aGVuIGhvdmVyaW5nIHRoZSBnYXAgYmV0d2VlbiBoYW5kbGUgYW5kIHRoZSB0b29sdGlwLlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5faXNQb3BvdmVySG92ZXJlZCgpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMCksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGZvY3VzZWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVycy5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLm9wZW4oKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzZXRQcmVmaXgoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlcnMuZm9yRWFjaCgocG9wb3ZlcikgPT4gcG9wb3Zlci5jbG9zZSgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiByZXNldCBkZWZhdWx0IHByZWZpeCBvbiBsZWF2aW5nIHRoZSBzbGlkZXIgKi9cbiAgICBwcml2YXRlIF9yZXNldFByZWZpeCgpOiB2b2lkIHtcbiAgICAgICAgLy8gcmVzZXQgcHJlZml4IHN0cmluZyBmb3Igc2xpZGVyIGN1cnJlbnQgdmFsdWUgdGhhdCBuZWVkIHRvIGJlIGFubm91bmNlZFxuICAgICAgICB0aGlzLl91c2VTbGlkZXJWYWx1ZVByZWZpeCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ2hlY2tzIHdoZXRoZXIgaW5wdXQgcG9wb3ZlciBlbGVtZW50IGlzIGhvdmVyZWQuXG4gICAgICogV2lsbCBhbHNvIHJldHVybiB0cnVlLCB3aGVuIGhvdmVyaW5nIHRoZSBnYXAgYmV0d2VlbiBoYW5kbGUgYW5kIHRoZSB0b29sdGlwLlxuICAgICAqIElmIHllcywgcmV0dXJucyBcInRydWVcIiBpbnN0YW50bHkgYW5kIFwiZmFsc2VcIiBvbmNlIGl0J3Mgbm90IGhvdmVyZWQgYW55bW9yZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9pc1BvcG92ZXJIb3ZlcmVkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICBjb25zdCBwb3BvdmVyQm9keSA9IHRoaXMuX3NsaWRlclRvb2x0aXBXcmFwcGVycy5maXJzdD8ubmF0aXZlRWxlbWVudC5jbG9zZXN0KCdmZC1wb3BvdmVyLWJvZHknKTtcbiAgICAgICAgaWYgKHBvcG92ZXJCb2R5Py5tYXRjaGVzKCc6aG92ZXInKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZyb21FdmVudChwb3BvdmVyQm9keSwgJ21vdXNlbGVhdmUnKS5waXBlKG1hcFRvKGZhbHNlKSwgdGFrZSgxKSwgc3RhcnRXaXRoKHRydWUpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX2lubmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIl9pc1JhbmdlID8gcmFuZ2VNb2RlIDogc2luZ2xlTW9kZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fdHJhY2tcIiAoY2xpY2spPVwib25UcmFja0NsaWNrKCRldmVudClcIiAjdHJhY2s+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfaXNSYW5nZSA/IHJhbmdlTW9kZVRyYWNrIDogc2luZ2xlTW9kZVRyYWNrXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtc2xpZGVyX190aWNrLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLXNsaWRlcl9fdGlja3NcIiAoY2xpY2spPVwib25UcmFja0NsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93VGlja3NcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0aWNrIG9mIF90aWNrTWFya3M7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX3RpY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25dPVwidGljay5wb3NpdGlvbiB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX3RpY2stLWluLXJhbmdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFoaWRlUHJvZ3Jlc3NCYXIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2lzUmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aWNrLnZhbHVlID49IF9wb3NpdGlvblswXSAmJiB0aWNrLnZhbHVlIDw9IF9wb3NpdGlvblsxXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHRpY2sudmFsdWUgPD0gX3Bvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZC1zbGlkZXJfX2xhYmVsc1wiICpuZ0lmPVwic2hvd1RpY2tzICYmIHNob3dUaWNrc0xhYmVsc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGljayBvZiBfdGlja01hcmtzOyBpbmRleCBhcyBpOyBsYXN0IGFzIGxhc3Q7IGZpcnN0IGFzIGZpcnN0XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpcnN0IHx8IGxhc3QgfHwgaSAlIHRpY2ttYXJrc0JldHdlZW5MYWJlbHMgPT09IDBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXNsaWRlcl9fbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cInRpY2sucG9zaXRpb24gfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbm5lclRleHRdPVwidGljay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTW9kZVRyYWNrPlxuICAgIDxkaXYgKm5nSWY9XCIhaGlkZVByb2dyZXNzQmFyXCIgY2xhc3M9XCJmZC1zbGlkZXJfX3RyYWNrLXJhbmdlXCIgW3N0eWxlLndpZHRoLiVdPVwiX3Byb2dyZXNzXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3JhbmdlTW9kZVRyYWNrPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIhaGlkZVByb2dyZXNzQmFyXCJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX3RyYWNrLXJhbmdlXCJcbiAgICAgICAgW3N0eWxlLndpZHRoLiVdPVwiX3JhbmdlUHJvZ3Jlc3NcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUxUG9zaXRpb24gPCBfaGFuZGxlMlBvc2l0aW9uID8gX2hhbmRsZTFQb3NpdGlvbiA6IF9oYW5kbGUyUG9zaXRpb25cIlxuICAgID48L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2luZ2xlTW9kZT5cbiAgICA8ZGl2XG4gICAgICAgICNoYW5kbGVcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAnY29yZVNsaWRlci5zaW5nbGVNaW5NYXhEZXRhaWxzJyB8IGZkVHJhbnNsYXRlOiB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHNpbmdsZVNsaWRlclBvcG92ZXIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5zaW5nbGVWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLnNpbmdsZVZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogbWF4VmFsdWUgfVwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5zaW5nbGVWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfcG9zaXRpb24sIF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUikgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVldGV4dF09XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLnNpbmdsZVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9wb3NpdGlvbiwgX3NsaWRlclZhbHVlVGFyZ2V0cy5TSU5HTEVfU0xJREVSKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX3Bvc2l0aW9uLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlNJTkdMRV9TTElERVIpXG4gICAgICAgIFwiXG4gICAgICAgIGZkLXNsaWRlci1wb3NpdGlvblxuICAgICAgICBbcG9zaXRpb25dPVwiX3Byb2dyZXNzXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChmb2N1cyk9XCJfaGFuZGxlRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgIChibHVyKT1cIl9oYW5kbGVGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAjc2luZ2xlU2xpZGVyUG9wb3ZlclxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbY2xvc2VPbk91dHNpZGVDbGlja109XCJmYWxzZVwiXG4gICAgICAgIFthcHBlbmRUb109XCJoYW5kbGVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIXRvb2x0aXBNb2RlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1wb3BvdmVyLS1zbGlkZXJcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICBwb3BvdmVySW5uZXI7XG4gICAgICAgICAgICAgICAgY29udGV4dDogeyB0YXJnZXQ6IF9zbGlkZXJWYWx1ZVRhcmdldHMuU0lOR0xFX1NMSURFUiwgcG9zaXRpb246IF9wb3NpdGlvbiB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNyYW5nZU1vZGU+XG4gICAgPGRpdlxuICAgICAgICAjcmFuZ2VIYW5kbGUxXG4gICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyX19oYW5kbGVcIlxuICAgICAgICBbY2xhc3MuZmQtc2xpZGVyX19oYW5kbGUtLWxnXT1cIl9jb250ZW50RGVuc2l0eU9ic2VydmVyLmlzQ296eSQgfCBhc3luY1wiXG4gICAgICAgIFthdHRyLnRhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICBhcmlhTGFiZWwgfHwgJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxTWluTWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZTogeyBtaW46IG1pblZhbHVlLCBtYXg6IG1heFZhbHVlIH1cbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5XCJcbiAgICAgICAgW2ZkUG9wb3ZlclRyaWdnZXJdPVwidG9vbHRpcE1vZGUgPyByYW5nZVNsaWRlclBvcG92ZXIxIDogbnVsbFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwiJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVtaW5EZXRhaWxzJyB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBtaW5WYWx1ZSB9XCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTFWYWx1ZW1heERldGFpbHMnIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IG1heFZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUxVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTFWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxKVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVldGV4dF09XCJcbiAgICAgICAgICAgIF91c2VTbGlkZXJWYWx1ZVByZWZpeFxuICAgICAgICAgICAgICAgID8gKCdjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMVZhbHVlTm93RGV0YWlscydcbiAgICAgICAgICAgICAgICAgIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSkgfSlcbiAgICAgICAgICAgICAgICA6IGdldFZhbHVlbm93KF9oYW5kbGUxVmFsdWUsIF9zbGlkZXJWYWx1ZVRhcmdldHMuUkFOR0VfU0xJREVSMSlcbiAgICAgICAgXCJcbiAgICAgICAgZmQtc2xpZGVyLXBvc2l0aW9uXG4gICAgICAgIFtwb3NpdGlvbl09XCJfaGFuZGxlMVBvc2l0aW9uXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvbkhhbmRsZUNsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgICAgKGZvY3VzKT1cIl9yYW5nZUhhbmRsZTFGb2N1c2VkJC5uZXh0KHRydWUpXCJcbiAgICAgICAgKGJsdXIpPVwiX3JhbmdlSGFuZGxlMUZvY3VzZWQkLm5leHQoZmFsc2UpXCJcbiAgICA+PC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAgICNyYW5nZUhhbmRsZTJcbiAgICAgICAgY2xhc3M9XCJmZC1zbGlkZXJfX2hhbmRsZVwiXG4gICAgICAgIFtjbGFzcy5mZC1zbGlkZXJfX2hhbmRsZS0tbGddPVwiX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuaXNDb3p5JCB8IGFzeW5jXCJcbiAgICAgICAgW2F0dHIudGFiaW5kZXhdPVwiZGlzYWJsZWQgPyAtMSA6IDBcIlxuICAgICAgICByb2xlPVwic2xpZGVyXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGFyaWFMYWJlbCB8fCAnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJNaW5NYXhEZXRhaWxzJyB8IGZkVHJhbnNsYXRlOiB7IG1pbjogbWluVmFsdWUsIG1heDogbWF4VmFsdWUgfVxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICBbZmRQb3BvdmVyVHJpZ2dlcl09XCJ0b29sdGlwTW9kZSA/IHJhbmdlU2xpZGVyUG9wb3ZlcjIgOiBudWxsXCJcbiAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCInY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZW1pbkRldGFpbHMnIHwgZmRUcmFuc2xhdGU6IHsgdmFsdWU6IG1pblZhbHVlIH1cIlxuICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cIidjb3JlU2xpZGVyLm11bHRpcGxlSGFuZGxlMlZhbHVlbWF4RGV0YWlscycgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogbWF4VmFsdWUgfVwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwiXG4gICAgICAgICAgICBfdXNlU2xpZGVyVmFsdWVQcmVmaXhcbiAgICAgICAgICAgICAgICA/ICgnY29yZVNsaWRlci5tdWx0aXBsZUhhbmRsZTJWYWx1ZU5vd0RldGFpbHMnXG4gICAgICAgICAgICAgICAgICB8IGZkVHJhbnNsYXRlOiB7IHZhbHVlOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpIH0pXG4gICAgICAgICAgICAgICAgOiBnZXRWYWx1ZW5vdyhfaGFuZGxlMlZhbHVlLCBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIpXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmFyaWEtdmFsdWV0ZXh0XT1cIlxuICAgICAgICAgICAgX3VzZVNsaWRlclZhbHVlUHJlZml4XG4gICAgICAgICAgICAgICAgPyAoJ2NvcmVTbGlkZXIubXVsdGlwbGVIYW5kbGUyVmFsdWVOb3dEZXRhaWxzJ1xuICAgICAgICAgICAgICAgICAgfCBmZFRyYW5zbGF0ZTogeyB2YWx1ZTogZ2V0VmFsdWVub3coX2hhbmRsZTJWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyKSB9KVxuICAgICAgICAgICAgICAgIDogZ2V0VmFsdWVub3coX2hhbmRsZTJWYWx1ZSwgX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIyKVxuICAgICAgICBcIlxuICAgICAgICBmZC1zbGlkZXItcG9zaXRpb25cbiAgICAgICAgW3Bvc2l0aW9uXT1cIl9oYW5kbGUyUG9zaXRpb25cIlxuICAgICAgICAobW91c2Vkb3duKT1cIm9uSGFuZGxlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgICAoZm9jdXMpPVwiX3JhbmdlSGFuZGxlMkZvY3VzZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAoYmx1cik9XCJfcmFuZ2VIYW5kbGUyRm9jdXNlZCQubmV4dChmYWxzZSlcIlxuICAgID48L2Rpdj5cblxuICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICNyYW5nZVNsaWRlclBvcG92ZXIxXG4gICAgICAgIFt0cmlnZ2Vyc109XCJbXVwiXG4gICAgICAgIFtjbG9zZU9uT3V0c2lkZUNsaWNrXT1cImZhbHNlXCJcbiAgICAgICAgW2FwcGVuZFRvXT1cInJhbmdlSGFuZGxlMVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhdG9vbHRpcE1vZGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwLXBvcG92ZXJcIlxuICAgICAgICBjbGFzcz1cImZkLXBvcG92ZXItLXNsaWRlclwiXG4gICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHBvcG92ZXJJbm5lcjtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7IHRhcmdldDogX3NsaWRlclZhbHVlVGFyZ2V0cy5SQU5HRV9TTElERVIxLCBwb3NpdGlvbjogX2hhbmRsZTFWYWx1ZSB9XG4gICAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1wb3BvdmVyPlxuXG4gICAgPGZkLXBvcG92ZXJcbiAgICAgICAgI3JhbmdlU2xpZGVyUG9wb3ZlcjJcbiAgICAgICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICAgICAgW2Nsb3NlT25PdXRzaWRlQ2xpY2tdPVwiZmFsc2VcIlxuICAgICAgICBbYXBwZW5kVG9dPVwicmFuZ2VIYW5kbGUyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiF0b29sdGlwTW9kZVwiXG4gICAgICAgIGFkZGl0aW9uYWxCb2R5Q2xhc3M9XCJmZC1zbGlkZXItLXRvb2x0aXAtcG9wb3ZlclwiXG4gICAgICAgIGNsYXNzPVwiZmQtcG9wb3Zlci0tc2xpZGVyXCJcbiAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlcklubmVyO1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IHsgdGFyZ2V0OiBfc2xpZGVyVmFsdWVUYXJnZXRzLlJBTkdFX1NMSURFUjIsIHBvc2l0aW9uOiBfaGFuZGxlMlZhbHVlIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3BvcG92ZXJJbm5lciBsZXQtdGFyZ2V0PVwidGFyZ2V0XCIgbGV0LXBvc2l0aW9uPVwicG9zaXRpb25cIj5cbiAgICA8ZGl2XG4gICAgICAgICNzbGlkZXJUb29sdGlwV3JhcHBlclxuICAgICAgICBjbGFzcz1cImZkLXNsaWRlci0tdG9vbHRpcC13cmFwcGVyXCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChrZXlkb3duKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIl9wb3BvdmVySW5wdXRGaWVsZEhvdmVyZWQkLm5leHQodHJ1ZSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJfcG9wb3ZlcklucHV0RmllbGRIb3ZlcmVkJC5uZXh0KGZhbHNlKVwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIihjdXN0b21WYWx1ZXMgJiYgY3VzdG9tVmFsdWVzLmxlbmd0aCA+IDApIHx8IHRvb2x0aXBNb2RlID09PSAncmVhZG9ubHknXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtc2xpZGVyLS10b29sdGlwXCJcbiAgICAgICAgICAgIFtpbm5lclRleHRdPVwiXG4gICAgICAgICAgICAgICAgY3VzdG9tVmFsdWVzICYmIGN1c3RvbVZhbHVlcy5sZW5ndGggPiAwID8gY3VzdG9tVmFsdWVzW3Bvc2l0aW9uXS5sYWJlbCA6IF9wb3BvdmVyVmFsdWVSZWZbdGFyZ2V0XVxuICAgICAgICAgICAgXCJcbiAgICAgICAgPjwvZGl2PlxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgI3BvcG92ZXJJbnB1dEZpZWxkXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBmZC1vbmx5LWRpZ2l0c1xuICAgICAgICAgICAgW2RlY2ltYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGguY2hdPVwiKCcnICsgX3BvcG92ZXJWYWx1ZVJlZlt0YXJnZXRdKS5sZW5ndGggKyAyXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXQgZmQtc2xpZGVyLS10b29sdGlwIHt7IF9wb3BvdmVySW5wdXRGaWVsZENsYXNzIH19XCJcbiAgICAgICAgICAgICpuZ0lmPVwiY3VzdG9tVmFsdWVzPy5sZW5ndGggPT09IDAgJiYgdG9vbHRpcE1vZGUgPT09ICdlZGl0YWJsZSdcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJfcG9wb3ZlclZhbHVlUmVmW3RhcmdldF1cIlxuICAgICAgICAgICAgKGJsdXIpPVwiX3VwZGF0ZVZhbHVlRnJvbUlucHV0KHBvcG92ZXJJbnB1dEZpZWxkLnZhbHVlLCB0YXJnZXQpXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIl91cGRhdGVWYWx1ZUZyb21JbnB1dChwb3BvdmVySW5wdXRGaWVsZC52YWx1ZSwgdGFyZ2V0KVwiXG4gICAgICAgICAgICAoZm9jdXMpPVwiX3BvcG92ZXJJbnB1dEZpZWxkRm9jdXNlZCQubmV4dCh0cnVlKVwiXG4gICAgICAgICAgICAoYmx1cik9XCJfcG9wb3ZlcklucHV0RmllbGRGb2N1c2VkJC5uZXh0KGZhbHNlKVwiXG4gICAgICAgIC8+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19