@koobiq/components 18.35.0 → 18.37.0

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 (626) hide show
  1. package/accordion/accordion.component.d.ts +1 -1
  2. package/app-switcher/_app-switcher-theme.scss +34 -0
  3. package/app-switcher/app-switcher-animations.d.ts +5 -0
  4. package/app-switcher/app-switcher-dropdown-app.d.ts +11 -0
  5. package/app-switcher/app-switcher-dropdown-app.scss +85 -0
  6. package/app-switcher/app-switcher-dropdown-site.d.ts +9 -0
  7. package/app-switcher/app-switcher-dropdown-site.scss +53 -0
  8. package/app-switcher/app-switcher.d.ts +191 -0
  9. package/app-switcher/app-switcher.module.d.ts +10 -0
  10. package/app-switcher/app-switcher.scss +64 -0
  11. package/app-switcher/index.d.ts +1 -0
  12. package/app-switcher/kbq-app-switcher-list-item.d.ts +16 -0
  13. package/app-switcher/kbq-app-switcher-list-item.scss +180 -0
  14. package/app-switcher/public-api.d.ts +6 -0
  15. package/autocomplete/autocomplete.scss +2 -17
  16. package/badge/badge.component.d.ts +1 -1
  17. package/badge/badge.component.scss +2 -0
  18. package/breadcrumbs/breadcrumbs.d.ts +2 -1
  19. package/breadcrumbs/breadcrumbs.scss +8 -4
  20. package/button/button.component.d.ts +3 -2
  21. package/button-toggle/button-toggle.scss +0 -2
  22. package/content-panel/content-panel.d.ts +1 -1
  23. package/content-panel/index.d.ts +0 -1
  24. package/core/common-behaviors/clipboard.d.ts +1 -1
  25. package/core/common-behaviors/color.d.ts +5 -5
  26. package/core/common-behaviors/focus-monitor.d.ts +19 -0
  27. package/core/common-behaviors/hover.d.ts +15 -0
  28. package/core/common-behaviors/index.d.ts +4 -0
  29. package/core/common-behaviors/orientation.d.ts +4 -0
  30. package/core/common-behaviors/read-state.d.ts +12 -0
  31. package/core/locales/en-US.d.ts +62 -0
  32. package/core/locales/es-LA.d.ts +62 -0
  33. package/core/locales/formatters.d.ts +0 -72
  34. package/core/locales/index.d.ts +0 -2
  35. package/core/locales/locale-service.d.ts +292 -250
  36. package/core/locales/pt-BR.d.ts +62 -0
  37. package/core/locales/ru-RU.d.ts +62 -0
  38. package/core/locales/tk-TM.d.ts +62 -0
  39. package/core/locales/types.d.ts +22 -0
  40. package/core/navbar/rectangle-item.d.ts +1 -1
  41. package/core/option/action.d.ts +1 -1
  42. package/core/option/option.d.ts +3 -2
  43. package/core/pop-up/constants.d.ts +2 -1
  44. package/core/pop-up/pop-up-trigger.d.ts +3 -3
  45. package/core/pop-up/pop-up.d.ts +2 -1
  46. package/core/select/common.d.ts +6 -1
  47. package/core/select/constants.d.ts +5 -0
  48. package/core/styles/common/_select.scss +25 -0
  49. package/core/styles/typography/_typography.scss +23 -82
  50. package/core/utils/dom.d.ts +1 -6
  51. package/datepicker/datepicker-module.d.ts +2 -1
  52. package/divider/divider.scss +1 -0
  53. package/dropdown/dropdown-item.scss +8 -7
  54. package/dropdown/dropdown.component.d.ts +5 -1
  55. package/dropdown/dropdown.module.d.ts +1 -1
  56. package/dropdown/dropdown.scss +5 -14
  57. package/esm2022/accordion/accordion-content.mjs +3 -3
  58. package/esm2022/accordion/accordion-header.mjs +3 -3
  59. package/esm2022/accordion/accordion-item.mjs +3 -3
  60. package/esm2022/accordion/accordion-trigger.component.mjs +3 -3
  61. package/esm2022/accordion/accordion.component.mjs +5 -5
  62. package/esm2022/accordion/accordion.module.mjs +4 -4
  63. package/esm2022/actions-panel/actions-panel-container.mjs +3 -3
  64. package/esm2022/actions-panel/actions-panel.mjs +3 -3
  65. package/esm2022/actions-panel/module.mjs +4 -4
  66. package/esm2022/alert/alert.component.mjs +12 -12
  67. package/esm2022/alert/alert.module.mjs +4 -4
  68. package/esm2022/app-switcher/app-switcher-animations.mjs +18 -0
  69. package/esm2022/app-switcher/app-switcher-dropdown-app.mjs +75 -0
  70. package/esm2022/app-switcher/app-switcher-dropdown-site.mjs +60 -0
  71. package/esm2022/app-switcher/app-switcher.mjs +446 -0
  72. package/esm2022/app-switcher/app-switcher.module.mjs +45 -0
  73. package/esm2022/app-switcher/index.mjs +2 -0
  74. package/esm2022/app-switcher/kbq-app-switcher-list-item.mjs +84 -0
  75. package/esm2022/app-switcher/koobiq-components-app-switcher.mjs +5 -0
  76. package/esm2022/app-switcher/public-api.mjs +7 -0
  77. package/esm2022/autocomplete/autocomplete-origin.directive.mjs +3 -3
  78. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +7 -7
  79. package/esm2022/autocomplete/autocomplete.component.mjs +3 -3
  80. package/esm2022/autocomplete/autocomplete.module.mjs +4 -4
  81. package/esm2022/badge/badge.component.mjs +11 -11
  82. package/esm2022/badge/badge.module.mjs +4 -4
  83. package/esm2022/breadcrumbs/breadcrumbs.mjs +58 -49
  84. package/esm2022/breadcrumbs/breadcrumbs.module.mjs +4 -4
  85. package/esm2022/button/button.component.mjs +12 -10
  86. package/esm2022/button/button.dropdown-trigger.directive.mjs +3 -3
  87. package/esm2022/button/button.module.mjs +4 -4
  88. package/esm2022/button-toggle/button-toggle.component.mjs +8 -8
  89. package/esm2022/button-toggle/button-toggle.module.mjs +4 -4
  90. package/esm2022/checkbox/checkbox-module.mjs +4 -4
  91. package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
  92. package/esm2022/checkbox/checkbox.mjs +3 -3
  93. package/esm2022/clamped-text/clamped-text.mjs +3 -3
  94. package/esm2022/clamped-text/module.mjs +4 -4
  95. package/esm2022/code-block/code-block-highlight.mjs +12 -7
  96. package/esm2022/code-block/code-block.mjs +4 -4
  97. package/esm2022/code-block/code-block.module.mjs +4 -4
  98. package/esm2022/content-panel/content-panel.mjs +26 -26
  99. package/esm2022/content-panel/index.mjs +1 -2
  100. package/esm2022/content-panel/module.mjs +4 -4
  101. package/esm2022/core/common-behaviors/clipboard.mjs +4 -4
  102. package/esm2022/core/common-behaviors/color.mjs +7 -7
  103. package/esm2022/core/common-behaviors/common-module.mjs +6 -5
  104. package/esm2022/core/common-behaviors/disabled.mjs +2 -1
  105. package/esm2022/core/common-behaviors/error-state.mjs +2 -1
  106. package/esm2022/core/common-behaviors/focus-monitor.mjs +37 -0
  107. package/esm2022/core/common-behaviors/hover.mjs +34 -0
  108. package/esm2022/core/common-behaviors/index.mjs +5 -1
  109. package/esm2022/core/common-behaviors/orientation.mjs +2 -0
  110. package/esm2022/core/common-behaviors/read-state.mjs +33 -0
  111. package/esm2022/core/common-behaviors/tabindex.mjs +2 -1
  112. package/esm2022/core/error/error-state-matcher.mjs +9 -9
  113. package/esm2022/core/form-field/field-sizing-content.mjs +8 -5
  114. package/esm2022/core/formatters/date/formatter.mjs +3 -3
  115. package/esm2022/core/formatters/date/formatter.pipe.mjs +78 -78
  116. package/esm2022/core/formatters/filesize/formatter.mjs +3 -3
  117. package/esm2022/core/formatters/index.mjs +4 -4
  118. package/esm2022/core/formatters/number/formatter.mjs +14 -14
  119. package/esm2022/core/forms/forms-module.mjs +4 -4
  120. package/esm2022/core/forms/forms.directive.mjs +6 -6
  121. package/esm2022/core/highlight/highlight.pipe.mjs +3 -3
  122. package/esm2022/core/highlight/index.mjs +4 -4
  123. package/esm2022/core/line/line.mjs +7 -7
  124. package/esm2022/core/locales/en-US.mjs +105 -1
  125. package/esm2022/core/locales/es-LA.mjs +114 -10
  126. package/esm2022/core/locales/formatters.mjs +1 -73
  127. package/esm2022/core/locales/index.mjs +1 -3
  128. package/esm2022/core/locales/locale-service.mjs +5 -11
  129. package/esm2022/core/locales/locale-service.module.mjs +4 -4
  130. package/esm2022/core/locales/pt-BR.mjs +123 -19
  131. package/esm2022/core/locales/ru-RU.mjs +119 -1
  132. package/esm2022/core/locales/tk-TM.mjs +128 -24
  133. package/esm2022/core/locales/types.mjs +1 -1
  134. package/esm2022/core/navbar/rectangle-item.mjs +7 -6
  135. package/esm2022/core/option/action-container.mjs +3 -3
  136. package/esm2022/core/option/action.mjs +4 -4
  137. package/esm2022/core/option/optgroup.mjs +3 -3
  138. package/esm2022/core/option/option-module.mjs +4 -4
  139. package/esm2022/core/option/option.mjs +13 -9
  140. package/esm2022/core/pop-up/constants.mjs +2 -1
  141. package/esm2022/core/pop-up/pop-up-trigger.mjs +7 -6
  142. package/esm2022/core/pop-up/pop-up.mjs +4 -4
  143. package/esm2022/core/select/common.mjs +35 -19
  144. package/esm2022/core/select/constants.mjs +6 -1
  145. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  146. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.module.mjs +4 -4
  147. package/esm2022/core/services/measure-scrollbar.service.mjs +3 -3
  148. package/esm2022/core/services/theme.service.mjs +3 -3
  149. package/esm2022/core/utils/dom.mjs +2 -8
  150. package/esm2022/core/version.mjs +2 -2
  151. package/esm2022/datepicker/calendar-body.component.mjs +3 -3
  152. package/esm2022/datepicker/calendar-header.component.mjs +7 -6
  153. package/esm2022/datepicker/calendar.component.mjs +3 -3
  154. package/esm2022/datepicker/datepicker-input.directive.mjs +6 -6
  155. package/esm2022/datepicker/datepicker-intl.mjs +3 -3
  156. package/esm2022/datepicker/datepicker-module.mjs +11 -8
  157. package/esm2022/datepicker/datepicker-toggle.component.mjs +9 -9
  158. package/esm2022/datepicker/datepicker.component.mjs +6 -6
  159. package/esm2022/datepicker/month-view.component.mjs +3 -3
  160. package/esm2022/divider/divider.component.mjs +4 -4
  161. package/esm2022/divider/divider.module.mjs +4 -4
  162. package/esm2022/dl/dl.component.mjs +9 -9
  163. package/esm2022/dl/dl.module.mjs +4 -4
  164. package/esm2022/dropdown/dropdown-content.directive.mjs +3 -3
  165. package/esm2022/dropdown/dropdown-item.component.mjs +5 -5
  166. package/esm2022/dropdown/dropdown-trigger.directive.mjs +5 -5
  167. package/esm2022/dropdown/dropdown.component.mjs +18 -8
  168. package/esm2022/dropdown/dropdown.module.mjs +14 -10
  169. package/esm2022/dynamic-translation/dynamic-translation.mjs +9 -9
  170. package/esm2022/dynamic-translation/module.mjs +4 -4
  171. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +12 -9
  172. package/esm2022/empty-state/empty-state.component.mjs +15 -15
  173. package/esm2022/empty-state/empty-state.module.mjs +4 -4
  174. package/esm2022/file-upload/file-drop.mjs +7 -5
  175. package/esm2022/file-upload/file-upload.mjs +1 -1
  176. package/esm2022/file-upload/file-upload.module.mjs +4 -4
  177. package/esm2022/file-upload/multiple-file-upload.component.mjs +20 -13
  178. package/esm2022/file-upload/single-file-upload.component.mjs +19 -6
  179. package/esm2022/filter-bar/filter-bar-button.mjs +3 -3
  180. package/esm2022/filter-bar/filter-bar.mjs +8 -4
  181. package/esm2022/filter-bar/filter-bar.module.mjs +4 -4
  182. package/esm2022/filter-bar/filter-refresher.mjs +3 -3
  183. package/esm2022/filter-bar/filter-reset.mjs +3 -3
  184. package/esm2022/filter-bar/filter-search.mjs +6 -6
  185. package/esm2022/filter-bar/filters.mjs +12 -7
  186. package/esm2022/filter-bar/pipe-add.mjs +6 -5
  187. package/esm2022/filter-bar/pipe.directive.mjs +3 -3
  188. package/esm2022/filter-bar/pipes/base-pipe.mjs +17 -9
  189. package/esm2022/filter-bar/pipes/pipe-button.mjs +3 -3
  190. package/esm2022/filter-bar/pipes/pipe-date.mjs +6 -6
  191. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +6 -6
  192. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +15 -9
  193. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +12 -7
  194. package/esm2022/filter-bar/pipes/pipe-readonly.mjs +6 -6
  195. package/esm2022/filter-bar/pipes/pipe-select.mjs +6 -6
  196. package/esm2022/filter-bar/pipes/pipe-state.mjs +3 -3
  197. package/esm2022/filter-bar/pipes/pipe-text.mjs +6 -6
  198. package/esm2022/filter-bar/pipes/pipe-title.mjs +26 -21
  199. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +6 -6
  200. package/esm2022/form-field/cleaner.mjs +3 -3
  201. package/esm2022/form-field/error.mjs +3 -3
  202. package/esm2022/form-field/fieldset.mjs +11 -11
  203. package/esm2022/form-field/form-field.mjs +11 -11
  204. package/esm2022/form-field/form-field.module.mjs +4 -4
  205. package/esm2022/form-field/hint.mjs +3 -3
  206. package/esm2022/form-field/label.mjs +3 -3
  207. package/esm2022/form-field/password-hint.mjs +3 -3
  208. package/esm2022/form-field/password-toggle.mjs +7 -7
  209. package/esm2022/form-field/prefix.mjs +3 -3
  210. package/esm2022/form-field/reactive-password-hint.mjs +3 -3
  211. package/esm2022/form-field/stepper.mjs +44 -13
  212. package/esm2022/form-field/suffix.mjs +3 -3
  213. package/esm2022/form-field/validate.directive.mjs +3 -3
  214. package/esm2022/icon/icon-button.component.mjs +3 -3
  215. package/esm2022/icon/icon-item.component.mjs +3 -3
  216. package/esm2022/icon/icon.component.mjs +4 -4
  217. package/esm2022/icon/icon.module.mjs +4 -4
  218. package/esm2022/inline-edit/index.mjs +3 -0
  219. package/esm2022/inline-edit/inline-edit.mjs +382 -0
  220. package/esm2022/inline-edit/koobiq-components-inline-edit.mjs +5 -0
  221. package/esm2022/inline-edit/module.mjs +25 -0
  222. package/esm2022/input/input-number-validators.mjs +6 -6
  223. package/esm2022/input/input-number.mjs +10 -9
  224. package/esm2022/input/input-password.mjs +4 -4
  225. package/esm2022/input/input.mjs +7 -7
  226. package/esm2022/input/input.module.mjs +11 -8
  227. package/esm2022/link/link.component.mjs +6 -6
  228. package/esm2022/link/link.module.mjs +4 -4
  229. package/esm2022/list/list-selection.component.mjs +40 -24
  230. package/esm2022/list/list.component.mjs +6 -6
  231. package/esm2022/list/list.module.mjs +4 -4
  232. package/esm2022/loader-overlay/loader-overlay.component.mjs +13 -13
  233. package/esm2022/loader-overlay/loader-overlay.module.mjs +4 -4
  234. package/esm2022/markdown/markdown.component.mjs +10 -10
  235. package/esm2022/markdown/markdown.module.mjs +4 -4
  236. package/esm2022/markdown/markdown.service.mjs +3 -3
  237. package/esm2022/modal/css-unit.pipe.mjs +3 -3
  238. package/esm2022/modal/modal-control.service.mjs +3 -3
  239. package/esm2022/modal/modal-util.mjs +7 -3
  240. package/esm2022/modal/modal.component.mjs +5 -5
  241. package/esm2022/modal/modal.directive.mjs +12 -12
  242. package/esm2022/modal/modal.module.mjs +4 -4
  243. package/esm2022/modal/modal.service.mjs +5 -4
  244. package/esm2022/navbar/navbar-item.component.mjs +53 -44
  245. package/esm2022/navbar/navbar.component.mjs +17 -13
  246. package/esm2022/navbar/navbar.module.mjs +4 -4
  247. package/esm2022/navbar/vertical-navbar.component.mjs +6 -6
  248. package/esm2022/navbar-ic/navbar-ic-header.mjs +25 -9
  249. package/esm2022/navbar-ic/navbar-ic-item.mjs +35 -44
  250. package/esm2022/navbar-ic/navbar-ic.animation.mjs +10 -2
  251. package/esm2022/navbar-ic/navbar-ic.mjs +50 -21
  252. package/esm2022/navbar-ic/navbar-ic.module.mjs +4 -4
  253. package/esm2022/notification-center/index.mjs +2 -0
  254. package/esm2022/notification-center/koobiq-components-notification-center.mjs +5 -0
  255. package/esm2022/notification-center/notification-center-animations.mjs +18 -0
  256. package/esm2022/notification-center/notification-center.mjs +353 -0
  257. package/esm2022/notification-center/notification-center.module.mjs +38 -0
  258. package/esm2022/notification-center/notification-center.service.mjs +127 -0
  259. package/esm2022/notification-center/notification-item.mjs +70 -0
  260. package/esm2022/notification-center/public-api.mjs +5 -0
  261. package/esm2022/overflow-items/module.mjs +4 -4
  262. package/esm2022/overflow-items/overflow-items.mjs +95 -41
  263. package/esm2022/popover/popover-confirm.component.mjs +10 -10
  264. package/esm2022/popover/popover.component.mjs +31 -13
  265. package/esm2022/popover/popover.module.mjs +4 -4
  266. package/esm2022/progress-bar/progress-bar.component.mjs +9 -9
  267. package/esm2022/progress-bar/progress-bar.module.mjs +4 -4
  268. package/esm2022/progress-spinner/progress-spinner.component.mjs +9 -9
  269. package/esm2022/progress-spinner/progress-spinner.module.mjs +4 -4
  270. package/esm2022/radio/radio.component.mjs +6 -6
  271. package/esm2022/radio/radio.module.mjs +4 -4
  272. package/esm2022/resizer/index.mjs +3 -0
  273. package/esm2022/resizer/koobiq-components-resizer.mjs +5 -0
  274. package/esm2022/resizer/module.mjs +17 -0
  275. package/esm2022/resizer/resizer.mjs +135 -0
  276. package/esm2022/risk-level/risk-level.component.mjs +3 -3
  277. package/esm2022/risk-level/risk-level.module.mjs +4 -4
  278. package/esm2022/scrollbar/scrollbar.component.mjs +3 -3
  279. package/esm2022/scrollbar/scrollbar.directive.mjs +7 -6
  280. package/esm2022/scrollbar/scrollbar.module.mjs +4 -4
  281. package/esm2022/search-expandable/index.mjs +2 -0
  282. package/esm2022/search-expandable/koobiq-components-search-expandable.mjs +5 -0
  283. package/esm2022/search-expandable/public-api.mjs +3 -0
  284. package/esm2022/search-expandable/search-expandable.mjs +177 -0
  285. package/esm2022/search-expandable/search-expandable.module.mjs +18 -0
  286. package/esm2022/select/select-option.directive.mjs +3 -3
  287. package/esm2022/select/select.component.mjs +38 -23
  288. package/esm2022/select/select.module.mjs +12 -8
  289. package/esm2022/sidebar/sidebar.component.mjs +9 -9
  290. package/esm2022/sidebar/sidebar.module.mjs +4 -4
  291. package/esm2022/sidepanel/sidepanel-container.component.mjs +5 -5
  292. package/esm2022/sidepanel/sidepanel-directives.mjs +15 -15
  293. package/esm2022/sidepanel/sidepanel.module.mjs +4 -4
  294. package/esm2022/sidepanel/sidepanel.service.mjs +3 -3
  295. package/esm2022/split-button/index.mjs +2 -0
  296. package/esm2022/split-button/koobiq-components-split-button.mjs +5 -0
  297. package/esm2022/split-button/public-api.mjs +3 -0
  298. package/esm2022/split-button/split-button.mjs +133 -0
  299. package/esm2022/split-button/split-button.module.mjs +18 -0
  300. package/esm2022/splitter/splitter.component.mjs +13 -13
  301. package/esm2022/splitter/splitter.module.mjs +4 -4
  302. package/esm2022/table/table.component.mjs +6 -6
  303. package/esm2022/table/table.module.mjs +4 -4
  304. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  305. package/esm2022/tabs/tab-body.component.mjs +6 -6
  306. package/esm2022/tabs/tab-content.directive.mjs +3 -3
  307. package/esm2022/tabs/tab-group.component.mjs +15 -15
  308. package/esm2022/tabs/tab-header.component.mjs +4 -4
  309. package/esm2022/tabs/tab-label-wrapper.directive.mjs +4 -4
  310. package/esm2022/tabs/tab-label.directive.mjs +3 -3
  311. package/esm2022/tabs/tab-nav-bar.mjs +10 -10
  312. package/esm2022/tabs/tab.component.mjs +3 -3
  313. package/esm2022/tabs/tabs.module.mjs +4 -4
  314. package/esm2022/tags/tag-input.mjs +38 -36
  315. package/esm2022/tags/tag-list.component.mjs +281 -250
  316. package/esm2022/tags/tag.component.mjs +206 -140
  317. package/esm2022/tags/tag.module.mjs +4 -4
  318. package/esm2022/textarea/textarea.component.mjs +5 -5
  319. package/esm2022/textarea/textarea.module.mjs +7 -6
  320. package/esm2022/time-range/constants.mjs +42 -0
  321. package/esm2022/time-range/index.mjs +8 -0
  322. package/esm2022/time-range/koobiq-components-time-range.mjs +5 -0
  323. package/esm2022/time-range/module.mjs +36 -0
  324. package/esm2022/time-range/time-range-editor.mjs +224 -0
  325. package/esm2022/time-range/time-range-title-as-form-field.mjs +60 -0
  326. package/esm2022/time-range/time-range-title.mjs +112 -0
  327. package/esm2022/time-range/time-range.mjs +234 -0
  328. package/esm2022/time-range/time-range.service.mjs +126 -0
  329. package/esm2022/time-range/types.mjs +2 -0
  330. package/esm2022/timepicker/timepicker.directive.mjs +4 -4
  331. package/esm2022/timepicker/timepicker.module.mjs +9 -8
  332. package/esm2022/timezone/cities-by-filter.pipe.mjs +3 -3
  333. package/esm2022/timezone/timezone-option.component.mjs +5 -5
  334. package/esm2022/timezone/timezone-option.directive.mjs +3 -3
  335. package/esm2022/timezone/timezone-select.component.mjs +9 -9
  336. package/esm2022/timezone/timezone.module.mjs +10 -8
  337. package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
  338. package/esm2022/title/title.directive.mjs +9 -5
  339. package/esm2022/title/title.module.mjs +4 -4
  340. package/esm2022/toast/toast-container.component.mjs +3 -3
  341. package/esm2022/toast/toast.component.mjs +20 -14
  342. package/esm2022/toast/toast.module.mjs +4 -4
  343. package/esm2022/toast/toast.service.mjs +5 -4
  344. package/esm2022/toast/toast.type.mjs +1 -1
  345. package/esm2022/toggle/toggle.component.mjs +6 -6
  346. package/esm2022/toggle/toggle.module.mjs +4 -4
  347. package/esm2022/tooltip/tooltip.component.mjs +19 -19
  348. package/esm2022/tooltip/tooltip.module.mjs +4 -4
  349. package/esm2022/top-bar/module.mjs +4 -4
  350. package/esm2022/top-bar/top-bar.mjs +11 -11
  351. package/esm2022/tree/node.mjs +3 -3
  352. package/esm2022/tree/outlet.mjs +3 -3
  353. package/esm2022/tree/padding.directive.mjs +3 -3
  354. package/esm2022/tree/toggle.mjs +16 -12
  355. package/esm2022/tree/tree-base.mjs +7 -7
  356. package/esm2022/tree/tree-option.component.mjs +11 -14
  357. package/esm2022/tree/tree-selection.component.mjs +26 -16
  358. package/esm2022/tree/tree.mjs +3 -3
  359. package/esm2022/tree/tree.module.mjs +4 -4
  360. package/esm2022/tree-select/tree-select.component.mjs +142 -84
  361. package/esm2022/tree-select/tree-select.module.mjs +11 -8
  362. package/esm2022/username/module.mjs +4 -4
  363. package/esm2022/username/username.mjs +15 -15
  364. package/esm2022/username/username.pipe.mjs +8 -8
  365. package/fesm2022/koobiq-components-accordion.mjs +20 -20
  366. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  367. package/fesm2022/koobiq-components-actions-panel.mjs +10 -10
  368. package/fesm2022/koobiq-components-alert.mjs +16 -16
  369. package/fesm2022/koobiq-components-app-switcher.mjs +704 -0
  370. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -0
  371. package/fesm2022/koobiq-components-autocomplete.mjs +16 -16
  372. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  373. package/fesm2022/koobiq-components-badge.mjs +14 -14
  374. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  375. package/fesm2022/koobiq-components-breadcrumbs.mjs +61 -52
  376. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  377. package/fesm2022/koobiq-components-button-toggle.mjs +12 -12
  378. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  379. package/fesm2022/koobiq-components-button.mjs +18 -16
  380. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  381. package/fesm2022/koobiq-components-checkbox.mjs +10 -10
  382. package/fesm2022/koobiq-components-clamped-text.mjs +7 -7
  383. package/fesm2022/koobiq-components-code-block.mjs +18 -13
  384. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  385. package/fesm2022/koobiq-components-content-panel.mjs +31 -165
  386. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  387. package/fesm2022/koobiq-components-core.mjs +962 -581
  388. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  389. package/fesm2022/koobiq-components-datepicker.mjs +47 -44
  390. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  391. package/fesm2022/koobiq-components-divider.mjs +8 -8
  392. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  393. package/fesm2022/koobiq-components-dl.mjs +13 -13
  394. package/fesm2022/koobiq-components-dropdown.mjs +41 -27
  395. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  396. package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
  397. package/fesm2022/koobiq-components-ellipsis-center.mjs +11 -8
  398. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  399. package/fesm2022/koobiq-components-empty-state.mjs +19 -19
  400. package/fesm2022/koobiq-components-file-upload.mjs +45 -25
  401. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  402. package/fesm2022/koobiq-components-filter-bar.mjs +147 -114
  403. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  404. package/fesm2022/koobiq-components-form-field.mjs +100 -73
  405. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  406. package/fesm2022/koobiq-components-icon.mjs +13 -13
  407. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  408. package/fesm2022/koobiq-components-inline-edit.mjs +411 -0
  409. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -0
  410. package/fesm2022/koobiq-components-input.mjs +34 -31
  411. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  412. package/fesm2022/koobiq-components-link.mjs +10 -10
  413. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  414. package/fesm2022/koobiq-components-list.mjs +49 -33
  415. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  416. package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
  417. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  418. package/fesm2022/koobiq-components-markdown.mjs +16 -16
  419. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  420. package/fesm2022/koobiq-components-modal.mjs +36 -31
  421. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  422. package/fesm2022/koobiq-components-navbar-ic.mjs +122 -81
  423. package/fesm2022/koobiq-components-navbar-ic.mjs.map +1 -1
  424. package/fesm2022/koobiq-components-navbar.mjs +77 -64
  425. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  426. package/fesm2022/koobiq-components-notification-center.mjs +586 -0
  427. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -0
  428. package/fesm2022/koobiq-components-overflow-items.mjs +98 -44
  429. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  430. package/fesm2022/koobiq-components-popover.mjs +43 -25
  431. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  432. package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
  433. package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
  434. package/fesm2022/koobiq-components-radio.mjs +10 -10
  435. package/fesm2022/koobiq-components-resizer.mjs +156 -0
  436. package/fesm2022/koobiq-components-resizer.mjs.map +1 -0
  437. package/fesm2022/koobiq-components-risk-level.mjs +7 -7
  438. package/fesm2022/koobiq-components-scrollbar.mjs +13 -12
  439. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  440. package/fesm2022/koobiq-components-search-expandable.mjs +199 -0
  441. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -0
  442. package/fesm2022/koobiq-components-select.mjs +51 -33
  443. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  444. package/fesm2022/koobiq-components-sidebar.mjs +13 -13
  445. package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
  446. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  447. package/fesm2022/koobiq-components-split-button.mjs +155 -0
  448. package/fesm2022/koobiq-components-split-button.mjs.map +1 -0
  449. package/fesm2022/koobiq-components-splitter.mjs +16 -16
  450. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  451. package/fesm2022/koobiq-components-table.mjs +10 -10
  452. package/fesm2022/koobiq-components-tabs.mjs +52 -52
  453. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  454. package/fesm2022/koobiq-components-tags.mjs +522 -428
  455. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  456. package/fesm2022/koobiq-components-textarea.mjs +10 -10
  457. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  458. package/fesm2022/koobiq-components-time-range.mjs +809 -0
  459. package/fesm2022/koobiq-components-time-range.mjs.map +1 -0
  460. package/fesm2022/koobiq-components-timepicker.mjs +11 -11
  461. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  462. package/fesm2022/koobiq-components-timezone.mjs +31 -29
  463. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  464. package/fesm2022/koobiq-components-title.mjs +12 -8
  465. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  466. package/fesm2022/koobiq-components-toast.mjs +28 -21
  467. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  468. package/fesm2022/koobiq-components-toggle.mjs +9 -9
  469. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  470. package/fesm2022/koobiq-components-tooltip.mjs +22 -22
  471. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  472. package/fesm2022/koobiq-components-top-bar.mjs +15 -15
  473. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  474. package/fesm2022/koobiq-components-tree-select.mjs +151 -91
  475. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  476. package/fesm2022/koobiq-components-tree.mjs +72 -61
  477. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  478. package/fesm2022/koobiq-components-username.mjs +27 -27
  479. package/file-upload/_file-upload-theme.scss +33 -35
  480. package/file-upload/file-upload-tokens.scss +1 -2
  481. package/file-upload/file-upload.d.ts +1 -1
  482. package/file-upload/file-upload.scss +4 -7
  483. package/file-upload/multiple-file-upload.component.d.ts +2 -1
  484. package/file-upload/multiple-file-upload.component.scss +12 -14
  485. package/file-upload/single-file-upload.component.d.ts +2 -0
  486. package/file-upload/single-file-upload.component.scss +5 -7
  487. package/filter-bar/filter-bar.d.ts +3 -1
  488. package/filter-bar/filter-search.scss +1 -3
  489. package/filter-bar/filters.d.ts +1 -0
  490. package/filter-bar/pipes/base-pipe.d.ts +6 -2
  491. package/filter-bar/pipes/base-pipe.scss +3 -3
  492. package/filter-bar/pipes/pipe-date.scss +4 -1
  493. package/filter-bar/pipes/pipe-title.d.ts +2 -0
  494. package/form-field/fieldset-tokens.scss +1 -0
  495. package/form-field/form-field-tokens.scss +1 -1
  496. package/form-field/form-field.d.ts +1 -1
  497. package/form-field/form-field.scss +7 -7
  498. package/form-field/password-toggle.d.ts +1 -1
  499. package/form-field/stepper.d.ts +28 -6
  500. package/icon/icon.component.d.ts +2 -2
  501. package/inline-edit/index.d.ts +2 -0
  502. package/inline-edit/inline-edit-tokens.scss +8 -0
  503. package/inline-edit/inline-edit.d.ts +140 -0
  504. package/inline-edit/inline-edit.scss +208 -0
  505. package/inline-edit/module.d.ts +7 -0
  506. package/input/input-number.d.ts +1 -1
  507. package/input/input-password.d.ts +2 -2
  508. package/input/input.d.ts +2 -2
  509. package/input/input.module.d.ts +2 -1
  510. package/link/link.component.d.ts +3 -3
  511. package/list/list-selection.component.d.ts +13 -2
  512. package/loader-overlay/loader-overlay.component.d.ts +1 -1
  513. package/markdown/_markdown-theme.scss +1 -2
  514. package/markdown/markdown-tokens.scss +1 -0
  515. package/markdown/markdown.scss +10 -4
  516. package/modal/modal-tokens.scss +2 -1
  517. package/modal/modal-util.d.ts +5 -2
  518. package/modal/modal.component.d.ts +1 -1
  519. package/modal/modal.scss +3 -4
  520. package/navbar/_navbar-item_vertical.scss +10 -0
  521. package/navbar/navbar-brand.scss +5 -2
  522. package/navbar/navbar-item.component.d.ts +3 -2
  523. package/navbar/navbar.component.d.ts +4 -4
  524. package/navbar/vertical-navbar.component.d.ts +2 -2
  525. package/navbar/vertical-navbar.scss +1 -0
  526. package/navbar-ic/navbar-ic-header.d.ts +4 -3
  527. package/navbar-ic/navbar-ic-header.scss +0 -4
  528. package/navbar-ic/navbar-ic-item.d.ts +3 -2
  529. package/navbar-ic/navbar-ic-item.scss +0 -4
  530. package/navbar-ic/navbar-ic.animation.d.ts +1 -0
  531. package/navbar-ic/navbar-ic.d.ts +11 -2
  532. package/notification-center/_notification-center-theme.scss +27 -0
  533. package/notification-center/index.d.ts +1 -0
  534. package/notification-center/notification-center-animations.d.ts +5 -0
  535. package/notification-center/notification-center.d.ts +153 -0
  536. package/notification-center/notification-center.module.d.ts +7 -0
  537. package/notification-center/notification-center.scss +126 -0
  538. package/notification-center/notification-center.service.d.ts +72 -0
  539. package/notification-center/notification-item.d.ts +27 -0
  540. package/notification-center/notification-item.scss +157 -0
  541. package/notification-center/public-api.d.ts +4 -0
  542. package/overflow-items/overflow-items.d.ts +23 -9
  543. package/package.json +46 -4
  544. package/popover/popover-tokens.scss +1 -0
  545. package/popover/popover.component.d.ts +9 -1
  546. package/popover/popover.scss +18 -11
  547. package/prebuilt-themes/dark-theme.css +1 -1
  548. package/prebuilt-themes/light-theme.css +1 -1
  549. package/prebuilt-themes/theme.css +1 -1
  550. package/resizer/index.d.ts +2 -0
  551. package/resizer/module.d.ts +7 -0
  552. package/{content-panel/resizable.d.ts → resizer/resizer.d.ts} +18 -13
  553. package/schematics/collection.json +5 -0
  554. package/schematics/migrations/icons-replacement/README.md +93 -0
  555. package/schematics/migrations/icons-replacement/data.js +92 -0
  556. package/schematics/migrations/icons-replacement/index.js +84 -0
  557. package/schematics/migrations/icons-replacement/schema.json +32 -0
  558. package/schematics/ng-add/index.js +6 -6
  559. package/scrollbar/scrollbar.component.scss +2 -3
  560. package/search-expandable/index.d.ts +1 -0
  561. package/search-expandable/public-api.d.ts +2 -0
  562. package/search-expandable/search-expandable.d.ts +70 -0
  563. package/search-expandable/search-expandable.module.d.ts +7 -0
  564. package/search-expandable/search-expandable.scss +21 -0
  565. package/select/select.component.d.ts +38 -3
  566. package/select/select.module.d.ts +2 -1
  567. package/select/select.scss +1 -17
  568. package/sidepanel/sidepanel-tokens.scss +2 -0
  569. package/sidepanel/sidepanel.scss +2 -0
  570. package/split-button/_split-button-theme.scss +114 -0
  571. package/split-button/index.d.ts +1 -0
  572. package/split-button/public-api.d.ts +2 -0
  573. package/split-button/split-button.d.ts +37 -0
  574. package/split-button/split-button.module.d.ts +7 -0
  575. package/split-button/split-button.scss +72 -0
  576. package/splitter/splitter.component.d.ts +5 -5
  577. package/tabs/paginated-tab-header.d.ts +1 -1
  578. package/tabs/tab-header.component.d.ts +2 -2
  579. package/tabs/tab-label-wrapper.directive.d.ts +2 -2
  580. package/tabs/tab-nav-bar.d.ts +3 -3
  581. package/tags/_tag-theme.scss +21 -15
  582. package/tags/tag-input.d.ts +18 -7
  583. package/tags/tag-list.component.d.ts +175 -64
  584. package/tags/tag-list.scss +24 -14
  585. package/tags/tag-tokens.scss +17 -1
  586. package/tags/tag.component.d.ts +91 -27
  587. package/tags/tag.scss +9 -0
  588. package/textarea/textarea-tokens.scss +6 -1
  589. package/textarea/textarea.component.d.ts +2 -2
  590. package/textarea/textarea.module.d.ts +2 -1
  591. package/textarea/textarea.scss +4 -0
  592. package/time-range/constants.d.ts +19 -0
  593. package/time-range/index.d.ts +7 -0
  594. package/time-range/module.d.ts +10 -0
  595. package/time-range/time-range-editor.d.ts +65 -0
  596. package/time-range/time-range-title-as-form-field.d.ts +41 -0
  597. package/time-range/time-range-title.d.ts +18 -0
  598. package/time-range/time-range.d.ts +78 -0
  599. package/time-range/time-range.scss +66 -0
  600. package/time-range/time-range.service.d.ts +25 -0
  601. package/time-range/types.d.ts +69 -0
  602. package/timepicker/timepicker.directive.d.ts +2 -2
  603. package/timepicker/timepicker.module.d.ts +2 -1
  604. package/timezone/timezone-option.component.scss +6 -0
  605. package/timezone/timezone.module.d.ts +1 -1
  606. package/toast/toast.component.d.ts +6 -4
  607. package/toast/toast.component.scss +11 -1
  608. package/toast/toast.service.d.ts +1 -0
  609. package/toast/toast.type.d.ts +1 -0
  610. package/toggle/_toggle-theme.scss +8 -5
  611. package/toggle/toggle-tokens.scss +0 -1
  612. package/toggle/toggle.scss +11 -15
  613. package/top-bar/top-bar-tokens.scss +1 -1
  614. package/top-bar/top-bar.scss +3 -0
  615. package/tree/toggle.d.ts +1 -1
  616. package/tree/tree-base.d.ts +2 -2
  617. package/tree/tree-option.component.d.ts +2 -1
  618. package/tree/tree-selection.component.d.ts +12 -3
  619. package/tree-select/tree-select.component.d.ts +49 -8
  620. package/tree-select/tree-select.module.d.ts +2 -1
  621. package/tree-select/tree-select.scss +4 -0
  622. package/core/locales/fa-IR.d.ts +0 -100
  623. package/core/locales/zh-CN.d.ts +0 -100
  624. package/esm2022/content-panel/resizable.mjs +0 -138
  625. package/esm2022/core/locales/fa-IR.mjs +0 -99
  626. package/esm2022/core/locales/zh-CN.mjs +0 -99
