@fundamental-ngx/core 0.46.2-rc.12 → 0.46.2-rc.13

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 (244) hide show
  1. package/esm2022/action-bar/action-bar.component.mjs +2 -2
  2. package/esm2022/action-sheet/action-sheet.component.mjs +3 -3
  3. package/esm2022/avatar/avatar.component.mjs +3 -3
  4. package/esm2022/avatar-group/avatar-group.component.mjs +3 -3
  5. package/esm2022/bar/bar.component.mjs +2 -2
  6. package/esm2022/breadcrumb/breadcrumb.component.mjs +3 -3
  7. package/esm2022/busy-indicator/busy-indicator.component.mjs +3 -3
  8. package/esm2022/button/button.component.mjs +3 -3
  9. package/esm2022/calendar/calendar.component.mjs +3 -3
  10. package/esm2022/card/card.component.mjs +3 -3
  11. package/esm2022/carousel/carousel.component.mjs +3 -3
  12. package/esm2022/checkbox/checkbox/checkbox.component.mjs +3 -3
  13. package/esm2022/dialog/dialog.component.mjs +3 -3
  14. package/esm2022/dynamic-page/dynamic-page.component.mjs +3 -3
  15. package/esm2022/dynamic-side-content/dynamic-side-content.component.mjs +3 -3
  16. package/esm2022/facets/facet/facet.component.mjs +3 -3
  17. package/esm2022/feed-input/feed-input.component.mjs +2 -2
  18. package/esm2022/feed-list-item/components/list/feed-list.component.mjs +2 -2
  19. package/esm2022/file-uploader/file-uploader.component.mjs +3 -3
  20. package/esm2022/fixed-card-layout/fixed-card-layout.component.mjs +3 -3
  21. package/esm2022/flexible-column-layout/flexible-column-layout.component.mjs +3 -3
  22. package/esm2022/form/fieldset/fieldset.component.mjs +2 -2
  23. package/esm2022/form/form-control/form-control.component.mjs +3 -3
  24. package/esm2022/form/form-group/form-group.component.mjs +2 -2
  25. package/esm2022/form/form-header/form-header.component.mjs +2 -2
  26. package/esm2022/form/form-item/form-item.component.mjs +2 -2
  27. package/esm2022/form/form-label/form-label.component.mjs +3 -3
  28. package/esm2022/form/form-message/form-message.component.mjs +2 -2
  29. package/esm2022/generic-tag/generic-tag.component.mjs +3 -3
  30. package/esm2022/grid-list/components/grid-list/grid-list.component.mjs +2 -2
  31. package/esm2022/icon/icon.component.mjs +2 -2
  32. package/esm2022/illustrated-message/illustrated-message.component.mjs +3 -3
  33. package/esm2022/info-label/info-label.component.mjs +3 -3
  34. package/esm2022/input-group/input-group.component.mjs +3 -3
  35. package/esm2022/layout-grid/layout-grid.component.mjs +3 -3
  36. package/esm2022/layout-panel/layout-panel.component.mjs +2 -2
  37. package/esm2022/link/link.component.mjs +3 -3
  38. package/esm2022/list/list-navigation-item/list-navigation-item.component.mjs +3 -3
  39. package/esm2022/list/list.component.mjs +2 -2
  40. package/esm2022/menu/menu.component.mjs +2 -2
  41. package/esm2022/message-box/message-box.component.mjs +2 -2
  42. package/esm2022/message-page/message-page.component.mjs +3 -3
  43. package/esm2022/message-strip/message-strip.component.mjs +3 -3
  44. package/esm2022/message-toast/message-toast.component.mjs +3 -3
  45. package/esm2022/micro-process-flow/components/micro-process-flow/micro-process-flow.component.mjs +3 -3
  46. package/esm2022/multi-combobox/multi-combobox.component.mjs +3 -3
  47. package/esm2022/notification/notification/notification.component.mjs +2 -2
  48. package/esm2022/object-identifier/object-identifier.component.mjs +3 -3
  49. package/esm2022/object-marker/object-marker.component.mjs +3 -3
  50. package/esm2022/object-number/object-number.component.mjs +3 -3
  51. package/esm2022/object-status/object-status.component.mjs +3 -3
  52. package/esm2022/pagination/pagination.component.mjs +3 -3
  53. package/esm2022/panel/panel.component.mjs +3 -3
  54. package/esm2022/popover/popover-body/popover-body.component.mjs +3 -3
  55. package/esm2022/product-switch/product-switch-body/product-switch-body.component.mjs +3 -3
  56. package/esm2022/progress-indicator/progress-indicator.component.mjs +3 -3
  57. package/esm2022/quick-view/quick-view/quick-view.component.mjs +2 -2
  58. package/esm2022/radio/radio-button/radio-button.component.mjs +3 -3
  59. package/esm2022/rating-indicator/components/rating-indicator.component.mjs +3 -3
  60. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-item/resizable-card-item.component.mjs +3 -3
  61. package/esm2022/resizable-card-layout/resizable-card-layout/resizable-card-layout.component.mjs +2 -2
  62. package/esm2022/segmented-button/segmented-button.component.mjs +2 -2
  63. package/esm2022/select/select.component.mjs +3 -3
  64. package/esm2022/shellbar/shellbar.component.mjs +3 -3
  65. package/esm2022/side-navigation/side-navigation.component.mjs +3 -3
  66. package/esm2022/skeleton/components/skeleton.component.mjs +3 -3
  67. package/esm2022/slider/slider.component.mjs +3 -3
  68. package/esm2022/split-button/split-button.component.mjs +3 -3
  69. package/esm2022/splitter/splitter.component.mjs +2 -2
  70. package/esm2022/status-indicator/status-indicator.component.mjs +3 -3
  71. package/esm2022/step-input/step-input.component.mjs +3 -3
  72. package/esm2022/switch/switch.component.mjs +3 -3
  73. package/esm2022/table/table-wrapper.component.mjs +2 -2
  74. package/esm2022/table/table.component.mjs +2 -2
  75. package/esm2022/tabs/tab-list.component.mjs +3 -3
  76. package/esm2022/tabs/tab-nav/tab-nav.component.mjs +2 -2
  77. package/esm2022/text/text.component.mjs +3 -3
  78. package/esm2022/tile/tile.component.mjs +3 -3
  79. package/esm2022/time/time.component.mjs +3 -3
  80. package/esm2022/title/title.component.mjs +2 -2
  81. package/esm2022/token/token.component.mjs +3 -3
  82. package/esm2022/token/tokenizer.component.mjs +3 -3
  83. package/esm2022/toolbar/toolbar.component.mjs +3 -3
  84. package/esm2022/tree/tree.component.mjs +3 -3
  85. package/esm2022/upload-collection/upload-collection.component.mjs +3 -3
  86. package/esm2022/vertical-navigation/vertical-navigation-main-navigation.component.mjs +3 -3
  87. package/esm2022/vertical-navigation/vertical-navigation.component.mjs +3 -3
  88. package/esm2022/wizard/wizard.component.mjs +3 -3
  89. package/fesm2022/fundamental-ngx-core-action-bar.mjs +2 -2
  90. package/fesm2022/fundamental-ngx-core-action-bar.mjs.map +1 -1
  91. package/fesm2022/fundamental-ngx-core-action-sheet.mjs +2 -2
  92. package/fesm2022/fundamental-ngx-core-action-sheet.mjs.map +1 -1
  93. package/fesm2022/fundamental-ngx-core-avatar-group.mjs +2 -2
  94. package/fesm2022/fundamental-ngx-core-avatar-group.mjs.map +1 -1
  95. package/fesm2022/fundamental-ngx-core-avatar.mjs +2 -2
  96. package/fesm2022/fundamental-ngx-core-avatar.mjs.map +1 -1
  97. package/fesm2022/fundamental-ngx-core-bar.mjs +2 -2
  98. package/fesm2022/fundamental-ngx-core-bar.mjs.map +1 -1
  99. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs +2 -2
  100. package/fesm2022/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  101. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs +2 -2
  102. package/fesm2022/fundamental-ngx-core-busy-indicator.mjs.map +1 -1
  103. package/fesm2022/fundamental-ngx-core-button.mjs +2 -2
  104. package/fesm2022/fundamental-ngx-core-button.mjs.map +1 -1
  105. package/fesm2022/fundamental-ngx-core-calendar.mjs +2 -2
  106. package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
  107. package/fesm2022/fundamental-ngx-core-card.mjs +2 -2
  108. package/fesm2022/fundamental-ngx-core-card.mjs.map +1 -1
  109. package/fesm2022/fundamental-ngx-core-carousel.mjs +2 -2
  110. package/fesm2022/fundamental-ngx-core-carousel.mjs.map +1 -1
  111. package/fesm2022/fundamental-ngx-core-checkbox.mjs +2 -2
  112. package/fesm2022/fundamental-ngx-core-checkbox.mjs.map +1 -1
  113. package/fesm2022/fundamental-ngx-core-dialog.mjs +2 -2
  114. package/fesm2022/fundamental-ngx-core-dialog.mjs.map +1 -1
  115. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs +2 -2
  116. package/fesm2022/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
  117. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs +2 -2
  118. package/fesm2022/fundamental-ngx-core-dynamic-side-content.mjs.map +1 -1
  119. package/fesm2022/fundamental-ngx-core-facets.mjs +2 -2
  120. package/fesm2022/fundamental-ngx-core-facets.mjs.map +1 -1
  121. package/fesm2022/fundamental-ngx-core-feed-input.mjs +2 -2
  122. package/fesm2022/fundamental-ngx-core-feed-input.mjs.map +1 -1
  123. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs +2 -2
  124. package/fesm2022/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  125. package/fesm2022/fundamental-ngx-core-file-uploader.mjs +2 -2
  126. package/fesm2022/fundamental-ngx-core-file-uploader.mjs.map +1 -1
  127. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs +2 -2
  128. package/fesm2022/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
  129. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs +2 -2
  130. package/fesm2022/fundamental-ngx-core-flexible-column-layout.mjs.map +1 -1
  131. package/fesm2022/fundamental-ngx-core-form.mjs +14 -14
  132. package/fesm2022/fundamental-ngx-core-form.mjs.map +1 -1
  133. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +2 -2
  134. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -1
  135. package/fesm2022/fundamental-ngx-core-grid-list.mjs +2 -2
  136. package/fesm2022/fundamental-ngx-core-grid-list.mjs.map +1 -1
  137. package/fesm2022/fundamental-ngx-core-icon.mjs +2 -2
  138. package/fesm2022/fundamental-ngx-core-icon.mjs.map +1 -1
  139. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs +2 -2
  140. package/fesm2022/fundamental-ngx-core-illustrated-message.mjs.map +1 -1
  141. package/fesm2022/fundamental-ngx-core-info-label.mjs +2 -2
  142. package/fesm2022/fundamental-ngx-core-info-label.mjs.map +1 -1
  143. package/fesm2022/fundamental-ngx-core-input-group.mjs +2 -2
  144. package/fesm2022/fundamental-ngx-core-input-group.mjs.map +1 -1
  145. package/fesm2022/fundamental-ngx-core-layout-grid.mjs +2 -2
  146. package/fesm2022/fundamental-ngx-core-layout-grid.mjs.map +1 -1
  147. package/fesm2022/fundamental-ngx-core-layout-panel.mjs +2 -2
  148. package/fesm2022/fundamental-ngx-core-layout-panel.mjs.map +1 -1
  149. package/fesm2022/fundamental-ngx-core-link.mjs +2 -2
  150. package/fesm2022/fundamental-ngx-core-link.mjs.map +1 -1
  151. package/fesm2022/fundamental-ngx-core-list.mjs +4 -4
  152. package/fesm2022/fundamental-ngx-core-list.mjs.map +1 -1
  153. package/fesm2022/fundamental-ngx-core-menu.mjs +2 -2
  154. package/fesm2022/fundamental-ngx-core-menu.mjs.map +1 -1
  155. package/fesm2022/fundamental-ngx-core-message-box.mjs +2 -2
  156. package/fesm2022/fundamental-ngx-core-message-box.mjs.map +1 -1
  157. package/fesm2022/fundamental-ngx-core-message-page.mjs +2 -2
  158. package/fesm2022/fundamental-ngx-core-message-page.mjs.map +1 -1
  159. package/fesm2022/fundamental-ngx-core-message-strip.mjs +2 -2
  160. package/fesm2022/fundamental-ngx-core-message-strip.mjs.map +1 -1
  161. package/fesm2022/fundamental-ngx-core-message-toast.mjs +2 -2
  162. package/fesm2022/fundamental-ngx-core-message-toast.mjs.map +1 -1
  163. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs +2 -2
  164. package/fesm2022/fundamental-ngx-core-micro-process-flow.mjs.map +1 -1
  165. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs +2 -2
  166. package/fesm2022/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
  167. package/fesm2022/fundamental-ngx-core-notification.mjs +2 -2
  168. package/fesm2022/fundamental-ngx-core-notification.mjs.map +1 -1
  169. package/fesm2022/fundamental-ngx-core-object-identifier.mjs +2 -2
  170. package/fesm2022/fundamental-ngx-core-object-identifier.mjs.map +1 -1
  171. package/fesm2022/fundamental-ngx-core-object-marker.mjs +2 -2
  172. package/fesm2022/fundamental-ngx-core-object-marker.mjs.map +1 -1
  173. package/fesm2022/fundamental-ngx-core-object-number.mjs +2 -2
  174. package/fesm2022/fundamental-ngx-core-object-number.mjs.map +1 -1
  175. package/fesm2022/fundamental-ngx-core-object-status.mjs +2 -2
  176. package/fesm2022/fundamental-ngx-core-object-status.mjs.map +1 -1
  177. package/fesm2022/fundamental-ngx-core-pagination.mjs +2 -2
  178. package/fesm2022/fundamental-ngx-core-pagination.mjs.map +1 -1
  179. package/fesm2022/fundamental-ngx-core-panel.mjs +2 -2
  180. package/fesm2022/fundamental-ngx-core-panel.mjs.map +1 -1
  181. package/fesm2022/fundamental-ngx-core-popover.mjs +2 -2
  182. package/fesm2022/fundamental-ngx-core-popover.mjs.map +1 -1
  183. package/fesm2022/fundamental-ngx-core-product-switch.mjs +2 -2
  184. package/fesm2022/fundamental-ngx-core-product-switch.mjs.map +1 -1
  185. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs +2 -2
  186. package/fesm2022/fundamental-ngx-core-progress-indicator.mjs.map +1 -1
  187. package/fesm2022/fundamental-ngx-core-quick-view.mjs +2 -2
  188. package/fesm2022/fundamental-ngx-core-quick-view.mjs.map +1 -1
  189. package/fesm2022/fundamental-ngx-core-radio.mjs +2 -2
  190. package/fesm2022/fundamental-ngx-core-radio.mjs.map +1 -1
  191. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs +2 -2
  192. package/fesm2022/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
  193. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs +4 -4
  194. package/fesm2022/fundamental-ngx-core-resizable-card-layout.mjs.map +1 -1
  195. package/fesm2022/fundamental-ngx-core-segmented-button.mjs +2 -2
  196. package/fesm2022/fundamental-ngx-core-segmented-button.mjs.map +1 -1
  197. package/fesm2022/fundamental-ngx-core-select.mjs +2 -2
  198. package/fesm2022/fundamental-ngx-core-select.mjs.map +1 -1
  199. package/fesm2022/fundamental-ngx-core-shellbar.mjs +2 -2
  200. package/fesm2022/fundamental-ngx-core-shellbar.mjs.map +1 -1
  201. package/fesm2022/fundamental-ngx-core-side-navigation.mjs +2 -2
  202. package/fesm2022/fundamental-ngx-core-side-navigation.mjs.map +1 -1
  203. package/fesm2022/fundamental-ngx-core-skeleton.mjs +2 -2
  204. package/fesm2022/fundamental-ngx-core-skeleton.mjs.map +1 -1
  205. package/fesm2022/fundamental-ngx-core-slider.mjs +2 -2
  206. package/fesm2022/fundamental-ngx-core-slider.mjs.map +1 -1
  207. package/fesm2022/fundamental-ngx-core-split-button.mjs +2 -2
  208. package/fesm2022/fundamental-ngx-core-split-button.mjs.map +1 -1
  209. package/fesm2022/fundamental-ngx-core-splitter.mjs +2 -2
  210. package/fesm2022/fundamental-ngx-core-splitter.mjs.map +1 -1
  211. package/fesm2022/fundamental-ngx-core-status-indicator.mjs +2 -2
  212. package/fesm2022/fundamental-ngx-core-status-indicator.mjs.map +1 -1
  213. package/fesm2022/fundamental-ngx-core-step-input.mjs +2 -2
  214. package/fesm2022/fundamental-ngx-core-step-input.mjs.map +1 -1
  215. package/fesm2022/fundamental-ngx-core-switch.mjs +2 -2
  216. package/fesm2022/fundamental-ngx-core-switch.mjs.map +1 -1
  217. package/fesm2022/fundamental-ngx-core-table.mjs +4 -4
  218. package/fesm2022/fundamental-ngx-core-table.mjs.map +1 -1
  219. package/fesm2022/fundamental-ngx-core-tabs.mjs +4 -4
  220. package/fesm2022/fundamental-ngx-core-tabs.mjs.map +1 -1
  221. package/fesm2022/fundamental-ngx-core-text.mjs +2 -2
  222. package/fesm2022/fundamental-ngx-core-text.mjs.map +1 -1
  223. package/fesm2022/fundamental-ngx-core-tile.mjs +2 -2
  224. package/fesm2022/fundamental-ngx-core-tile.mjs.map +1 -1
  225. package/fesm2022/fundamental-ngx-core-time.mjs +2 -2
  226. package/fesm2022/fundamental-ngx-core-time.mjs.map +1 -1
  227. package/fesm2022/fundamental-ngx-core-title.mjs +2 -2
  228. package/fesm2022/fundamental-ngx-core-title.mjs.map +1 -1
  229. package/fesm2022/fundamental-ngx-core-token.mjs +4 -4
  230. package/fesm2022/fundamental-ngx-core-token.mjs.map +1 -1
  231. package/fesm2022/fundamental-ngx-core-toolbar.mjs +2 -2
  232. package/fesm2022/fundamental-ngx-core-toolbar.mjs.map +1 -1
  233. package/fesm2022/fundamental-ngx-core-tree.mjs +2 -2
  234. package/fesm2022/fundamental-ngx-core-tree.mjs.map +1 -1
  235. package/fesm2022/fundamental-ngx-core-upload-collection.mjs +2 -2
  236. package/fesm2022/fundamental-ngx-core-upload-collection.mjs.map +1 -1
  237. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs +4 -4
  238. package/fesm2022/fundamental-ngx-core-vertical-navigation.mjs.map +1 -1
  239. package/fesm2022/fundamental-ngx-core-wizard.mjs +2 -2
  240. package/fesm2022/fundamental-ngx-core-wizard.mjs.map +1 -1
  241. package/fundamental-ngx-core-v0.46.2-rc.13.tgz +0 -0
  242. package/package.json +4 -4
  243. package/schematics/add-dependencies/index.js +6 -6
  244. package/fundamental-ngx-core-v0.46.2-rc.12.tgz +0 -0