@@ -47,7 +47,7 @@ const ROUNDING_UNITS = {
47
47
  trillion: 1e12
48
48
  };
49
49
  const intervalsConfig = {
50
- supportedLanguages: ['ru-RU', 'en-US', 'es-LA', 'pt-BR', 'fa-IR'],
50
+ supportedLanguages: ['ru-RU', 'en-US', 'es-LA', 'pt-BR'],
51
51
  intervals: [
52
52
  { startRange: 1, endRange: ROUNDING_UNITS.thousand },
53
53
  { startRange: ROUNDING_UNITS.thousand, endRange: ROUNDING_UNITS.tenThousand, precision: 1 },
@@ -137,11 +137,11 @@ export class KbqDecimalPipe {
137
137
  grouping === undefined &&
138
138
  Math.abs(value) < defaultValueForGroupingInRULocale);
139
139
  }
140
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
141
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
142
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
141
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqDecimalPipe, name: "kbqNumber", pure: false }); }
142
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqDecimalPipe, providedIn: 'root' }); }
143
143
  }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqDecimalPipe, decorators: [{
144
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqDecimalPipe, decorators: [{
145
145
  type: Injectable,
146
146
  args: [{ providedIn: 'root' }]
147
147
  }, {
@@ -206,11 +206,11 @@ export class KbqTableNumberPipe {
206
206
  throw Error(`InvalidPipeArgument: KbqTableNumberPipe for pipe '${JSON.stringify(error.message)}'`);
207
207
  }
208
208
  }
209
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
210
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
211
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
209
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqTableNumberPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }, { token: KBQ_NUMBER_FORMATTER_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
210
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqTableNumberPipe, name: "kbqTableNumber", pure: false }); }
211
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqTableNumberPipe, providedIn: 'root' }); }
212
212
  }