@@ -279,7 +279,7 @@ export class ToolbarComponent {
279
279
  contentDensityObserverProviders({
280
280
  defaultContentDensity: ContentDensityMode.COMPACT
281
281
  })
282
- ], queries: [{ propertyName: "titleComponent", first: true, predicate: TitleToken, descendants: true }, { propertyName: "toolbarItems", predicate: i0.forwardRef(function () { return ToolbarItem; }) }], viewQueries: [{ propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true }], ngImport: i0, template: "<h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\" [id]=\"titleId\" #titleElement>{{ title }}</h4>\n\n<ng-content></ng-content>\n\n<ng-container *ngIf=\"overflownItems.length > 0\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n <ng-container *ngFor=\"let overflowedItem of overflownItems\">\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.3-rc.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border:.0625rem solid var(--sapGroup_TitleBorderColor);-webkit-box-sizing:border-box;align-items:center;background-color:var(--fdToolbar_Background);border:0;border-bottom:var(--fdToolbar_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.5rem;height:var(--fdToolbar_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding-left:var(--fdToolbar_Padding_Left);padding-right:var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar[dir=rtl],[dir=rtl] .fd-toolbar{padding-left:var(--fdToolbar_Padding_Right);padding-right:var(--fdToolbar_Padding_Left)}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdToolbar_Separator_Margin);padding:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem 0;--fdToolbar_Overflow_Padding:.25rem .5rem;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding:0;padding:var(--fdToolbar_Overflow_Padding)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding:.1875rem .375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin:.625rem 0 .125rem}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin:.375rem 0}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--clear{--fdToolbar_Border:none}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem;padding-bottom:.375rem;padding-top:.375rem}.fd-toolbar--info{--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background);color:var(--fdToolbar_Info_Color);position:relative}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor);outline:none;position:relative}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i3.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i3.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DynamicPortalComponent, selector: "fdk-dynamic-portal", inputs: ["domElement", "component", "template", "auto"], outputs: ["attached"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
282
+ ], queries: [{ propertyName: "titleComponent", first: true, predicate: TitleToken, descendants: true }, { propertyName: "toolbarItems", predicate: i0.forwardRef(function () { return ToolbarItem; }) }], viewQueries: [{ propertyName: "titleElement", first: true, predicate: ["titleElement"], descendants: true }], ngImport: i0, template: "<h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\" [id]=\"titleId\" #titleElement>{{ title }}</h4>\n\n<ng-content></ng-content>\n\n<ng-container *ngIf=\"overflownItems.length > 0\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n <ng-container *ngFor=\"let overflowedItem of overflownItems\">\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.31.0\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border:.0625rem solid var(--sapGroup_TitleBorderColor);-webkit-box-sizing:border-box;align-items:center;background-color:var(--fdToolbar_Background);border:0;border-bottom:var(--fdToolbar_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.5rem;height:var(--fdToolbar_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding-left:var(--fdToolbar_Padding_Left);padding-right:var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar[dir=rtl],[dir=rtl] .fd-toolbar{padding-left:var(--fdToolbar_Padding_Right);padding-right:var(--fdToolbar_Padding_Left)}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdToolbar_Separator_Margin);padding:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem 0;--fdToolbar_Overflow_Padding:.25rem .5rem;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding:0;padding:var(--fdToolbar_Overflow_Padding)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding:.1875rem .375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin:.625rem 0 .125rem}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin:.375rem 0}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--clear{--fdToolbar_Border:none}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem;padding-bottom:.375rem;padding-top:.375rem}.fd-toolbar--info{--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background);color:var(--fdToolbar_Info_Color);position:relative}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor);outline:none;position:relative}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "ngmodule", type: PopoverModule }, { kind: "component", type: i3.PopoverControlComponent, selector: "fd-popover-control, [fdPopoverControl]" }, { kind: "component", type: i3.PopoverBodyComponent, selector: "fd-popover-body", inputs: ["minWidth", "maxWidth", "minHeight", "maxHeight"] }, { kind: "component", type: i3.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: DynamicPortalComponent, selector: "fdk-dynamic-portal", inputs: ["domElement", "component", "template", "auto"], outputs: ["attached"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
283
283
  }