213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqTableNumberPipe, decorators: [{
214
214
  type: Injectable,
215
215
  args: [{ providedIn: 'root' }]
216
216
  }, {
@@ -323,11 +323,11 @@ export class KbqRoundDecimalPipe {
323
323
  });
324
324
  return currentUnit;
325
325
  }
326
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
327
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
328
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
326
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqRoundDecimalPipe, deps: [{ token: KBQ_LOCALE_ID, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe }); }
327
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqRoundDecimalPipe, name: "kbqRoundNumber", pure: false }); }
328
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqRoundDecimalPipe, providedIn: 'root' }); }
329
329
  }
330
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqRoundDecimalPipe, decorators: [{
331
331
  type: Injectable,
332
332
  args: [{ providedIn: 'root' }]
333
333
  }, {
@@ -344,4 +344,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
344
344
  type: Inject,
345
345
  args: [KBQ_LOCALE_SERVICE]
346
346
  }] }] });
347
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUNILHFCQUFxQixFQUNyQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVuQixNQUFNLGVBQWUsQ0FBQzs7O0FBRXZCLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQiwyQkFBMkIsQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFxQjtJQUNsRSxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIscUJBQXFCLEVBQUUsQ0FBQztDQUMzQixDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsS0FBYyxFQUNkLFNBQTRCLEVBQzVCLE9BQWdDO0lBRWhDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQjtRQUFFLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkQsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUss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O1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFdBQVcsQ0FBQztJQUN2QixDQUFDO2tJQTdHUSxtQkFBbUIsa0JBSUosYUFBYSw2QkFDYixrQkFBa0I7Z0lBTGpDLG1CQUFtQjtzSUFBbkIsbUJBQW1CLGNBRk4sTUFBTTs7NEZBRW5CLG1CQUFtQjtrQkFGL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O2tCQUNqQyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7OzBCQUtwQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGFBQWE7OzBCQUNoQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsLCBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEtCUV9ERUZBVUxUX0xPQ0FMRV9JRCxcbiAgICBLQlFfTE9DQUxFX0lELFxuICAgIEtCUV9MT0NBTEVfU0VSVklDRSxcbiAgICBLYnFMb2NhbGVTZXJ2aWNlLFxuICAgIEticU51bWJlckZvcm1hdE9wdGlvbnNcbn0gZnJvbSAnLi4vLi4vbG9jYWxlcyc7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPFBhcnNlZERpZ2l0c0luZm8+KCdLYnFOdW1iZXJGb3JtYXR0ZXJPcHRpb25zJyk7XG5cbmV4cG9ydCBjb25zdCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM6IFBhcnNlZERpZ2l0c0luZm8gPSB7XG4gICAgdXNlR3JvdXBpbmc6IHRydWUsXG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IDEsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAwLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogM1xufTtcblxuLyoqIEZvcm1hdHMgYSBudW1iZXIgdmFsdWUgYWNjb3JkaW5nIHRvIGxvY2FsZSBhbmQgZm9ybWF0dGluZyBvcHRpb25zICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0TnVtYmVyV2l0aExvY2FsZShcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBmb3JtYXR0ZXI6IEludGwuTnVtYmVyRm9ybWF0LFxuICAgIG9wdGlvbnM/OiBLYnFOdW1iZXJGb3JtYXRPcHRpb25zXG4pOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bSA9IHN0clRvTnVtYmVyKHZhbHVlKTtcblxuICAgIGlmICghb3B0aW9ucz8udmlld0dyb3VwU2VwYXJhdG9yKSByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdChudW0pO1xuXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0UGFydHMgPSBmb3JtYXR0ZXIuZm9ybWF0VG9QYXJ0cyhudW0pO1xuXG4gICAgZm9yIChjb25zdCBudW1iZXJGb3JtYXRQYXJ0IG9mIG51bWJlckZvcm1hdFBhcnRzKSB7XG4gICAgICAgIGlmIChudW1iZXJGb3JtYXRQYXJ0LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIG51bWJlckZvcm1hdFBhcnQudmFsdWUgPSBvcHRpb25zLnZpZXdHcm91cFNlcGFyYXRvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudW1iZXJGb3JtYXRQYXJ0cy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpLmpvaW4oJycpO1xufVxuXG4vKipcbiAqIFNwZWNpYWwgY29udHJhY3QgYmV0d2VlbiBgS2JxRGVjaW1hbFBpcGVgIGFuZCBgS2JxVGFibGVOdW1iZXJQaXBlYCxcbiAqIHNvIHRoZXkgY2FuIGJlIGludGVyY2hhbmdlYWJsZSBpbiB0aGUgY2FzZXMgb2YgdXNhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYnFOdW1lcmljUGlwZSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiB1bmtub3duLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBzdHJUb051bWJlcih2YWx1ZTogdW5rbm93bik6IG51bWJlciB7XG4gICAgY29uc3QgY29lcmNlZCA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlLCBudWxsKTtcblxuICAgIGlmIChjb2VyY2VkID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt2YWx1ZX0gaXMgbm90IGEgbnVtYmVyYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZXJjZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBOVU1CRVJfRk9STUFUX1JFR0VYUCA9IC9eKFxcZCspP1xcLigoXFxkKykoLShcXGQrKSk/KC0odHJ1ZXxmYWxzZSkpPyk/JC87XG5cbmNvbnN0IG1pbkludEdyb3VwUG9zaXRpb24gPSAxO1xuY29uc3QgbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gMztcbmNvbnN0IG1heEZyYWN0aW9uR3JvdXBQb3NpdGlvbiA9IDU7XG5jb25zdCB1c2VHcm91cGluZ1Bvc2l0aW9uID0gNztcblxuaW50ZXJmYWNlIFJvdW5kRGVjaW1hbE9wdGlvbnMge1xuICAgIHNlcGFyYXRvcjogc3RyaW5nO1xuICAgIGdyb3VwU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgdGhvdXNhbmRzPzogc3RyaW5nO1xuICAgIHRlblRob3VzYW5kPzogc3RyaW5nO1xuICAgIG1pbGxpb24/OiBzdHJpbmc7XG4gICAgb25lSHVuZHJlZE1pbGxpb25zPzogc3RyaW5nO1xuICAgIGJpbGxpb24/OiBzdHJpbmc7XG4gICAgdHJpbGxpb246IHN0cmluZztcbiAgICBydGw/OiBib29sZWFuO1xufVxuXG5jb25zdCBST1VORElOR19VTklUUyA9IHtcbiAgICB0aG91c2FuZDogMWUzLFxuICAgIHRlblRob3VzYW5kOiAxMCAqIDFlMyxcbiAgICBtaWxsaW9uOiAxZTYsXG4gICAgb25lSHVuZHJlZE1pbGxpb25zOiAxMDAgKiAxZTYsXG4gICAgYmlsbGlvbjogMWU5LFxuICAgIHRyaWxsaW9uOiAxZTEyXG59O1xuXG5jb25zdCBpbnRlcnZhbHNDb25maWcgPSB7XG4gICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBbJ3J1LVJVJywgJ2VuLVVTJywgJ2VzLUxBJywgJ3B0LUJSJywgJ2ZhLUlSJ10sXG4gICAgaW50ZXJ2YWxzOiBbXG4gICAgICAgIHsgc3RhcnRSYW5nZTogMSwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGhvdXNhbmQsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy50ZW5UaG91c2FuZCwgcHJlY2lzaW9uOiAxIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGVuVGhvdXNhbmQsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gKiAxMCwgcHJlY2lzaW9uOiAxIH0sXG4gICAgICAgIHsgc3RhcnRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiAqIDEwLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMuYmlsbGlvbiB9XG4gICAgXVxufTtcblxuY2xhc3MgUGFyc2VkRGlnaXRzSW5mbyB7XG4gICAgdXNlR3JvdXBpbmc6IGJvb2xlYW47XG4gICAgbWluaW11bUludGVnZXJEaWdpdHM6IG51bWJlcjtcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlOiBudW1iZXIgPSAxMDAwMDtcblxuZnVuY3Rpb24gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm86IHN0cmluZyk6IFBhcnNlZERpZ2l0c0luZm8ge1xuICAgIGNvbnN0IHBhcnRzID0gZGlnaXRzSW5mby5tYXRjaChOVU1CRVJfRk9STUFUX1JFR0VYUCk7XG5cbiAgICBpZiAocGFydHMgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2RpZ2l0c0luZm99IGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGluZm9gKTtcbiAgICB9XG5cbiAgICBjb25zdCBtaW5JbnRQYXJ0ID0gcGFydHNbbWluSW50R3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgbWluRnJhY3Rpb25QYXJ0ID0gcGFydHNbbWluRnJhY3Rpb25Hcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCBtYXhGcmFjdGlvblBhcnQgPSBwYXJ0c1ttYXhGcmFjdGlvbkdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IHVzZUdyb3VwaW5nUGFydCA9IHBhcnRzW3VzZUdyb3VwaW5nUG9zaXRpb25dO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFBhcnNlZERpZ2l0c0luZm8oKTtcblxuICAgIGlmIChtaW5JbnRQYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gcGFyc2VJbnQobWluSW50UGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBwYXJzZUludChtaW5GcmFjdGlvblBhcnQpO1xuICAgIH1cblxuICAgIGlmIChtYXhGcmFjdGlvblBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gcGFyc2VJbnQobWF4RnJhY3Rpb25QYXJ0KTtcbiAgICB9IGVsc2UgaWYgKG1pbkZyYWN0aW9uUGFydCAhPSBudWxsICYmIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPiByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzKSB7XG4gICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzO1xuICAgIH1cblxuICAgIGlmICh1c2VHcm91cGluZ1BhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQudXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZ1BhcnQgPT09ICd0cnVlJztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFEZWNpbWFsUGlwZSBpbXBsZW1lbnRzIEticU51bWVyaWNQaXBlLCBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvOiBQYXJzZWREaWdpdHNJbmZvIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0aGlzLmlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGN1cnJlbnRMb2NhbGUsIHZhbHVlLCBwYXJzZWREaWdpdHNJbmZvPy51c2VHcm91cGluZykpIHtcbiAgICAgICAgICAgIG9wdGlvbnMudXNlR3JvdXBpbmcgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoY3VycmVudExvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXNbY3VycmVudExvY2FsZV0/LmZvcm1hdHRlcnMubnVtYmVyLmRlY2ltYWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFEZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NwZWNpYWxGb3JtYXRGb3JSVUxvY2FsZShsb2NhbGU6IHN0cmluZywgdmFsdWU6IG51bWJlciwgZ3JvdXBpbmc/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBbJ3J1JywgJ3J1LVJVJ10uaW5jbHVkZXMobG9jYWxlKSAmJlxuICAgICAgICAgICAgZ3JvdXBpbmcgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgTWF0aC5hYnModmFsdWUpIDwgZGVmYXVsdFZhbHVlRm9yR3JvdXBpbmdJblJVTG9jYWxlXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxVGFibGVOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVRhYmxlTnVtYmVyUGlwZSBpbXBsZW1lbnRzIEticU51bWVyaWNQaXBlLCBQaXBlVHJhbnNmb3JtIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX05VTUJFUl9GT1JNQVRURVJfT1BUSU9OUykgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBQYXJzZWREaWdpdHNJbmZvXG4gICAgKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucyB8fCBLQlFfTlVNQkVSX0ZPUk1BVFRFUl9ERUZBVUxUX09QVElPTlM7XG5cbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbnVtYmVyIHRvIGJlIGZvcm1hdHRlZC5cbiAgICAgKiBAcGFyYW0gZGlnaXRzSW5mbyBEZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9wdGlvbnMsIHNwZWNpZmllZCBieSBhIHN0cmluZ1xuICAgICAqIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ojxicj5cbiAgICAgKiA8Y29kZT57bWluSW50ZWdlckRpZ2l0c30ue21pbkZyYWN0aW9uRGlnaXRzfS17bWF4RnJhY3Rpb25EaWdpdHN9PC9jb2RlPi5cbiAgICAgKiAgIC0gYG1pbkludGVnZXJEaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDFgLlxuICAgICAqICAgLSBgbWluRnJhY3Rpb25EaWdpdHNgOiBUaGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDBgLlxuICAgICAqICAgLSBgbWF4RnJhY3Rpb25EaWdpdHNgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LlxuICAgICAqIERlZmF1bHQgaXMgYDNgLlxuICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUgY29kZSBmb3IgdGhlIGxvY2FsZSBmb3JtYXQgcnVsZXMgdG8gdXNlLlxuICAgICAqIFdoZW4gbm90IHN1cHBsaWVkLCB1c2VzIHRoZSB2YWx1ZSBvZiBgS0JRX0xPQ0FMRV9JRGAsIHdoaWNoIGlzIGBydWAgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZGlnaXRzSW5mbz86IHN0cmluZywgbG9jYWxlPzogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50TG9jYWxlID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIGxldCBwYXJzZWREaWdpdHNJbmZvOiBQYXJzZWREaWdpdHNJbmZvIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChkaWdpdHNJbmZvKSB7XG4gICAgICAgICAgICBwYXJzZWREaWdpdHNJbmZvID0gcGFyc2VEaWdpdHNJbmZvKGRpZ2l0c0luZm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9uczogSW50bC5OdW1iZXJGb3JtYXRPcHRpb25zID0ge1xuICAgICAgICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgICAgICAgLi4ucGFyc2VkRGlnaXRzSW5mb1xuICAgICAgICB9O1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoY3VycmVudExvY2FsZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIGZvcm1hdHRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmxvY2FsZXNbY3VycmVudExvY2FsZV0/LmZvcm1hdHRlcnMubnVtYmVyLmRlY2ltYWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFUYWJsZU51bWJlclBpcGUgZm9yIHBpcGUgJyR7SlNPTi5zdHJpbmdpZnkoZXJyb3IubWVzc2FnZSl9J2ApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNXaXRoaW4oc3RhcnRSYW5nZTogbnVtYmVyLCBlbmRSYW5nZTogbnVtYmVyLCB2YWx1ZVRvQ2hlY2s6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzdGFydFJhbmdlIDw9IHZhbHVlVG9DaGVjayAmJiB2YWx1ZVRvQ2hlY2sgPCBlbmRSYW5nZTtcbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbkBQaXBlKHsgbmFtZTogJ2ticVJvdW5kTnVtYmVyJywgcHVyZTogZmFsc2UgfSlcbmV4cG9ydCBjbGFzcyBLYnFSb3VuZERlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcm91bmRpbmdPcHRpb25zOiBSb3VuZERlY2ltYWxPcHRpb25zO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9JRCkgcHJpdmF0ZSBpZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlOiBLYnFMb2NhbGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8uY2hhbmdlcy5zdWJzY3JpYmUoKG5ld0lkOiBzdHJpbmcpID0+ICh0aGlzLmlkID0gbmV3SWQpKTtcbiAgICB9XG5cbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgbG9jYWxlPzogc3RyaW5nKTogYW55IHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGU6IHN0cmluZyA9IGxvY2FsZSB8fCB0aGlzLmlkIHx8IEtCUV9ERUZBVUxUX0xPQ0FMRV9JRDtcblxuICAgICAgICB0aGlzLnJvdW5kaW5nT3B0aW9ucyA9IHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlc1tjdXJyZW50TG9jYWxlXS5mb3JtYXR0ZXJzLm51bWJlci5yb3VuZGluZztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgdW5pdCA9IHRoaXMuY2FsY3VsYXRlVW5pdChudW0pO1xuXG4gICAgICAgICAgICBpZiAoIXVuaXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQobnVtKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHBhcnRzOiB7IG51bT86IG51bWJlcjsgZnJhY3Rpb24/OiBudW1iZXIgfSA9IHt9O1xuXG4gICAgICAgICAgICBpZiAoaW50ZXJ2YWxzQ29uZmlnLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhjdXJyZW50TG9jYWxlKSkge1xuICAgICAgICAgICAgICAgIGludGVydmFsc0NvbmZpZy5pbnRlcnZhbHMuZmluZCgoeyBzdGFydFJhbmdlLCBlbmRSYW5nZSwgcHJlY2lzaW9uIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd2l0aGluID0gaXNXaXRoaW4oc3RhcnRSYW5nZSwgZW5kUmFuZ2UsIG51bSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhpbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWNpc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdCA9PT0gJ3Rob3VzYW5kJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uOiB0aGlzLmNhbGN1bGF0ZURlY2ltYWwobnVtLCBST1VORElOR19VTklUU1t1bml0XSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPSB7IG51bTogTWF0aC5yb3VuZChudW0gLyBST1VORElOR19VTklUU1t1bml0XSkgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aXRoaW47XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubnVtXG4gICAgICAgICAgICAgICAgPyBwYXJ0c1xuICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgIG51bTogTWF0aC50cnVuYyhudW0gLyBST1VORElOR19VTklUU1t1bml0XSksXG4gICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IHRoaXMuY2FsY3VsYXRlRGVjaW1hbChudW0sIFJPVU5ESU5HX1VOSVRTW3VuaXRdKVxuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnRzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJ0c1trZXldID0gSW50bC5OdW1iZXJGb3JtYXQuY2FsbCh0aGlzLCBjdXJyZW50TG9jYWxlLCB7IHVzZUdyb3VwaW5nOiBmYWxzZSB9KS5mb3JtYXQocGFydHNba2V5XSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgY2FsY3VsYXRlZFZhbHVlID0gcGFydHMuZnJhY3Rpb25cbiAgICAgICAgICAgICAgICA/IGAke3BhcnRzLm51bX0ke3RoaXMucm91bmRpbmdPcHRpb25zLmdyb3VwU2VwYXJhdG9yfSR7cGFydHMuZnJhY3Rpb259YFxuICAgICAgICAgICAgICAgIDogYCR7cGFydHMubnVtfWA7XG5cbiAgICAgICAgICAgIHJldHVybiBgJHtjYWxjdWxhdGVkVmFsdWV9JHt0aGlzLnJvdW5kaW5nT3B0aW9ucy5zZXBhcmF0b3J9JHt0aGlzLnJvdW5kaW5nT3B0aW9uc1t1bml0XX1gO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgSW52YWxpZFBpcGVBcmd1bWVudDogS2JxUm91bmREZWNpbWFsUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZURlY2ltYWwobnVtOiBudW1iZXIsIGRpdmlkZXI6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCgoKG51bSAvIGRpdmlkZXIpICUgMSkgKiAxMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogMiAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxNTAwLi4uMjUwMClcbiAgICAgKlxuICAgICAqIDIsMCAqIDEwMDAgaXMgYSBudW1iZXIgaW4gdGhlIGludGVydmFsIG9mIFsxOTUwLi4uMjA1MClcbiAgICAgKi9cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhcnRzRm9yVGhvdXNhbmRzKG51bTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGRpdmlkZWRWYWx1ZSA9IG51bSAvIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBkaXYgPSBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSkgKiBST1VORElOR19VTklUUy50aG91c2FuZDtcbiAgICAgICAgY29uc3QgZmlmdHkgPSA1MDtcblxuICAgICAgICByZXR1cm4gaXNXaXRoaW4oZGl2IC0gZmlmdHksIGRpdiArIGZpZnR5LCBudW0pXG4gICAgICAgICAgICA/IHsgbnVtOiBNYXRoLnJvdW5kKGRpdmlkZWRWYWx1ZSksIGZyYWN0aW9uOiAwIH1cbiAgICAgICAgICAgIDogeyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlVW5pdChudW06IG51bWJlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGxldCBjdXJyZW50VW5pdDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBsb2NhbGl6ZWRPcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5yb3VuZGluZ09wdGlvbnMpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKFJPVU5ESU5HX1VOSVRTKS5ldmVyeSgoa2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvY2FsaXplZE9wdGlvbnMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobnVtIC8gUk9VTkRJTkdfVU5JVFNba2V5XSA+PSAxKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFVuaXQgPSBrZXk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gY3VycmVudFVuaXQ7XG4gICAgfVxufVxuIl19
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9jb3JlL2Zvcm1hdHRlcnMvbnVtYmVyL2Zvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUNILHFCQUFxQixFQUNyQixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUVuQixNQUFNLGVBQWUsQ0FBQzs7O0FBRXZCLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLElBQUksY0FBYyxDQUFtQiwyQkFBMkIsQ0FBQyxDQUFDO0FBRTlHLE1BQU0sQ0FBQyxNQUFNLG9DQUFvQyxHQUFxQjtJQUNsRSxXQUFXLEVBQUUsSUFBSTtJQUNqQixvQkFBb0IsRUFBRSxDQUFDO0lBQ3ZCLHFCQUFxQixFQUFFLENBQUM7SUFDeEIscUJBQXFCLEVBQUUsQ0FBQztDQUMzQixDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxzQkFBc0IsQ0FDbEMsS0FBYyxFQUNkLFNBQTRCLEVBQzVCLE9BQWdDO0lBRWhDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUUvQixJQUFJLENBQUMsT0FBTyxFQUFFLGtCQUFrQjtRQUFFLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvRCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdkQsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDL0MsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUss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LEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7a0lBN0dRLG1CQUFtQixrQkFJSixhQUFhLDZCQUNiLGtCQUFrQjtnSUFMakMsbUJBQW1CO3NJQUFuQixtQkFBbUIsY0FGTixNQUFNOzs0RkFFbkIsbUJBQW1CO2tCQUYvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7a0JBQ2pDLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTs7MEJBS3BDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsYUFBYTs7MEJBQ2hDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgT3B0aW9uYWwsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgS0JRX0RFRkFVTFRfTE9DQUxFX0lELFxuICAgIEtCUV9MT0NBTEVfSUQsXG4gICAgS0JRX0xPQ0FMRV9TRVJWSUNFLFxuICAgIEticUxvY2FsZVNlcnZpY2UsXG4gICAgS2JxTnVtYmVyRm9ybWF0T3B0aW9uc1xufSBmcm9tICcuLi8uLi9sb2NhbGVzJztcblxuZXhwb3J0IGNvbnN0IEtCUV9OVU1CRVJfRk9STUFUVEVSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UGFyc2VkRGlnaXRzSW5mbz4oJ0ticU51bWJlckZvcm1hdHRlck9wdGlvbnMnKTtcblxuZXhwb3J0IGNvbnN0IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUzogUGFyc2VkRGlnaXRzSW5mbyA9IHtcbiAgICB1c2VHcm91cGluZzogdHJ1ZSxcbiAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogMSxcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDAsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAzXG59O1xuXG4vKiogRm9ybWF0cyBhIG51bWJlciB2YWx1ZSBhY2NvcmRpbmcgdG8gbG9jYWxlIGFuZCBmb3JtYXR0aW5nIG9wdGlvbnMgKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXJXaXRoTG9jYWxlKFxuICAgIHZhbHVlOiB1bmtub3duLFxuICAgIGZvcm1hdHRlcjogSW50bC5OdW1iZXJGb3JtYXQsXG4gICAgb3B0aW9ucz86IEticU51bWJlckZvcm1hdE9wdGlvbnNcbik6IHN0cmluZyB7XG4gICAgY29uc3QgbnVtID0gc3RyVG9OdW1iZXIodmFsdWUpO1xuXG4gICAgaWYgKCFvcHRpb25zPy52aWV3R3JvdXBTZXBhcmF0b3IpIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KG51bSk7XG5cbiAgICBjb25zdCBudW1iZXJGb3JtYXRQYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKG51bSk7XG5cbiAgICBmb3IgKGNvbnN0IG51bWJlckZvcm1hdFBhcnQgb2YgbnVtYmVyRm9ybWF0UGFydHMpIHtcbiAgICAgICAgaWYgKG51bWJlckZvcm1hdFBhcnQudHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICAgICAgbnVtYmVyRm9ybWF0UGFydC52YWx1ZSA9IG9wdGlvbnMudmlld0dyb3VwU2VwYXJhdG9yO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bWJlckZvcm1hdFBhcnRzLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSkuam9pbignJyk7XG59XG5cbi8qKlxuICogU3BlY2lhbCBjb250cmFjdCBiZXR3ZWVuIGBLYnFEZWNpbWFsUGlwZWAgYW5kIGBLYnFUYWJsZU51bWJlclBpcGVgLFxuICogc28gdGhleSBjYW4gYmUgaW50ZXJjaGFuZ2VhYmxlIGluIHRoZSBjYXNlcyBvZiB1c2FnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEticU51bWVyaWNQaXBlIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IHVua25vd24sIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHZhbHVlID09PSAnJyB8fCB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmZ1bmN0aW9uIHN0clRvTnVtYmVyKHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb2VyY2VkID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUsIG51bGwpO1xuXG4gICAgaWYgKGNvZXJjZWQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3ZhbHVlfSBpcyBub3QgYSBudW1iZXJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29lcmNlZDtcbn1cblxuZXhwb3J0IGNvbnN0IE5VTUJFUl9GT1JNQVRfUkVHRVhQID0gL14oXFxkKyk/XFwuKChcXGQrKSgtKFxcZCspKT8oLSh0cnVlfGZhbHNlKSk/KT8kLztcblxuY29uc3QgbWluSW50R3JvdXBQb3NpdGlvbiA9IDE7XG5jb25zdCBtaW5GcmFjdGlvbkdyb3VwUG9zaXRpb24gPSAzO1xuY29uc3QgbWF4RnJhY3Rpb25Hcm91cFBvc2l0aW9uID0gNTtcbmNvbnN0IHVzZUdyb3VwaW5nUG9zaXRpb24gPSA3O1xuXG5pbnRlcmZhY2UgUm91bmREZWNpbWFsT3B0aW9ucyB7XG4gICAgc2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgZ3JvdXBTZXBhcmF0b3I6IHN0cmluZztcbiAgICB0aG91c2FuZHM/OiBzdHJpbmc7XG4gICAgdGVuVGhvdXNhbmQ/OiBzdHJpbmc7XG4gICAgbWlsbGlvbj86IHN0cmluZztcbiAgICBvbmVIdW5kcmVkTWlsbGlvbnM/OiBzdHJpbmc7XG4gICAgYmlsbGlvbj86IHN0cmluZztcbiAgICB0cmlsbGlvbjogc3RyaW5nO1xuICAgIHJ0bD86IGJvb2xlYW47XG59XG5cbmNvbnN0IFJPVU5ESU5HX1VOSVRTID0ge1xuICAgIHRob3VzYW5kOiAxZTMsXG4gICAgdGVuVGhvdXNhbmQ6IDEwICogMWUzLFxuICAgIG1pbGxpb246IDFlNixcbiAgICBvbmVIdW5kcmVkTWlsbGlvbnM6IDEwMCAqIDFlNixcbiAgICBiaWxsaW9uOiAxZTksXG4gICAgdHJpbGxpb246IDFlMTJcbn07XG5cbmNvbnN0IGludGVydmFsc0NvbmZpZyA9IHtcbiAgICBzdXBwb3J0ZWRMYW5ndWFnZXM6IFsncnUtUlUnLCAnZW4tVVMnLCAnZXMtTEEnLCAncHQtQlInXSxcbiAgICBpbnRlcnZhbHM6IFtcbiAgICAgICAgeyBzdGFydFJhbmdlOiAxLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMudGhvdXNhbmQgfSxcbiAgICAgICAgeyBzdGFydFJhbmdlOiBST1VORElOR19VTklUUy50aG91c2FuZCwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLnRlblRob3VzYW5kLCBwcmVjaXNpb246IDEgfSxcbiAgICAgICAgeyBzdGFydFJhbmdlOiBST1VORElOR19VTklUUy50ZW5UaG91c2FuZCwgZW5kUmFuZ2U6IFJPVU5ESU5HX1VOSVRTLm1pbGxpb24gfSxcbiAgICAgICAgeyBzdGFydFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uLCBlbmRSYW5nZTogUk9VTkRJTkdfVU5JVFMubWlsbGlvbiAqIDEwLCBwcmVjaXNpb246IDEgfSxcbiAgICAgICAgeyBzdGFydFJhbmdlOiBST1VORElOR19VTklUUy5taWxsaW9uICogMTAsIGVuZFJhbmdlOiBST1VORElOR19VTklUUy5iaWxsaW9uIH1cbiAgICBdXG59O1xuXG5jbGFzcyBQYXJzZWREaWdpdHNJbmZvIHtcbiAgICB1c2VHcm91cGluZzogYm9vbGVhbjtcbiAgICBtaW5pbXVtSW50ZWdlckRpZ2l0czogbnVtYmVyO1xuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbnVtYmVyO1xuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0VmFsdWVGb3JHcm91cGluZ0luUlVMb2NhbGU6IG51bWJlciA9IDEwMDAwO1xuXG5mdW5jdGlvbiBwYXJzZURpZ2l0c0luZm8oZGlnaXRzSW5mbzogc3RyaW5nKTogUGFyc2VkRGlnaXRzSW5mbyB7XG4gICAgY29uc3QgcGFydHMgPSBkaWdpdHNJbmZvLm1hdGNoKE5VTUJFUl9GT1JNQVRfUkVHRVhQKTtcblxuICAgIGlmIChwYXJ0cyA9PT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZGlnaXRzSW5mb30gaXMgbm90IGEgdmFsaWQgZGlnaXQgaW5mb2ApO1xuICAgIH1cblxuICAgIGNvbnN0IG1pbkludFBhcnQgPSBwYXJ0c1ttaW5JbnRHcm91cFBvc2l0aW9uXTtcbiAgICBjb25zdCBtaW5GcmFjdGlvblBhcnQgPSBwYXJ0c1ttaW5GcmFjdGlvbkdyb3VwUG9zaXRpb25dO1xuICAgIGNvbnN0IG1heEZyYWN0aW9uUGFydCA9IHBhcnRzW21heEZyYWN0aW9uR3JvdXBQb3NpdGlvbl07XG4gICAgY29uc3QgdXNlR3JvdXBpbmdQYXJ0ID0gcGFydHNbdXNlR3JvdXBpbmdQb3NpdGlvbl07XG5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgUGFyc2VkRGlnaXRzSW5mbygpO1xuXG4gICAgaWYgKG1pbkludFBhcnQgIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQubWluaW11bUludGVnZXJEaWdpdHMgPSBwYXJzZUludChtaW5JbnRQYXJ0KTtcbiAgICB9XG5cbiAgICBpZiAobWluRnJhY3Rpb25QYXJ0ICE9IG51bGwpIHtcbiAgICAgICAgcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IHBhcnNlSW50KG1pbkZyYWN0aW9uUGFydCk7XG4gICAgfVxuXG4gICAgaWYgKG1heEZyYWN0aW9uUGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBwYXJzZUludChtYXhGcmFjdGlvblBhcnQpO1xuICAgIH0gZWxzZSBpZiAobWluRnJhY3Rpb25QYXJ0ICE9IG51bGwgJiYgcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA+IHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMpIHtcbiAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHM7XG4gICAgfVxuXG4gICAgaWYgKHVzZUdyb3VwaW5nUGFydCAhPSBudWxsKSB7XG4gICAgICAgIHJlc3VsdC51c2VHcm91cGluZyA9IHVzZUdyb3VwaW5nUGFydCA9PT0gJ3RydWUnO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5AUGlwZSh7IG5hbWU6ICdrYnFOdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticURlY2ltYWxQaXBlIGltcGxlbWVudHMgS2JxTnVtZXJpY1BpcGUsIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZERpZ2l0c0luZm9cbiAgICApIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zIHx8IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUztcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiAodGhpcy5pZCA9IG5ld0lkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgICAqIEBwYXJhbSBkaWdpdHNJbmZvIERlY2ltYWwgcmVwcmVzZW50YXRpb24gb3B0aW9ucywgc3BlY2lmaWVkIGJ5IGEgc3RyaW5nXG4gICAgICogaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6PGJyPlxuICAgICAqIDxjb2RlPnttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c308L2NvZGU+LlxuICAgICAqICAgLSBgbWluSW50ZWdlckRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMWAuXG4gICAgICogICAtIGBtaW5GcmFjdGlvbkRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMGAuXG4gICAgICogICAtIGBtYXhGcmFjdGlvbkRpZ2l0c2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgM2AuXG4gICAgICogQHBhcmFtIGxvY2FsZSBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuXG4gICAgICogV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIGBLQlFfTE9DQUxFX0lEYCwgd2hpY2ggaXMgYHJ1YCBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG5cbiAgICAgICAgbGV0IHBhcnNlZERpZ2l0c0luZm86IFBhcnNlZERpZ2l0c0luZm8gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGRpZ2l0c0luZm8pIHtcbiAgICAgICAgICAgIHBhcnNlZERpZ2l0c0luZm8gPSBwYXJzZURpZ2l0c0luZm8oZGlnaXRzSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zOiBJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi5wYXJzZWREaWdpdHNJbmZvXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMuaXNTcGVjaWFsRm9ybWF0Rm9yUlVMb2NhbGUoY3VycmVudExvY2FsZSwgdmFsdWUsIHBhcnNlZERpZ2l0c0luZm8/LnVzZUdyb3VwaW5nKSkge1xuICAgICAgICAgICAgb3B0aW9ucy51c2VHcm91cGluZyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChjdXJyZW50TG9jYWxlLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcldpdGhMb2NhbGUoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlc1tjdXJyZW50TG9jYWxlXT8uZm9ybWF0dGVycy5udW1iZXIuZGVjaW1hbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticURlY2ltYWxQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU3BlY2lhbEZvcm1hdEZvclJVTG9jYWxlKGxvY2FsZTogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCBncm91cGluZz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIFsncnUnLCAncnUtUlUnXS5pbmNsdWRlcyhsb2NhbGUpICYmXG4gICAgICAgICAgICBncm91cGluZyA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICBNYXRoLmFicyh2YWx1ZSkgPCBkZWZhdWx0VmFsdWVGb3JHcm91cGluZ0luUlVMb2NhbGVcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5AUGlwZSh7IG5hbWU6ICdrYnFUYWJsZU51bWJlcicsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgS2JxVGFibGVOdW1iZXJQaXBlIGltcGxlbWVudHMgS2JxTnVtZXJpY1BpcGUsIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfSUQpIHByaXZhdGUgaWQ6IHN0cmluZyxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX1NFUlZJQ0UpIHByaXZhdGUgbG9jYWxlU2VydmljZTogS2JxTG9jYWxlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTlVNQkVSX0ZPUk1BVFRFUl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFBhcnNlZERpZ2l0c0luZm9cbiAgICApIHtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5vcHRpb25zIHx8IEtCUV9OVU1CRVJfRk9STUFUVEVSX0RFRkFVTFRfT1BUSU9OUztcblxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXMuc3Vic2NyaWJlKChuZXdJZDogc3RyaW5nKSA9PiAodGhpcy5pZCA9IG5ld0lkKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHZhbHVlIFRoZSBudW1iZXIgdG8gYmUgZm9ybWF0dGVkLlxuICAgICAqIEBwYXJhbSBkaWdpdHNJbmZvIERlY2ltYWwgcmVwcmVzZW50YXRpb24gb3B0aW9ucywgc3BlY2lmaWVkIGJ5IGEgc3RyaW5nXG4gICAgICogaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6PGJyPlxuICAgICAqIDxjb2RlPnttaW5JbnRlZ2VyRGlnaXRzfS57bWluRnJhY3Rpb25EaWdpdHN9LXttYXhGcmFjdGlvbkRpZ2l0c308L2NvZGU+LlxuICAgICAqICAgLSBgbWluSW50ZWdlckRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMWAuXG4gICAgICogICAtIGBtaW5GcmFjdGlvbkRpZ2l0c2A6IFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgMGAuXG4gICAgICogICAtIGBtYXhGcmFjdGlvbkRpZ2l0c2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuXG4gICAgICogRGVmYXVsdCBpcyBgM2AuXG4gICAgICogQHBhcmFtIGxvY2FsZSBBIGxvY2FsZSBjb2RlIGZvciB0aGUgbG9jYWxlIGZvcm1hdCBydWxlcyB0byB1c2UuXG4gICAgICogV2hlbiBub3Qgc3VwcGxpZWQsIHVzZXMgdGhlIHZhbHVlIG9mIGBLQlFfTE9DQUxFX0lEYCwgd2hpY2ggaXMgYHJ1YCBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRMb2NhbGUgPSBsb2NhbGUgfHwgdGhpcy5pZCB8fCBLQlFfREVGQVVMVF9MT0NBTEVfSUQ7XG5cbiAgICAgICAgbGV0IHBhcnNlZERpZ2l0c0luZm86IFBhcnNlZERpZ2l0c0luZm8gfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgaWYgKGRpZ2l0c0luZm8pIHtcbiAgICAgICAgICAgIHBhcnNlZERpZ2l0c0luZm8gPSBwYXJzZURpZ2l0c0luZm8oZGlnaXRzSW5mbyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zOiBJbnRsLk51bWJlckZvcm1hdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgICAgICAuLi5wYXJzZWREaWdpdHNJbmZvXG4gICAgICAgIH07XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChjdXJyZW50TG9jYWxlLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdE51bWJlcldpdGhMb2NhbGUoXG4gICAgICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICAgICAgZm9ybWF0dGVyLFxuICAgICAgICAgICAgICAgIHRoaXMubG9jYWxlU2VydmljZT8ubG9jYWxlc1tjdXJyZW50TG9jYWxlXT8uZm9ybWF0dGVycy5udW1iZXIuZGVjaW1hbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYEludmFsaWRQaXBlQXJndW1lbnQ6IEticVRhYmxlTnVtYmVyUGlwZSBmb3IgcGlwZSAnJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlKX0nYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1dpdGhpbihzdGFydFJhbmdlOiBudW1iZXIsIGVuZFJhbmdlOiBudW1iZXIsIHZhbHVlVG9DaGVjazogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXJ0UmFuZ2UgPD0gdmFsdWVUb0NoZWNrICYmIHZhbHVlVG9DaGVjayA8IGVuZFJhbmdlO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuQFBpcGUoeyBuYW1lOiAna2JxUm91bmROdW1iZXInLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIEticVJvdW5kRGVjaW1hbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICByb3VuZGluZ09wdGlvbnM6IFJvdW5kRGVjaW1hbE9wdGlvbnM7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfTE9DQUxFX0lEKSBwcml2YXRlIGlkOiBzdHJpbmcsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFKSBwcml2YXRlIGxvY2FsZVNlcnZpY2U6IEticUxvY2FsZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5sb2NhbGVTZXJ2aWNlPy5jaGFuZ2VzLnN1YnNjcmliZSgobmV3SWQ6IHN0cmluZykgPT4gKHRoaXMuaWQgPSBuZXdJZCkpO1xuICAgIH1cblxuICAgIHRyYW5zZm9ybSh2YWx1ZTogYW55LCBsb2NhbGU/OiBzdHJpbmcpOiBhbnkge1xuICAgICAgICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudExvY2FsZTogc3RyaW5nID0gbG9jYWxlIHx8IHRoaXMuaWQgfHwgS0JRX0RFRkFVTFRfTE9DQUxFX0lEO1xuXG4gICAgICAgIHRoaXMucm91bmRpbmdPcHRpb25zID0gdGhpcy5sb2NhbGVTZXJ2aWNlPy5sb2NhbGVzW2N1cnJlbnRMb2NhbGVdLmZvcm1hdHRlcnMubnVtYmVyLnJvdW5kaW5nO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBudW0gPSBzdHJUb051bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCB1bml0ID0gdGhpcy5jYWxjdWxhdGVVbml0KG51bSk7XG5cbiAgICAgICAgICAgIGlmICghdW5pdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsIGN1cnJlbnRMb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pLmZvcm1hdChudW0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGFydHM6IHsgbnVtPzogbnVtYmVyOyBmcmFjdGlvbj86IG51bWJlciB9ID0ge307XG5cbiAgICAgICAgICAgIGlmIChpbnRlcnZhbHNDb25maWcuc3VwcG9ydGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKGN1cnJlbnRMb2NhbGUpKSB7XG4gICAgICAgICAgICAgICAgaW50ZXJ2YWxzQ29uZmlnLmludGVydmFscy5maW5kKCh7IHN0YXJ0UmFuZ2UsIGVuZFJhbmdlLCBwcmVjaXNpb24gfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXRoaW4gPSBpc1dpdGhpbihzdGFydFJhbmdlLCBlbmRSYW5nZSwgbnVtKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAod2l0aGluKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlY2lzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0ID09PSAndGhvdXNhbmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuY2FsY3VsYXRlUGFydHNGb3JUaG91c2FuZHMobnVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW06IE1hdGgudHJ1bmMobnVtIC8gUk9VTkRJTkdfVU5JVFNbdW5pdF0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb246IHRoaXMuY2FsY3VsYXRlRGVjaW1hbChudW0sIFJPVU5ESU5HX1VOSVRTW3VuaXRdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IHsgbnVtOiBNYXRoLnJvdW5kKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdpdGhpbjtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFydHMgPSBwYXJ0cy5udW1cbiAgICAgICAgICAgICAgICA/IHBhcnRzXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgbnVtOiBNYXRoLnRydW5jKG51bSAvIFJPVU5ESU5HX1VOSVRTW3VuaXRdKSxcbiAgICAgICAgICAgICAgICAgICAgICBmcmFjdGlvbjogdGhpcy5jYWxjdWxhdGVEZWNpbWFsKG51bSwgUk9VTkRJTkdfVU5JVFNbdW5pdF0pXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocGFydHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcnRzW2tleV0gPSBJbnRsLk51bWJlckZvcm1hdC5jYWxsKHRoaXMsIGN1cnJlbnRMb2NhbGUsIHsgdXNlR3JvdXBpbmc6IGZhbHNlIH0pLmZvcm1hdChwYXJ0c1trZXldKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBjYWxjdWxhdGVkVmFsdWUgPSBwYXJ0cy5mcmFjdGlvblxuICAgICAgICAgICAgICAgID8gYCR7cGFydHMubnVtfSR7dGhpcy5yb3VuZGluZ09wdGlvbnMuZ3JvdXBTZXBhcmF0b3J9JHtwYXJ0cy5mcmFjdGlvbn1gXG4gICAgICAgICAgICAgICAgOiBgJHtwYXJ0cy5udW19YDtcblxuICAgICAgICAgICAgcmV0dXJuIGAke2NhbGN1bGF0ZWRWYWx1ZX0ke3RoaXMucm91bmRpbmdPcHRpb25zLnNlcGFyYXRvcn0ke3RoaXMucm91bmRpbmdPcHRpb25zW3VuaXRdfWA7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBJbnZhbGlkUGlwZUFyZ3VtZW50OiBLYnFSb3VuZERlY2ltYWxQaXBlIGZvciBwaXBlICcke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UpfSdgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlRGVjaW1hbChudW06IG51bWJlciwgZGl2aWRlcjogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBNYXRoLnJvdW5kKCgobnVtIC8gZGl2aWRlcikgJSAxKSAqIDEwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAyICogMTAwMCBpcyBhIG51bWJlciBpbiB0aGUgaW50ZXJ2YWwgb2YgWzE1MDAuLi4yNTAwKVxuICAgICAqXG4gICAgICogMiwwICogMTAwMCBpcyBhIG51bWJlciBpbiB0aGUgaW50ZXJ2YWwgb2YgWzE5NTAuLi4yMDUwKVxuICAgICAqL1xuICAgIHByaXZhdGUgY2FsY3VsYXRlUGFydHNGb3JUaG91c2FuZHMobnVtOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgZGl2aWRlZFZhbHVlID0gbnVtIC8gUk9VTkRJTkdfVU5JVFMudGhvdXNhbmQ7XG4gICAgICAgIGNvbnN0IGRpdiA9IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSAqIFJPVU5ESU5HX1VOSVRTLnRob3VzYW5kO1xuICAgICAgICBjb25zdCBmaWZ0eSA9IDUwO1xuXG4gICAgICAgIHJldHVybiBpc1dpdGhpbihkaXYgLSBmaWZ0eSwgZGl2ICsgZmlmdHksIG51bSlcbiAgICAgICAgICAgID8geyBudW06IE1hdGgucm91bmQoZGl2aWRlZFZhbHVlKSwgZnJhY3Rpb246IDAgfVxuICAgICAgICAgICAgOiB7IG51bTogTWF0aC5yb3VuZChkaXZpZGVkVmFsdWUpIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVVbml0KG51bTogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgbGV0IGN1cnJlbnRVbml0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGxvY2FsaXplZE9wdGlvbnMgPSBPYmplY3Qua2V5cyh0aGlzLnJvdW5kaW5nT3B0aW9ucyk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoUk9VTkRJTkdfVU5JVFMpLmV2ZXJ5KChrZXkpID0+IHtcbiAgICAgICAgICAgIGlmICghbG9jYWxpemVkT3B0aW9ucy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChudW0gLyBST1VORElOR19VTklUU1trZXldID49IDEpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50VW5pdCA9IGtleTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50VW5pdDtcbiAgICB9XG59XG4iXX0=
@@ -2,13 +2,13 @@ import { NgModule } from '@angular/core';
2
2
  import { KbqForm, KbqFormElement } from './forms.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  export class KbqFormsModule {
5
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, declarations: [KbqForm,
5
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqFormsModule, declarations: [KbqForm,
7
7
  KbqFormElement], exports: [KbqForm,
8
8
  KbqFormElement] }); }
9
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule }); }
9
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFormsModule }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormsModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFormsModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  exports: [
@@ -18,10 +18,10 @@ export class KbqFormElement {
18
18
  this.hasLegend = this.element.nativeElement.firstElementChild.classList.contains('kbq-form__legend');
19
19
  }
20
20
  }
21
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
22
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", host: { properties: { "class.kbq-form-row_margin": "margin" } }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqFormElement"], ngImport: i0 }); }
21
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFormElement, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
22
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqFormElement, selector: ".kbq-form__row, .kbq-form__fieldset, .kbq-form__legend", host: { properties: { "class.kbq-form-row_margin": "margin" } }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqFormElement"], ngImport: i0 }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqFormElement, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqFormElement, decorators: [{
25
25
  type: Directive,
26
26
  args: [{
27
27
  selector: '.kbq-form__row, .kbq-form__fieldset, .kbq-form__legend',
@@ -47,10 +47,10 @@ export class KbqForm {
47
47
  element.margin = !!(nextElement && !nextElement.hasLegend);
48
48
  });
49
49
  }
50
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqForm, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", host: { classAttribute: "kbq-form" }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqForm"], ngImport: i0 }); }
50
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqForm, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqForm, selector: ".kbq-form-vertical, .kbq-form-horizontal", host: { classAttribute: "kbq-form" }, queries: [{ propertyName: "elements", predicate: KbqFormElement }], exportAs: ["kbqForm"], ngImport: i0 }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqForm, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqForm, decorators: [{
54
54
  type: Directive,
55
55
  args: [{
56
56
  selector: '.kbq-form-vertical, .kbq-form-horizontal',
@@ -13,10 +13,10 @@ export class KbqHighlightPipe {
13
13
  }
14
14
  return value.replace(new RegExp(`(${escapeRegExp(args)})`, 'gi'), '<mark class="kbq-highlight">$1</mark>');
15
15
  }
16
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
17
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightPipe, name: "mcHighlight" }); }
16
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
17
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, name: "mcHighlight" }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightPipe, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightPipe, decorators: [{
20
20
  type: Pipe,
21
21
  args: [{ name: 'mcHighlight' }]
22
22
  }] });