284
284
  __decorate([
285
285
  applyCssClass,
@@ -301,7 +301,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
301
301
  ButtonModule,
302
302
  NgFor,
303
303
  DynamicPortalComponent
304
- ], template: "<h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\" [id]=\"titleId\" #titleElement>{{ title }}</h4>\n\n<ng-content></ng-content>\n\n<ng-container *ngIf=\"overflownItems.length > 0\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n <ng-container *ngFor=\"let overflowedItem of overflownItems\">\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.3-rc.2\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border:.0625rem solid var(--sapGroup_TitleBorderColor);-webkit-box-sizing:border-box;align-items:center;background-color:var(--fdToolbar_Background);border:0;border-bottom:var(--fdToolbar_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.5rem;height:var(--fdToolbar_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding-left:var(--fdToolbar_Padding_Left);padding-right:var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar[dir=rtl],[dir=rtl] .fd-toolbar{padding-left:var(--fdToolbar_Padding_Right);padding-right:var(--fdToolbar_Padding_Left)}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdToolbar_Separator_Margin);padding:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem 0;--fdToolbar_Overflow_Padding:.25rem .5rem;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding:0;padding:var(--fdToolbar_Overflow_Padding)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding:.1875rem .375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin:.625rem 0 .125rem}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin:.375rem 0}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--clear{--fdToolbar_Border:none}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem;padding-bottom:.375rem;padding-top:.375rem}.fd-toolbar--info{--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background);color:var(--fdToolbar_Info_Color);position:relative}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor);outline:none;position:relative}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n"] }]
304
+ ], template: "<h4 *ngIf=\"title\" class=\"fd-title fd-title--h4 fd-toolbar__title\" [id]=\"titleId\" #titleElement>{{ title }}</h4>\n\n<ng-content></ng-content>\n\n<ng-container *ngIf=\"overflownItems.length > 0\">\n <fd-toolbar-spacer></fd-toolbar-spacer>\n <fd-toolbar-separator></fd-toolbar-separator>\n <fd-popover placement=\"bottom-end\" [noArrow]=\"true\" class=\"fd-popover\">\n <fd-popover-control>\n <button\n fd-button\n title=\"More\"\n aria-label=\"More\"\n aria-haspopup=\"true\"\n fdType=\"transparent\"\n glyph=\"overflow\"\n ></button>\n </fd-popover-control>\n\n <fd-popover-body>\n <div class=\"fd-toolbar__overflow\">\n <ng-container *ngFor=\"let overflowedItem of overflownItems\">\n <fdk-dynamic-portal\n [domElement]=\"overflowedItem.element\"\n [style.display]=\"overflowedItem.priority === 'disappear' ? 'none' : 'flex'\"\n [style.flex-direction]=\"overflowedItem.priority === 'disappear' ? undefined : 'column'\"\n >\n </fdk-dynamic-portal>\n </ng-container>\n </div>\n </fd-popover-body>\n </fd-popover>\n</ng-container>\n", styles: ["/*!\n * Fundamental Library Styles v0.31.0\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-toolbar{--fdToolbar_Height:2.75rem;--fdToolbar_Separator_Margin:0;--fdToolbar_Padding_Left:.5rem;--fdToolbar_Padding_Right:.5rem;--fdToolbar_Separator_Height:2rem;--fdToolbar_Overflow_Max_Width:100%;--fdToolbar_Separator_Width:.0625rem;--fdToolbar_Info_Color:var(--sapList_TextColor);--fdToolbar_Background:var(--sapToolbar_Background);--fdToolbar_Border:.0625rem solid var(--sapGroup_TitleBorderColor);-webkit-box-sizing:border-box;align-items:center;background-color:var(--fdToolbar_Background);border:0;border-bottom:var(--fdToolbar_Border);box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:row;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:.5rem;height:var(--fdToolbar_Height);line-height:var(--sapContent_LineHeight);margin:0;padding:0;padding-left:var(--fdToolbar_Padding_Left);padding-right:var(--fdToolbar_Padding_Right)}.fd-toolbar:after,.fd-toolbar:before{box-sizing:inherit;font-size:inherit}.fd-toolbar[dir=rtl],[dir=rtl] .fd-toolbar{padding-left:var(--fdToolbar_Padding_Right);padding-right:var(--fdToolbar_Padding_Left)}.fd-toolbar__spacer{-webkit-box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1 auto;border:0;box-sizing:border-box;color:var(--sapTextColor);flex:1 auto;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:100%;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-toolbar__spacer:after,.fd-toolbar__spacer:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__spacer--fixed{-webkit-box-flex:0;-ms-flex:none;display:inline-block;flex:none}.fd-toolbar__separator{-webkit-box-sizing:border-box;background-color:var(--sapToolbar_SeparatorColor);border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;height:var(--fdToolbar_Separator_Height);line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdToolbar_Separator_Margin);padding:0;width:var(--fdToolbar_Separator_Width)}.fd-toolbar__separator:after,.fd-toolbar__separator:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow{-webkit-box-sizing:border-box;--fdToolbar_Separator_Width:auto;--fdToolbar_Separator_Height:.0625rem;--fdToolbar_Separator_Margin:.1875rem 0;--fdToolbar_Overflow_Padding:.25rem .5rem;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-direction:column;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;max-height:50vh;max-width:var(--fdToolbar_Overflow_Max_Width);overflow:auto;padding:0;padding:var(--fdToolbar_Overflow_Padding)}.fd-toolbar__overflow:after,.fd-toolbar__overflow:before{box-sizing:inherit;font-size:inherit}.fd-toolbar__overflow[class*=-compact],.fd-toolbar__overflow[class*=-condensed],[class*=-compact] .fd-toolbar__overflow:not([class*=-cozy]),[class*=-condensed] .fd-toolbar__overflow:not([class*=-cozy]){--fdToolbar_Overflow_Padding:.1875rem .375rem}.fd-toolbar__overflow .fd-toolbar__overflow-button{justify-content:flex-start;margin:.1875rem 0;text-align:left;width:auto}.fd-toolbar__overflow .fd-toolbar__overflow-button[dir=rtl],[dir=rtl] .fd-toolbar__overflow .fd-toolbar__overflow-button{text-align:right}.fd-toolbar__overflow .fd-toolbar__overflow-button--menu{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-pack:justify;-ms-flex-pack:justify;align-items:center;display:flex;justify-content:center;justify-content:space-between;max-width:100%}.fd-toolbar__overflow .fd-toolbar__overflow-form-label{margin:.625rem 0 .125rem}.fd-toolbar__overflow .fd-toolbar__overflow-label{margin:.375rem 0}.fd-toolbar__title{color:var(--sapGroup_TitleTextColor);font-size:var(--sapGroup_Title_FontSize)}.fd-toolbar--auto{--fdToolbar_Background:var(--fdToolbar_Auto_Background)}.fd-toolbar--solid{--fdToolbar_Background:var(--fdToolbar_Solid_Background)}.fd-toolbar--transparent{--fdToolbar_Background:var(--fdToolbar_Transparent_Background)}.fd-toolbar--clear{--fdToolbar_Border:none}.fd-toolbar--title{--fdToolbar_Height:2.75rem;--fdToolbar_Padding_Left:1rem;--fdToolbar_Background:var(--sapGroup_TitleBackground)}.fd-toolbar.fd-toolbar--title-bar{--fdToolbar_Height:auto;--fdToolbar_Padding_Left:.75rem;--fdToolbar_Padding_Right:.75rem;padding-bottom:.375rem;padding-top:.375rem}.fd-toolbar--info{--fdToolbar_Height:2rem;--fdToolbar_Background:var(--sapInfobar_NonInteractive_Background);color:var(--fdToolbar_Info_Color);position:relative}.fd-toolbar--info [class*=sap-icon]{color:var(--sapList_TextColor);font-size:1rem;height:1rem;line-height:1rem}.fd-toolbar--active{--fdToolbar_Background:var(--sapInfobar_Background);--fdToolbar_Info_Color:var(--sapInfobar_TextColor);outline:none;position:relative}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--sapContent_FocusColor);border-style:var(--sapContent_FocusStyle);border-width:var(--sapContent_FocusWidth);content:\"\";inset:.0625rem;pointer-events:none;position:absolute}.fd-toolbar--active.is-hover,.fd-toolbar--active:hover{--fdToolbar_Background:var(--sapInfobar_Hover_Background)}.fd-toolbar--active.is-active,.fd-toolbar--active:active{--fdToolbar_Background:var(--sapInfobar_Active_Background)}.fd-toolbar--active.is-focus,.fd-toolbar--active:focus{z-index:5}.fd-toolbar--active.is-focus:after,.fd-toolbar--active:focus:after{border-color:var(--fdToolbar_Info_Outline_Color)}.fd-toolbar--fade-in{-webkit-transition:visibility 0s linear 0s,opacity 1s;opacity:1;transition:visibility 0s linear 0s,opacity 1s;visibility:visible}.fd-toolbar--fade-out{-webkit-transition:visibility 0s linear 1s,opacity 1ms;opacity:0;transition:visibility 0s linear 1s,opacity 1ms;visibility:hidden}.fd-toolbar[class*=-compact],.fd-toolbar[class*=-condensed],[class*=-compact] .fd-toolbar:not([class*=-cozy]),[class*=-condensed] .fd-toolbar:not([class*=-cozy]){--fdToolbar_Height:2rem;--fdToolbar_Separator_Height:1.5rem;--fdToolbar_Overflow_Max_Width:20rem}.fd-toolbar[class*=-compact].fd-toolbar--title,.fd-toolbar[class*=-condensed].fd-toolbar--title,[class*=-compact] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title,[class*=-condensed] .fd-toolbar:not([class*=-cozy]).fd-toolbar--title{--fdToolbar_Height:2.75rem}.fd-toolbar>*{flex-shrink:0}fdk-dynamic-portal:not(:last-of-type) [fd-toolbar-item]{margin-bottom:.25rem}\n"] }]
305
305
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ContentDensityObserver }, { type: i0.DestroyRef }, { type: i2.ResizeObserverService }, { type: undefined, decorators: [{
306
306
  type: Optional
307
307
  }, {
@@ -350,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
350
350
  type: HostBinding,
351
351
  args: ['attr.role']
352
352
  }], buildComponentCssClass: [] } });
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUseUJBQXlCLEVBQXFCLE1BQU0sOEJBQThCLENBQUM7QUFFNUYsT0FBTyxFQUNILGFBQWEsRUFFYix1QkFBdUIsRUFFdkIscUJBQXFCLEVBQ3hCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQ2xDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4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LFlBQVk7c0JBRFgsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUsxQyxjQUFjO3NCQURqQixZQUFZO3VCQUFDLFVBQVU7Z0JBb0JQLEtBQUs7c0JBRHJCLFdBQVc7dUJBQUMsV0FBVztnQkFpQ3hCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRFlOQU1JQ19QQUdFX0hFQURFUl9UT0tFTiwgRHluYW1pY1BhZ2VIZWFkZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHtcbiAgICBhcHBseUNzc0NsYXNzLFxuICAgIENzc0NsYXNzQnVpbGRlcixcbiAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRSxcbiAgICBPdmVyZmxvd1ByaW9yaXR5LFxuICAgIFJlc2l6ZU9ic2VydmVyU2VydmljZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaXRsZVRva2VuIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7XG4gICAgQ29udGVudERlbnNpdHlNb2RlLFxuICAgIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVyc1xufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IFRvb2xiYXJJdGVtIH0gZnJvbSAnLi9hYnN0cmFjdC10b29sYmFyLWl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRHluYW1pY1BvcnRhbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IFRvb2xiYXJTZXBhcmF0b3JDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXItc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYmFyU3BhY2VyRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sYmFyLXNwYWNlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBFTEVNRU5UX01BUkdJTiA9IDg7XG5jb25zdCBPVkVSRkxPV19TUEFDRSA9IDUwICsgMiAqIEVMRU1FTlRfTUFSR0lOO1xuY29uc3QgTUFYX0NPTlRFTlRfU0laRSA9IDk5OTk5OTk5O1xuXG5leHBvcnQgdHlwZSBUb29sYmFyVHlwZSA9ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPdmVyZmxvd1ByaW9yaXR5RW51bSB7XG4gICAgQUxXQVlTID0gJ2Fsd2F5cycsXG4gICAgTkVWRVIgPSAnbmV2ZXInLFxuICAgIExPVyA9ICdsb3cnLFxuICAgIEhJR0ggPSAnaGlnaCcsXG4gICAgRElTQVBQRUFSID0gJ2Rpc2FwcGVhcidcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVFxuICAgICAgICB9KVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUsXG4gICAgICAgIFRvb2xiYXJTZXBhcmF0b3JDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIER5bmFtaWNQb3J0YWxDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBDc3NDbGFzc0J1aWxkZXIsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiB0aGUgdG9vbGJhciB0aXRsZVxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogUHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNsYXNzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgaWYgb3ZlcmZsb3cgYnV0dG9uIHNob3VsZCBiZSB2aXNpYmxlXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG91bGRPdmVyZmxvdyh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkT3ZlcmZsb3cgPSB2YWw7XG4gICAgICAgIHRoaXMuc2hvdWxkT3ZlcmZsb3ckLm5leHQodmFsKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvdWxkT3ZlcmZsb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG91bGRPdmVyZmxvdztcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0b29sYmFyXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnM6ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJ3NvbGlkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRUeXBlOiBUb29sYmFyVHlwZSA9ICdzb2xpZCc7XG5cbiAgICAvKiogVGhlIHRpdGxlIGZvciB0aGUgdG9vbGJhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0b29sYmFyIHNob3VsZCBoYXMgYWN0aXZlIHN0YXRlIChvbmx5IHdoZW4gZmRUeXBlID09ICdpbmZvJylcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0b29sYmFyIHNob3VsZCBjbGVhciBib3JkZXIgYm90dG9tXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsZWFyQm9yZGVyID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBhbGwgaXRlbXMgc2hvdWxkIGJlIGluc2lkZSBvdmVyZmxvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9yY2VPdmVyZmxvdyA9IGZhbHNlO1xuXG4gICAgLyoqIFRhYmluZGV4IG9mIHRoZSB0b29sYmFyIGVsZW1lbnQsIHRvIGJlIHVzZWQgd2hlbiBmZFR5cGU9XCJpbmZvXCIgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmluZGV4ID0gLTE7XG5cbiAgICAvKiogVG9vbGJhciBBcmlhLWxhYmVsIGF0dHJpYnV0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBUb29sYmFyIEFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JylcbiAgICBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd0aXRsZUVsZW1lbnQnKVxuICAgIHRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSGVhZEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVG9vbGJhckl0ZW0pKVxuICAgIHRvb2xiYXJJdGVtczogUXVlcnlMaXN0PFRvb2xiYXJJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChUaXRsZVRva2VuKVxuICAgIHNldCB0aXRsZUNvbXBvbmVudCh0aXRsZTogVGl0bGVUb2tlbiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdGl0bGVDb21wb25lbnQkLm5leHQodGl0bGUpO1xuICAgIH1cblxuICAgIGdldCB0aXRsZUNvbXBvbmVudCgpOiBUaXRsZVRva2VuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZUNvbXBvbmVudCQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVyZmxvd0l0ZW1zJDogT2JzZXJ2YWJsZTxUb29sYmFySXRlbVtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3ZlcmZsb3duSXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIC8qKiBIVE1MIEVsZW1lbnQgUmVmZXJlbmNlLiAqL1xuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yb2xlID0gJ3Rvb2xiYXInO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90aXRsZUNvbXBvbmVudCQ6IEJlaGF2aW9yU3ViamVjdDxUaXRsZVRva2VuIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpdGxlVG9rZW4gfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaE92ZXJmbG93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3Rvb2xiYXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRXaWR0aCAtIE9WRVJGTE9XX1NQQUNFO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hvdWxkT3ZlcmZsb3cgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBzaG91bGRPdmVyZmxvdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBJbmplY3QoRFlOQU1JQ19QQUdFX0hFQURFUl9UT0tFTikgcHJpdmF0ZSBfZHluYW1pY1BhZ2VIZWFkZXI/OiBEeW5hbWljUGFnZUhlYWRlclxuICAgICkge1xuICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZmQtdG9vbGJhcicsXG4gICAgICAgICAgICBgZmQtdG9vbGJhci0tJHt0aGlzLmZkVHlwZX1gLFxuICAgICAgICAgICAgYCR7dGhpcy5hY3RpdmUgJiYgdGhpcy5mZFR5cGUgPT09ICdpbmZvJyA/ICdmZC10b29sYmFyLS1hY3RpdmUnIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMudGl0bGUgfHwgdGhpcy50aXRsZUNvbXBvbmVudCA/ICdmZC10b29sYmFyLS10aXRsZScgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5jbGVhckJvcmRlciA/ICdmZC10b29sYmFyLS1jbGVhcicgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5fZHluYW1pY1BhZ2VIZWFkZXIgPyAnZmQtZHluYW1pYy1wYWdlX190b29sYmFyJyA6ICcnfWBcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShtYXAoKCkgPT4gdGhpcy5fdG9vbGJhcldpZHRoKSksXG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJJdGVtcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudG9vbGJhckl0ZW1zKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvb2xiYXJJdGVtcykgPT4gdG9vbGJhckl0ZW1zLnRvQXJyYXkoKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLl90aXRsZUNvbXBvbmVudCQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRpdGxlQ29tcG9uZW50KTogSFRNTEVsZW1lbnQgfCBudWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGl0bGVFbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZUNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLnNob3VsZE92ZXJmbG93JCxcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPdmVyZmxvdyRcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Rvb2xiYXJXaWR0aCwgdG9vbGJhckl0ZW1zLCB0aXRsZUVsZW1lbnQsIHNob3VsZE92ZXJmbG93XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBfc29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXMgPSB0aGlzLl9nZXRTb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd0l0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIF9zb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcy5yZWR1Y2UoKF9jb250ZW50V2lkdGgsIHRvb2xiYXJJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSB0b29sYmFySXRlbS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcmlvcml0eSA9IHRvb2xiYXJJdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkSXRlbUJlUmVtb3ZlZEJ5V2lkdGggPSBpdGVtV2lkdGggKyBfY29udGVudFdpZHRoID4gdG9vbGJhcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJpb3JpdHkgPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyB8fCB0aGlzLmZvcmNlT3ZlcmZsb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGROZXZlckJlSW5PdmVyZmxvdyA9IGl0ZW1Qcmlvcml0eSA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNob3VsZEl0ZW1CZVJlbW92ZWRCeVdpZHRoICYmICFzaG91bGROZXZlckJlSW5PdmVyZmxvdykgfHwgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKHRvb2xiYXJJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID8gX2NvbnRlbnRXaWR0aCA6IE1BWF9DT05URU5UX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGVudFdpZHRoICsgaXRlbVdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aXRsZUVsZW1lbnQ/LmNsaWVudFdpZHRoIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIG9ycGhhbnNcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0b29sYmFySXRlbSBvZiBvdmVyZmxvd0l0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvbiA9IHRoaXMuX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXMgPSB0aGlzLl9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KGdyb3VwZWRDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdG9vbGJhckl0ZW0uZ3JvdXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJpb3JpdHkgPSB0b29sYmFySXRlbS5wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gMCAmJiBpdGVtUHJpb3JpdHkgIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkRJU0FQUEVBUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zRnJvbUN1cnJlbnRHcm91cCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0Zyb21DdXJyZW50R3JvdXAuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3dJdGVtcy5pbmRleE9mKGkpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJmbG93SXRlbXMuc29ydCgoYSwgYikgPT4gdGhpcy5fc29ydFByaW9yaXRpZXMoYS5wcmlvcml0eSwgYi5wcmlvcml0eSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm92ZXJmbG93SXRlbXMkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3duSXRlbXMgPSBpdGVtcztcbiAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVDb21wb25lbnQuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC10b29sYmFyX190aXRsZScpO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgKi9cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyaW5nIGNvbGxhcHNpYmxlIHRvb2xiYXIgICovXG4gICAgdXBkYXRlQ29sbGFwc2libGVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaE92ZXJmbG93JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IGdyb3VwIG51bWJlciB3aXRoIHRoZSBsb3dlc3QgcHJpb3JpdHkuXG4gICAgICogIFVzZXMgZm9yIGRldGVjdGluZyBhIGdyb3VwIG9mIGVsZW1lbnRzIHdoaWNoIHdvdWxkIGJlIGhpZGRlbiBmcm9tIHRoZSB0b29sYmFyLlxuICAgICAqICAqL1xuICAgIHByaXZhdGUgX2dldExvd2VzdFByaW9yaXR5RnJvbUdyb3VwKFxuICAgICAgICBpdGVtR3JvdXA6IG51bWJlcixcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eT86IFJlY29yZDxudW1iZXIsIE92ZXJmbG93UHJpb3JpdHk+XG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJpb3JpdHkgPSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5O1xuICAgICAgICBpZiAoIXByaW9yaXR5IHx8ICFPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQocHJpb3JpdHlbaXRlbUdyb3VwXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtR3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhwcmlvcml0eSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGxvd2VzdEdyb3VwLCBjdXJyZW50R3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvd2VzdEdyb3VwUHJpb3JpdHkgPSBwcmlvcml0eVtsb3dlc3RHcm91cF07XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXBQcmlvcml0eSA9IHByaW9yaXR5W2N1cnJlbnRHcm91cF07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGN1cnJlbnRHcm91cFByaW9yaXR5KSEgPCBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQobG93ZXN0R3JvdXBQcmlvcml0eSkhXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gK2N1cnJlbnRHcm91cDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxvd2VzdEdyb3VwO1xuICAgICAgICB9LCBpdGVtR3JvdXAgYXMgbnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgaXRlbUdyb3VwOiBudW1iZXIsXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uPzogUmVjb3JkPG51bWJlciwgVG9vbGJhckl0ZW1bXT4sXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk/OiBSZWNvcmQ8bnVtYmVyLCBPdmVyZmxvd1ByaW9yaXR5PlxuICAgICk6IFRvb2xiYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBsb3dlc3RQcmlvcml0eUZyb21Hcm91cCA9IHRoaXMuX2dldExvd2VzdFByaW9yaXR5RnJvbUdyb3VwKGl0ZW1Hcm91cCwgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eSk7XG4gICAgICAgIGlmICghZ3JvdXBlZENvbGxlY3Rpb24gfHwgIWdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbXNUb1JlbW92ZSA9IGdyb3VwZWRDb2xsZWN0aW9uW2xvd2VzdFByaW9yaXR5RnJvbUdyb3VwXTtcblxuICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25bbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXBdO1xuICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eVtsb3dlc3RQcmlvcml0eUZyb21Hcm91cF07XG5cbiAgICAgICAgaWYgKGxvd2VzdFByaW9yaXR5RnJvbUdyb3VwICE9PSBpdGVtR3JvdXApIHtcbiAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUgPSBbLi4uaXRlbXNUb1JlbW92ZSwgLi4uZ3JvdXBlZENvbGxlY3Rpb25baXRlbUdyb3VwXV07XG4gICAgICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25baXRlbUdyb3VwXTtcbiAgICAgICAgICAgIGRlbGV0ZSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5W2l0ZW1Hcm91cF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXNUb1JlbW92ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgdGhlIG9iamVjdCB3aXRoIGdyb3VwZWQgYXJyYXlzIG9mIGVsZW1lbnRzLiAqL1xuICAgIHByaXZhdGUgX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSk6IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRvb2xiYXJJdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbVByaW8gPSBpdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgY29uc3QgaXRlbUdyb3VwID0gaXRlbS5ncm91cDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVIgfHxcbiAgICAgICAgICAgICAgICBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTIHx8XG4gICAgICAgICAgICAgICAgaXRlbUdyb3VwID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhY2NbaXRlbUdyb3VwXSkge1xuICAgICAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2NbaXRlbUdyb3VwXS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCB0aGUgb2JqZWN0IHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZm9yIGVhY2ggZ3JvdXAgb2YgZWxlbWVudHMuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eShcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb246IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+XG4gICAgKTogUmVjb3JkPG51bWJlciwgT3ZlcmZsb3dQcmlvcml0eT4ge1xuICAgICAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhncm91cGVkQ29sbGVjdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGFjYywgaXRlbUdyb3VwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRQcmlvcml0aWVzID0gZ3JvdXBlZENvbGxlY3Rpb24hW2l0ZW1Hcm91cF1cbiAgICAgICAgICAgICAgICAubWFwKChpKSA9PiBpLnByaW9yaXR5KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHByaW8pID0+IHByaW8gIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyAmJiBwcmlvICE9PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUilcbiAgICAgICAgICAgICAgICAuc29ydCh0aGlzLl9zb3J0UHJpb3JpdGllcyk7XG5cbiAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdID0gc29ydGVkUHJpb3JpdGllc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNvcnQgcHJpb3JpdGllcyBvZiBlbGVtZW50cy9ncm91cHMuICovXG4gICAgcHJpdmF0ZSBfc29ydFByaW9yaXRpZXMoYTogT3ZlcmZsb3dQcmlvcml0eSwgYjogT3ZlcmZsb3dQcmlvcml0eSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoYikhIC0gT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGEpITtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTb3J0IGJ5IGdyb3VwIGFuZCBwcmlvcml0eSBhbmQgaW5pdGlhbCBwb3NpdGlvbiAqL1xuICAgIHByaXZhdGUgX2dldFNvcnRlZEJ5UHJpb3JpdHlBbmRHcm91cEl0ZW1zKHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSk6IFRvb2xiYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBub3RTb3J0ZWQgPSB0b29sYmFySXRlbXMubWFwKChlbGVtZW50LCBpbmRleCkgPT4gKHsgZWxlbWVudCwgaW5kZXggfSkpO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IG5vdFNvcnRlZC5yZWR1Y2UoKGdyLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQgZ3JvdXBJZCA9IGl0ZW0uZWxlbWVudC5ncm91cDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmlvID0gaXRlbS5lbGVtZW50LnByaW9yaXR5O1xuICAgICAgICAgICAgaWYgKGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUiB8fCBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBJZCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZ3JbZ3JvdXBJZF0pIHtcbiAgICAgICAgICAgICAgICBncltncm91cElkXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncltncm91cElkXS5wdXNoKGl0ZW0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3I7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICBjb25zdCBncm91cElkcyA9IE9iamVjdC5rZXlzKGdyb3VwcylcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHBhcnNlSW50KGcsIDEwKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGcpID0+IGcgIT09IDApO1xuXG4gICAgICAgIHJldHVybiBncm91cElkc1xuICAgICAgICAgICAgLm1hcCgoZykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBtaW5JbmRleCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgICAgICAgICAgICAgIGxldCBtYXhQcmlvcml0eSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3Vwc1tnXSkge1xuICAgICAgICAgICAgICAgICAgICBtaW5JbmRleCA9IE1hdGgubWluKG1pbkluZGV4LCBpdGVtLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgbWF4UHJpb3JpdHkgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGl0ZW0uZWxlbWVudC5wcmlvcml0eSkgPz8gLUluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZ3JvdXA6IGdyb3Vwc1tnXS5tYXAoKHsgZWxlbWVudCB9KSA9PiBlbGVtZW50KSwgbWluSW5kZXgsIG1heFByaW9yaXR5IH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNvbmNhdChcbiAgICAgICAgICAgICAgICAhZ3JvdXBzWzBdXG4gICAgICAgICAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgICAgICAgICAgOiBncm91cHNbMF0ubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogW2l0ZW0uZWxlbWVudF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5OiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoaXRlbS5lbGVtZW50LnByaW9yaXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSW5kZXg6IGl0ZW0uaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLm1heFByaW9yaXR5IC0gYS5tYXhQcmlvcml0eSB8fCBhLm1pbkluZGV4IC0gYi5taW5JbmRleClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFyciwgaSkgPT4gYXJyLmNvbmNhdChpLmdyb3VwKSwgW10pO1xuICAgIH1cbn1cbiIsIjxoNCAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJmZC10aXRsZSBmZC10aXRsZS0taDQgZmQtdG9vbGJhcl9fdGl0bGVcIiBbaWRdPVwidGl0bGVJZFwiICN0aXRsZUVsZW1lbnQ+e3sgdGl0bGUgfX08L2g0PlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJvdmVyZmxvd25JdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgPGZkLXBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiIFtub0Fycm93XT1cInRydWVcIiBjbGFzcz1cImZkLXBvcG92ZXJcIj5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICB0aXRsZT1cIk1vcmVcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb3JlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwib3ZlcmZsb3dcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cblxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXRvb2xiYXJfX292ZXJmbG93XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3ZlcmZsb3dlZEl0ZW0gb2Ygb3ZlcmZsb3duSXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkay1keW5hbWljLXBvcnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2RvbUVsZW1lbnRdPVwib3ZlcmZsb3dlZEl0ZW0uZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJvdmVyZmxvd2VkSXRlbS5wcmlvcml0eSA9PT0gJ2Rpc2FwcGVhcicgPyAnbm9uZScgOiAnZmxleCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cIm92ZXJmbG93ZWRJdGVtLnByaW9yaXR5ID09PSAnZGlzYXBwZWFyJyA/IHVuZGVmaW5lZCA6ICdjb2x1bW4nXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2Zkay1keW5hbWljLXBvcnRhbD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
353
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi90b29sYmFyL3Rvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBSUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxRQUFRLEVBQ1IsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUseUJBQXlCLEVBQXFCLE1BQU0sOEJBQThCLENBQUM7QUFFNUYsT0FBTyxFQUNILGFBQWEsRUFFYix1QkFBdUIsRUFFdkIscUJBQXFCLEVBQ3hCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUNILGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsK0JBQStCLEVBQ2xDLE1BQU0sdUNBQXVDLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw4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LFlBQVk7c0JBRFgsZUFBZTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDO2dCQUsxQyxjQUFjO3NCQURqQixZQUFZO3VCQUFDLFVBQVU7Z0JBb0JQLEtBQUs7c0JBRHJCLFdBQVc7dUJBQUMsV0FBVztnQkFpQ3hCLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPcHRpb25hbCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2tpcFNlbGYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRFlOQU1JQ19QQUdFX0hFQURFUl9UT0tFTiwgRHluYW1pY1BhZ2VIZWFkZXIgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHtcbiAgICBhcHBseUNzc0NsYXNzLFxuICAgIENzc0NsYXNzQnVpbGRlcixcbiAgICBPVkVSRkxPV19QUklPUklUWV9TQ09SRSxcbiAgICBPdmVyZmxvd1ByaW9yaXR5LFxuICAgIFJlc2l6ZU9ic2VydmVyU2VydmljZVxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaXRsZVRva2VuIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3RpdGxlJztcbmltcG9ydCB7XG4gICAgQ29udGVudERlbnNpdHlNb2RlLFxuICAgIENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVyc1xufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IFRvb2xiYXJJdGVtIH0gZnJvbSAnLi9hYnN0cmFjdC10b29sYmFyLWl0ZW0uY2xhc3MnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRHluYW1pY1BvcnRhbENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9idXR0b24nO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IFRvb2xiYXJTZXBhcmF0b3JDb21wb25lbnQgfSBmcm9tICcuL3Rvb2xiYXItc2VwYXJhdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb29sYmFyU3BhY2VyRGlyZWN0aXZlIH0gZnJvbSAnLi90b29sYmFyLXNwYWNlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBFTEVNRU5UX01BUkdJTiA9IDg7XG5jb25zdCBPVkVSRkxPV19TUEFDRSA9IDUwICsgMiAqIEVMRU1FTlRfTUFSR0lOO1xuY29uc3QgTUFYX0NPTlRFTlRfU0laRSA9IDk5OTk5OTk5O1xuXG5leHBvcnQgdHlwZSBUb29sYmFyVHlwZSA9ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nO1xuXG5leHBvcnQgY29uc3QgZW51bSBPdmVyZmxvd1ByaW9yaXR5RW51bSB7XG4gICAgQUxXQVlTID0gJ2Fsd2F5cycsXG4gICAgTkVWRVIgPSAnbmV2ZXInLFxuICAgIExPVyA9ICdsb3cnLFxuICAgIEhJR0ggPSAnaGlnaCcsXG4gICAgRElTQVBQRUFSID0gJ2Rpc2FwcGVhcidcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC10b29sYmFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIGNvbnRlbnREZW5zaXR5T2JzZXJ2ZXJQcm92aWRlcnMoe1xuICAgICAgICAgICAgZGVmYXVsdENvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVFxuICAgICAgICB9KVxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFRvb2xiYXJTcGFjZXJEaXJlY3RpdmUsXG4gICAgICAgIFRvb2xiYXJTZXBhcmF0b3JDb21wb25lbnQsXG4gICAgICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgICAgIEJ1dHRvbk1vZHVsZSxcbiAgICAgICAgTmdGb3IsXG4gICAgICAgIER5bmFtaWNQb3J0YWxDb21wb25lbnRcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xiYXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBDc3NDbGFzc0J1aWxkZXIsIEFmdGVyQ29udGVudEluaXQge1xuICAgIC8qKlxuICAgICAqIFRoZSBJRCBvZiB0aGUgdG9vbGJhciB0aXRsZVxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICB0aXRsZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogUHJvcGVydHkgYWxsb3dzIHVzZXIgdG8gcGFzcyBhZGRpdGlvbmFsIGNsYXNzXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIERldGVybWluZXMgaWYgb3ZlcmZsb3cgYnV0dG9uIHNob3VsZCBiZSB2aXNpYmxlXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzaG91bGRPdmVyZmxvdyh2YWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvdWxkT3ZlcmZsb3cgPSB2YWw7XG4gICAgICAgIHRoaXMuc2hvdWxkT3ZlcmZsb3ckLm5leHQodmFsKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvdWxkT3ZlcmZsb3coKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG91bGRPdmVyZmxvdztcbiAgICB9XG5cbiAgICAvKiogRGV0ZXJtaW5lcyB0aGUgdHlwZSBvZiB0b29sYmFyXG4gICAgICogQXZhaWxhYmxlIG9wdGlvbnM6ICdzb2xpZCcgfCAndHJhbnNwYXJlbnQnIHwgJ2F1dG8nIHwgJ2luZm8nXG4gICAgICogRGVmYXVsdCB2YWx1ZTogJ3NvbGlkJ1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmRUeXBlOiBUb29sYmFyVHlwZSA9ICdzb2xpZCc7XG5cbiAgICAvKiogVGhlIHRpdGxlIGZvciB0aGUgdG9vbGJhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRpdGxlOiBzdHJpbmc7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0b29sYmFyIHNob3VsZCBoYXMgYWN0aXZlIHN0YXRlIChvbmx5IHdoZW4gZmRUeXBlID09ICdpbmZvJylcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlID0gZmFsc2U7XG5cbiAgICAvKiogRGV0ZXJtaW5lcyBpZiB0b29sYmFyIHNob3VsZCBjbGVhciBib3JkZXIgYm90dG9tXG4gICAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsZWFyQm9yZGVyID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBhbGwgaXRlbXMgc2hvdWxkIGJlIGluc2lkZSBvdmVyZmxvdyAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9yY2VPdmVyZmxvdyA9IGZhbHNlO1xuXG4gICAgLyoqIFRhYmluZGV4IG9mIHRoZSB0b29sYmFyIGVsZW1lbnQsIHRvIGJlIHVzZWQgd2hlbiBmZFR5cGU9XCJpbmZvXCIgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmluZGV4ID0gLTE7XG5cbiAgICAvKiogVG9vbGJhciBBcmlhLWxhYmVsIGF0dHJpYnV0ZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWxhYmVsJylcbiAgICBhcmlhTGFiZWw6IHN0cmluZztcblxuICAgIC8qKiBUb29sYmFyIEFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUuICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbGxlZGJ5JylcbiAgICBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCd0aXRsZUVsZW1lbnQnKVxuICAgIHRpdGxlRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSGVhZEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVG9vbGJhckl0ZW0pKVxuICAgIHRvb2xiYXJJdGVtczogUXVlcnlMaXN0PFRvb2xiYXJJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChUaXRsZVRva2VuKVxuICAgIHNldCB0aXRsZUNvbXBvbmVudCh0aXRsZTogVGl0bGVUb2tlbiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fdGl0bGVDb21wb25lbnQkLm5leHQodGl0bGUpO1xuICAgIH1cblxuICAgIGdldCB0aXRsZUNvbXBvbmVudCgpOiBUaXRsZVRva2VuIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZUNvbXBvbmVudCQudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvdmVyZmxvd0l0ZW1zJDogT2JzZXJ2YWJsZTxUb29sYmFySXRlbVtdPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb3ZlcmZsb3duSXRlbXM6IFRvb2xiYXJJdGVtW10gPSBbXTtcblxuICAgIC8qKiBIVE1MIEVsZW1lbnQgUmVmZXJlbmNlLiAqL1xuICAgIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yb2xlID0gJ3Rvb2xiYXInO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90aXRsZUNvbXBvbmVudCQ6IEJlaGF2aW9yU3ViamVjdDxUaXRsZVRva2VuIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpdGxlVG9rZW4gfCBudWxsPihudWxsKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVmcmVzaE92ZXJmbG93JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZD4odW5kZWZpbmVkKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBnZXQgX3Rvb2xiYXJXaWR0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5jbGllbnRXaWR0aCAtIE9WRVJGTE9XX1NQQUNFO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2hvdWxkT3ZlcmZsb3cgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBzaG91bGRPdmVyZmxvdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcmVhZG9ubHkgX2NvbnRlbnREZW5zaXR5T2JzZXJ2ZXI6IENvbnRlbnREZW5zaXR5T2JzZXJ2ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWY6IERlc3Ryb3lSZWYsXG4gICAgICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIEBJbmplY3QoRFlOQU1JQ19QQUdFX0hFQURFUl9UT0tFTikgcHJpdmF0ZSBfZHluYW1pY1BhZ2VIZWFkZXI/OiBEeW5hbWljUGFnZUhlYWRlclxuICAgICkge1xuICAgICAgICBfY29udGVudERlbnNpdHlPYnNlcnZlci5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZmQtdG9vbGJhcicsXG4gICAgICAgICAgICBgZmQtdG9vbGJhci0tJHt0aGlzLmZkVHlwZX1gLFxuICAgICAgICAgICAgYCR7dGhpcy5hY3RpdmUgJiYgdGhpcy5mZFR5cGUgPT09ICdpbmZvJyA/ICdmZC10b29sYmFyLS1hY3RpdmUnIDogJyd9YCxcbiAgICAgICAgICAgIGAke3RoaXMudGl0bGUgfHwgdGhpcy50aXRsZUNvbXBvbmVudCA/ICdmZC10b29sYmFyLS10aXRsZScgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5jbGVhckJvcmRlciA/ICdmZC10b29sYmFyLS1jbGVhcicgOiAnJ31gLFxuICAgICAgICAgICAgYCR7dGhpcy5fZHluYW1pY1BhZ2VIZWFkZXIgPyAnZmQtZHluYW1pYy1wYWdlX190b29sYmFyJyA6ICcnfWBcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vdmVyZmxvd0l0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShtYXAoKCkgPT4gdGhpcy5fdG9vbGJhcldpZHRoKSksXG4gICAgICAgICAgICB0aGlzLnRvb2xiYXJJdGVtcy5jaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMudG9vbGJhckl0ZW1zKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvb2xiYXJJdGVtcykgPT4gdG9vbGJhckl0ZW1zLnRvQXJyYXkoKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLl90aXRsZUNvbXBvbmVudCQucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKHRpdGxlQ29tcG9uZW50KTogSFRNTEVsZW1lbnQgfCBudWxsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudGl0bGVFbGVtZW50Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZUNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0aGlzLnNob3VsZE92ZXJmbG93JCxcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hPdmVyZmxvdyRcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3Rvb2xiYXJXaWR0aCwgdG9vbGJhckl0ZW1zLCB0aXRsZUVsZW1lbnQsIHNob3VsZE92ZXJmbG93XSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBfc29ydGVkQnlQcmlvcml0eUFuZEdyb3VwSXRlbXMgPSB0aGlzLl9nZXRTb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcyh0b29sYmFySXRlbXMpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdmVyZmxvd0l0ZW1zOiBUb29sYmFySXRlbVtdID0gW107XG4gICAgICAgICAgICAgICAgICAgIF9zb3J0ZWRCeVByaW9yaXR5QW5kR3JvdXBJdGVtcy5yZWR1Y2UoKF9jb250ZW50V2lkdGgsIHRvb2xiYXJJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSB0b29sYmFySXRlbS53aWR0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1Qcmlvcml0eSA9IHRvb2xiYXJJdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkSXRlbUJlUmVtb3ZlZEJ5V2lkdGggPSBpdGVtV2lkdGggKyBfY29udGVudFdpZHRoID4gdG9vbGJhcldpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtUHJpb3JpdHkgPT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyB8fCB0aGlzLmZvcmNlT3ZlcmZsb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGROZXZlckJlSW5PdmVyZmxvdyA9IGl0ZW1Qcmlvcml0eSA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVI7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNob3VsZEl0ZW1CZVJlbW92ZWRCeVdpZHRoICYmICFzaG91bGROZXZlckJlSW5PdmVyZmxvdykgfHwgc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKHRvb2xiYXJJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkQWx3YXlzQmVJbk92ZXJmbG93ID8gX2NvbnRlbnRXaWR0aCA6IE1BWF9DT05URU5UX1NJWkU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGVudFdpZHRoICsgaXRlbVdpZHRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCB0aXRsZUVsZW1lbnQ/LmNsaWVudFdpZHRoIHx8IDApO1xuICAgICAgICAgICAgICAgICAgICAvLyBIaWRlIG9ycGhhbnNcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCB0b29sYmFySXRlbSBvZiBvdmVyZmxvd0l0ZW1zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvbiA9IHRoaXMuX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXMgPSB0aGlzLl9nZXRHcm91cGVkQ29sbGVjdGlvblByaW9yaXR5KGdyb3VwZWRDb2xsZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwID0gdG9vbGJhckl0ZW0uZ3JvdXA7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtUHJpb3JpdHkgPSB0b29sYmFySXRlbS5wcmlvcml0eTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cCAhPT0gMCAmJiBpdGVtUHJpb3JpdHkgIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkRJU0FQUEVBUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zRnJvbUN1cnJlbnRHcm91cCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cGVkQ29sbGVjdGlvblByaW9yaXRpZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0Zyb21DdXJyZW50R3JvdXAuZm9yRWFjaCgoaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcmZsb3dJdGVtcy5pbmRleE9mKGkpID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3dJdGVtcy5wdXNoKGkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG92ZXJmbG93SXRlbXMuc29ydCgoYSwgYikgPT4gdGhpcy5fc29ydFByaW9yaXRpZXMoYS5wcmlvcml0eSwgYi5wcmlvcml0eSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm92ZXJmbG93SXRlbXMkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmZsb3duSXRlbXMgPSBpdGVtcztcbiAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGl0bGVDb21wb25lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGVDb21wb25lbnQuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdmZC10b29sYmFyX190aXRsZScpO1xuICAgICAgICAgICAgdGhpcy5idWlsZENvbXBvbmVudENzc0NsYXNzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQ2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgKi9cbiAgICBkZXRlY3RDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCB0cmlnZ2VyaW5nIGNvbGxhcHNpYmxlIHRvb2xiYXIgICovXG4gICAgdXBkYXRlQ29sbGFwc2libGVJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaE92ZXJmbG93JC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gR2V0IGdyb3VwIG51bWJlciB3aXRoIHRoZSBsb3dlc3QgcHJpb3JpdHkuXG4gICAgICogIFVzZXMgZm9yIGRldGVjdGluZyBhIGdyb3VwIG9mIGVsZW1lbnRzIHdoaWNoIHdvdWxkIGJlIGhpZGRlbiBmcm9tIHRoZSB0b29sYmFyLlxuICAgICAqICAqL1xuICAgIHByaXZhdGUgX2dldExvd2VzdFByaW9yaXR5RnJvbUdyb3VwKFxuICAgICAgICBpdGVtR3JvdXA6IG51bWJlcixcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eT86IFJlY29yZDxudW1iZXIsIE92ZXJmbG93UHJpb3JpdHk+XG4gICAgKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcHJpb3JpdHkgPSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5O1xuICAgICAgICBpZiAoIXByaW9yaXR5IHx8ICFPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQocHJpb3JpdHlbaXRlbUdyb3VwXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtR3JvdXA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhwcmlvcml0eSk7XG5cbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGxvd2VzdEdyb3VwLCBjdXJyZW50R3JvdXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvd2VzdEdyb3VwUHJpb3JpdHkgPSBwcmlvcml0eVtsb3dlc3RHcm91cF07XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50R3JvdXBQcmlvcml0eSA9IHByaW9yaXR5W2N1cnJlbnRHcm91cF07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGN1cnJlbnRHcm91cFByaW9yaXR5KSEgPCBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQobG93ZXN0R3JvdXBQcmlvcml0eSkhXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gK2N1cnJlbnRHcm91cDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGxvd2VzdEdyb3VwO1xuICAgICAgICB9LCBpdGVtR3JvdXAgYXMgbnVtYmVyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldEVsZW1lbnRzRnJvbUN1cnJlbnRHcm91cChcbiAgICAgICAgaXRlbUdyb3VwOiBudW1iZXIsXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uPzogUmVjb3JkPG51bWJlciwgVG9vbGJhckl0ZW1bXT4sXG4gICAgICAgIGdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHk/OiBSZWNvcmQ8bnVtYmVyLCBPdmVyZmxvd1ByaW9yaXR5PlxuICAgICk6IFRvb2xiYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBsb3dlc3RQcmlvcml0eUZyb21Hcm91cCA9IHRoaXMuX2dldExvd2VzdFByaW9yaXR5RnJvbUdyb3VwKGl0ZW1Hcm91cCwgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eSk7XG4gICAgICAgIGlmICghZ3JvdXBlZENvbGxlY3Rpb24gfHwgIWdyb3VwZWRDb2xsZWN0aW9uUHJpb3JpdHkpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgaXRlbXNUb1JlbW92ZSA9IGdyb3VwZWRDb2xsZWN0aW9uW2xvd2VzdFByaW9yaXR5RnJvbUdyb3VwXTtcblxuICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25bbG93ZXN0UHJpb3JpdHlGcm9tR3JvdXBdO1xuICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eVtsb3dlc3RQcmlvcml0eUZyb21Hcm91cF07XG5cbiAgICAgICAgaWYgKGxvd2VzdFByaW9yaXR5RnJvbUdyb3VwICE9PSBpdGVtR3JvdXApIHtcbiAgICAgICAgICAgIGl0ZW1zVG9SZW1vdmUgPSBbLi4uaXRlbXNUb1JlbW92ZSwgLi4uZ3JvdXBlZENvbGxlY3Rpb25baXRlbUdyb3VwXV07XG4gICAgICAgICAgICBkZWxldGUgZ3JvdXBlZENvbGxlY3Rpb25baXRlbUdyb3VwXTtcbiAgICAgICAgICAgIGRlbGV0ZSBncm91cGVkQ29sbGVjdGlvblByaW9yaXR5W2l0ZW1Hcm91cF07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXNUb1JlbW92ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBHZXQgdGhlIG9iamVjdCB3aXRoIGdyb3VwZWQgYXJyYXlzIG9mIGVsZW1lbnRzLiAqL1xuICAgIHByaXZhdGUgX2dldEdyb3VwZWRDb2xsZWN0aW9uKHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSk6IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+IHtcbiAgICAgICAgcmV0dXJuIHRvb2xiYXJJdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaXRlbVByaW8gPSBpdGVtLnByaW9yaXR5O1xuICAgICAgICAgICAgY29uc3QgaXRlbUdyb3VwID0gaXRlbS5ncm91cDtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uTkVWRVIgfHxcbiAgICAgICAgICAgICAgICBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTIHx8XG4gICAgICAgICAgICAgICAgaXRlbUdyb3VwID09PSAwXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFhY2NbaXRlbUdyb3VwXSkge1xuICAgICAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhY2NbaXRlbUdyb3VwXS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEdldCB0aGUgb2JqZWN0IHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZm9yIGVhY2ggZ3JvdXAgb2YgZWxlbWVudHMuICovXG4gICAgcHJpdmF0ZSBfZ2V0R3JvdXBlZENvbGxlY3Rpb25Qcmlvcml0eShcbiAgICAgICAgZ3JvdXBlZENvbGxlY3Rpb246IFJlY29yZDxudW1iZXIsIFRvb2xiYXJJdGVtW10+XG4gICAgKTogUmVjb3JkPG51bWJlciwgT3ZlcmZsb3dQcmlvcml0eT4ge1xuICAgICAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhncm91cGVkQ29sbGVjdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5yZWR1Y2UoKGFjYywgaXRlbUdyb3VwKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzb3J0ZWRQcmlvcml0aWVzID0gZ3JvdXBlZENvbGxlY3Rpb24hW2l0ZW1Hcm91cF1cbiAgICAgICAgICAgICAgICAubWFwKChpKSA9PiBpLnByaW9yaXR5KVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKHByaW8pID0+IHByaW8gIT09IE92ZXJmbG93UHJpb3JpdHlFbnVtLkFMV0FZUyAmJiBwcmlvICE9PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUilcbiAgICAgICAgICAgICAgICAuc29ydCh0aGlzLl9zb3J0UHJpb3JpdGllcyk7XG5cbiAgICAgICAgICAgIGFjY1tpdGVtR3JvdXBdID0gc29ydGVkUHJpb3JpdGllc1swXTtcblxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIFNvcnQgcHJpb3JpdGllcyBvZiBlbGVtZW50cy9ncm91cHMuICovXG4gICAgcHJpdmF0ZSBfc29ydFByaW9yaXRpZXMoYTogT3ZlcmZsb3dQcmlvcml0eSwgYjogT3ZlcmZsb3dQcmlvcml0eSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoYikhIC0gT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGEpITtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBTb3J0IGJ5IGdyb3VwIGFuZCBwcmlvcml0eSBhbmQgaW5pdGlhbCBwb3NpdGlvbiAqL1xuICAgIHByaXZhdGUgX2dldFNvcnRlZEJ5UHJpb3JpdHlBbmRHcm91cEl0ZW1zKHRvb2xiYXJJdGVtczogVG9vbGJhckl0ZW1bXSk6IFRvb2xiYXJJdGVtW10ge1xuICAgICAgICBjb25zdCBub3RTb3J0ZWQgPSB0b29sYmFySXRlbXMubWFwKChlbGVtZW50LCBpbmRleCkgPT4gKHsgZWxlbWVudCwgaW5kZXggfSkpO1xuXG4gICAgICAgIGNvbnN0IGdyb3VwcyA9IG5vdFNvcnRlZC5yZWR1Y2UoKGdyLCBpdGVtKSA9PiB7XG4gICAgICAgICAgICBsZXQgZ3JvdXBJZCA9IGl0ZW0uZWxlbWVudC5ncm91cDtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1QcmlvID0gaXRlbS5lbGVtZW50LnByaW9yaXR5O1xuICAgICAgICAgICAgaWYgKGl0ZW1QcmlvID09PSBPdmVyZmxvd1ByaW9yaXR5RW51bS5ORVZFUiB8fCBpdGVtUHJpbyA9PT0gT3ZlcmZsb3dQcmlvcml0eUVudW0uQUxXQVlTKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBJZCA9IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZ3JbZ3JvdXBJZF0pIHtcbiAgICAgICAgICAgICAgICBncltncm91cElkXSA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBncltncm91cElkXS5wdXNoKGl0ZW0pO1xuXG4gICAgICAgICAgICByZXR1cm4gZ3I7XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICBjb25zdCBncm91cElkcyA9IE9iamVjdC5rZXlzKGdyb3VwcylcbiAgICAgICAgICAgIC5tYXAoKGcpID0+IHBhcnNlSW50KGcsIDEwKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKGcpID0+IGcgIT09IDApO1xuXG4gICAgICAgIHJldHVybiBncm91cElkc1xuICAgICAgICAgICAgLm1hcCgoZykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBtaW5JbmRleCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgICAgICAgICAgICAgIGxldCBtYXhQcmlvcml0eSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3Vwc1tnXSkge1xuICAgICAgICAgICAgICAgICAgICBtaW5JbmRleCA9IE1hdGgubWluKG1pbkluZGV4LCBpdGVtLmluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgbWF4UHJpb3JpdHkgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgT1ZFUkZMT1dfUFJJT1JJVFlfU0NPUkUuZ2V0KGl0ZW0uZWxlbWVudC5wcmlvcml0eSkgPz8gLUluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZ3JvdXA6IGdyb3Vwc1tnXS5tYXAoKHsgZWxlbWVudCB9KSA9PiBlbGVtZW50KSwgbWluSW5kZXgsIG1heFByaW9yaXR5IH07XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNvbmNhdChcbiAgICAgICAgICAgICAgICAhZ3JvdXBzWzBdXG4gICAgICAgICAgICAgICAgICAgID8gW11cbiAgICAgICAgICAgICAgICAgICAgOiBncm91cHNbMF0ubWFwKChpdGVtKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cDogW2l0ZW0uZWxlbWVudF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1heFByaW9yaXR5OiBPVkVSRkxPV19QUklPUklUWV9TQ09SRS5nZXQoaXRlbS5lbGVtZW50LnByaW9yaXR5KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWluSW5kZXg6IGl0ZW0uaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBiLm1heFByaW9yaXR5IC0gYS5tYXhQcmlvcml0eSB8fCBhLm1pbkluZGV4IC0gYi5taW5JbmRleClcbiAgICAgICAgICAgIC5yZWR1Y2UoKGFyciwgaSkgPT4gYXJyLmNvbmNhdChpLmdyb3VwKSwgW10pO1xuICAgIH1cbn1cbiIsIjxoNCAqbmdJZj1cInRpdGxlXCIgY2xhc3M9XCJmZC10aXRsZSBmZC10aXRsZS0taDQgZmQtdG9vbGJhcl9fdGl0bGVcIiBbaWRdPVwidGl0bGVJZFwiICN0aXRsZUVsZW1lbnQ+e3sgdGl0bGUgfX08L2g0PlxuXG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJvdmVyZmxvd25JdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgPGZkLXRvb2xiYXItc3BhY2VyPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgPGZkLXBvcG92ZXIgcGxhY2VtZW50PVwiYm90dG9tLWVuZFwiIFtub0Fycm93XT1cInRydWVcIiBjbGFzcz1cImZkLXBvcG92ZXJcIj5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICB0aXRsZT1cIk1vcmVcIlxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJNb3JlXCJcbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwib3ZlcmZsb3dcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cblxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZkLXRvb2xiYXJfX292ZXJmbG93XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3ZlcmZsb3dlZEl0ZW0gb2Ygb3ZlcmZsb3duSXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkay1keW5hbWljLXBvcnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2RvbUVsZW1lbnRdPVwib3ZlcmZsb3dlZEl0ZW0uZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJvdmVyZmxvd2VkSXRlbS5wcmlvcml0eSA9PT0gJ2Rpc2FwcGVhcicgPyAnbm9uZScgOiAnZmxleCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZsZXgtZGlyZWN0aW9uXT1cIm92ZXJmbG93ZWRJdGVtLnByaW9yaXR5ID09PSAnZGlzYXBwZWFyJyA/IHVuZGVmaW5lZCA6ICdjb2x1bW4nXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2Zkay1keW5hbWljLXBvcnRhbD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==