@@ -3,11 +3,11 @@ import { NgModule } from '@angular/core';
3
3
  import { KbqHighlightPipe } from './highlight.pipe';
4
4
  import * as i0 from "@angular/core";
5
5
  export class KbqHighlightModule {
6
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightModule, declarations: [KbqHighlightPipe], imports: [CommonModule], exports: [KbqHighlightPipe] }); }
8
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightModule, imports: [CommonModule] }); }
6
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightModule, declarations: [KbqHighlightPipe], imports: [CommonModule], exports: [KbqHighlightPipe] }); }
8
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightModule, imports: [CommonModule] }); }
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqHighlightModule, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqHighlightModule, decorators: [{
11
11
  type: NgModule,
12
12
  args: [{
13
13
  imports: [CommonModule],
@@ -6,10 +6,10 @@ import * as i0 from "@angular/core";
6
6
  * counted by checking the query list's length.
7
7
  */
8
8
  export class KbqLine {
9
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: KbqLine, selector: "[kbq-line], [mcLine]", host: { classAttribute: "kbq-line" }, ngImport: i0 }); }
9
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqLine, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: KbqLine, selector: "[kbq-line], [mcLine]", host: { classAttribute: "kbq-line" }, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqLine, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqLine, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: '[kbq-line], [mcLine]',
@@ -55,11 +55,11 @@ export class KbqLineSetter {
55
55
  }
56
56
  }
57
57
  export class KbqLineModule {
58
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
59
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: KbqLineModule, declarations: [KbqLine], exports: [KbqLine] }); }
60
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqLineModule }); }
58
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqLineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
59
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: KbqLineModule, declarations: [KbqLine], exports: [KbqLine] }); }
60
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqLineModule }); }
61
61
  }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqLineModule, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: KbqLineModule, decorators: [{
63
63
  type: NgModule,
64
64
  args: [{
65
65
  imports: [],
@@ -95,6 +95,110 @@ export const enUSLocaleData = {
95
95
  pinButton: 'Leave expanded',
96
96
  collapseButton: 'Collapse'
97
97
  }
98
+ },
99
+ searchExpandable: {
100
+ tooltip: 'Search',
101
+ placeholder: 'Search'
102
+ },
103
+ appSwitcher: {
104
+ searchPlaceholder: 'Search',
105
+ searchEmptyResult: 'Nothing found',
106
+ sitesHeader: 'Other sites'
107
+ },
108
+ timeRange: {
109
+ title: {
110
+ for: 'for',
111
+ placeholder: 'Select period'
112
+ },
113
+ editor: {
114
+ from: 'from',
115
+ to: 'to',
116
+ apply: 'Apply',
117
+ cancel: 'Cancel',
118
+ rangeLabel: 'for period',
119
+ allTime: 'for all time',
120
+ currentQuarter: 'for the current quarter',
121
+ currentYear: 'for the current year'
122
+ },
123
+ durationTemplate: {
124
+ title: {
125
+ SEPARATOR: ' ',
126
+ LAST_PART_SEPARATOR: '',
127
+ YEARS: `{years, plural,
128
+ one {# year}
129
+ other {last # years}
130
+ }`,
131
+ MONTHS: `{months, plural,
132
+ one {last month}
133
+ other {last # months}
134
+ }`,
135
+ WEEKS: `{weeks, plural,
136
+ one {last week}
137
+ other {last # weeks}
138
+ }`,
139
+ DAYS: `{days, plural,
140
+ one {last day}
141
+ other {last # days}
142
+ }`,
143
+ HOURS: `{hours, plural,
144
+ one {last hour}
145
+ other {last # hours}
146
+ }`,
147
+ MINUTES: `{minutes, plural,
148
+ one {last minute}
149
+ other {last # minutes}
150
+ }`,
151
+ SECONDS: `{seconds, plural,
152
+ one {last second}
153
+ other {last # seconds}
154
+ }`,
155
+ YEARS_FRACTION: `{years} years`,
156
+ MONTHS_FRACTION: `{months} months`
157
+ },
158
+ option: {
159
+ SEPARATOR: ' ',
160
+ LAST_PART_SEPARATOR: '',
161
+ YEARS: `{years, plural,
162
+ one {# year}
163
+ other {last # years}
164
+ }`,
165
+ MONTHS: `{months, plural,
166
+ one {last month}
167
+ other {last # months}
168
+ }`,
169
+ WEEKS: `{weeks, plural,
170
+ one {last week}
171
+ other {last # weeks}
172
+ }`,
173
+ DAYS: `{days, plural,
174
+ one {last day}
175
+ other {last # days}
176
+ }`,
177
+ HOURS: `{hours, plural,
178
+ one {last hour}
179
+ other {last # hours}
180
+ }`,
181
+ MINUTES: `{minutes, plural,
182
+ one {last minute}
183
+ other {last # minutes}
184
+ }`,
185
+ SECONDS: `{seconds, plural,
186
+ one {last second}
187
+ other {last # seconds}
188
+ }`,
189
+ YEARS_FRACTION: `{years} years`,
190
+ MONTHS_FRACTION: `{months} months`
191
+ }
192
+ }
193
+ },
194
+ notificationCenter: {
195
+ notifications: 'Notifications',
196
+ remove: 'Remove',
197
+ doNotDisturb: 'Do not disturb',
198
+ showPopUpNotifications: 'Show pop-up notifications',
199
+ noNotifications: 'No notifications',
200
+ failedToLoadNotifications: 'Failed to load notifications',
201
+ repeat: 'Repeat'
98
202
  }
99
203
  };
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvbG9jYWxlcy9lbi1VUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFO0lBQ2hELFVBQVUsRUFBRTtRQUNSLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLFNBQVMsRUFBRSxZQUFZO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsV0FBVyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLE9BQU87U0FDakI7S0FDSjtJQUNELFVBQVUsRUFBRTtRQUNSLE1BQU0sRUFBRTtZQUNKLFdBQVcsRUFBRSxvQ0FBb0M7WUFDakQsVUFBVSxFQUFFLFFBQVE7U0FDdkI7UUFDRCxRQUFRLEVBQUU7WUFDTixXQUFXLEVBQUUsK0JBQStCO1lBQzVDLHVCQUF1QixFQUFFLHFDQUFxQztZQUM5RCx5QkFBeUIsRUFBRSxnQ0FBZ0M7WUFDM0QsVUFBVSxFQUFFLFFBQVE7WUFDcEIsS0FBSyxFQUFFLGNBQWM7WUFDckIsV0FBVyxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxNQUFNO2FBQ2Y7U0FDSjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsaUJBQWlCLEVBQUUsa0JBQWtCO1FBQ3JDLGtCQUFrQixFQUFFLG1CQUFtQjtRQUN2QyxlQUFlLEVBQUUsVUFBVTtRQUMzQixhQUFhLEVBQUUsVUFBVTtRQUN6QixXQUFXLEVBQUUsTUFBTTtRQUNuQixXQUFXLEVBQUUsVUFBVTtRQUN2QixZQUFZLEVBQUUsV0FBVztRQUN6Qix5QkFBeUIsRUFBRSw2QkFBNkI7S0FDakI7SUFDM0MsUUFBUSxFQUFFO1FBQ04saUJBQWlCLEVBQUUsbUJBQW1CO0tBQ3pDO0lBQ0QsWUFBWSxFQUFFO1FBQ1YsWUFBWSxFQUFFLFVBQVU7S0FDa0I7SUFDOUMsU0FBUyxFQUFFO1FBQ1AsS0FBSyxFQUFFO1lBQ0gsVUFBVSxFQUFFLE9BQU87U0FDdEI7UUFDRCxNQUFNLEVBQUU7WUFDSixPQUFPLEVBQUUsUUFBUTtZQUNqQixXQUFXLEVBQUUsUUFBUTtTQUN4QjtRQUNELE9BQU8sRUFBRTtZQUNMLFdBQVcsRUFBRSxTQUFTO1lBQ3RCLG9CQUFvQixFQUFFLHFCQUFxQjtZQUMzQyxpQkFBaUIsRUFBRSxRQUFRO1lBQzNCLGlCQUFpQixFQUFFLGVBQWU7WUFDbEMsZUFBZSxFQUFFLG9CQUFvQjtZQUNyQyxXQUFXLEVBQUUsY0FBYztZQUMzQixTQUFTLEVBQUUsYUFBYTtZQUN4QixNQUFNLEVBQUUsTUFBTTtZQUNkLFlBQVksRUFBRSxPQUFPO1lBQ3JCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLDBDQUEwQztZQUNqRCxTQUFTLEVBQUUsb0VBQW9FO1lBQy9FLFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFlBQVksRUFBRSxRQUFRO1NBQ3pCO1FBQ0QsR0FBRyxFQUFFO1lBQ0QsT0FBTyxFQUFFLFlBQVk7U0FDeEI7UUFDRCxJQUFJLEVBQUU7WUFDRixrQkFBa0IsRUFBRSxPQUFPO1lBQzNCLG1CQUFtQixFQUFFLFFBQVE7WUFDN0IsV0FBVyxFQUFFLE9BQU87WUFDcEIsaUJBQWlCLEVBQUUsZUFBZTtZQUNsQyxTQUFTLEVBQUUsWUFBWTtTQUMxQjtRQUNELFFBQVEsRUFBRTtZQUNOLFlBQVksRUFBRSxlQUFlO1lBQzdCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsY0FBYyxFQUFFLElBQUk7WUFDcEIscUJBQXFCLEVBQUUsNENBQTRDO1lBQ25FLHFCQUFxQixFQUFFLDhCQUE4QjtTQUN4RDtLQUNKO0lBQ0QsV0FBVyxFQUFFO1FBQ1QsUUFBUSxFQUFFLFFBQVE7UUFDbEIsU0FBUyxFQUFFLFVBQVU7S0FDYTtJQUN0QyxRQUFRLEVBQUU7UUFDTixNQUFNLEVBQUU7WUFDSixTQUFTLEVBQUUsZ0JBQWdCO1lBQzNCLGNBQWMsRUFBRSxVQUFVO1NBQzdCO0tBQ0o7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIEticUNsYW1wZWRUZXh0TG9jYWxlQ29uZmlnLFxuICAgIEticUNvZGVCbG9ja0xvY2FsZUNvbmZpZ3VyYXRpb25cbn0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBlblVTTG9jYWxlRGF0YSA9IHtcbiAgICBzZWxlY3Q6IHsgaGlkZGVuSXRlbXNUZXh0OiAne3sgbnVtYmVyIH19IG1vcmUnIH0sXG4gICAgZGF0ZXBpY2tlcjoge1xuICAgICAgICBwbGFjZWhvbGRlcjogJ3l5eXktbW0tZGQnLFxuICAgICAgICBkYXRlSW5wdXQ6ICd5eXl5LU1NLWRkJ1xuICAgIH0sXG4gICAgdGltZXBpY2tlcjoge1xuICAgICAgICBwbGFjZWhvbGRlcjoge1xuICAgICAgICAgICAgZnVsbDogJ2hoOm1tOnNzJyxcbiAgICAgICAgICAgIHNob3J0OiAnaGg6bW0nXG4gICAgICAgIH1cbiAgICB9LFxuICAgIGZpbGVVcGxvYWQ6IHtcbiAgICAgICAgc2luZ2xlOiB7XG4gICAgICAgICAgICBjYXB0aW9uVGV4dDogJ0RyYWcgZmlsZSBoZXJlIG9yIHt7IGJyb3dzZUxpbmsgfX0nLFxuICAgICAgICAgICAgYnJvd3NlTGluazogJ2Nob29zZSdcbiAgICAgICAgfSxcbiAgICAgICAgbXVsdGlwbGU6IHtcbiAgICAgICAgICAgIGNhcHRpb25UZXh0OiAnRHJhZyBoZXJlIG9yIHt7IGJyb3dzZUxpbmsgfX0nLFxuICAgICAgICAgICAgY2FwdGlvblRleHRXaGVuU2VsZWN0ZWQ6ICdEcmFnIG1vcmUgZmlsZXMgb3Ige3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBjYXB0aW9uVGV4dEZvckNvbXBhY3RTaXplOiAnRHJhZyBmaWxlcyBvciB7eyBicm93c2VMaW5rIH19JyxcbiAgICAgICAgICAgIGJyb3dzZUxpbms6ICdjaG9vc2UnLFxuICAgICAgICAgICAgdGl0bGU6ICdVcGxvYWQgZmlsZXMnLFxuICAgICAgICAgICAgZ3JpZEhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBmaWxlOiAnRmlsZScsXG4gICAgICAgICAgICAgICAgc2l6ZTogJ1NpemUnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGNvZGVCbG9jazoge1xuICAgICAgICBzb2Z0V3JhcE9uVG9vbHRpcDogJ0VuYWJsZSB3b3JkIHdyYXAnLFxuICAgICAgICBzb2Z0V3JhcE9mZlRvb2x0aXA6ICdEaXNhYmxlIHdvcmQgd3JhcCcsXG4gICAgICAgIGRvd25sb2FkVG9vbHRpcDogJ0Rvd25sb2FkJyxcbiAgICAgICAgY29waWVkVG9vbHRpcDogJ+KckyBDb3BpZWQnLFxuICAgICAgICBjb3B5VG9vbHRpcDogJ0NvcHknLFxuICAgICAgICB2aWV3QWxsVGV4dDogJ1Nob3cgYWxsJyxcbiAgICAgICAgdmlld0xlc3NUZXh0OiAnU2hvdyBsZXNzJyxcbiAgICAgICAgb3BlbkV4dGVybmFsU3lzdGVtVG9vbHRpcDogJ09wZW4gaW4gdGhlIGV4dGVybmFsIHN5c3RlbSdcbiAgICB9IHNhdGlzZmllcyBLYnFDb2RlQmxvY2tMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIHRpbWV6b25lOiB7XG4gICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnQ2l0eSBvciB0aW1lIHpvbmUnXG4gICAgfSxcbiAgICBhY3Rpb25zUGFuZWw6IHtcbiAgICAgICAgY2xvc2VUb29sdGlwOiAnRGVzZWxlY3QnXG4gICAgfSBzYXRpc2ZpZXMgS2JxQWN0aW9uc1BhbmVsTG9jYWxlQ29uZmlndXJhdGlvbixcbiAgICBmaWx0ZXJCYXI6IHtcbiAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIGJ1dHRvbk5hbWU6ICdSZXNldCdcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgICB0b29sdGlwOiAnU2VhcmNoJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnU2VhcmNoJ1xuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICBkZWZhdWx0TmFtZTogJ0ZpbHRlcnMnLFxuICAgICAgICAgICAgc2F2ZU5ld0ZpbHRlclRvb2x0aXA6ICdTYXZlIHRoZSBuZXcgZmlsdGVyJyxcbiAgICAgICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICAgICAgICAgIHNlYXJjaEVtcHR5UmVzdWx0OiAnTm90aGluZyBmb3VuZCcsXG4gICAgICAgICAgICBzYXZlQXNOZXdGaWx0ZXI6ICdTYXZlIGFzIG5ldyBmaWx0ZXInLFxuICAgICAgICAgICAgc2F2ZUNoYW5nZXM6ICdTYXZlIGNoYW5nZXMnLFxuICAgICAgICAgICAgc2F2ZUFzTmV3OiAnU2F2ZSBhcyBuZXcnLFxuICAgICAgICAgICAgY2hhbmdlOiAnRWRpdCcsXG4gICAgICAgICAgICByZXNldENoYW5nZXM6ICdSZXNldCcsXG4gICAgICAgICAgICByZW1vdmU6ICdEZWxldGUnLFxuICAgICAgICAgICAgbmFtZTogJ05hbWUnLFxuICAgICAgICAgICAgZXJyb3I6ICdUaGUgc2VhcmNoIHdpdGggc3VjaCBuYW1lIGFscmVhZHkgZXhpc3RzJyxcbiAgICAgICAgICAgIGVycm9ySGludDogJ0NvdWxkIG5vdCBzYXZlIHRoZSBmaWx0ZXIuIFRyeSBhZ2FpbiBvciBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicsXG4gICAgICAgICAgICBzYXZlQnV0dG9uOiAnU2F2ZScsXG4gICAgICAgICAgICBjYW5jZWxCdXR0b246ICdDYW5jZWwnXG4gICAgICAgIH0sXG4gICAgICAgIGFkZDoge1xuICAgICAgICAgICAgdG9vbHRpcDogJ0FkZCBmaWx0ZXInXG4gICAgICAgIH0sXG4gICAgICAgIHBpcGU6IHtcbiAgICAgICAgICAgIGNsZWFyQnV0dG9uVG9vbHRpcDogJ0NsZWFyJyxcbiAgICAgICAgICAgIHJlbW92ZUJ1dHRvblRvb2x0aXA6ICdEZWxldGUnLFxuICAgICAgICAgICAgYXBwbHlCdXR0b246ICdBcHBseScsXG4gICAgICAgICAgICBlbXB0eVNlYXJjaFJlc3VsdDogJ05vdGhpbmcgZm91bmQnLFxuICAgICAgICAgICAgc2VsZWN0QWxsOiAnU2VsZWN0IGFsbCdcbiAgICAgICAgfSxcbiAgICAgICAgZGF0ZVBpcGU6IHtcbiAgICAgICAgICAgIGN1c3RvbVBlcmlvZDogJ0N1c3RvbSBwZXJpb2QnLFxuICAgICAgICAgICAgY3VzdG9tUGVyaW9kRnJvbTogJ2Zyb20nLFxuICAgICAgICAgICAgY3VzdG9tUGVyaW9kVG86ICd0bycsXG4gICAgICAgICAgICBjdXN0b21QZXJpb2RFcnJvckhpbnQ6ICdUaGUgcGVyaW9kIGNhbm5vdCBzdGFydCBsYXRlciB0aGFuIGl0IGVuZHMnLFxuICAgICAgICAgICAgYmFja1RvUGVyaW9kU2VsZWN0aW9uOiAnQmFjayB0byBzZWxlY3RpbmcgdGhlIHBlcmlvZCdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2xhbXBlZFRleHQ6IHtcbiAgICAgICAgb3BlblRleHQ6ICdFeHBhbmQnLFxuICAgICAgICBjbG9zZVRleHQ6ICdDb2xsYXBzZSdcbiAgICB9IHNhdGlzZmllcyBLYnFDbGFtcGVkVGV4dExvY2FsZUNvbmZpZyxcbiAgICBuYXZiYXJJYzoge1xuICAgICAgICB0b2dnbGU6IHtcbiAgICAgICAgICAgIHBpbkJ1dHRvbjogJ0xlYXZlIGV4cGFuZGVkJyxcbiAgICAgICAgICAgIGNvbGxhcHNlQnV0dG9uOiAnQ29sbGFwc2UnXG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4tVVMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2NvcmUvbG9jYWxlcy9lbi1VUy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDMUIsTUFBTSxFQUFFLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFO0lBQ2hELFVBQVUsRUFBRTtRQUNSLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLFNBQVMsRUFBRSxZQUFZO0tBQzFCO0lBQ0QsVUFBVSxFQUFFO1FBQ1IsV0FBVyxFQUFFO1lBQ1QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsS0FBSyxFQUFFLE9BQU87U0FDakI7S0FDSjtJQUNELFVBQVUsRUFBRTtRQUNSLE1BQU0sRUFBRTtZQUNKLFdBQVcsRUFBRSxvQ0FBb0M7WUFDakQsVUFBVSxFQUFFLFFBQVE7U0FDdkI7UUFDRCxRQUFRLEVBQUU7WUFDTixXQUFXLEVBQUUsK0JBQStCO1lBQzVDLHVCQUF1QixFQUFFLHFDQUFxQztZQUM5RCx5QkFBeUIsRUFBRSxnQ0FBZ0M7WUFDM0QsVUFBVSxFQUFFLFFBQVE7WUFDcEIsS0FBSyxFQUFFLGNBQWM7WUFDckIsV0FBVyxFQUFFO2dCQUNULElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxNQUFNO2FBQ2Y7U0FDSjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsaUJBQWlCLEVBQUUsa0JBQWtCO1FBQ3JDLGtCQUFrQixFQUFFLG1CQUFtQjtRQUN2QyxlQUFlLEVBQUUsVUFBVTtRQUMzQixhQUFhLEVBQUUsVUFBVTtRQUN6QixXQUFXLEVBQUUsTUFBTTtRQUNuQixXQUFXLEVBQUUsVUFBVTtRQUN2QixZQUFZLEVBQUUsV0FBVztRQUN6Qix5QkFBeUIsRUFBRSw2QkFBNkI7S0FDakI7SUFDM0MsUUFBUSxFQUFFO1FBQ04saUJBQWlCLEVBQUUsbUJBQW1CO0tBQ3pDO0lBQ0QsWUFBWSxFQUFF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Ozs7Y0FHUjtnQkFDRSxLQUFLLEVBQUU7OztjQUdUO2dCQUNFLE9BQU8sRUFBRTs7O2NBR1g7Z0JBQ0UsT0FBTyxFQUFFOzs7Y0FHWDtnQkFDRSxjQUFjLEVBQUUsZUFBZTtnQkFDL0IsZUFBZSxFQUFFLGlCQUFpQjthQUNyQztTQUNKO0tBQytCO0lBQ3BDLGtCQUFrQixFQUFFO1FBQ2hCLGFBQWEsRUFBRSxlQUFlO1FBQzlCLE1BQU0sRUFBRSxRQUFRO1FBQ2hCLFlBQVksRUFBRSxnQkFBZ0I7UUFDOUIsc0JBQXNCLEVBQUUsMkJBQTJCO1FBQ25ELGVBQWUsRUFBRSxrQkFBa0I7UUFDbkMseUJBQXlCLEVBQUUsOEJBQThCO1FBQ3pELE1BQU0sRUFBRSxRQUFRO0tBQ25CO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgS2JxQWN0aW9uc1BhbmVsTG9jYWxlQ29uZmlndXJhdGlvbixcbiAgICBLYnFDbGFtcGVkVGV4dExvY2FsZUNvbmZpZyxcbiAgICBLYnFDb2RlQmxvY2tMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIEticVRpbWVSYW5nZUxvY2FsZUNvbmZpZ1xufSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IGVuVVNMb2NhbGVEYXRhID0ge1xuICAgIHNlbGVjdDogeyBoaWRkZW5JdGVtc1RleHQ6ICd7eyBudW1iZXIgfX0gbW9yZScgfSxcbiAgICBkYXRlcGlja2VyOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiAneXl5eS1tbS1kZCcsXG4gICAgICAgIGRhdGVJbnB1dDogJ3l5eXktTU0tZGQnXG4gICAgfSxcbiAgICB0aW1lcGlja2VyOiB7XG4gICAgICAgIHBsYWNlaG9sZGVyOiB7XG4gICAgICAgICAgICBmdWxsOiAnaGg6bW06c3MnLFxuICAgICAgICAgICAgc2hvcnQ6ICdoaDptbSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgZmlsZVVwbG9hZDoge1xuICAgICAgICBzaW5nbGU6IHtcbiAgICAgICAgICAgIGNhcHRpb25UZXh0OiAnRHJhZyBmaWxlIGhlcmUgb3Ige3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBicm93c2VMaW5rOiAnY2hvb3NlJ1xuICAgICAgICB9LFxuICAgICAgICBtdWx0aXBsZToge1xuICAgICAgICAgICAgY2FwdGlvblRleHQ6ICdEcmFnIGhlcmUgb3Ige3sgYnJvd3NlTGluayB9fScsXG4gICAgICAgICAgICBjYXB0aW9uVGV4dFdoZW5TZWxlY3RlZDogJ0RyYWcgbW9yZSBmaWxlcyBvciB7eyBicm93c2VMaW5rIH19JyxcbiAgICAgICAgICAgIGNhcHRpb25UZXh0Rm9yQ29tcGFjdFNpemU6ICdEcmFnIGZpbGVzIG9yIHt7IGJyb3dzZUxpbmsgfX0nLFxuICAgICAgICAgICAgYnJvd3NlTGluazogJ2Nob29zZScsXG4gICAgICAgICAgICB0aXRsZTogJ1VwbG9hZCBmaWxlcycsXG4gICAgICAgICAgICBncmlkSGVhZGVyczoge1xuICAgICAgICAgICAgICAgIGZpbGU6ICdGaWxlJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnU2l6ZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgY29kZUJsb2NrOiB7XG4gICAgICAgIHNvZnRXcmFwT25Ub29sdGlwOiAnRW5hYmxlIHdvcmQgd3JhcCcsXG4gICAgICAgIHNvZnRXcmFwT2ZmVG9vbHRpcDogJ0Rpc2FibGUgd29yZCB3cmFwJyxcbiAgICAgICAgZG93bmxvYWRUb29sdGlwOiAnRG93bmxvYWQnLFxuICAgICAgICBjb3BpZWRUb29sdGlwOiAn4pyTIENvcGllZCcsXG4gICAgICAgIGNvcHlUb29sdGlwOiAnQ29weScsXG4gICAgICAgIHZpZXdBbGxUZXh0OiAnU2hvdyBhbGwnLFxuICAgICAgICB2aWV3TGVzc1RleHQ6ICdTaG93IGxlc3MnLFxuICAgICAgICBvcGVuRXh0ZXJuYWxTeXN0ZW1Ub29sdGlwOiAnT3BlbiBpbiB0aGUgZXh0ZXJuYWwgc3lzdGVtJ1xuICAgIH0gc2F0aXNmaWVzIEticUNvZGVCbG9ja0xvY2FsZUNvbmZpZ3VyYXRpb24sXG4gICAgdGltZXpvbmU6IHtcbiAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdDaXR5IG9yIHRpbWUgem9uZSdcbiAgICB9LFxuICAgIGFjdGlvbnNQYW5lbDoge1xuICAgICAgICBjbG9zZVRvb2x0aXA6ICdEZXNlbGVjdCdcbiAgICB9IHNhdGlzZmllcyBLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uLFxuICAgIGZpbHRlckJhcjoge1xuICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgYnV0dG9uTmFtZTogJ1Jlc2V0J1xuICAgICAgICB9LFxuICAgICAgICBzZWFyY2g6IHtcbiAgICAgICAgICAgIHRvb2x0aXA6ICdTZWFyY2gnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWFyY2gnXG4gICAgICAgIH0sXG4gICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIGRlZmF1bHROYW1lOiAnRmlsdGVycycsXG4gICAgICAgICAgICBzYXZlTmV3RmlsdGVyVG9vbHRpcDogJ1NhdmUgdGhlIG5ldyBmaWx0ZXInLFxuICAgICAgICAgICAgc2VhcmNoUGxhY2Vob2xkZXI6ICdTZWFyY2gnLFxuICAgICAgICAgICAgc2VhcmNoRW1wdHlSZXN1bHQ6ICdOb3RoaW5nIGZvdW5kJyxcbiAgICAgICAgICAgIHNhdmVBc05ld0ZpbHRlcjogJ1NhdmUgYXMgbmV3IGZpbHRlcicsXG4gICAgICAgICAgICBzYXZlQ2hhbmdlczogJ1NhdmUgY2hhbmdlcycsXG4gICAgICAgICAgICBzYXZlQXNOZXc6ICdTYXZlIGFzIG5ldycsXG4gICAgICAgICAgICBjaGFuZ2U6ICdFZGl0JyxcbiAgICAgICAgICAgIHJlc2V0Q2hhbmdlczogJ1Jlc2V0JyxcbiAgICAgICAgICAgIHJlbW92ZTogJ0RlbGV0ZScsXG4gICAgICAgICAgICBuYW1lOiAnTmFtZScsXG4gICAgICAgICAgICBlcnJvcjogJ1RoZSBzZWFyY2ggd2l0aCBzdWNoIG5hbWUgYWxyZWFkeSBleGlzdHMnLFxuICAgICAgICAgICAgZXJyb3JIaW50OiAnQ291bGQgbm90IHNhdmUgdGhlIGZpbHRlci4gVHJ5IGFnYWluIG9yIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyxcbiAgICAgICAgICAgIHNhdmVCdXR0b246ICdTYXZlJyxcbiAgICAgICAgICAgIGNhbmNlbEJ1dHRvbjogJ0NhbmNlbCdcbiAgICAgICAgfSxcbiAgICAgICAgYWRkOiB7XG4gICAgICAgICAgICB0b29sdGlwOiAnQWRkIGZpbHRlcidcbiAgICAgICAgfSxcbiAgICAgICAgcGlwZToge1xuICAgICAgICAgICAgY2xlYXJCdXR0b25Ub29sdGlwOiAnQ2xlYXInLFxuICAgICAgICAgICAgcmVtb3ZlQnV0dG9uVG9vbHRpcDogJ0RlbGV0ZScsXG4gICAgICAgICAgICBhcHBseUJ1dHRvbjogJ0FwcGx5JyxcbiAgICAgICAgICAgIGVtcHR5U2VhcmNoUmVzdWx0OiAnTm90aGluZyBmb3VuZCcsXG4gICAgICAgICAgICBzZWxlY3RBbGw6ICdTZWxlY3QgYWxsJ1xuICAgICAgICB9LFxuICAgICAgICBkYXRlUGlwZToge1xuICAgICAgICAgICAgY3VzdG9tUGVyaW9kOiAnQ3VzdG9tIHBlcmlvZCcsXG4gICAgICAgICAgICBjdXN0b21QZXJpb2RGcm9tOiAnZnJvbScsXG4gICAgICAgICAgICBjdXN0b21QZXJpb2RUbzogJ3RvJyxcbiAgICAgICAgICAgIGN1c3RvbVBlcmlvZEVycm9ySGludDogJ1RoZSBwZXJpb2QgY2Fubm90IHN0YXJ0IGxhdGVyIHRoYW4gaXQgZW5kcycsXG4gICAgICAgICAgICBiYWNrVG9QZXJpb2RTZWxlY3Rpb246ICdCYWNrIHRvIHNlbGVjdGluZyB0aGUgcGVyaW9kJ1xuICAgICAgICB9XG4gICAgfSxcbiAgICBjbGFtcGVkVGV4dDoge1xuICAgICAgICBvcGVuVGV4dDogJ0V4cGFuZCcsXG4gICAgICAgIGNsb3NlVGV4dDogJ0NvbGxhcHNlJ1xuICAgIH0gc2F0aXNmaWVzIEticUNsYW1wZWRUZXh0TG9jYWxlQ29uZmlnLFxuICAgIG5hdmJhckljOiB7XG4gICAgICAgIHRvZ2dsZToge1xuICAgICAgICAgICAgcGluQnV0dG9uOiAnTGVhdmUgZXhwYW5kZWQnLFxuICAgICAgICAgICAgY29sbGFwc2VCdXR0b246ICdDb2xsYXBzZSdcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc2VhcmNoRXhwYW5kYWJsZToge1xuICAgICAgICB0b29sdGlwOiAnU2VhcmNoJyxcbiAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWFyY2gnXG4gICAgfSxcbiAgICBhcHBTd2l0Y2hlcjoge1xuICAgICAgICBzZWFyY2hQbGFjZWhvbGRlcjogJ1NlYXJjaCcsXG4gICAgICAgIHNlYXJjaEVtcHR5UmVzdWx0OiAnTm90aGluZyBmb3VuZCcsXG4gICAgICAgIHNpdGVzSGVhZGVyOiAnT3RoZXIgc2l0ZXMnXG4gICAgfSxcbiAgICB0aW1lUmFuZ2U6IHtcbiAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgIGZvcjogJ2ZvcicsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBwZXJpb2QnXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvcjoge1xuICAgICAgICAgICAgZnJvbTogJ2Zyb20nLFxuICAgICAgICAgICAgdG86ICd0bycsXG4gICAgICAgICAgICBhcHBseTogJ0FwcGx5JyxcbiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgICAgICAgICByYW5nZUxhYmVsOiAnZm9yIHBlcmlvZCcsXG4gICAgICAgICAgICBhbGxUaW1lOiAnZm9yIGFsbCB0aW1lJyxcbiAgICAgICAgICAgIGN1cnJlbnRRdWFydGVyOiAnZm9yIHRoZSBjdXJyZW50IHF1YXJ0ZXInLFxuICAgICAgICAgICAgY3VycmVudFllYXI6ICdmb3IgdGhlIGN1cnJlbnQgeWVhcidcbiAgICAgICAgfSxcbiAgICAgICAgZHVyYXRpb25UZW1wbGF0ZToge1xuICAgICAgICAgICAgdGl0bGU6IHtcbiAgICAgICAgICAgICAgICBTRVBBUkFUT1I6ICcgJyxcbiAgICAgICAgICAgICAgICBMQVNUX1BBUlRfU0VQQVJBVE9SOiAnJyxcbiAgICAgICAgICAgICAgICBZRUFSUzogYHt5ZWFycywgcGx1cmFsLFxuICAgICAgICAgICAgICAgIG9uZSB7IyB5ZWFyfVxuICAgICAgICAgICAgICAgIG90aGVyIHtsYXN0ICMgeWVhcnN9XG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBNT05USFM6IGB7bW9udGhzLCBwbHVyYWwsXG4gICAgICAgICAgICAgICAgb25lIHtsYXN0IG1vbnRofVxuICAgICAgICAgICAgICAgIG90aGVyIHtsYXN0ICMgbW9udGhzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgV0VFS1M6IGB7d2Vla3MsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICBvbmUge2xhc3Qgd2Vla31cbiAgICAgICAgICAgICAgICBvdGhlciB7bGFzdCAjIHdlZWtzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgREFZUzogYHtkYXlzLCBwbHVyYWwsXG4gICAgICAgICAgICAgICAgb25lIHtsYXN0IGRheX1cbiAgICAgICAgICAgICAgICBvdGhlciB7bGFzdCAjIGRheXN9XG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBIT1VSUzogYHtob3VycywgcGx1cmFsLFxuICAgICAgICAgICAgICAgIG9uZSB7bGFzdCBob3VyfVxuICAgICAgICAgICAgICAgIG90aGVyIHtsYXN0ICMgaG91cnN9XG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBNSU5VVEVTOiBge21pbnV0ZXMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICBvbmUge2xhc3QgbWludXRlfVxuICAgICAgICAgICAgICAgIG90aGVyIHtsYXN0ICMgbWludXRlc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIFNFQ09ORFM6IGB7c2Vjb25kcywgcGx1cmFsLFxuICAgICAgICAgICAgICAgIG9uZSB7bGFzdCBzZWNvbmR9XG4gICAgICAgICAgICAgICAgb3RoZXIge2xhc3QgIyBzZWNvbmRzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgWUVBUlNfRlJBQ1RJT046IGB7eWVhcnN9IHllYXJzYCxcbiAgICAgICAgICAgICAgICBNT05USFNfRlJBQ1RJT046IGB7bW9udGhzfSBtb250aHNgXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3B0aW9uOiB7XG4gICAgICAgICAgICAgICAgU0VQQVJBVE9SOiAnICcsXG4gICAgICAgICAgICAgICAgTEFTVF9QQVJUX1NFUEFSQVRPUjogJycsXG4gICAgICAgICAgICAgICAgWUVBUlM6IGB7eWVhcnMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICBvbmUgeyMgeWVhcn1cbiAgICAgICAgICAgICAgICBvdGhlciB7bGFzdCAjIHllYXJzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgTU9OVEhTOiBge21vbnRocywgcGx1cmFsLFxuICAgICAgICAgICAgICAgIG9uZSB7bGFzdCBtb250aH1cbiAgICAgICAgICAgICAgICBvdGhlciB7bGFzdCAjIG1vbnRoc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIFdFRUtTOiBge3dlZWtzLCBwbHVyYWwsXG4gICAgICAgICAgICAgICAgb25lIHtsYXN0IHdlZWt9XG4gICAgICAgICAgICAgICAgb3RoZXIge2xhc3QgIyB3ZWVrc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIERBWVM6IGB7ZGF5cywgcGx1cmFsLFxuICAgICAgICAgICAgICAgIG9uZSB7bGFzdCBkYXl9XG4gICAgICAgICAgICAgICAgb3RoZXIge2xhc3QgIyBkYXlzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgSE9VUlM6IGB7aG91cnMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICBvbmUge2xhc3QgaG91cn1cbiAgICAgICAgICAgICAgICBvdGhlciB7bGFzdCAjIGhvdXJzfVxuICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgTUlOVVRFUzogYHttaW51dGVzLCBwbHVyYWwsXG4gICAgICAgICAgICAgICAgb25lIHtsYXN0IG1pbnV0ZX1cbiAgICAgICAgICAgICAgICBvdGhlciB7bGFzdCAjIG1pbnV0ZXN9XG4gICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICBTRUNPTkRTOiBge3NlY29uZHMsIHBsdXJhbCxcbiAgICAgICAgICAgICAgICBvbmUge2xhc3Qgc2Vjb25kfVxuICAgICAgICAgICAgICAgIG90aGVyIHtsYXN0ICMgc2Vjb25kc31cbiAgICAgICAgICAgIH1gLFxuICAgICAgICAgICAgICAgIFlFQVJTX0ZSQUNUSU9OOiBge3llYXJzfSB5ZWFyc2AsXG4gICAgICAgICAgICAgICAgTU9OVEhTX0ZSQUNUSU9OOiBge21vbnRoc30gbW9udGhzYFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBzYXRpc2ZpZXMgS2JxVGltZVJhbmdlTG9jYWxlQ29uZmlnLFxuICAgIG5vdGlmaWNhdGlvbkNlbnRlcjoge1xuICAgICAgICBub3RpZmljYXRpb25zOiAnTm90aWZpY2F0aW9ucycsXG4gICAgICAgIHJlbW92ZTogJ1JlbW92ZScsXG4gICAgICAgIGRvTm90RGlzdHVyYjogJ0RvIG5vdCBkaXN0dXJiJyxcbiAgICAgICAgc2hvd1BvcFVwTm90aWZpY2F0aW9uczogJ1Nob3cgcG9wLXVwIG5vdGlmaWNhdGlvbnMnLFxuICAgICAgICBub05vdGlmaWNhdGlvbnM6ICdObyBub3RpZmljYXRpb25zJyxcbiAgICAgICAgZmFpbGVkVG9Mb2FkTm90aWZpY2F0aW9uczogJ0ZhaWxlZCB0byBsb2FkIG5vdGlmaWNhdGlvbnMnLFxuICAgICAgICByZXBlYXQ6ICdSZXBlYXQnXG4gICAgfVxufTtcbiJdfQ==