carbon-components-angular 6.0.0-rc.1 → 6.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. package/README.md +1 -1
  2. package/button/icon-button.component.d.ts +5 -1
  3. package/combobox/combobox.component.d.ts +7 -2
  4. package/docs/documentation/components/Accordion.html +2 -2
  5. package/docs/documentation/components/AccordionItem.html +2 -2
  6. package/docs/documentation/components/ActionableNotification.html +2 -2
  7. package/docs/documentation/components/AlertModal.html +2 -2
  8. package/docs/documentation/components/BaseIconButton.html +2 -2
  9. package/docs/documentation/components/BaseNotification.html +2 -2
  10. package/docs/documentation/components/BaseTabHeader.html +2 -2
  11. package/docs/documentation/components/Breadcrumb.html +2 -2
  12. package/docs/documentation/components/BreadcrumbItemComponent.html +2 -2
  13. package/docs/documentation/components/ButtonSet.html +2 -2
  14. package/docs/documentation/components/Checkbox.html +2 -2
  15. package/docs/documentation/components/ClickableTile.html +2 -2
  16. package/docs/documentation/components/CodeSnippet.html +2 -2
  17. package/docs/documentation/components/ComboBox.html +305 -214
  18. package/docs/documentation/components/ContainedList.html +2 -2
  19. package/docs/documentation/components/ContainedListItem.html +2 -2
  20. package/docs/documentation/components/ContentSwitcher.html +2 -2
  21. package/docs/documentation/components/ContextMenuComponent.html +2 -2
  22. package/docs/documentation/components/ContextMenuDividerComponent.html +2 -2
  23. package/docs/documentation/components/ContextMenuGroupComponent.html +2 -2
  24. package/docs/documentation/components/ContextMenuItemComponent.html +2 -2
  25. package/docs/documentation/components/DatePicker.html +2 -2
  26. package/docs/documentation/components/DatePickerInput.html +2 -2
  27. package/docs/documentation/components/Dialog.html +2 -2
  28. package/docs/documentation/components/Documentation.html +2 -2
  29. package/docs/documentation/components/Dropdown.html +506 -154
  30. package/docs/documentation/components/DropdownList.html +2 -2
  31. package/docs/documentation/components/ExpandableTile.html +2 -2
  32. package/docs/documentation/components/FileComponent.html +2 -2
  33. package/docs/documentation/components/FileUploader.html +2 -2
  34. package/docs/documentation/components/Hamburger.html +2 -2
  35. package/docs/documentation/components/Header.html +2 -2
  36. package/docs/documentation/components/HeaderAction.html +2 -2
  37. package/docs/documentation/components/HeaderGlobal.html +2 -2
  38. package/docs/documentation/components/HeaderItem.html +2 -2
  39. package/docs/documentation/components/HeaderMenu.html +2 -2
  40. package/docs/documentation/components/HeaderNavigation.html +2 -2
  41. package/docs/documentation/components/IconButton.html +55 -16
  42. package/docs/documentation/components/InlineLoading.html +2 -2
  43. package/docs/documentation/components/Label.html +2 -2
  44. package/docs/documentation/components/ListColumn.html +2 -2
  45. package/docs/documentation/components/ListHeader.html +2 -2
  46. package/docs/documentation/components/ListRow.html +2 -2
  47. package/docs/documentation/components/Loading.html +2 -2
  48. package/docs/documentation/components/Modal.html +2 -2
  49. package/docs/documentation/components/ModalFooter.html +2 -2
  50. package/docs/documentation/components/ModalHeader.html +2 -2
  51. package/docs/documentation/components/Notification.html +2 -2
  52. package/docs/documentation/components/NumberComponent.html +2 -2
  53. package/docs/documentation/components/OverflowMenu.html +2 -2
  54. package/docs/documentation/components/OverflowMenuCustomPane.html +2 -2
  55. package/docs/documentation/components/OverflowMenuOption.html +2 -2
  56. package/docs/documentation/components/OverflowMenuPane.html +2 -2
  57. package/docs/documentation/components/Overlay.html +2 -2
  58. package/docs/documentation/components/Pagination.html +2 -2
  59. package/docs/documentation/components/PaginationNav.html +2 -2
  60. package/docs/documentation/components/PaginationNavItem.html +2 -2
  61. package/docs/documentation/components/PaginationOverflow.html +2 -2
  62. package/docs/documentation/components/Panel.html +2 -2
  63. package/docs/documentation/components/PasswordInputLabelComponent.html +2 -2
  64. package/docs/documentation/components/Placeholder.html +2 -2
  65. package/docs/documentation/components/PopoverContent.html +2 -2
  66. package/docs/documentation/components/ProgressBar.html +2 -2
  67. package/docs/documentation/components/ProgressIndicator.html +2 -2
  68. package/docs/documentation/components/Radio.html +2 -2
  69. package/docs/documentation/components/RadioGroup.html +2 -2
  70. package/docs/documentation/components/Search.html +2 -2
  71. package/docs/documentation/components/Select.html +2 -2
  72. package/docs/documentation/components/SelectionTile.html +2 -2
  73. package/docs/documentation/components/SideNav.html +2 -2
  74. package/docs/documentation/components/SideNavItem.html +2 -2
  75. package/docs/documentation/components/SideNavMenu.html +2 -2
  76. package/docs/documentation/components/SkeletonPlaceholder.html +2 -2
  77. package/docs/documentation/components/SkeletonText.html +2 -2
  78. package/docs/documentation/components/Slider.html +2 -2
  79. package/docs/documentation/components/StructuredList.html +2 -2
  80. package/docs/documentation/components/SwitcherList.html +2 -2
  81. package/docs/documentation/components/SwitcherListItem.html +2 -2
  82. package/docs/documentation/components/Tab.html +2 -2
  83. package/docs/documentation/components/TabHeaderGroup.html +2 -2
  84. package/docs/documentation/components/TabHeaders.html +2 -2
  85. package/docs/documentation/components/TabSkeleton.html +2 -2
  86. package/docs/documentation/components/Table.html +2 -2
  87. package/docs/documentation/components/TableBody.html +2 -2
  88. package/docs/documentation/components/TableCheckbox.html +2 -2
  89. package/docs/documentation/components/TableContainer.html +2 -2
  90. package/docs/documentation/components/TableData.html +2 -2
  91. package/docs/documentation/components/TableExpandButton.html +2 -2
  92. package/docs/documentation/components/TableExpandedRow.html +2 -2
  93. package/docs/documentation/components/TableHead.html +2 -2
  94. package/docs/documentation/components/TableHeadCell.html +2 -2
  95. package/docs/documentation/components/TableHeadCheckbox.html +2 -2
  96. package/docs/documentation/components/TableHeadExpand.html +2 -2
  97. package/docs/documentation/components/TableHeader.html +2 -2
  98. package/docs/documentation/components/TableRadio.html +2 -2
  99. package/docs/documentation/components/TableRowComponent.html +2 -2
  100. package/docs/documentation/components/TableToolbar.html +2 -2
  101. package/docs/documentation/components/TableToolbarActions.html +2 -2
  102. package/docs/documentation/components/TableToolbarContent.html +2 -2
  103. package/docs/documentation/components/TableToolbarSearch.html +2 -2
  104. package/docs/documentation/components/Tabs.html +2 -2
  105. package/docs/documentation/components/Tag.html +73 -13
  106. package/docs/documentation/components/TagFilter.html +116 -51
  107. package/docs/documentation/components/TagOperationalComponent.html +919 -0
  108. package/docs/documentation/components/TagSelectableComponent.html +1084 -0
  109. package/docs/documentation/components/TextInputLabelComponent.html +78 -32
  110. package/docs/documentation/components/TextareaLabelComponent.html +2 -2
  111. package/docs/documentation/components/Tile.html +2 -2
  112. package/docs/documentation/components/TileGroup.html +2 -2
  113. package/docs/documentation/components/TimePicker.html +2 -2
  114. package/docs/documentation/components/TimePickerSelect.html +2 -2
  115. package/docs/documentation/components/Toast.html +2 -2
  116. package/docs/documentation/components/Toggle.html +81 -67
  117. package/docs/documentation/components/Toggletip.html +2 -2
  118. package/docs/documentation/components/Tooltip.html +2 -2
  119. package/docs/documentation/components/TooltipDefinition.html +2 -2
  120. package/docs/documentation/components/TreeNodeComponent.html +2 -2
  121. package/docs/documentation/components/TreeViewComponent.html +2 -2
  122. package/docs/documentation/coverage.html +86 -26
  123. package/docs/documentation/directives/ClickableTileIconDirective.html +367 -0
  124. package/docs/documentation/directives/IconDirective.html +6 -5
  125. package/docs/documentation/directives/LinkIconDirective.html +367 -0
  126. package/docs/documentation/directives/List.html +66 -8
  127. package/docs/documentation/directives/TagIconDirective.html +367 -0
  128. package/docs/documentation/graph/dependencies.svg +2767 -2647
  129. package/docs/documentation/index.html +1 -1
  130. package/docs/documentation/js/menu-wc.js +38 -12
  131. package/docs/documentation/js/menu-wc_es5.js +1 -1
  132. package/docs/documentation/js/search/search_index.js +2 -2
  133. package/docs/documentation/miscellaneous/enumerations.html +8 -8
  134. package/docs/documentation/modules/CodeSnippetModule/dependencies.svg +4 -4
  135. package/docs/documentation/modules/CodeSnippetModule.html +4 -4
  136. package/docs/documentation/modules/ComboBoxModule/dependencies.svg +6 -6
  137. package/docs/documentation/modules/ComboBoxModule.html +6 -6
  138. package/docs/documentation/modules/DatePickerInputModule/dependencies.svg +8 -8
  139. package/docs/documentation/modules/DatePickerInputModule.html +8 -8
  140. package/docs/documentation/modules/DatePickerModule/dependencies.svg +49 -53
  141. package/docs/documentation/modules/DatePickerModule.html +49 -53
  142. package/docs/documentation/modules/FileUploaderModule/dependencies.svg +34 -34
  143. package/docs/documentation/modules/FileUploaderModule.html +34 -34
  144. package/docs/documentation/modules/GridModule/dependencies.svg +60 -60
  145. package/docs/documentation/modules/GridModule.html +60 -60
  146. package/docs/documentation/modules/LinkModule/dependencies.svg +41 -17
  147. package/docs/documentation/modules/LinkModule.html +52 -19
  148. package/docs/documentation/modules/LoadingModule/dependencies.svg +4 -4
  149. package/docs/documentation/modules/LoadingModule.html +4 -4
  150. package/docs/documentation/modules/RadioModule/dependencies.svg +35 -35
  151. package/docs/documentation/modules/RadioModule.html +35 -35
  152. package/docs/documentation/modules/SliderModule/dependencies.svg +4 -4
  153. package/docs/documentation/modules/SliderModule.html +4 -4
  154. package/docs/documentation/modules/StructuredListModule/dependencies.svg +66 -66
  155. package/docs/documentation/modules/StructuredListModule.html +66 -66
  156. package/docs/documentation/modules/TableModule/dependencies.svg +4 -4
  157. package/docs/documentation/modules/TableModule.html +4 -4
  158. package/docs/documentation/modules/TabsModule/dependencies.svg +68 -68
  159. package/docs/documentation/modules/TabsModule.html +68 -68
  160. package/docs/documentation/modules/TagModule/dependencies.svg +123 -51
  161. package/docs/documentation/modules/TagModule.html +160 -55
  162. package/docs/documentation/modules/ThemeModule/dependencies.svg +4 -4
  163. package/docs/documentation/modules/ThemeModule.html +4 -4
  164. package/docs/documentation/modules/TilesModule/dependencies.svg +149 -125
  165. package/docs/documentation/modules/TilesModule.html +158 -125
  166. package/docs/documentation/modules/TimePickerSelectModule/dependencies.svg +44 -40
  167. package/docs/documentation/modules/TimePickerSelectModule.html +44 -40
  168. package/docs/documentation/modules/ToggleModule/dependencies.svg +17 -17
  169. package/docs/documentation/modules/ToggleModule.html +17 -17
  170. package/docs/documentation/modules/ToggletipModule/dependencies.svg +37 -37
  171. package/docs/documentation/modules/ToggletipModule.html +37 -37
  172. package/docs/documentation/modules/TooltipModule/dependencies.svg +4 -4
  173. package/docs/documentation/modules/TooltipModule.html +4 -4
  174. package/docs/documentation/modules/TreeviewModule/dependencies.svg +26 -26
  175. package/docs/documentation/modules/TreeviewModule.html +26 -26
  176. package/docs/documentation/overview.html +2769 -2649
  177. package/docs/documentation.json +1723 -455
  178. package/docs/storybook/117.d138a78b.iframe.bundle.js +1 -0
  179. package/docs/storybook/1490.92c45b08.iframe.bundle.js +1 -0
  180. package/docs/storybook/3419.806be468.iframe.bundle.js +1 -0
  181. package/docs/storybook/{4333.3306b291.iframe.bundle.js → 4333.ee67f563.iframe.bundle.js} +1 -1
  182. package/docs/storybook/{4637.2867ca6f.iframe.bundle.js → 4637.1182aca8.iframe.bundle.js} +1 -1
  183. package/docs/storybook/5351.dfea6a5b.iframe.bundle.js +1 -0
  184. package/docs/storybook/8383.74dc30c9.iframe.bundle.js +1 -0
  185. package/docs/storybook/accordion-accordion-stories.92f0aea9.iframe.bundle.js +1 -0
  186. package/docs/storybook/button-button-set-stories.78832e6c.iframe.bundle.js +1 -0
  187. package/docs/storybook/button-button-stories.ea38b069.iframe.bundle.js +1 -0
  188. package/docs/storybook/button-icon-button-stories.e9bbdeae.iframe.bundle.js +1 -0
  189. package/docs/storybook/code-snippet-code-snippet-stories.845d66ed.iframe.bundle.js +1 -0
  190. package/docs/storybook/combobox-combobox-stories.707e1802.iframe.bundle.js +1 -0
  191. package/docs/storybook/contained-list-contained-list-stories.92c680b8.iframe.bundle.js +1 -0
  192. package/docs/storybook/context-menu-context-menu-stories.59d5cac4.iframe.bundle.js +1 -0
  193. package/docs/storybook/datepicker-datepicker-stories.e7b62202.iframe.bundle.js +1 -0
  194. package/docs/storybook/dropdown-dropdown-stories.0d63845a.iframe.bundle.js +1 -0
  195. package/docs/storybook/icon-icon-stories.8d4654b2.iframe.bundle.js +1 -0
  196. package/docs/storybook/iframe.html +2 -2
  197. package/docs/storybook/index-stories.66f86530.iframe.bundle.js +1 -0
  198. package/docs/storybook/index.json +1 -1
  199. package/docs/storybook/inline-loading-inline-loading-stories.b3477958.iframe.bundle.js +1 -0
  200. package/docs/storybook/input-input-stories.6eca9c7d.iframe.bundle.js +1 -0
  201. package/docs/storybook/input-password-stories.2826ff49.iframe.bundle.js +1 -0
  202. package/docs/storybook/input-textarea-stories.4f5775b4.iframe.bundle.js +1 -0
  203. package/docs/storybook/link-link-stories.e07fa679.iframe.bundle.js +1 -0
  204. package/docs/storybook/{list-list-stories.56e9e562.iframe.bundle.js → list-list-stories.957efb51.iframe.bundle.js} +1 -1
  205. package/docs/storybook/main.45a88baf.iframe.bundle.js +1 -0
  206. package/docs/storybook/main.css +912 -189
  207. package/docs/storybook/number-input-number-stories.c8a0e58c.iframe.bundle.js +1 -0
  208. package/docs/storybook/patterns-dialogs-modal-with-table-stories.44f68be6.iframe.bundle.js +1 -0
  209. package/docs/storybook/patterns-filtering-multiple-categories-stories.2f66407e.iframe.bundle.js +1 -0
  210. package/docs/storybook/patterns-loading-large-loading-stories.8333afb1.iframe.bundle.js +1 -0
  211. package/docs/storybook/progress-bar-progress-bar-stories.645f83b4.iframe.bundle.js +1 -0
  212. package/docs/storybook/progress-indicator-progress-indicator-stories.4205d95b.iframe.bundle.js +1 -0
  213. package/docs/storybook/project.json +1 -1
  214. package/docs/storybook/radio-radio-stories.5dc425e5.iframe.bundle.js +1 -0
  215. package/docs/storybook/{runtime~main.e516577a.iframe.bundle.js → runtime~main.b822f6e3.iframe.bundle.js} +1 -1
  216. package/docs/storybook/search-search-stories.69ac59e9.iframe.bundle.js +1 -0
  217. package/docs/storybook/stories.json +1 -1
  218. package/docs/storybook/structured-list-structured-list-stories.8c6c973c.iframe.bundle.js +1 -0
  219. package/docs/storybook/tag-tag-stories.f8ad24e6.iframe.bundle.js +1 -0
  220. package/docs/storybook/tiles-clickable-tile-stories.c2639981.iframe.bundle.js +1 -0
  221. package/docs/storybook/tiles-expandable-tile-stories.9aefae5c.iframe.bundle.js +1 -0
  222. package/docs/storybook/{toggle-toggle-stories.d4666f95.iframe.bundle.js → toggle-toggle-stories.37f7153e.iframe.bundle.js} +1 -1
  223. package/docs/storybook/toggletip-toggletip-stories.895fd677.iframe.bundle.js +1 -0
  224. package/docs/storybook/treeview-treeview-stories.ac4bcee5.iframe.bundle.js +1 -0
  225. package/docs/storybook/ui-shell-ui-shell-stories.9b5a8c7f.iframe.bundle.js +1 -0
  226. package/dropdown/dropdown.component.d.ts +12 -3
  227. package/esm2022/button/icon-button.component.mjs +10 -4
  228. package/esm2022/code-snippet/code-snippet.component.mjs +1 -1
  229. package/esm2022/combobox/combobox.component.mjs +46 -15
  230. package/esm2022/dropdown/dropdown.component.mjs +79 -37
  231. package/esm2022/icon/icon.directive.mjs +3 -2
  232. package/esm2022/input/text-input-label.component.mjs +4 -1
  233. package/esm2022/link/index.mjs +2 -1
  234. package/esm2022/link/link-icon.directive.mjs +19 -0
  235. package/esm2022/link/link.module.mjs +9 -4
  236. package/esm2022/list/list.directive.mjs +12 -3
  237. package/esm2022/modal/modal-header.component.mjs +1 -1
  238. package/esm2022/pagination/pagination-nav/pagination-nav.component.mjs +1 -1
  239. package/esm2022/tag/index.mjs +4 -1
  240. package/esm2022/tag/tag-filter.component.mjs +47 -32
  241. package/esm2022/tag/tag-icon.directive.mjs +19 -0
  242. package/esm2022/tag/tag-operational.component.mjs +62 -0
  243. package/esm2022/tag/tag-selectable.component.mjs +89 -0
  244. package/esm2022/tag/tag.component.mjs +28 -4
  245. package/esm2022/tag/tag.module.mjs +27 -4
  246. package/esm2022/tiles/clickable-tile-icon.directive.mjs +19 -0
  247. package/esm2022/tiles/index.mjs +2 -1
  248. package/esm2022/tiles/tiles.module.mjs +6 -1
  249. package/esm2022/toggle/toggle.component.mjs +9 -4
  250. package/esm2022/ui-shell/header/header-action.component.mjs +1 -1
  251. package/fesm2022/carbon-components-angular-button.mjs +9 -3
  252. package/fesm2022/carbon-components-angular-button.mjs.map +1 -1
  253. package/fesm2022/carbon-components-angular-code-snippet.mjs +1 -1
  254. package/fesm2022/carbon-components-angular-code-snippet.mjs.map +1 -1
  255. package/fesm2022/carbon-components-angular-combobox.mjs +45 -14
  256. package/fesm2022/carbon-components-angular-combobox.mjs.map +1 -1
  257. package/fesm2022/carbon-components-angular-dropdown.mjs +79 -37
  258. package/fesm2022/carbon-components-angular-dropdown.mjs.map +1 -1
  259. package/fesm2022/carbon-components-angular-icon.mjs +2 -1
  260. package/fesm2022/carbon-components-angular-icon.mjs.map +1 -1
  261. package/fesm2022/carbon-components-angular-input.mjs +3 -0
  262. package/fesm2022/carbon-components-angular-input.mjs.map +1 -1
  263. package/fesm2022/carbon-components-angular-link.mjs +25 -4
  264. package/fesm2022/carbon-components-angular-link.mjs.map +1 -1
  265. package/fesm2022/carbon-components-angular-list.mjs +11 -2
  266. package/fesm2022/carbon-components-angular-list.mjs.map +1 -1
  267. package/fesm2022/carbon-components-angular-modal.mjs +1 -1
  268. package/fesm2022/carbon-components-angular-modal.mjs.map +1 -1
  269. package/fesm2022/carbon-components-angular-pagination.mjs +1 -1
  270. package/fesm2022/carbon-components-angular-pagination.mjs.map +1 -1
  271. package/fesm2022/carbon-components-angular-tag.mjs +259 -40
  272. package/fesm2022/carbon-components-angular-tag.mjs.map +1 -1
  273. package/fesm2022/carbon-components-angular-tiles.mjs +23 -2
  274. package/fesm2022/carbon-components-angular-tiles.mjs.map +1 -1
  275. package/fesm2022/carbon-components-angular-toggle.mjs +8 -3
  276. package/fesm2022/carbon-components-angular-toggle.mjs.map +1 -1
  277. package/fesm2022/carbon-components-angular-ui-shell.mjs +1 -1
  278. package/fesm2022/carbon-components-angular-ui-shell.mjs.map +1 -1
  279. package/input/text-input-label.component.d.ts +3 -2
  280. package/link/index.d.ts +1 -0
  281. package/link/link-icon.directive.d.ts +26 -0
  282. package/link/link.module.d.ts +3 -2
  283. package/list/list.directive.d.ts +5 -1
  284. package/package.json +1 -1
  285. package/tag/index.d.ts +3 -0
  286. package/tag/tag-filter.component.d.ts +5 -1
  287. package/tag/tag-icon.directive.d.ts +26 -0
  288. package/tag/tag-operational.component.d.ts +35 -0
  289. package/tag/tag-selectable.component.d.ts +42 -0
  290. package/tag/tag.component.d.ts +7 -2
  291. package/tag/tag.module.d.ts +6 -3
  292. package/tiles/clickable-tile-icon.directive.d.ts +26 -0
  293. package/tiles/index.d.ts +1 -0
  294. package/tiles/tiles.module.d.ts +11 -10
  295. package/toggle/toggle.component.d.ts +6 -1
  296. package/docs/storybook/117.5d56f728.iframe.bundle.js +0 -1
  297. package/docs/storybook/1490.c09c967b.iframe.bundle.js +0 -1
  298. package/docs/storybook/2641.22111a5a.iframe.bundle.js +0 -1
  299. package/docs/storybook/5351.afa38aa0.iframe.bundle.js +0 -1
  300. package/docs/storybook/8383.348fbbdd.iframe.bundle.js +0 -1
  301. package/docs/storybook/IBMPlexMono-Italic-Cyrillic.woff +0 -0
  302. package/docs/storybook/IBMPlexMono-Italic-Latin1.woff +0 -0
  303. package/docs/storybook/IBMPlexMono-Italic-Latin2.woff +0 -0
  304. package/docs/storybook/IBMPlexMono-Italic-Latin3.woff +0 -0
  305. package/docs/storybook/IBMPlexMono-Italic-Pi.woff +0 -0
  306. package/docs/storybook/IBMPlexMono-Light-Cyrillic.woff +0 -0
  307. package/docs/storybook/IBMPlexMono-Light-Latin1.woff +0 -0
  308. package/docs/storybook/IBMPlexMono-Light-Latin2.woff +0 -0
  309. package/docs/storybook/IBMPlexMono-Light-Latin3.woff +0 -0
  310. package/docs/storybook/IBMPlexMono-Light-Pi.woff +0 -0
  311. package/docs/storybook/IBMPlexMono-LightItalic-Cyrillic.woff +0 -0
  312. package/docs/storybook/IBMPlexMono-LightItalic-Latin1.woff +0 -0
  313. package/docs/storybook/IBMPlexMono-LightItalic-Latin2.woff +0 -0
  314. package/docs/storybook/IBMPlexMono-LightItalic-Latin3.woff +0 -0
  315. package/docs/storybook/IBMPlexMono-LightItalic-Pi.woff +0 -0
  316. package/docs/storybook/IBMPlexMono-Regular-Cyrillic.woff +0 -0
  317. package/docs/storybook/IBMPlexMono-Regular-Latin1.woff +0 -0
  318. package/docs/storybook/IBMPlexMono-Regular-Latin2.woff +0 -0
  319. package/docs/storybook/IBMPlexMono-Regular-Latin3.woff +0 -0
  320. package/docs/storybook/IBMPlexMono-Regular-Pi.woff +0 -0
  321. package/docs/storybook/IBMPlexMono-SemiBold-Cyrillic.woff +0 -0
  322. package/docs/storybook/IBMPlexMono-SemiBold-Latin1.woff +0 -0
  323. package/docs/storybook/IBMPlexMono-SemiBold-Latin2.woff +0 -0
  324. package/docs/storybook/IBMPlexMono-SemiBold-Latin3.woff +0 -0
  325. package/docs/storybook/IBMPlexMono-SemiBold-Pi.woff +0 -0
  326. package/docs/storybook/IBMPlexMono-SemiBoldItalic-Cyrillic.woff +0 -0
  327. package/docs/storybook/IBMPlexMono-SemiBoldItalic-Latin1.woff +0 -0
  328. package/docs/storybook/IBMPlexMono-SemiBoldItalic-Latin2.woff +0 -0
  329. package/docs/storybook/IBMPlexMono-SemiBoldItalic-Latin3.woff +0 -0
  330. package/docs/storybook/IBMPlexMono-SemiBoldItalic-Pi.woff +0 -0
  331. package/docs/storybook/IBMPlexSans-Italic-Cyrillic.woff +0 -0
  332. package/docs/storybook/IBMPlexSans-Italic-Latin1.woff +0 -0
  333. package/docs/storybook/IBMPlexSans-Italic-Latin2.woff +0 -0
  334. package/docs/storybook/IBMPlexSans-Italic-Latin3.woff +0 -0
  335. package/docs/storybook/IBMPlexSans-Italic-Pi.woff +0 -0
  336. package/docs/storybook/IBMPlexSans-Light-Cyrillic.woff +0 -0
  337. package/docs/storybook/IBMPlexSans-Light-Latin1.woff +0 -0
  338. package/docs/storybook/IBMPlexSans-Light-Latin2.woff +0 -0
  339. package/docs/storybook/IBMPlexSans-Light-Latin3.woff +0 -0
  340. package/docs/storybook/IBMPlexSans-Light-Pi.woff +0 -0
  341. package/docs/storybook/IBMPlexSans-LightItalic-Cyrillic.woff +0 -0
  342. package/docs/storybook/IBMPlexSans-LightItalic-Latin1.woff +0 -0
  343. package/docs/storybook/IBMPlexSans-LightItalic-Latin2.woff +0 -0
  344. package/docs/storybook/IBMPlexSans-LightItalic-Latin3.woff +0 -0
  345. package/docs/storybook/IBMPlexSans-LightItalic-Pi.woff +0 -0
  346. package/docs/storybook/IBMPlexSans-Regular-Cyrillic.woff +0 -0
  347. package/docs/storybook/IBMPlexSans-Regular-Latin1.woff +0 -0
  348. package/docs/storybook/IBMPlexSans-Regular-Latin2.woff +0 -0
  349. package/docs/storybook/IBMPlexSans-Regular-Latin3.woff +0 -0
  350. package/docs/storybook/IBMPlexSans-Regular-Pi.woff +0 -0
  351. package/docs/storybook/IBMPlexSans-SemiBold-Cyrillic.woff +0 -0
  352. package/docs/storybook/IBMPlexSans-SemiBold-Latin1.woff +0 -0
  353. package/docs/storybook/IBMPlexSans-SemiBold-Latin2.woff +0 -0
  354. package/docs/storybook/IBMPlexSans-SemiBold-Latin3.woff +0 -0
  355. package/docs/storybook/IBMPlexSans-SemiBold-Pi.woff +0 -0
  356. package/docs/storybook/IBMPlexSans-SemiBoldItalic-Cyrillic.woff +0 -0
  357. package/docs/storybook/IBMPlexSans-SemiBoldItalic-Latin1.woff +0 -0
  358. package/docs/storybook/IBMPlexSans-SemiBoldItalic-Latin2.woff +0 -0
  359. package/docs/storybook/IBMPlexSans-SemiBoldItalic-Latin3.woff +0 -0
  360. package/docs/storybook/IBMPlexSans-SemiBoldItalic-Pi.woff +0 -0
  361. package/docs/storybook/IBMPlexSerif-Italic-Cyrillic.woff +0 -0
  362. package/docs/storybook/IBMPlexSerif-Italic-Latin1.woff +0 -0
  363. package/docs/storybook/IBMPlexSerif-Italic-Latin2.woff +0 -0
  364. package/docs/storybook/IBMPlexSerif-Italic-Latin3.woff +0 -0
  365. package/docs/storybook/IBMPlexSerif-Italic-Pi.woff +0 -0
  366. package/docs/storybook/IBMPlexSerif-Light-Cyrillic.woff +0 -0
  367. package/docs/storybook/IBMPlexSerif-Light-Latin1.woff +0 -0
  368. package/docs/storybook/IBMPlexSerif-Light-Latin2.woff +0 -0
  369. package/docs/storybook/IBMPlexSerif-Light-Latin3.woff +0 -0
  370. package/docs/storybook/IBMPlexSerif-Light-Pi.woff +0 -0
  371. package/docs/storybook/IBMPlexSerif-LightItalic-Cyrillic.woff +0 -0
  372. package/docs/storybook/IBMPlexSerif-LightItalic-Latin1.woff +0 -0
  373. package/docs/storybook/IBMPlexSerif-LightItalic-Latin2.woff +0 -0
  374. package/docs/storybook/IBMPlexSerif-LightItalic-Latin3.woff +0 -0
  375. package/docs/storybook/IBMPlexSerif-LightItalic-Pi.woff +0 -0
  376. package/docs/storybook/IBMPlexSerif-Regular-Cyrillic.woff +0 -0
  377. package/docs/storybook/IBMPlexSerif-Regular-Latin1.woff +0 -0
  378. package/docs/storybook/IBMPlexSerif-Regular-Latin2.woff +0 -0
  379. package/docs/storybook/IBMPlexSerif-Regular-Latin3.woff +0 -0
  380. package/docs/storybook/IBMPlexSerif-Regular-Pi.woff +0 -0
  381. package/docs/storybook/IBMPlexSerif-SemiBold-Cyrillic.woff +0 -0
  382. package/docs/storybook/IBMPlexSerif-SemiBold-Latin1.woff +0 -0
  383. package/docs/storybook/IBMPlexSerif-SemiBold-Latin2.woff +0 -0
  384. package/docs/storybook/IBMPlexSerif-SemiBold-Latin3.woff +0 -0
  385. package/docs/storybook/IBMPlexSerif-SemiBold-Pi.woff +0 -0
  386. package/docs/storybook/IBMPlexSerif-SemiBoldItalic-Cyrillic.woff +0 -0
  387. package/docs/storybook/IBMPlexSerif-SemiBoldItalic-Latin1.woff +0 -0
  388. package/docs/storybook/IBMPlexSerif-SemiBoldItalic-Latin2.woff +0 -0
  389. package/docs/storybook/IBMPlexSerif-SemiBoldItalic-Latin3.woff +0 -0
  390. package/docs/storybook/IBMPlexSerif-SemiBoldItalic-Pi.woff +0 -0
  391. package/docs/storybook/accordion-accordion-stories.7468f099.iframe.bundle.js +0 -1
  392. package/docs/storybook/button-button-set-stories.c7adac6a.iframe.bundle.js +0 -1
  393. package/docs/storybook/button-button-stories.1c45cf01.iframe.bundle.js +0 -1
  394. package/docs/storybook/button-icon-button-stories.63c78bd5.iframe.bundle.js +0 -1
  395. package/docs/storybook/code-snippet-code-snippet-stories.e00add3a.iframe.bundle.js +0 -1
  396. package/docs/storybook/combobox-combobox-stories.216aef5a.iframe.bundle.js +0 -1
  397. package/docs/storybook/contained-list-contained-list-stories.69aa72f2.iframe.bundle.js +0 -1
  398. package/docs/storybook/context-menu-context-menu-stories.6d7f479b.iframe.bundle.js +0 -1
  399. package/docs/storybook/datepicker-datepicker-stories.3cd783d9.iframe.bundle.js +0 -1
  400. package/docs/storybook/dropdown-dropdown-stories.d648035e.iframe.bundle.js +0 -1
  401. package/docs/storybook/icon-icon-stories.2e2ba0d1.iframe.bundle.js +0 -1
  402. package/docs/storybook/index-stories.a7ef7d5f.iframe.bundle.js +0 -1
  403. package/docs/storybook/inline-loading-inline-loading-stories.524edaf4.iframe.bundle.js +0 -1
  404. package/docs/storybook/input-input-stories.ee8c4e49.iframe.bundle.js +0 -1
  405. package/docs/storybook/input-password-stories.6baa3dd4.iframe.bundle.js +0 -1
  406. package/docs/storybook/input-textarea-stories.fb36d3da.iframe.bundle.js +0 -1
  407. package/docs/storybook/link-link-stories.b5dd0484.iframe.bundle.js +0 -1
  408. package/docs/storybook/main.f0db303d.iframe.bundle.js +0 -1
  409. package/docs/storybook/number-input-number-stories.0b7dd344.iframe.bundle.js +0 -1
  410. package/docs/storybook/patterns-dialogs-modal-with-table-stories.692bd7e3.iframe.bundle.js +0 -1
  411. package/docs/storybook/patterns-filtering-multiple-categories-stories.d3558915.iframe.bundle.js +0 -1
  412. package/docs/storybook/patterns-loading-large-loading-stories.09691e11.iframe.bundle.js +0 -1
  413. package/docs/storybook/progress-bar-progress-bar-stories.6d536423.iframe.bundle.js +0 -1
  414. package/docs/storybook/progress-indicator-progress-indicator-stories.f3b0ece7.iframe.bundle.js +0 -1
  415. package/docs/storybook/radio-radio-stories.35ae8c9f.iframe.bundle.js +0 -1
  416. package/docs/storybook/search-search-stories.fecf118a.iframe.bundle.js +0 -1
  417. package/docs/storybook/structured-list-structured-list-stories.a118d424.iframe.bundle.js +0 -1
  418. package/docs/storybook/tag-tag-stories.102bd470.iframe.bundle.js +0 -1
  419. package/docs/storybook/tiles-clickable-tile-stories.e3639902.iframe.bundle.js +0 -1
  420. package/docs/storybook/tiles-expandable-tile-stories.b319601f.iframe.bundle.js +0 -1
  421. package/docs/storybook/toggletip-toggletip-stories.0e5e2d69.iframe.bundle.js +0 -1
  422. package/docs/storybook/treeview-treeview-stories.ec11e861.iframe.bundle.js +0 -1
  423. package/docs/storybook/ui-shell-ui-shell-stories.522593d6.iframe.bundle.js +0 -1
@@ -35,6 +35,12 @@ import * as i5 from "carbon-components-angular/icon";
35
35
  */
36
36
  export class Dropdown {
37
37
  static { this.dropdownCount = 0; }
38
+ get fluidInvalidClass() {
39
+ return this.invalid && this.fluid;
40
+ }
41
+ get fluidFocusClass() {
42
+ return this.fluid && this._isFocused && this.menuIsClosed;
43
+ }
38
44
  get writtenValue() {
39
45
  return this._writtenValue;
40
46
  }
@@ -145,6 +151,11 @@ export class Dropdown {
145
151
  */
146
152
  this.close = new EventEmitter();
147
153
  this.hostClass = true;
154
+ this.hostWrapperClass = true;
155
+ /**
156
+ * Experimental: enable fluid state
157
+ */
158
+ this.fluid = false;
148
159
  /**
149
160
  * Set to `true` if the dropdown is closed (not expanded).
150
161
  */
@@ -161,6 +172,7 @@ export class Dropdown {
161
172
  this.keyboardNav = this._keyboardNav.bind(this);
162
173
  this.visibilitySubscription = new Subscription();
163
174
  this.onTouchedCallback = this._noop;
175
+ this._isFocused = false;
164
176
  // primarily used to capture and propagate input to `writeValue` before the content is available
165
177
  this._writtenValue = [];
166
178
  /**
@@ -584,6 +596,12 @@ export class Dropdown {
584
596
  isTemplate(value) {
585
597
  return value instanceof TemplateRef;
586
598
  }
599
+ handleFocus(event) {
600
+ this._isFocused = event.type === "focus";
601
+ if (event.type === "blur") {
602
+ this.onBlur();
603
+ }
604
+ }
587
605
  /**
588
606
  * Controls when it's needed to apply the selection feedback
589
607
  */
@@ -594,7 +612,7 @@ export class Dropdown {
594
612
  }
595
613
  }
596
614
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: Dropdown, deps: [{ token: i0.ElementRef }, { token: i1.I18n }, { token: i2.DropdownService }, { token: i3.ElementService }], target: i0.ɵɵFactoryTarget.Component }); }
597
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: { id: "id", label: "label", hideLabel: "hideLabel", helperText: "helperText", placeholder: "placeholder", displayValue: "displayValue", clearText: "clearText", size: "size", type: "type", theme: "theme", disabled: "disabled", readonly: "readonly", skeleton: "skeleton", inline: "inline", disableArrowKeys: "disableArrowKeys", invalid: "invalid", invalidText: "invalidText", warn: "warn", warnText: "warnText", appendInline: "appendInline", scrollableContainer: "scrollableContainer", itemValueKey: "itemValueKey", selectionFeedback: "selectionFeedback", menuButtonLabel: "menuButtonLabel", selectedLabel: "selectedLabel", dropUp: "dropUp" }, outputs: { selected: "selected", onClose: "onClose", close: "close" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.cds--dropdown__wrapper": "this.hostClass" } }, providers: [
615
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: { id: "id", label: "label", hideLabel: "hideLabel", helperText: "helperText", placeholder: "placeholder", displayValue: "displayValue", clearText: "clearText", size: "size", type: "type", theme: "theme", disabled: "disabled", readonly: "readonly", skeleton: "skeleton", inline: "inline", disableArrowKeys: "disableArrowKeys", invalid: "invalid", invalidText: "invalidText", warn: "warn", warnText: "warnText", appendInline: "appendInline", scrollableContainer: "scrollableContainer", itemValueKey: "itemValueKey", selectionFeedback: "selectionFeedback", menuButtonLabel: "menuButtonLabel", selectedLabel: "selectedLabel", dropUp: "dropUp", fluid: "fluid" }, outputs: { selected: "selected", onClose: "onClose", close: "close" }, host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.cds--list-box__wrapper--fluid--invalid": "this.fluidInvalidClass", "class.cds--list-box__wrapper--fluid--focus": "this.fluidFocusClass", "class.cds--dropdown__wrapper": "this.hostClass", "class.cds--list-box__wrapper": "this.hostWrapperClass", "class.cds--list-box__wrapper--fluid": "this.fluid" } }, providers: [
598
616
  {
599
617
  provide: NG_VALUE_ACCESSOR,
600
618
  useExisting: Dropdown,
@@ -615,7 +633,7 @@ export class Dropdown {
615
633
  <div
616
634
  class="cds--list-box"
617
635
  [ngClass]="{
618
- 'cds--dropdown': type !== 'multi',
636
+ 'cds--dropdown': type !== 'multi' && !(skeleton && fluid),
619
637
  'cds--multiselect': type === 'multi',
620
638
  'cds--multi-select--selected': type === 'multi' && getSelectedCount() > 0,
621
639
  'cds--dropdown--light': theme === 'light',
@@ -629,8 +647,11 @@ export class Dropdown {
629
647
  'cds--dropdown--sm cds--list-box--sm': size === 'sm',
630
648
  'cds--dropdown--md cds--list-box--md': size === 'md',
631
649
  'cds--dropdown--lg cds--list-box--lg': size === 'lg',
632
- 'cds--list-box--expanded': !menuIsClosed
633
- }">
650
+ 'cds--list-box--expanded': !menuIsClosed,
651
+ 'cds--list-box--invalid': invalid
652
+ }"
653
+ [attr.data-invalid]="invalid ? true : null">
654
+ <div *ngIf="skeleton && fluid" class="cds--list-box__label"></div>
634
655
  <button
635
656
  #dropdownButton
636
657
  [id]="id"
@@ -642,7 +663,8 @@ export class Dropdown {
642
663
  [attr.aria-readonly]="readonly"
643
664
  aria-haspopup="listbox"
644
665
  (click)="disabled || readonly ? $event.stopPropagation() : toggleMenu()"
645
- (blur)="onBlur()"
666
+ (focus)="fluid ? handleFocus($event) : null"
667
+ (blur)="fluid ? handleFocus($event) : onBlur()"
646
668
  [attr.disabled]="disabled ? true : null">
647
669
  <div
648
670
  (click)="clearSelected()"
@@ -671,18 +693,6 @@ export class Dropdown {
671
693
  [ngTemplateOutletContext]="getRenderTemplateContext()"
672
694
  [ngTemplateOutlet]="displayValue">
673
695
  </ng-template>
674
- <svg
675
- *ngIf="invalid"
676
- class="cds--dropdown__invalid-icon"
677
- cdsIcon="warning--filled"
678
- size="16">
679
- </svg>
680
- <svg
681
- *ngIf="!invalid && warn"
682
- cdsIcon="warning--alt--filled"
683
- size="16"
684
- class="cds--list-box__invalid-icon cds--list-box__invalid-icon--warning">
685
- </svg>
686
696
  <span class="cds--list-box__menu-icon">
687
697
  <svg
688
698
  *ngIf="!skeleton"
@@ -693,6 +703,18 @@ export class Dropdown {
693
703
  </svg>
694
704
  </span>
695
705
  </button>
706
+ <svg
707
+ *ngIf="invalid"
708
+ class="cds--list-box__invalid-icon"
709
+ cdsIcon="warning--filled"
710
+ size="16">
711
+ </svg>
712
+ <svg
713
+ *ngIf="!invalid && warn"
714
+ cdsIcon="warning--alt--filled"
715
+ size="16"
716
+ class="cds--list-box__invalid-icon cds--list-box__invalid-icon--warning">
717
+ </svg>
696
718
  <div
697
719
  #dropdownMenu
698
720
  [ngClass]="{
@@ -701,8 +723,9 @@ export class Dropdown {
701
723
  <ng-content *ngIf="!menuIsClosed"></ng-content>
702
724
  </div>
703
725
  </div>
726
+ <hr *ngIf="fluid" class="cds--list-box__divider" />
704
727
  <div
705
- *ngIf="helperText && !invalid && !warn && !skeleton"
728
+ *ngIf="helperText && !invalid && !warn && !skeleton && !fluid"
706
729
  class="cds--form__helper-text"
707
730
  [ngClass]="{
708
731
  'cds--form__helper-text--disabled': disabled
@@ -739,7 +762,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
739
762
  <div
740
763
  class="cds--list-box"
741
764
  [ngClass]="{
742
- 'cds--dropdown': type !== 'multi',
765
+ 'cds--dropdown': type !== 'multi' && !(skeleton && fluid),
743
766
  'cds--multiselect': type === 'multi',
744
767
  'cds--multi-select--selected': type === 'multi' && getSelectedCount() > 0,
745
768
  'cds--dropdown--light': theme === 'light',
@@ -753,8 +776,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
753
776
  'cds--dropdown--sm cds--list-box--sm': size === 'sm',
754
777
  'cds--dropdown--md cds--list-box--md': size === 'md',
755
778
  'cds--dropdown--lg cds--list-box--lg': size === 'lg',
756
- 'cds--list-box--expanded': !menuIsClosed
757
- }">
779
+ 'cds--list-box--expanded': !menuIsClosed,
780
+ 'cds--list-box--invalid': invalid
781
+ }"
782
+ [attr.data-invalid]="invalid ? true : null">
783
+ <div *ngIf="skeleton && fluid" class="cds--list-box__label"></div>
758
784
  <button
759
785
  #dropdownButton
760
786
  [id]="id"
@@ -766,7 +792,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
766
792
  [attr.aria-readonly]="readonly"
767
793
  aria-haspopup="listbox"
768
794
  (click)="disabled || readonly ? $event.stopPropagation() : toggleMenu()"
769
- (blur)="onBlur()"
795
+ (focus)="fluid ? handleFocus($event) : null"
796
+ (blur)="fluid ? handleFocus($event) : onBlur()"
770
797
  [attr.disabled]="disabled ? true : null">
771
798
  <div
772
799
  (click)="clearSelected()"
@@ -795,18 +822,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
795
822
  [ngTemplateOutletContext]="getRenderTemplateContext()"
796
823
  [ngTemplateOutlet]="displayValue">
797
824
  </ng-template>
798
- <svg
799
- *ngIf="invalid"
800
- class="cds--dropdown__invalid-icon"
801
- cdsIcon="warning--filled"
802
- size="16">
803
- </svg>
804
- <svg
805
- *ngIf="!invalid && warn"
806
- cdsIcon="warning--alt--filled"
807
- size="16"
808
- class="cds--list-box__invalid-icon cds--list-box__invalid-icon--warning">
809
- </svg>
810
825
  <span class="cds--list-box__menu-icon">
811
826
  <svg
812
827
  *ngIf="!skeleton"
@@ -817,6 +832,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
817
832
  </svg>
818
833
  </span>
819
834
  </button>
835
+ <svg
836
+ *ngIf="invalid"
837
+ class="cds--list-box__invalid-icon"
838
+ cdsIcon="warning--filled"
839
+ size="16">
840
+ </svg>
841
+ <svg
842
+ *ngIf="!invalid && warn"
843
+ cdsIcon="warning--alt--filled"
844
+ size="16"
845
+ class="cds--list-box__invalid-icon cds--list-box__invalid-icon--warning">
846
+ </svg>
820
847
  <div
821
848
  #dropdownMenu
822
849
  [ngClass]="{
@@ -825,8 +852,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
825
852
  <ng-content *ngIf="!menuIsClosed"></ng-content>
826
853
  </div>
827
854
  </div>
855
+ <hr *ngIf="fluid" class="cds--list-box__divider" />
828
856
  <div
829
- *ngIf="helperText && !invalid && !warn && !skeleton"
857
+ *ngIf="helperText && !invalid && !warn && !skeleton && !fluid"
830
858
  class="cds--form__helper-text"
831
859
  [ngClass]="{
832
860
  'cds--form__helper-text--disabled': disabled
@@ -851,7 +879,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
851
879
  }
852
880
  ]
853
881
  }]
854
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.I18n }, { type: i2.DropdownService }, { type: i3.ElementService }], propDecorators: { id: [{
882
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.I18n }, { type: i2.DropdownService }, { type: i3.ElementService }], propDecorators: { fluidInvalidClass: [{
883
+ type: HostBinding,
884
+ args: ["class.cds--list-box__wrapper--fluid--invalid"]
885
+ }], fluidFocusClass: [{
886
+ type: HostBinding,
887
+ args: ["class.cds--list-box__wrapper--fluid--focus"]
888
+ }], id: [{
855
889
  type: Input
856
890
  }], label: [{
857
891
  type: Input
@@ -921,8 +955,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
921
955
  }], hostClass: [{
922
956
  type: HostBinding,
923
957
  args: ["class.cds--dropdown__wrapper"]
958
+ }], hostWrapperClass: [{
959
+ type: HostBinding,
960
+ args: ["class.cds--list-box__wrapper"]
961
+ }], fluid: [{
962
+ type: HostBinding,
963
+ args: ["class.cds--list-box__wrapper--fluid"]
964
+ }, {
965
+ type: Input
924
966
  }], onKeyDown: [{
925
967
  type: HostListener,
926
968
  args: ["keydown", ["$event"]]
927
969
  }] } });
928
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUVaLFlBQVksRUFFWixTQUFTLEVBRVQsWUFBWSxFQUVaLFdBQVcsRUFDWCxXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBRXpFLHlFQUF5RTtBQUN6RSxPQUFPLEVBRU4sRUFBRSxFQUNGLFlBQVksRUFDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXRFLE9BQU8sRUFBa0Isb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBa0lILE1BQU0sT0FBTyxRQUFRO2FBQ2Isa0JBQWEsR0FBRyxDQUFDLEFBQUosQ0FBSztJQWdLekIsSUFBYyxZQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBYyxZQUFZLENBQUMsR0FBVTtRQUNwQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFDVyxVQUFzQixFQUN0QixJQUFVLEVBQ1YsZUFBZ0MsRUFDaEMsY0FBOEI7UUFIOUIsZUFBVSxHQUFW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c0JBQXZCLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUksUUFBUTtzQkFBakIsTUFBTTtnQkFJRyxPQUFPO3NCQUFoQixNQUFNO2dCQUlHLEtBQUs7c0JBQWQsTUFBTTtnQkFLK0MsSUFBSTtzQkFBekQsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSUwsY0FBYztzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSUEsWUFBWTtzQkFBeEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUVFLFNBQVM7c0JBQXJELFdBQVc7dUJBQUMsOEJBQThCO2dCQXlNM0MsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0SW5wdXQsXG5cdE91dHB1dCxcblx0RXZlbnRFbWl0dGVyLFxuXHRFbGVtZW50UmVmLFxuXHRDb250ZW50Q2hpbGQsXG5cdE9uSW5pdCxcblx0Vmlld0NoaWxkLFxuXHRBZnRlckNvbnRlbnRJbml0LFxuXHRIb3N0TGlzdGVuZXIsXG5cdE9uRGVzdHJveSxcblx0SG9zdEJpbmRpbmcsXG5cdFRlbXBsYXRlUmVmLFxuXHRBZnRlclZpZXdJbml0XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuLy8gT2JzZXJ2YWJsZSBpbXBvcnQgaXMgcmVxdWlyZWQgaGVyZSBzbyB0eXBlc2NyaXB0IGNhbiBjb21waWxlIGNvcnJlY3RseVxuaW1wb3J0IHtcblx0T2JzZXJ2YWJsZSxcblx0b2YsXG5cdFN1YnNjcmlwdGlvblxufSBmcm9tIFwicnhqc1wiO1xuXG5pbXBvcnQgeyBBYnN0cmFjdERyb3Bkb3duVmlldyB9IGZyb20gXCIuL2Fic3RyYWN0LWRyb3Bkb3duLXZpZXcuY2xhc3NcIjtcbmltcG9ydCB7IEkxOG4gfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9pMThuXCI7XG5pbXBvcnQgeyBMaXN0SXRlbSB9IGZyb20gXCIuL2xpc3QtaXRlbS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IERyb3Bkb3duU2VydmljZSB9IGZyb20gXCIuL2Ryb3Bkb3duLnNlcnZpY2VcIjtcbmltcG9ydCB7IEVsZW1lbnRTZXJ2aWNlLCBnZXRTY3JvbGxhYmxlUGFyZW50cyB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL3V0aWxzXCI7XG5pbXBvcnQgeyBoYXNTY3JvbGxhYmxlUGFyZW50cyB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL3V0aWxzXCI7XG5cbi8qKlxuICogRHJvcC1kb3duIGxpc3RzIGVuYWJsZSB1c2VycyB0byBzZWxlY3Qgb25lIG9yIG1vcmUgaXRlbXMgZnJvbSBhIGxpc3QuXG4gKlxuICogIyMjIyBPcGVuaW5nIGJlaGF2aW9yL0xpc3QgRE9NIHBsYWNlbWVudFxuICogQnkgZGVmYXVsdCB0aGUgZHJvcGRvd24gd2lsbCB0cnkgdG8gZmlndXJlIG91dCB0aGUgYmVzdCBwbGFjZW1lbnQgZm9yIHRoZSBkcm9wZG93biBsaXN0LlxuICpcbiAqIElmIGl0J3Mgbm90IGNvbnRhaW5lZCB3aXRoaW4gYW55IHNjcm9sbGluZyBlbGVtZW50cywgaXQgd2lsbCBvcGVuIGlubGluZSwgaWYgaXQgX2lzX1xuICogY29udGFpbmVkIHdpdGhpbiBhIHNjcm9sbGluZyBjb250YWluZXIgaXQgd2lsbCB0cnkgdG8gb3BlbiBpbiB0aGUgYm9keSwgb3IgYW4gYGNkcy1wbGFjZWhvbGRlcmAuXG4gKlxuICogVG8gY29udHJvbCB0aGlzIGJlaGF2aW9yIHlvdSBjYW4gdXNlIHRoZSBgYXBwZW5kSW5saW5lYCBpbnB1dDpcbiAqIC0gYFthcHBlbmRJbmxpbmVdPVwibnVsbFwiYCBpcyB0aGUgZGVmYXVsdCAoYXV0byBkZXRlY3Rpb24pXG4gKiAtIGBbYXBwZW5kSW5saW5lXT1cImZhbHNlXCJgIHdpbGwgYWx3YXlzIGFwcGVuZCB0byB0aGUgYm9keS9gY2RzLXBsYWNlaG9sZGVyYFxuICogLSBgW2FwcGVuZElubGluZV09XCJ0cnVlXCJgIHdpbGwgYWx3YXlzIGFwcGVuZCBpbmxpbmUgKG5leHQgdG8gdGhlIGRyb3Bkb3duIGJ1dHRvbilcbiAqXG4gKiBHZXQgc3RhcnRlZCB3aXRoIGltcG9ydGluZyB0aGUgbW9kdWxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IERyb3Bkb3duTW9kdWxlIH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWRyb3Bkb3duLS1iYXNpYylcbiAqL1xuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiBcImNkcy1kcm9wZG93biwgaWJtLWRyb3Bkb3duXCIsXG5cdHRlbXBsYXRlOiBgXG5cdDxsYWJlbFxuXHRcdCpuZ0lmPVwibGFiZWwgJiYgIXNrZWxldG9uXCJcblx0XHRbZm9yXT1cImlkXCJcblx0XHRjbGFzcz1cImNkcy0tbGFiZWxcIlxuXHRcdFtuZ0NsYXNzXT1cIntcblx0XHRcdCdjZHMtLWxhYmVsLS1kaXNhYmxlZCc6IGRpc2FibGVkLFxuXHRcdFx0J2Nkcy0tdmlzdWFsbHktaGlkZGVuJzogaGlkZUxhYmVsXG5cdFx0fVwiPlxuXHRcdDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShsYWJlbClcIj57e2xhYmVsfX08L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGxhYmVsKVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsXCI+PC9uZy10ZW1wbGF0ZT5cblx0PC9sYWJlbD5cblx0PGRpdlxuXHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveFwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0J2Nkcy0tZHJvcGRvd24nOiB0eXBlICE9PSAnbXVsdGknLFxuXHRcdFx0J2Nkcy0tbXVsdGlzZWxlY3QnOiB0eXBlID09PSAnbXVsdGknLFxuXHRcdFx0J2Nkcy0tbXVsdGktc2VsZWN0LS1zZWxlY3RlZCc6IHR5cGUgPT09ICdtdWx0aScgJiYgZ2V0U2VsZWN0ZWRDb3VudCgpID4gMCxcblx0XHRcdCdjZHMtLWRyb3Bkb3duLS1saWdodCc6IHRoZW1lID09PSAnbGlnaHQnLFxuXHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG5cdFx0XHQnY2RzLS1saXN0LWJveC0taW5saW5lJzogaW5saW5lLFxuXHRcdFx0J2Nkcy0tc2tlbGV0b24nOiBza2VsZXRvbixcblx0XHRcdCdjZHMtLWRyb3Bkb3duLS1kaXNhYmxlZCBjZHMtLWxpc3QtYm94LS1kaXNhYmxlZCc6IGRpc2FibGVkLFxuXHRcdFx0J2Nkcy0tZHJvcGRvd24tLXJlYWRvbmx5JzogcmVhZG9ubHksXG5cdFx0XHQnY2RzLS1kcm9wZG93bi0taW52YWxpZCc6IGludmFsaWQsXG5cdFx0XHQnY2RzLS1kcm9wZG93bi0td2FybmluZyBjZHMtLWxpc3QtYm94LS13YXJuaW5nJzogd2Fybixcblx0XHRcdCdjZHMtLWRyb3Bkb3duLS1zbSBjZHMtLWxpc3QtYm94LS1zbSc6IHNpemUgPT09ICdzbScsXG5cdFx0XHQnY2RzLS1kcm9wZG93bi0tbWQgY2RzLS1saXN0LWJveC0tbWQnOiBzaXplID09PSAnbWQnLFxuXHRcdFx0J2Nkcy0tZHJvcGRvd24tLWxnIGNkcy0tbGlzdC1ib3gtLWxnJzogc2l6ZSA9PT0gJ2xnJyxcblx0XHRcdCdjZHMtLWxpc3QtYm94LS1leHBhbmRlZCc6ICFtZW51SXNDbG9zZWRcblx0XHR9XCI+XG5cdFx0PGJ1dHRvblxuXHRcdFx0I2Ryb3Bkb3duQnV0dG9uXG5cdFx0XHRbaWRdPVwiaWRcIlxuXHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ZpZWxkXCJcblx0XHRcdFtuZ0NsYXNzXT1cInsnYSc6ICFtZW51SXNDbG9zZWR9XCJcblx0XHRcdFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIW1lbnVJc0Nsb3NlZFwiXG5cdFx0XHRbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuXHRcdFx0YXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuXHRcdFx0KGNsaWNrKT1cImRpc2FibGVkIHx8IHJlYWRvbmx5ID8gJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIDogdG9nZ2xlTWVudSgpXCJcblx0XHRcdChibHVyKT1cIm9uQmx1cigpXCJcblx0XHRcdFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIj5cblx0XHRcdDxkaXZcblx0XHRcdFx0KGNsaWNrKT1cImNsZWFyU2VsZWN0ZWQoKVwiXG5cdFx0XHRcdChrZXlkb3duLmVudGVyKT1cImNsZWFyU2VsZWN0ZWQoKVwiXG5cdFx0XHRcdCpuZ0lmPVwidHlwZSA9PT0gJ211bHRpJyAmJiBnZXRTZWxlY3RlZENvdW50KCkgPiAwXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19zZWxlY3Rpb24gY2RzLS10YWctLWZpbHRlciBjZHMtLWxpc3QtYm94X19zZWxlY3Rpb24tLW11bHRpXCJcblx0XHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFx0W3RpdGxlXT1cImNsZWFyVGV4dFwiPlxuXHRcdFx0XHR7e2dldFNlbGVjdGVkQ291bnQoKX19XG5cdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRmb2N1c2FibGU9XCJmYWxzZVwiXG5cdFx0XHRcdFx0cHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuXHRcdFx0XHRcdHN0eWxlPVwid2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcIlxuXHRcdFx0XHRcdHJvbGU9XCJpbWdcIlxuXHRcdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0XHRcdHdpZHRoPVwiMTZcIlxuXHRcdFx0XHRcdGhlaWdodD1cIjE2XCJcblx0XHRcdFx0XHR2aWV3Qm94PVwiMCAwIDE2IDE2XCJcblx0XHRcdFx0XHRhcmlhLWhpZGRlbj1cInRydWVcIj5cblx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEyIDQuN2wtLjctLjdMOCA3LjMgNC43IDRsLS43LjdMNy4zIDggNCAxMS4zbC43LjdMOCA4LjdsMy4zIDMuMy43LS43TDguNyA4elwiPjwvcGF0aD5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxzcGFuICpuZ0lmPVwiaXNSZW5kZXJTdHJpbmcoKVwiIGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbGFiZWxcIj57e2dldERpc3BsYXlTdHJpbmdWYWx1ZSgpIHwgYXN5bmN9fTwvc3Bhbj5cblx0XHRcdDxuZy10ZW1wbGF0ZVxuXHRcdFx0XHQqbmdJZj1cIiFpc1JlbmRlclN0cmluZygpXCJcblx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImdldFJlbmRlclRlbXBsYXRlQ29udGV4dCgpXCJcblx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiZGlzcGxheVZhbHVlXCI+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PHN2Z1xuXHRcdFx0XHQqbmdJZj1cImludmFsaWRcIlxuXHRcdFx0XHRjbGFzcz1cImNkcy0tZHJvcGRvd25fX2ludmFsaWQtaWNvblwiXG5cdFx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1maWxsZWRcIlxuXHRcdFx0XHRzaXplPVwiMTZcIj5cblx0XHRcdDwvc3ZnPlxuXHRcdFx0PHN2Z1xuXHRcdFx0XHQqbmdJZj1cIiFpbnZhbGlkICYmIHdhcm5cIlxuXHRcdFx0XHRjZHNJY29uPVwid2FybmluZy0tYWx0LS1maWxsZWRcIlxuXHRcdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ludmFsaWQtaWNvbiBjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb24tLXdhcm5pbmdcIj5cblx0XHRcdDwvc3ZnPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51LWljb25cIj5cblx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdCpuZ0lmPVwiIXNrZWxldG9uXCJcblx0XHRcdFx0XHRjZHNJY29uPVwiY2hldnJvbi0tZG93blwiXG5cdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cIm1lbnVCdXR0b25MYWJlbFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxpc3QtYm94X19tZW51LWljb24tLW9wZW4nOiAhbWVudUlzQ2xvc2VkIH1cIj5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHQ8L3NwYW4+XG5cdFx0PC9idXR0b24+XG5cdFx0PGRpdlxuXHRcdFx0I2Ryb3Bkb3duTWVudVxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1saXN0LWJveC0tdXAnOiB0aGlzLmRyb3BVcCAhPT0gbnVsbCAmJiB0aGlzLmRyb3BVcCAhPT0gdW5kZWZpbmVkID8gZHJvcFVwIDogX2Ryb3BVcFxuXHRcdFx0fVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgKm5nSWY9XCIhbWVudUlzQ2xvc2VkXCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGRpdlxuXHRcdCpuZ0lmPVwiaGVscGVyVGV4dCAmJiAhaW52YWxpZCAmJiAhd2FybiAmJiAhc2tlbGV0b25cIlxuXHRcdGNsYXNzPVwiY2RzLS1mb3JtX19oZWxwZXItdGV4dFwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0J2Nkcy0tZm9ybV9faGVscGVyLXRleHQtLWRpc2FibGVkJzogZGlzYWJsZWRcblx0XHR9XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGhlbHBlclRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwiaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7IGludmFsaWRUZXh0IH19PC9uZy1jb250YWluZXI+XG5cdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7d2FyblRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIj48L25nLXRlbXBsYXRlPlxuXHQ8L2Rpdj5cblx0YCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogRHJvcGRvd24sXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93biBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cdHN0YXRpYyBkcm9wZG93bkNvdW50ID0gMDtcblx0QElucHV0KCkgaWQgPSBgZHJvcGRvd24tJHtEcm9wZG93bi5kcm9wZG93bkNvdW50Kyt9YDtcblx0LyoqXG5cdCAqIExhYmVsIGZvciB0aGUgZHJvcGRvd24uXG5cdCAqL1xuXHRASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIEhpZGUgbGFiZWwgd2hpbGUga2VlcGluZyBpdCBhY2Nlc3NpYmxlIGZvciBzY3JlZW4gcmVhZGVyc1xuXHQgKi9cblx0QElucHV0KCkgaGlkZUxhYmVsID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBvcHRpb25hbCBoZWxwZXIgdGV4dC5cblx0ICovXG5cdEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBWYWx1ZSBkaXNwbGF5ZWQgaWYgbm8gaXRlbSBpcyBzZWxlY3RlZC5cblx0ICovXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJcIjtcblx0LyoqXG5cdCAqIFRoZSBzZWxlY3RlZCB2YWx1ZSBmcm9tIHRoZSBgRHJvcGRvd25gLiBDYW4gYmUgYSBzdHJpbmcgb3IgdGVtcGxhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBkaXNwbGF5VmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gPSBcIlwiO1xuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgY2xlYXIgYnV0dG9uIHRvb2x0aXAgdGV4dC5cblx0ICovXG5cdEBJbnB1dCgpIGNsZWFyVGV4dDogc3RyaW5nID0gdGhpcy5pMThuLmdldCgpLkRST1BET1dOLkNMRUFSO1xuXHQvKipcblx0ICogU2l6ZSB0byByZW5kZXIgdGhlIGRyb3Bkb3duIGZpZWxkLlxuXHQgKi9cblx0QElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJtZFwiO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYERyb3Bkb3duYCBzdXBwb3J0cyBzZWxlY3RpbmcgbXVsdGlwbGUgaXRlbXMgYXMgb3Bwb3NlZCB0byBzaW5nbGVcblx0ICogaXRlbSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRASW5wdXQoKSB0eXBlOiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiID0gXCJzaW5nbGVcIjtcblx0LyoqXG5cdCAqIEBkZXByZWNhdGVkIHNpbmNlIHY1IC0gVXNlIGBjZHNMYXllcmAgZGlyZWN0aXZlIGluc3RlYWRcblx0ICogYGxpZ2h0YCBvciBgZGFya2AgZHJvcGRvd24gdGhlbWVcblx0ICovXG5cdEBJbnB1dCgpIHRoZW1lOiBcImxpZ2h0XCIgfCBcImRhcmtcIiA9IFwiZGFya1wiO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBkaXNhYmxlIHRoZSBkcm9wZG93bi5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIHJlYWRvbmx5IHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyBkcm9wZG93bi5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhbiBpbmxpbmUgZHJvcGRvd24uXG5cdCAqL1xuXHRASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgZHJvcGRvd24gd2l0aG91dCBhcnJvdyBrZXkgYWN0aXZhdGlvbi5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVBcnJvd0tleXMgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBWYWx1ZSBkaXNwbGF5ZWQgaWYgZHJvcGRvd24gaXMgaW4gaW52YWxpZCBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWRUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICAqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyBhIHdhcm5pbmcgKGNvbnRlbnRzIHNldCBieSB3YXJuaW5nVGV4dClcblx0ICAqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogc2V0IHRvIGB0cnVlYCB0byBwbGFjZSB0aGUgZHJvcGRvd24gdmlldyBpbmxpbmUgd2l0aCB0aGUgY29tcG9uZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcHBlbmRJbmxpbmU6IGJvb2xlYW4gPSBudWxsO1xuXHQvKipcblx0ICogUXVlcnkgc3RyaW5nIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBgRHJvcGRvd25gLlxuXHQgKiBVc2VkIHRvIHRyaWdnZXIgY2xvc2luZyB0aGUgZHJvcGRvd24gaWYgaXQgc2Nyb2xscyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydCBvZiB0aGUgYHNjcm9sbGFibGVDb250YWluZXJgLlxuXHQgKi9cblx0QElucHV0KCkgc2Nyb2xsYWJsZUNvbnRhaW5lcjogc3RyaW5nO1xuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBwcm9wZXJ0eSB0byBiZSB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgdG8gYG5nTW9kZWxgXG5cdCAqL1xuXHRASW5wdXQoKSBpdGVtVmFsdWVLZXk6IHN0cmluZztcblx0LyoqXG5cdCAqIFNwZWNpZnkgZmVlZGJhY2sgKG1vZGUpIG9mIHRoZSBzZWxlY3Rpb24uXG5cdCAqIGB0b3BgOiBzZWxlY3RlZCBpdGVtIGp1bXBzIHRvIHRvcFxuXHQgKiBgZml4ZWRgOiBzZWxlY3RlZCBpdGVtIHN0YXlzIGF0IGl0J3MgcG9zaXRpb25cblx0ICogYHRvcC1hZnRlci1yZW9wZW5gOiBzZWxlY3RlZCBpdGVtIGp1bXAgdG8gdG9wIGFmdGVyIHJlb3BlbiBkcm9wZG93blxuXHQgKi9cblx0QElucHV0KCkgc2VsZWN0aW9uRmVlZGJhY2s6IFwidG9wXCIgfCBcImZpeGVkXCIgfCBcInRvcC1hZnRlci1yZW9wZW5cIiA9IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHQvKipcblx0ICogQWNjZXNzaWJsZSBsYWJlbCBmb3IgdGhlIGJ1dHRvbiB0aGF0IG9wZW5zIHRoZSBkcm9wZG93biBsaXN0LlxuXHQgKiBEZWZhdWx0cyB0byB0aGUgYERST1BET1dOLk9QRU5gIHZhbHVlIGZyb20gdGhlIGkxOG4gc2VydmljZS5cblx0ICovXG5cdEBJbnB1dCgpIG1lbnVCdXR0b25MYWJlbCA9IHRoaXMuaTE4bi5nZXQoKS5EUk9QRE9XTi5PUEVOO1xuXHQvKipcblx0ICogUHJvdmlkZXMgdGhlIGxhYmVsIGZvciB0aGUgXCIjIHNlbGVjdGVkXCIgdGV4dC5cblx0ICogRGVmYXVsdHMgdG8gdGhlIGBEUk9QRE9XTi5TRUxFQ1RFRGAgdmFsdWUgZnJvbSB0aGUgaTE4biBzZXJ2aWNlLlxuXHQgKi9cblx0QElucHV0KCkgc2VsZWN0ZWRMYWJlbCA9IHRoaXMuaTE4bi5nZXQoKS5EUk9QRE9XTi5TRUxFQ1RFRDtcblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIGRyb3BVcC5cblx0ICovXG5cdEBJbnB1dCgpIGRyb3BVcDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIEVtaXRzIHNlbGVjdGlvbiBldmVudHMuXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cdC8qKlxuXHQgKiBFbWl0cyBldmVudCBub3RpZnlpbmcgdG8gb3RoZXIgY2xhc3NlcyB0aGF0IHRoZSBgRHJvcGRvd25gIGhhcyBiZWVuIGNsb3NlZCAoY29sbGFwc2VkKS5cblx0ICovXG5cdEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXHQvKipcblx0ICogRW1pdHMgZXZlbnQgbm90aWZ5aW5nIHRvIG90aGVyIGNsYXNzZXMgdGhhdCB0aGUgYERyb3Bkb3duYCBoYXMgYmVlbiBjbG9zZWQgKGNvbGxhcHNlZCkuXG5cdCAqL1xuXHRAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblx0LyoqXG5cdCAqIE1haW50YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgYEFic3RyYWN0RHJvcGRvd25WaWV3YCBvYmplY3Qgd2l0aGluIHRoZSBjb250ZW50IERPTS5cblx0ICovXG5cdEBDb250ZW50Q2hpbGQoQWJzdHJhY3REcm9wZG93blZpZXcsIHsgc3RhdGljOiB0cnVlIH0pIHZpZXc6IEFic3RyYWN0RHJvcGRvd25WaWV3O1xuXHQvKipcblx0ICogTWFpbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3IERPTSBlbGVtZW50IG9mIHRoZSBgRHJvcGRvd25gIGJ1dHRvbi5cblx0ICovXG5cdEBWaWV3Q2hpbGQoXCJkcm9wZG93bkJ1dHRvblwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkJ1dHRvbjtcblx0LyoqXG5cdCAqIFZpZXdDaGlkIG9mIHRoZSBkcm9wZG93biB2aWV3LlxuXHQgKi9cblx0QFZpZXdDaGlsZChcImRyb3Bkb3duTWVudVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bk1lbnU7XG5cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1kcm9wZG93bl9fd3JhcHBlclwiKSBob3N0Q2xhc3MgPSB0cnVlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBpZiB0aGUgZHJvcGRvd24gaXMgY2xvc2VkIChub3QgZXhwYW5kZWQpLlxuXHQgKi9cblx0bWVudUlzQ2xvc2VkID0gdHJ1ZTtcblxuXHQvKipcblx0ICogY29udHJvbHMgd2hldGhlciB0aGUgYGRyb3AtdXBgIGNsYXNzIGlzIGFwcGxpZWRcblx0ICovXG5cdF9kcm9wVXAgPSBmYWxzZTtcblxuXHQvLyAuYmluZCBjcmVhdGVzIGEgbmV3IGZ1bmN0aW9uLCBzbyB3ZSBkZWNsYXJlIHRoZSBtZXRob2RzIGJlbG93XG5cdC8vIGJ1dCAuYmluZCB0aGVtIHVwIGhlcmVcblx0bm9vcCA9IHRoaXMuX25vb3AuYmluZCh0aGlzKTtcblx0b3V0c2lkZUNsaWNrID0gdGhpcy5fb3V0c2lkZUNsaWNrLmJpbmQodGhpcyk7XG5cdG91dHNpZGVLZXkgPSB0aGlzLl9vdXRzaWRlS2V5LmJpbmQodGhpcyk7XG5cdGtleWJvYXJkTmF2ID0gdGhpcy5fa2V5Ym9hcmROYXYuYmluZCh0aGlzKTtcblxuXHRwcm90ZWN0ZWQgdmlzaWJpbGl0eVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuXHRwcm90ZWN0ZWQgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSB0aGlzLl9ub29wO1xuXG5cdC8vIHByaW1hcmlseSB1c2VkIHRvIGNhcHR1cmUgYW5kIHByb3BhZ2F0ZSBpbnB1dCB0byBgd3JpdGVWYWx1ZWAgYmVmb3JlIHRoZSBjb250ZW50IGlzIGF2YWlsYWJsZVxuXHRwcml2YXRlIF93cml0dGVuVmFsdWU6IGFueSA9IFtdO1xuXHRwcm90ZWN0ZWQgZ2V0IHdyaXR0ZW5WYWx1ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fd3JpdHRlblZhbHVlO1xuXHR9XG5cdHByb3RlY3RlZCBzZXQgd3JpdHRlblZhbHVlKHZhbDogYW55W10pIHtcblx0XHRpZiAodmFsICYmIHZhbC5sZW5ndGggPT09IDApIHtcblx0XHRcdHRoaXMuY2xlYXJTZWxlY3RlZCgpO1xuXHRcdH1cblx0XHR0aGlzLl93cml0dGVuVmFsdWUgPSB2YWw7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBEcm9wZG93bi5cblx0ICovXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBpMThuOiBJMThuLFxuXHRcdHByb3RlY3RlZCBkcm9wZG93blNlcnZpY2U6IERyb3Bkb3duU2VydmljZSxcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFNlcnZpY2U6IEVsZW1lbnRTZXJ2aWNlKSB7fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBgdHlwZWAgcHJvcGVydHkgaW4gdGhlIGBAQ29udGVudENoaWxkYC5cblx0ICogVGhlIGB0eXBlYCBwcm9wZXJ0eSBzcGVjaWZpZXMgd2hldGhlciB0aGUgYERyb3Bkb3duYCBhbGxvd3Mgc2luZ2xlIHNlbGVjdGlvbiBvciBtdWx0aSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRuZ09uSW5pdCgpIHtcblx0XHRpZiAodGhpcy52aWV3KSB7XG5cdFx0XHR0aGlzLnZpZXcudHlwZSA9IHRoaXMudHlwZTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgY2xhc3NlcyBhbmQgc3Vic2NyaWJlcyB0byBldmVudHMgZm9yIHNpbmdsZSBvciBtdWx0aSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRuZ0FmdGVyQ29udGVudEluaXQoKSB7XG5cdFx0aWYgKCF0aGlzLnZpZXcpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCh0aGlzLndyaXR0ZW5WYWx1ZSAmJiB0aGlzLndyaXR0ZW5WYWx1ZS5sZW5ndGgpIHx8IHR5cGVvZiB0aGlzLndyaXR0ZW5WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuXHRcdFx0dGhpcy53cml0ZVZhbHVlKHRoaXMud3JpdHRlblZhbHVlKTtcblx0XHR9XG5cdFx0dGhpcy52aWV3LnR5cGUgPSB0aGlzLnR5cGU7XG5cdFx0dGhpcy52aWV3LnNpemUgPSB0aGlzLnNpemU7XG5cblx0XHQvLyBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZXZlbnQgaXMgb3JnYW5pYyAoaXNVcGRhdGUgPT09IGZhbHNlKSBvciBwcm9ncmFtbWF0aWNcblx0XHRjb25zdCBpc1VwZGF0ZSA9IGV2ZW50ID0+IGV2ZW50ICYmIGV2ZW50LmlzVXBkYXRlO1xuXG5cdFx0dGhpcy52aWV3LnNlbGVjdC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuXHRcdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIiAmJiAhaXNVcGRhdGUoZXZlbnQpICYmICFBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuXHRcdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdFx0XHRpZiAoZXZlbnQuaXRlbSAmJiBldmVudC5pdGVtLnNlbGVjdGVkKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShldmVudC5pdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKGV2ZW50Lml0ZW0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy50eXBlID09PSBcIm11bHRpXCIgJiYgIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHQvLyBpZiB3ZSBoYXZlIGEgYHZhbHVlYCBzZWxlY3RvciBhbmQgc2VsZWN0ZWQgaXRlbXMgbWFwIHRoZW0gYXBwcm9wcmlhdGVseVxuXHRcdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkgJiYgdGhpcy52aWV3LmdldFNlbGVjdGVkKCkpIHtcblx0XHRcdFx0XHRjb25zdCB2YWx1ZXMgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKS5tYXAoaXRlbSA9PiBpdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSk7XG5cdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodmFsdWVzKTtcblx0XHRcdFx0XHQvLyBvdGhlcndpc2UganVzdCBwYXNzIHVwIHRoZSB2YWx1ZXMgZnJvbSBgZ2V0U2VsZWN0ZWRgXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52aWV3LmdldFNlbGVjdGVkKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvLyBvbmx5IGVtaXQgc2VsZWN0ZWQgZm9yIFwib3JnYW5pY1wiIHNlbGVjdGlvbnNcblx0XHRcdGlmICghaXNVcGRhdGUoZXZlbnQpKSB7XG5cdFx0XHRcdHRoaXMuY2hlY2tGb3JSZW9yZGVyKCk7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWQuZW1pdChldmVudCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0Ly8gaWYgYXBwZW5kSW5saW5lIGlzIGRlZmF1bHQgdmFsdWVkIChudWxsKSB3ZSBzaG91bGQ6XG5cdFx0Ly8gMS4gaWYgdGhlcmUgYXJlIHNjcm9sbGFibGUgcGFyZW50cyAobm90IGluY2x1ZGluZyBib2R5KSBkb24ndCBhcHBlbmQgaW5saW5lXG5cdFx0Ly8gICAgdGhpcyBzaG91bGQgYWxzbyBjb3ZlciB0aGUgY2FzZSB3aGVyZSB0aGUgZHJvcGRvd24gaXMgaW4gYSBtb2RhbFxuXHRcdC8vICAgICh3aGVyZSB3ZSBfZG9fIHdhbnQgdG8gYXBwZW5kIHRvIHRoZSBwbGFjZWhvbGRlcilcblx0XHRpZiAodGhpcy5hcHBlbmRJbmxpbmUgPT09IG51bGwgJiYgaGFzU2Nyb2xsYWJsZVBhcmVudHModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKSB7XG5cdFx0XHR0aGlzLmFwcGVuZElubGluZSA9IGZhbHNlO1xuXHRcdFx0Ly8gMi4gb3RoZXJ3aXNlIHdlIHNob3VsZCBhcHBlbmQgaW5saW5lXG5cdFx0fSBlbHNlIGlmICh0aGlzLmFwcGVuZElubGluZSA9PT0gbnVsbCkge1xuXHRcdFx0dGhpcy5hcHBlbmRJbmxpbmUgPSB0cnVlO1xuXHRcdH1cblx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92aW5nIHRoZSBgRHJvcGRvd25gIGZyb20gdGhlIGJvZHkgaWYgaXQgaXMgYXBwZW5kZWQgdG8gdGhlIGJvZHkuXG5cdCAqL1xuXHRuZ09uRGVzdHJveSgpIHtcblx0XHRpZiAoIXRoaXMuYXBwZW5kSW5saW5lKSB7XG5cdFx0XHR0aGlzLl9hcHBlbmRUb0Ryb3Bkb3duKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFByb3BhZ2F0ZXMgdGhlIGluamVjdGVkIGB2YWx1ZWAuXG5cdCAqL1xuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcblx0XHQvLyBjYWNoZSB0aGUgd3JpdHRlbiB2YWx1ZSBzbyB3ZSBjYW4gdXNlIGl0IGluIGBBZnRlckNvbnRlbnRJbml0YFxuXHRcdHRoaXMud3JpdHRlblZhbHVlID0gdmFsdWU7XG5cdFx0dGhpcy52aWV3Lm9uSXRlbXNSZWFkeSgoKSA9PiB7XG5cdFx0XHQvLyBwcm9wYWdhdGUgbnVsbC9mYWxzZXkgYXMgYW4gYXJyYXkgKGRlc2VsZWN0IGV2ZXJ5dGhpbmcpXG5cdFx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZChbdmFsdWVdKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy50eXBlID09PSBcInNpbmdsZVwiKSB7XG5cdFx0XHRcdGlmICh0aGlzLml0ZW1WYWx1ZUtleSkge1xuXHRcdFx0XHRcdC8vIGNsb25lIHRoZSBzcGVjaWZpZWQgaXRlbSBhbmQgdXBkYXRlIGl0cyBzdGF0ZVxuXHRcdFx0XHRcdGNvbnN0IG5ld1ZhbHVlID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy52aWV3LmdldExpc3RJdGVtcygpLmZpbmQoaXRlbSA9PiBpdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSA9PT0gdmFsdWUpKTtcblx0XHRcdFx0XHRuZXdWYWx1ZS5zZWxlY3RlZCA9IHRydWU7XG5cdFx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKFtuZXdWYWx1ZV0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHBhc3MgdGhlIHNpbmd1bGFyIHZhbHVlIGFzIGFuIGFycmF5IG9mIExpc3RJdGVtXG5cdFx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKFt2YWx1ZV0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkpIHtcblx0XHRcdFx0XHQvLyBjbG9uZSB0aGUgaXRlbXMgYW5kIHVwZGF0ZSB0aGVpciBzdGF0ZSBiYXNlZCBvbiB0aGUgcmVjZWl2ZWQgdmFsdWUgYXJyYXlcblx0XHRcdFx0XHQvLyB0aGlzIHdheSB3ZSBkb24ndCBsb3NlIGFueSBhZGRpdGlvbmFsIG1ldGFkYXRhIHRoYXQgbWF5IGJlIHBhc3NlZCBpbiB2aWEgdGhlIGBpdGVtc2AgSW5wdXRcblx0XHRcdFx0XHRsZXQgbmV3VmFsdWVzID0gW107XG5cdFx0XHRcdFx0Zm9yIChjb25zdCB2IG9mIHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy52aWV3LmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtW3RoaXMuaXRlbVZhbHVlS2V5XSA9PT0gdikge1xuXHRcdFx0XHRcdFx0XHRcdG5ld1ZhbHVlcy5wdXNoKE9iamVjdC5hc3NpZ24oe30sIGl0ZW0sIHsgc2VsZWN0ZWQ6IHRydWUgfSkpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZChuZXdWYWx1ZXMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHdlIGNhbiBzYWZlbHkgYXNzdW1lIHdlJ3JlIHBhc3NpbmcgYW4gYXJyYXkgb2YgYExpc3RJdGVtYHNcblx0XHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQodmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25CbHVyKCkge1xuXHRcdHRoaXMub25Ub3VjaGVkQ2FsbGJhY2soKTtcblx0fVxuXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXJpbmcgdGhlIGZ1bmN0aW9uIGluamVjdGVkIHRvIGNvbnRyb2wgdGhlIHRvdWNoIHVzZSBvZiB0aGUgYERyb3Bkb3duYC5cblx0ICovXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrID0gZm47XG5cdH1cblxuXHQvKipcblx0ICogZnVuY3Rpb24gcGFzc2VkIGluIGJ5IGByZWdpc3Rlck9uQ2hhbmdlYFxuXHQgKi9cblx0cHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuXG5cdC8qKlxuXHQgKiBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIG1ldGhvZCB0byBwcm9ncmFtbWF0aWNhbGx5IGRpc2FibGUgdGhlIGRyb3Bkb3duLlxuXHQgKlxuXHQgKiBleDogYHRoaXMuZm9ybUdyb3VwLmdldChcIm15RHJvcGRvd25cIikuZGlzYWJsZSgpO2Bcblx0ICpcblx0ICogQHBhcmFtIGlzRGlzYWJsZWQgYHRydWVgIHRvIGRpc2FibGUgdGhlIGlucHV0XG5cdCAqL1xuXHRzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIGtleWJvYXJkIGZ1bmN0aW9uYWxpdHkgZm9yIG5hdmlnYXRpb24sIHNlbGVjdGlvbiBhbmQgY2xvc2luZyBvZiB0aGUgYERyb3Bkb3duYC5cblx0ICovXG5cdEBIb3N0TGlzdGVuZXIoXCJrZXlkb3duXCIsIFtcIiRldmVudFwiXSlcblx0b25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKHRoaXMucmVhZG9ubHkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikgJiYgIXRoaXMubWVudUlzQ2xvc2VkKSB7XG5cdFx0XHRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsgIC8vIGRvbid0IHVuaW50ZW50aW9uYWxseSBjbG9zZSBvdGhlciB3aWRnZXRzIHRoYXQgbGlzdGVuIGZvciBFc2NhcGVcblx0XHR9XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIikge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMuY2xvc2VNZW51KCk7XG5cdFx0XHR0aGlzLmRyb3Bkb3duQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHR9IGVsc2UgaWYgKHRoaXMubWVudUlzQ2xvc2VkICYmIChldmVudC5rZXkgPT09IFwiIFwiIHx8IGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIiB8fCBldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSkge1xuXHRcdFx0aWYgKHRoaXMuZGlzYWJsZUFycm93S2V5cyAmJiAoZXZlbnQua2V5ID09PSBcIkFycm93RG93blwiIHx8IGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLm9wZW5NZW51KCk7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLm1lbnVJc0Nsb3NlZCAmJiBldmVudC5rZXkgPT09IFwiVGFiXCIgJiYgdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkpIHtcblx0XHRcdHRoaXMuY2xvc2VNZW51KCk7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLm1lbnVJc0Nsb3NlZCAmJiBldmVudC5rZXkgPT09IFwiVGFiXCIgJiYgZXZlbnQuc2hpZnRLZXkpIHtcblx0XHRcdHRoaXMuY2xvc2VNZW51KCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiKSB7IHJldHVybjsgfVxuXG5cdFx0aWYgKHRoaXMubWVudUlzQ2xvc2VkKSB7XG5cdFx0XHR0aGlzLmNsb3NlZERyb3Bkb3duTmF2aWdhdGlvbihldmVudCk7XG5cdFx0fVxuXHR9XG5cblx0Y2xvc2VkRHJvcGRvd25OYXZpZ2F0aW9uKGV2ZW50KSB7XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIikge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHRoaXMudmlldy5nZXRDdXJyZW50SXRlbSgpLnNlbGVjdGVkID0gZmFsc2U7XG5cdFx0XHRsZXQgaXRlbSA9IHRoaXMudmlldy5nZXROZXh0SXRlbSgpO1xuXHRcdFx0aWYgKGl0ZW0pIHsgaXRlbS5zZWxlY3RlZCA9IHRydWU7IH1cblx0XHR9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd1VwXCIpIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLnZpZXcuZ2V0Q3VycmVudEl0ZW0oKS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0bGV0IGl0ZW0gPSB0aGlzLnZpZXcuZ2V0UHJldkl0ZW0oKTtcblx0XHRcdGlmIChpdGVtKSB7IGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOyB9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGRpc3BsYXkgdmFsdWUgaWYgdGhlcmUgaXMgYSBzZWxlY3Rpb24gYW5kIGRpc3BsYXlWYWx1ZSBpcyBzZXQsXG5cdCAqIGlmIHRoZXJlIGlzIGp1c3QgYSBzZWxlY3Rpb24gdGhlIExpc3RJdGVtIGNvbnRlbnQgcHJvcGVydHkgd2lsbCBiZSByZXR1cm5lZCxcblx0ICogb3RoZXJ3aXNlIHRoZSBwbGFjZWhvbGRlciB3aWxsIGJlIHJldHVybmVkLlxuXHQgKi9cblx0Z2V0RGlzcGxheVN0cmluZ1ZhbHVlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG5cdFx0aWYgKCF0aGlzLnZpZXcgfHwgdGhpcy5za2VsZXRvbikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHRpZiAoc2VsZWN0ZWQubGVuZ3RoICYmICghdGhpcy5kaXNwbGF5VmFsdWUgfHwgIXRoaXMuaXNSZW5kZXJTdHJpbmcoKSkpIHtcblx0XHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIikge1xuXHRcdFx0XHRyZXR1cm4gb2YodGhpcy5wbGFjZWhvbGRlcik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gb2Yoc2VsZWN0ZWRbMF0uY29udGVudCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmIChzZWxlY3RlZC5sZW5ndGggJiYgdGhpcy5pc1JlbmRlclN0cmluZygpKSB7XG5cdFx0XHRyZXR1cm4gb2YodGhpcy5kaXNwbGF5VmFsdWUgYXMgc3RyaW5nKTtcblx0XHR9XG5cdFx0cmV0dXJuIG9mKHRoaXMucGxhY2Vob2xkZXIpO1xuXHR9XG5cblx0aXNSZW5kZXJTdHJpbmcoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHR5cGVvZiB0aGlzLmRpc3BsYXlWYWx1ZSA9PT0gXCJzdHJpbmdcIjtcblx0fVxuXG5cdGdldFJlbmRlclRlbXBsYXRlQ29udGV4dCgpIHtcblx0XHRpZiAoIXRoaXMudmlldykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRsZXQgc2VsZWN0ZWQgPSB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKTtcblx0XHRpZiAodGhpcy50eXBlID09PSBcIm11bHRpXCIpIHtcblx0XHRcdHJldHVybiB7IGl0ZW1zOiBzZWxlY3RlZCB9O1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWQgJiYgc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuXHRcdFx0cmV0dXJuIHsgaXRlbTogc2VsZWN0ZWRbMF0gfTsgLy8gdGhpcyBpcyB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGRyb3Bkb3duLWxpc3QgdGVtcGxhdGVcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHt9O1xuXHRcdH1cblx0fVxuXG5cdGdldFNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcblx0XHRpZiAodGhpcy52aWV3LmdldFNlbGVjdGVkKCkpIHtcblx0XHRcdHJldHVybiB0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKS5sZW5ndGg7XG5cdFx0fVxuXHR9XG5cblx0Y2xlYXJTZWxlY3RlZCgpIHtcblx0XHRpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLmdldFNlbGVjdGVkQ291bnQoKSA9PT0gMCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy52aWV3LmdldExpc3RJdGVtcygpKSB7XG5cdFx0XHRpdGVtLnNlbGVjdGVkID0gZmFsc2U7XG5cdFx0fVxuXHRcdHRoaXMuc2VsZWN0ZWQuZW1pdChbXSk7XG5cdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UoW10pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYHRydWVgIGlmIHRoZXJlIGlzIGEgdmFsdWUgc2VsZWN0ZWQuXG5cdCAqL1xuXHR2YWx1ZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuXHRcdGlmICh0aGlzLnZpZXcuZ2V0U2VsZWN0ZWQoKSkgeyByZXR1cm4gdHJ1ZTsgfVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9ub29wKCkgeyB9XG5cdC8qKlxuXHQgKiBIYW5kbGVzIGNsaWNrcyBvdXRzaWRlIG9mIHRoZSBgRHJvcGRvd25gLlxuXHQgKi9cblx0X291dHNpZGVDbGljayhldmVudCkge1xuXHRcdGlmICghdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuXHRcdFx0Ly8gaWYgd2UncmUgYXBwZW5kVG9Cb2R5IHRoZSBsaXN0IGlzbid0IHdpdGhpbiB0aGUgX2VsZW1lbnRSZWYsXG5cdFx0XHQvLyBzbyB3ZSd2ZSBnb3QgdG8gY2hlY2sgaWYgb3VyIHRhcmdldCBpcyBwb3NzaWJseSBpbiB0aGVyZSB0b28uXG5cdFx0XHQhdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdH1cblx0fVxuXHRfb3V0c2lkZUtleShldmVudCkge1xuXHRcdGlmICghdGhpcy5tZW51SXNDbG9zZWQgJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiICYmIHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdH1cblx0fVxuXHQvKipcblx0ICogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgc28gdXNlcnMgYXJlIGNvbnRyb2xsaW5nIHRoZSBgRHJvcGRvd25gIGluc3RlYWQgb2YgdW5pbnRlbnRpb25hbGx5IGNvbnRyb2xsaW5nIG91dHNpZGUgZWxlbWVudHMuXG5cdCAqL1xuXHRfa2V5Ym9hcmROYXYoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcblx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiICYmICF0aGlzLm1lbnVJc0Nsb3NlZCkge1xuXHRcdFx0ZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7ICAvLyBkb24ndCB1bmludGVudGlvbmFsbHkgY2xvc2UgbW9kYWwgaWYgaW5zaWRlIG9mIGl0XG5cdFx0fVxuXHRcdGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdFx0dGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fSBlbHNlIGlmICghdGhpcy5tZW51SXNDbG9zZWQgJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiKSB7XG5cdFx0XHQvLyB0aGlzIHdheSBmb2N1cyB3aWxsIHN0YXJ0IG9uIHRoZSBuZXh0IGZvY3VzYWJsZSBpdGVtIGZyb20gdGhlIGRyb3Bkb3duXG5cdFx0XHQvLyBub3QgdGhlIHRvcCBvZiB0aGUgYm9keSFcblx0XHRcdHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdFx0dGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50LmRpc3BhdGNoRXZlbnQobmV3IEtleWJvYXJkRXZlbnQoXCJrZXlkb3duXCIsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSwga2V5OiBcIlRhYlwiIH0pKTtcblx0XHRcdHRoaXMuY2xvc2VNZW51KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGBEcm9wZG93bmAgbGlzdCBhcHBlbmRpbmcgaXQgdG8gdGhlIGRyb3Bkb3duIHBhcmVudCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgYm9keS5cblx0ICovXG5cdF9hcHBlbmRUb0Ryb3Bkb3duKCkge1xuXHRcdHRoaXMuZHJvcGRvd25TZXJ2aWNlLmFwcGVuZFRvRHJvcGRvd24odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXHRcdHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5rZXlib2FyZE5hdiwgdHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgYERyb3Bkb3duYCBsaXN0IGFzIGFuIGVsZW1lbnQgdGhhdCBpcyBhcHBlbmRlZCB0byB0aGUgRE9NIGJvZHkuXG5cdCAqL1xuXHRfYXBwZW5kVG9Cb2R5KCkge1xuXHRcdGNvbnN0IGxpZ2h0Q2xhc3MgPSB0aGlzLnRoZW1lID09PSBcImxpZ2h0XCIgPyBcIiBjZHMtLWxpc3QtYm94LS1saWdodFwiIDogXCJcIjtcblx0XHRjb25zdCBleHBhbmRlZENsYXNzID0gIXRoaXMubWVudUlzQ2xvc2VkID8gXCIgY2RzLS1saXN0LWJveC0tZXhwYW5kZWRcIiA6IFwiXCI7XG5cdFx0dGhpcy5kcm9wZG93blNlcnZpY2UuYXBwZW5kVG9Cb2R5KFxuXHRcdFx0dGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50LFxuXHRcdFx0dGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudCxcblx0XHRcdGAke3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTmFtZX0ke2xpZ2h0Q2xhc3N9JHtleHBhbmRlZENsYXNzfWApO1xuXHRcdHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5rZXlib2FyZE5hdiwgdHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogRGV0ZWN0cyB3aGV0aGVyIG9yIG5vdCB0aGUgYERyb3Bkb3duYCBsaXN0IGlzIHZpc2libGUgd2l0aGluIGFsbCBzY3JvbGxhYmxlIHBhcmVudHMuXG5cdCAqIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgcGFzc2luZyBpbiBhIHZhbHVlIHRvIHRoZSBgZHJvcFVwYCBpbnB1dC5cblx0ICovXG5cdF9zaG91bGREcm9wVXAoKSB7XG5cdFx0Ly8gY2hlY2sgaWYgZHJvcGRvd25NZW51IGV4aXN0cyBmaXJzdC5cblx0XHRjb25zdCBtZW51ID0gdGhpcy5kcm9wZG93bk1lbnUgJiYgdGhpcy5kcm9wZG93bk1lbnUubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwiLmNkcy0tbGlzdC1ib3hfX21lbnVcIik7XG5cdFx0Ly8gY2hlY2sgaWYgbWVudSBleGlzdHMgZmlyc3QuXG5cdFx0Y29uc3QgbWVudVJlY3QgPSBtZW51ICYmIG1lbnUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0aWYgKG1lbnUgJiYgbWVudVJlY3QpIHtcblx0XHRcdGNvbnN0IHNjcm9sbGFibGVQYXJlbnRzID0gZ2V0U2Nyb2xsYWJsZVBhcmVudHMobWVudSk7XG5cdFx0XHRyZXR1cm4gc2Nyb2xsYWJsZVBhcmVudHMucmVkdWNlKChzaG91bGREcm9wVXA6IGJvb2xlYW4sIHBhcmVudDogSFRNTEVsZW1lbnQpID0+IHtcblx0XHRcdFx0Y29uc3QgcGFyZW50UmVjdCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblx0XHRcdFx0Y29uc3QgaXNCZWxvd1BhcmVudCA9ICEobWVudVJlY3QuYm90dG9tIDw9IHBhcmVudFJlY3QuYm90dG9tKTtcblx0XHRcdFx0cmV0dXJuIHNob3VsZERyb3BVcCB8fCBpc0JlbG93UGFyZW50O1xuXHRcdFx0fSwgZmFsc2UpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBhbmRzIHRoZSBkcm9wZG93biBtZW51IGluIHRoZSB2aWV3LlxuXHQgKi9cblx0b3Blbk1lbnUoKSB7XG5cdFx0Ly8gcHJldmVudHMgdGhlIGRyb3Bkb3duIGZyb20gb3BlbmluZyB3aGVuIGxpc3Qgb2YgaXRlbXMgaXMgZW1wdHlcblx0XHRpZiAodGhpcy52aWV3LmdldExpc3RJdGVtcygpLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuX2Ryb3BVcCA9IGZhbHNlO1xuXHRcdHRoaXMubWVudUlzQ2xvc2VkID0gZmFsc2U7XG5cblx0XHQvLyBtb3ZlIHRoZSBkcm9wZG93biBsaXN0IHRvIHRoZSBib2R5IGlmIHdlJ3JlIG5vdCBhcHBlbmRpbmcgaW5saW5lXG5cdFx0Ly8gYW5kIHBvc2l0aW9uIGl0IHJlbGF0aXZlIHRvIHRoZSBkcm9wZG93biB3cmFwcGVyXG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0Y29uc3QgdGFyZ2V0ID0gdGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0Y29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cdFx0XHR0aGlzLnZpc2liaWxpdHlTdWJzY3JpcHRpb24gPSB0aGlzLmVsZW1lbnRTZXJ2aWNlXG5cdFx0XHRcdC52aXNpYmlsaXR5KHRhcmdldCwgcGFyZW50KVxuXHRcdFx0XHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcblx0XHRcdFx0XHRpZiAoIXZhbHVlLnZpc2libGUpIHtcblx0XHRcdFx0XHRcdHRoaXMuY2xvc2VNZW51KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdHRoaXMuX2FwcGVuZFRvQm9keSgpO1xuXHRcdH1cblxuXHRcdC8vIHNldCB0aGUgZHJvcGRvd24gbWVudSB0byBkcm9wIHVwIGlmIGl0J3MgbmVhciB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW5cblx0XHQvLyBzZXRUaW1lb3V0IGxldHMgdXMgbWVhc3VyZSBhZnRlciBpdCdzIHZpc2libGUgaW4gdGhlIERPTVxuXHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZHJvcFVwID09PSBudWxsIHx8IHRoaXMuZHJvcFVwID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0dGhpcy5fZHJvcFVwID0gdGhpcy5fc2hvdWxkRHJvcFVwKCk7XG5cdFx0XHR9XG5cdFx0fSwgMCk7XG5cblx0XHQvLyB3ZSBiaW5kIG5vb3AgdG8gZG9jdW1lbnQuYm9keS5maXJzdEVsZW1lbnRDaGlsZCB0byBhbGxvdyBzYWZhcmkgdG8gZmlyZSBldmVudHNcblx0XHQvLyBmcm9tIGRvY3VtZW50LiBUaGVuIHdlIHVuYmluZCBldmVyeXRoaW5nIGxhdGVyIHRvIGtlZXAgdGhpbmdzIGxpZ2h0LlxuXHRcdGRvY3VtZW50LmJvZHkuZmlyc3RFbGVtZW50Q2hpbGQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMubm9vcCwgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQuYm9keS5maXJzdEVsZW1lbnRDaGlsZC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLm5vb3AsIHRydWUpO1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm91dHNpZGVDbGljaywgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5vdXRzaWRlS2V5LCB0cnVlKTtcblx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMudmlldy5pbml0Rm9jdXMoKSwgMCk7XG5cdH1cblxuXHQvKipcblx0ICogQ29sbGFwc2luZyB0aGUgZHJvcGRvd24gbWVudSBhbmQgcmVtb3ZpbmcgdW5uZWNlc3NhcnkgYEV2ZW50TGlzdGVuZXJzYC5cblx0ICovXG5cdGNsb3NlTWVudSgpIHtcblx0XHQvLyByZXR1cm4gZWFybHkgaWYgdGhlIG1lbnUgaXMgYWxyZWFkeSBjbG9zZWRcblx0XHRpZiAodGhpcy5tZW51SXNDbG9zZWQpIHsgcmV0dXJuOyB9XG5cdFx0dGhpcy5tZW51SXNDbG9zZWQgPSB0cnVlO1xuXHRcdHRoaXMuY2hlY2tGb3JSZW9yZGVyKCk7XG5cdFx0dGhpcy5vbkNsb3NlLmVtaXQoKTtcblx0XHR0aGlzLmNsb3NlLmVtaXQoKTtcblxuXHRcdC8vIGZvY3VzIHRoZSB0cmlnZ2VyIGJ1dHRvbiB3aGVuIHdlIGNsb3NlIC4uLlxuXHRcdHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG5cdFx0Ly8gcmVtb3ZlIHRoZSBjb25kaXRpb25hbCBvbmNlIHRoaXMgYXBpIGlzIHNldHRsZWQgYW5kIHBhcnQgb2YgYWJzdHJhY3QtZHJvcGRvd24tdmlldy5jbGFzc1xuXHRcdGlmICh0aGlzLnZpZXdbXCJkaXNhYmxlU2Nyb2xsXCJdKSB7XG5cdFx0XHR0aGlzLnZpZXdbXCJkaXNhYmxlU2Nyb2xsXCJdKCk7XG5cdFx0fVxuXG5cdFx0Ly8gbW92ZSB0aGUgbGlzdCBiYWNrIGluIHRoZSBjb21wb25lbnQgb24gY2xvc2Vcblx0XHRpZiAoIXRoaXMuYXBwZW5kSW5saW5lKSB7XG5cdFx0XHR0aGlzLnZpc2liaWxpdHlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHRcdHRoaXMuX2FwcGVuZFRvRHJvcGRvd24oKTtcblx0XHR9XG5cdFx0ZG9jdW1lbnQuYm9keS5maXJzdEVsZW1lbnRDaGlsZC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5ub29wLCB0cnVlKTtcblx0XHRkb2N1bWVudC5ib2R5LmZpcnN0RWxlbWVudENoaWxkLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMubm9vcCwgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMub3V0c2lkZUNsaWNrLCB0cnVlKTtcblx0XHRkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLm91dHNpZGVLZXksIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHRvZ2dsaW5nIG1lbnUgc3RhdGVzIGJldHdlZW4gb3Blbi9leHBhbmRlZCBhbmQgY2xvc2VkL2NvbGxhcHNlZC5cblx0ICovXG5cdHRvZ2dsZU1lbnUoKSB7XG5cdFx0aWYgKHRoaXMubWVudUlzQ2xvc2VkKSB7XG5cdFx0XHR0aGlzLm9wZW5NZW51KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY2xvc2VNZW51KCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIGlzVGVtcGxhdGUodmFsdWUpIHtcblx0XHRyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGVuIGl0J3MgbmVlZGVkIHRvIGFwcGx5IHRoZSBzZWxlY3Rpb24gZmVlZGJhY2tcblx0ICovXG5cdHByb3RlY3RlZCBjaGVja0ZvclJlb3JkZXIoKSB7XG5cdFx0Y29uc3QgdG9wQWZ0ZXJSZW9wZW4gPSB0aGlzLm1lbnVJc0Nsb3NlZCAmJiB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcC1hZnRlci1yZW9wZW5cIjtcblx0XHRpZiAoKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiKSAmJiAodG9wQWZ0ZXJSZW9wZW4gfHwgdGhpcy5zZWxlY3Rpb25GZWVkYmFjayA9PT0gXCJ0b3BcIikpIHtcblx0XHRcdHRoaXMudmlldy5yZW9yZGVyU2VsZWN0ZWQoKTtcblx0XHR9XG5cdH1cbn1cbiJdfQ==
970
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUVaLFlBQVksRUFFWixTQUFTLEVBRVQsWUFBWSxFQUVaLFdBQVcsRUFDWCxXQUFXLEVBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBRXpFLHlFQUF5RTtBQUN6RSxPQUFPLEVBRU4sRUFBRSxFQUNGLFlBQVksRUFDWixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXRFLE9BQU8sRUFBa0Isb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7OztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBdUlILE1BQU0sT0FBTyxRQUFRO2FBQ2Isa0JBQWEsR0FBRyxDQUFDLEFBQUosQ0FBSztJQUN6QixJQUFpRSxpQkFBaUI7UUFDakYsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQStELGVBQWU7UUFDN0UsT0FBTyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzRCxDQUFDO0lBRUQsSUFBYyxZQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBYyxZQUFZLENBQUMsR0FBVTtRQUNwQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENB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O3NCQUE1RCxXQUFXO3VCQUFDLDhCQUE4QjtnQkFJa0IsS0FBSztzQkFBakUsV0FBVzt1QkFBQyxxQ0FBcUM7O3NCQUFHLEtBQUs7Z0JBbU0xRCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHRJbnB1dCxcblx0T3V0cHV0LFxuXHRFdmVudEVtaXR0ZXIsXG5cdEVsZW1lbnRSZWYsXG5cdENvbnRlbnRDaGlsZCxcblx0T25Jbml0LFxuXHRWaWV3Q2hpbGQsXG5cdEFmdGVyQ29udGVudEluaXQsXG5cdEhvc3RMaXN0ZW5lcixcblx0T25EZXN0cm95LFxuXHRIb3N0QmluZGluZyxcblx0VGVtcGxhdGVSZWYsXG5cdEFmdGVyVmlld0luaXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuXG4vLyBPYnNlcnZhYmxlIGltcG9ydCBpcyByZXF1aXJlZCBoZXJlIHNvIHR5cGVzY3JpcHQgY2FuIGNvbXBpbGUgY29ycmVjdGx5XG5pbXBvcnQge1xuXHRPYnNlcnZhYmxlLFxuXHRvZixcblx0U3Vic2NyaXB0aW9uXG59IGZyb20gXCJyeGpzXCI7XG5cbmltcG9ydCB7IEFic3RyYWN0RHJvcGRvd25WaWV3IH0gZnJvbSBcIi4vYWJzdHJhY3QtZHJvcGRvd24tdmlldy5jbGFzc1wiO1xuaW1wb3J0IHsgSTE4biB9IGZyb20gXCJjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2kxOG5cIjtcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSBcIi4vbGlzdC1pdGVtLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgRHJvcGRvd25TZXJ2aWNlIH0gZnJvbSBcIi4vZHJvcGRvd24uc2VydmljZVwiO1xuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2UsIGdldFNjcm9sbGFibGVQYXJlbnRzIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcbmltcG9ydCB7IGhhc1Njcm9sbGFibGVQYXJlbnRzIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvdXRpbHNcIjtcblxuLyoqXG4gKiBEcm9wLWRvd24gbGlzdHMgZW5hYmxlIHVzZXJzIHRvIHNlbGVjdCBvbmUgb3IgbW9yZSBpdGVtcyBmcm9tIGEgbGlzdC5cbiAqXG4gKiAjIyMjIE9wZW5pbmcgYmVoYXZpb3IvTGlzdCBET00gcGxhY2VtZW50XG4gKiBCeSBkZWZhdWx0IHRoZSBkcm9wZG93biB3aWxsIHRyeSB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHBsYWNlbWVudCBmb3IgdGhlIGRyb3Bkb3duIGxpc3QuXG4gKlxuICogSWYgaXQncyBub3QgY29udGFpbmVkIHdpdGhpbiBhbnkgc2Nyb2xsaW5nIGVsZW1lbnRzLCBpdCB3aWxsIG9wZW4gaW5saW5lLCBpZiBpdCBfaXNfXG4gKiBjb250YWluZWQgd2l0aGluIGEgc2Nyb2xsaW5nIGNvbnRhaW5lciBpdCB3aWxsIHRyeSB0byBvcGVuIGluIHRoZSBib2R5LCBvciBhbiBgY2RzLXBsYWNlaG9sZGVyYC5cbiAqXG4gKiBUbyBjb250cm9sIHRoaXMgYmVoYXZpb3IgeW91IGNhbiB1c2UgdGhlIGBhcHBlbmRJbmxpbmVgIGlucHV0OlxuICogLSBgW2FwcGVuZElubGluZV09XCJudWxsXCJgIGlzIHRoZSBkZWZhdWx0IChhdXRvIGRldGVjdGlvbilcbiAqIC0gYFthcHBlbmRJbmxpbmVdPVwiZmFsc2VcImAgd2lsbCBhbHdheXMgYXBwZW5kIHRvIHRoZSBib2R5L2BjZHMtcGxhY2Vob2xkZXJgXG4gKiAtIGBbYXBwZW5kSW5saW5lXT1cInRydWVcImAgd2lsbCBhbHdheXMgYXBwZW5kIGlubGluZSAobmV4dCB0byB0aGUgZHJvcGRvd24gYnV0dG9uKVxuICpcbiAqIEdldCBzdGFydGVkIHdpdGggaW1wb3J0aW5nIHRoZSBtb2R1bGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRHJvcGRvd25Nb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIFtTZWUgZGVtb10oLi4vLi4vP3BhdGg9L3N0b3J5L2NvbXBvbmVudHMtZHJvcGRvd24tLWJhc2ljKVxuICovXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6IFwiY2RzLWRyb3Bkb3duLCBpYm0tZHJvcGRvd25cIixcblx0dGVtcGxhdGU6IGBcblx0PGxhYmVsXG5cdFx0Km5nSWY9XCJsYWJlbCAmJiAhc2tlbGV0b25cIlxuXHRcdFtmb3JdPVwiaWRcIlxuXHRcdGNsYXNzPVwiY2RzLS1sYWJlbFwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0J2Nkcy0tbGFiZWwtLWRpc2FibGVkJzogZGlzYWJsZWQsXG5cdFx0XHQnY2RzLS12aXN1YWxseS1oaWRkZW4nOiBoaWRlTGFiZWxcblx0XHR9XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGxhYmVsKVwiPnt7bGFiZWx9fTwvbmctY29udGFpbmVyPlxuXHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUobGFiZWwpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwibGFiZWxcIj48L25nLXRlbXBsYXRlPlxuXHQ8L2xhYmVsPlxuXHQ8ZGl2XG5cdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94XCJcblx0XHRbbmdDbGFzc109XCJ7XG5cdFx0XHQnY2RzLS1kcm9wZG93bic6IHR5cGUgIT09ICdtdWx0aScgJiYgIShza2VsZXRvbiAmJiBmbHVpZCksXG5cdFx0XHQnY2RzLS1tdWx0aXNlbGVjdCc6IHR5cGUgPT09ICdtdWx0aScsXG5cdFx0XHQnY2RzLS1tdWx0aS1zZWxlY3QtLXNlbGVjdGVkJzogdHlwZSA9PT0gJ211bHRpJyAmJiBnZXRTZWxlY3RlZENvdW50KCkgPiAwLFxuXHRcdFx0J2Nkcy0tZHJvcGRvd24tLWxpZ2h0JzogdGhlbWUgPT09ICdsaWdodCcsXG5cdFx0XHQnY2RzLS1saXN0LWJveC0tbGlnaHQnOiB0aGVtZSA9PT0gJ2xpZ2h0Jyxcblx0XHRcdCdjZHMtLWxpc3QtYm94LS1pbmxpbmUnOiBpbmxpbmUsXG5cdFx0XHQnY2RzLS1za2VsZXRvbic6IHNrZWxldG9uLFxuXHRcdFx0J2Nkcy0tZHJvcGRvd24tLWRpc2FibGVkIGNkcy0tbGlzdC1ib3gtLWRpc2FibGVkJzogZGlzYWJsZWQsXG5cdFx0XHQnY2RzLS1kcm9wZG93bi0tcmVhZG9ubHknOiByZWFkb25seSxcblx0XHRcdCdjZHMtLWRyb3Bkb3duLS1pbnZhbGlkJzogaW52YWxpZCxcblx0XHRcdCdjZHMtLWRyb3Bkb3duLS13YXJuaW5nIGNkcy0tbGlzdC1ib3gtLXdhcm5pbmcnOiB3YXJuLFxuXHRcdFx0J2Nkcy0tZHJvcGRvd24tLXNtIGNkcy0tbGlzdC1ib3gtLXNtJzogc2l6ZSA9PT0gJ3NtJyxcblx0XHRcdCdjZHMtLWRyb3Bkb3duLS1tZCBjZHMtLWxpc3QtYm94LS1tZCc6IHNpemUgPT09ICdtZCcsXG5cdFx0XHQnY2RzLS1kcm9wZG93bi0tbGcgY2RzLS1saXN0LWJveC0tbGcnOiBzaXplID09PSAnbGcnLFxuXHRcdFx0J2Nkcy0tbGlzdC1ib3gtLWV4cGFuZGVkJzogIW1lbnVJc0Nsb3NlZCxcblx0XHRcdCdjZHMtLWxpc3QtYm94LS1pbnZhbGlkJzogaW52YWxpZFxuXHRcdH1cIlxuXHRcdFthdHRyLmRhdGEtaW52YWxpZF09XCJpbnZhbGlkID8gdHJ1ZSA6IG51bGxcIj5cblx0XHQ8ZGl2ICpuZ0lmPVwic2tlbGV0b24gJiYgZmx1aWRcIiBjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2xhYmVsXCI+PC9kaXY+XG5cdFx0PGJ1dHRvblxuXHRcdFx0I2Ryb3Bkb3duQnV0dG9uXG5cdFx0XHRbaWRdPVwiaWRcIlxuXHRcdFx0dHlwZT1cImJ1dHRvblwiXG5cdFx0XHRjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2ZpZWxkXCJcblx0XHRcdFtuZ0NsYXNzXT1cInsnYSc6ICFtZW51SXNDbG9zZWR9XCJcblx0XHRcdFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIW1lbnVJc0Nsb3NlZFwiXG5cdFx0XHRbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcblx0XHRcdFthdHRyLmFyaWEtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuXHRcdFx0YXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuXHRcdFx0KGNsaWNrKT1cImRpc2FibGVkIHx8IHJlYWRvbmx5ID8gJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIDogdG9nZ2xlTWVudSgpXCJcblx0XHRcdChmb2N1cyk9XCJmbHVpZCA/IGhhbmRsZUZvY3VzKCRldmVudCkgOiBudWxsXCJcblx0XHRcdChibHVyKT1cImZsdWlkID8gaGFuZGxlRm9jdXMoJGV2ZW50KSA6IG9uQmx1cigpXCJcblx0XHRcdFthdHRyLmRpc2FibGVkXT1cImRpc2FibGVkID8gdHJ1ZSA6IG51bGxcIj5cblx0XHRcdDxkaXZcblx0XHRcdFx0KGNsaWNrKT1cImNsZWFyU2VsZWN0ZWQoKVwiXG5cdFx0XHRcdChrZXlkb3duLmVudGVyKT1cImNsZWFyU2VsZWN0ZWQoKVwiXG5cdFx0XHRcdCpuZ0lmPVwidHlwZSA9PT0gJ211bHRpJyAmJiBnZXRTZWxlY3RlZENvdW50KCkgPiAwXCJcblx0XHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19zZWxlY3Rpb24gY2RzLS10YWctLWZpbHRlciBjZHMtLWxpc3QtYm94X19zZWxlY3Rpb24tLW11bHRpXCJcblx0XHRcdFx0dGFiaW5kZXg9XCIwXCJcblx0XHRcdFx0W3RpdGxlXT1cImNsZWFyVGV4dFwiPlxuXHRcdFx0XHR7e2dldFNlbGVjdGVkQ291bnQoKX19XG5cdFx0XHRcdDxzdmdcblx0XHRcdFx0XHRmb2N1c2FibGU9XCJmYWxzZVwiXG5cdFx0XHRcdFx0cHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuXHRcdFx0XHRcdHN0eWxlPVwid2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcIlxuXHRcdFx0XHRcdHJvbGU9XCJpbWdcIlxuXHRcdFx0XHRcdHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuXHRcdFx0XHRcdHdpZHRoPVwiMTZcIlxuXHRcdFx0XHRcdGhlaWdodD1cIjE2XCJcblx0XHRcdFx0XHR2aWV3Qm94PVwiMCAwIDE2IDE2XCJcblx0XHRcdFx0XHRhcmlhLWhpZGRlbj1cInRydWVcIj5cblx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEyIDQuN2wtLjctLjdMOCA3LjMgNC43IDRsLS43LjdMNy4zIDggNCAxMS4zbC43LjdMOCA4LjdsMy4zIDMuMy43LS43TDguNyA4elwiPjwvcGF0aD5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxzcGFuICpuZ0lmPVwiaXNSZW5kZXJTdHJpbmcoKVwiIGNsYXNzPVwiY2RzLS1saXN0LWJveF9fbGFiZWxcIj57e2dldERpc3BsYXlTdHJpbmdWYWx1ZSgpIHwgYXN5bmN9fTwvc3Bhbj5cblx0XHRcdDxuZy10ZW1wbGF0ZVxuXHRcdFx0XHQqbmdJZj1cIiFpc1JlbmRlclN0cmluZygpXCJcblx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cImdldFJlbmRlclRlbXBsYXRlQ29udGV4dCgpXCJcblx0XHRcdFx0W25nVGVtcGxhdGVPdXRsZXRdPVwiZGlzcGxheVZhbHVlXCI+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PHNwYW4gY2xhc3M9XCJjZHMtLWxpc3QtYm94X19tZW51LWljb25cIj5cblx0XHRcdFx0PHN2Z1xuXHRcdFx0XHRcdCpuZ0lmPVwiIXNrZWxldG9uXCJcblx0XHRcdFx0XHRjZHNJY29uPVwiY2hldnJvbi0tZG93blwiXG5cdFx0XHRcdFx0c2l6ZT1cIjE2XCJcblx0XHRcdFx0XHRbYXR0ci5hcmlhLWxhYmVsXT1cIm1lbnVCdXR0b25MYWJlbFwiXG5cdFx0XHRcdFx0W25nQ2xhc3NdPVwieydjZHMtLWxpc3QtYm94X19tZW51LWljb24tLW9wZW4nOiAhbWVudUlzQ2xvc2VkIH1cIj5cblx0XHRcdFx0PC9zdmc+XG5cdFx0XHQ8L3NwYW4+XG5cdFx0PC9idXR0b24+XG5cdFx0PHN2Z1xuXHRcdFx0Km5nSWY9XCJpbnZhbGlkXCJcblx0XHRcdGNsYXNzPVwiY2RzLS1saXN0LWJveF9faW52YWxpZC1pY29uXCJcblx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1maWxsZWRcIlxuXHRcdFx0c2l6ZT1cIjE2XCI+XG5cdFx0PC9zdmc+XG5cdFx0PHN2Z1xuXHRcdFx0Km5nSWY9XCIhaW52YWxpZCAmJiB3YXJuXCJcblx0XHRcdGNkc0ljb249XCJ3YXJuaW5nLS1hbHQtLWZpbGxlZFwiXG5cdFx0XHRzaXplPVwiMTZcIlxuXHRcdFx0Y2xhc3M9XCJjZHMtLWxpc3QtYm94X19pbnZhbGlkLWljb24gY2RzLS1saXN0LWJveF9faW52YWxpZC1pY29uLS13YXJuaW5nXCI+XG5cdFx0PC9zdmc+XG5cdFx0PGRpdlxuXHRcdFx0I2Ryb3Bkb3duTWVudVxuXHRcdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0XHQnY2RzLS1saXN0LWJveC0tdXAnOiB0aGlzLmRyb3BVcCAhPT0gbnVsbCAmJiB0aGlzLmRyb3BVcCAhPT0gdW5kZWZpbmVkID8gZHJvcFVwIDogX2Ryb3BVcFxuXHRcdFx0fVwiPlxuXHRcdFx0PG5nLWNvbnRlbnQgKm5nSWY9XCIhbWVudUlzQ2xvc2VkXCI+PC9uZy1jb250ZW50PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblx0PGhyICpuZ0lmPVwiZmx1aWRcIiBjbGFzcz1cImNkcy0tbGlzdC1ib3hfX2RpdmlkZXJcIiAvPlxuXHQ8ZGl2XG5cdFx0Km5nSWY9XCJoZWxwZXJUZXh0ICYmICFpbnZhbGlkICYmICF3YXJuICYmICFza2VsZXRvbiAmJiAhZmx1aWRcIlxuXHRcdGNsYXNzPVwiY2RzLS1mb3JtX19oZWxwZXItdGV4dFwiXG5cdFx0W25nQ2xhc3NdPVwie1xuXHRcdFx0J2Nkcy0tZm9ybV9faGVscGVyLXRleHQtLWRpc2FibGVkJzogZGlzYWJsZWRcblx0XHR9XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGhlbHBlclRleHQpXCI+e3toZWxwZXJUZXh0fX08L25nLWNvbnRhaW5lcj5cblx0XHQ8bmctdGVtcGxhdGUgKm5nSWY9XCJpc1RlbXBsYXRlKGhlbHBlclRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwiaW52YWxpZFwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKGludmFsaWRUZXh0KVwiPnt7IGludmFsaWRUZXh0IH19PC9uZy1jb250YWluZXI+XG5cdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwiaXNUZW1wbGF0ZShpbnZhbGlkVGV4dClcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiPjwvbmctdGVtcGxhdGU+XG5cdDwvZGl2PlxuXHQ8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiY2RzLS1mb3JtLXJlcXVpcmVtZW50XCI+XG5cdFx0PG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7d2FyblRleHR9fTwvbmctY29udGFpbmVyPlxuXHRcdDxuZy10ZW1wbGF0ZSAqbmdJZj1cImlzVGVtcGxhdGUod2FyblRleHQpXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIj48L25nLXRlbXBsYXRlPlxuXHQ8L2Rpdj5cblx0YCxcblx0cHJvdmlkZXJzOiBbXG5cdFx0e1xuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG5cdFx0XHR1c2VFeGlzdGluZzogRHJvcGRvd24sXG5cdFx0XHRtdWx0aTogdHJ1ZVxuXHRcdH1cblx0XVxufSlcbmV4cG9ydCBjbGFzcyBEcm9wZG93biBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cdHN0YXRpYyBkcm9wZG93bkNvdW50ID0gMDtcblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1saXN0LWJveF9fd3JhcHBlci0tZmx1aWQtLWludmFsaWRcIikgZ2V0IGZsdWlkSW52YWxpZENsYXNzKCkge1xuXHRcdHJldHVybiB0aGlzLmludmFsaWQgJiYgdGhpcy5mbHVpZDtcblx0fVxuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tbGlzdC1ib3hfX3dyYXBwZXItLWZsdWlkLS1mb2N1c1wiKSBnZXQgZmx1aWRGb2N1c0NsYXNzKCkge1xuXHRcdHJldHVybiB0aGlzLmZsdWlkICYmIHRoaXMuX2lzRm9jdXNlZCAmJiB0aGlzLm1lbnVJc0Nsb3NlZDtcblx0fVxuXG5cdHByb3RlY3RlZCBnZXQgd3JpdHRlblZhbHVlKCkge1xuXHRcdHJldHVybiB0aGlzLl93cml0dGVuVmFsdWU7XG5cdH1cblxuXHRwcm90ZWN0ZWQgc2V0IHdyaXR0ZW5WYWx1ZSh2YWw6IGFueVtdKSB7XG5cdFx0aWYgKHZhbCAmJiB2YWwubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aGlzLmNsZWFyU2VsZWN0ZWQoKTtcblx0XHR9XG5cdFx0dGhpcy5fd3JpdHRlblZhbHVlID0gdmFsO1xuXHR9XG5cblx0QElucHV0KCkgaWQgPSBgZHJvcGRvd24tJHtEcm9wZG93bi5kcm9wZG93bkNvdW50Kyt9YDtcblx0LyoqXG5cdCAqIExhYmVsIGZvciB0aGUgZHJvcGRvd24uXG5cdCAqL1xuXHRASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pjtcblx0LyoqXG5cdCAqIEhpZGUgbGFiZWwgd2hpbGUga2VlcGluZyBpdCBhY2Nlc3NpYmxlIGZvciBzY3JlZW4gcmVhZGVyc1xuXHQgKi9cblx0QElucHV0KCkgaGlkZUxhYmVsID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSBvcHRpb25hbCBoZWxwZXIgdGV4dC5cblx0ICovXG5cdEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG5cdC8qKlxuXHQgKiBWYWx1ZSBkaXNwbGF5ZWQgaWYgbm8gaXRlbSBpcyBzZWxlY3RlZC5cblx0ICovXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gXCJcIjtcblx0LyoqXG5cdCAqIFRoZSBzZWxlY3RlZCB2YWx1ZSBmcm9tIHRoZSBgRHJvcGRvd25gLiBDYW4gYmUgYSBzdHJpbmcgb3IgdGVtcGxhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBkaXNwbGF5VmFsdWU6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gPSBcIlwiO1xuXHQvKipcblx0ICogU2V0cyB0aGUgb3B0aW9uYWwgY2xlYXIgYnV0dG9uIHRvb2x0aXAgdGV4dC5cblx0ICovXG5cdEBJbnB1dCgpIGNsZWFyVGV4dDogc3RyaW5nID0gdGhpcy5pMThuLmdldCgpLkRST1BET1dOLkNMRUFSO1xuXHQvKipcblx0ICogU2l6ZSB0byByZW5kZXIgdGhlIGRyb3Bkb3duIGZpZWxkLlxuXHQgKi9cblx0QElucHV0KCkgc2l6ZTogXCJzbVwiIHwgXCJtZFwiIHwgXCJsZ1wiID0gXCJtZFwiO1xuXHQvKipcblx0ICogRGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYERyb3Bkb3duYCBzdXBwb3J0cyBzZWxlY3RpbmcgbXVsdGlwbGUgaXRlbXMgYXMgb3Bwb3NlZCB0byBzaW5nbGVcblx0ICogaXRlbSBzZWxlY3Rpb24uXG5cdCAqL1xuXHRASW5wdXQoKSB0eXBlOiBcInNpbmdsZVwiIHwgXCJtdWx0aVwiID0gXCJzaW5nbGVcIjtcblx0LyoqXG5cdCAqIEBkZXByZWNhdGVkIHNpbmNlIHY1IC0gVXNlIGBjZHNMYXllcmAgZGlyZWN0aXZlIGluc3RlYWRcblx0ICogYGxpZ2h0YCBvciBgZGFya2AgZHJvcGRvd24gdGhlbWVcblx0ICovXG5cdEBJbnB1dCgpIHRoZW1lOiBcImxpZ2h0XCIgfCBcImRhcmtcIiA9IFwiZGFya1wiO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBkaXNhYmxlIHRoZSBkcm9wZG93bi5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIHJlYWRvbmx5IHN0YXRlLlxuXHQgKi9cblx0QElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyBkcm9wZG93bi5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhbiBpbmxpbmUgZHJvcGRvd24uXG5cdCAqL1xuXHRASW5wdXQoKSBpbmxpbmUgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgZHJvcGRvd24gd2l0aG91dCBhcnJvdyBrZXkgYWN0aXZhdGlvbi5cblx0ICovXG5cdEBJbnB1dCgpIGRpc2FibGVBcnJvd0tleXMgPSBmYWxzZTtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGludmFsaWQgc3RhdGUuXG5cdCAqL1xuXHRASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBWYWx1ZSBkaXNwbGF5ZWQgaWYgZHJvcGRvd24gaXMgaW4gaW52YWxpZCBzdGF0ZS5cblx0ICovXG5cdEBJbnB1dCgpIGludmFsaWRUZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICAqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyBhIHdhcm5pbmcgKGNvbnRlbnRzIHNldCBieSB3YXJuaW5nVGV4dClcblx0ICAqL1xuXHRASW5wdXQoKSB3YXJuID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXRzIHRoZSB3YXJuaW5nIHRleHRcblx0ICovXG5cdEBJbnB1dCgpIHdhcm5UZXh0OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuXHQvKipcblx0ICogc2V0IHRvIGB0cnVlYCB0byBwbGFjZSB0aGUgZHJvcGRvd24gdmlldyBpbmxpbmUgd2l0aCB0aGUgY29tcG9uZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcHBlbmRJbmxpbmU6IGJvb2xlYW4gPSBudWxsO1xuXHQvKipcblx0ICogUXVlcnkgc3RyaW5nIGZvciB0aGUgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBgRHJvcGRvd25gLlxuXHQgKiBVc2VkIHRvIHRyaWdnZXIgY2xvc2luZyB0aGUgZHJvcGRvd24gaWYgaXQgc2Nyb2xscyBvdXRzaWRlIG9mIHRoZSB2aWV3cG9ydCBvZiB0aGUgYHNjcm9sbGFibGVDb250YWluZXJgLlxuXHQgKi9cblx0QElucHV0KCkgc2Nyb2xsYWJsZUNvbnRhaW5lcjogc3RyaW5nO1xuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBwcm9wZXJ0eSB0byBiZSB1c2VkIGFzIHRoZSByZXR1cm4gdmFsdWUgdG8gYG5nTW9kZWxgXG5cdCAqL1xuXHRASW5wdXQoKSBpdGVtVmFsdWVLZXk6IHN0cmluZztcblx0LyoqXG5cdCAqIFNwZWNpZnkgZmVlZGJhY2sgKG1vZGUpIG9mIHRoZSBzZWxlY3Rpb24uXG5cdCAqIGB0b3BgOiBzZWxlY3RlZCBpdGVtIGp1bXBzIHRvIHRvcFxuXHQgKiBgZml4ZWRgOiBzZWxlY3RlZCBpdGVtIHN0YXlzIGF0IGl0J3MgcG9zaXRpb25cblx0ICogYHRvcC1hZnRlci1yZW9wZW5gOiBzZWxlY3RlZCBpdGVtIGp1bXAgdG8gdG9wIGFmdGVyIHJlb3BlbiBkcm9wZG93blxuXHQgKi9cblx0QElucHV0KCkgc2VsZWN0aW9uRmVlZGJhY2s6IFwidG9wXCIgfCBcImZpeGVkXCIgfCBcInRvcC1hZnRlci1yZW9wZW5cIiA9IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHQvKipcblx0ICogQWNjZXNzaWJsZSBsYWJlbCBmb3IgdGhlIGJ1dHRvbiB0aGF0IG9wZW5zIHRoZSBkcm9wZG93biBsaXN0LlxuXHQgKiBEZWZhdWx0cyB0byB0aGUgYERST1BET1dOLk9QRU5gIHZhbHVlIGZyb20gdGhlIGkxOG4gc2VydmljZS5cblx0ICovXG5cdEBJbnB1dCgpIG1lbnVCdXR0b25MYWJlbCA9IHRoaXMuaTE4bi5nZXQoKS5EUk9QRE9XTi5PUEVOO1xuXHQvKipcblx0ICogUHJvdmlkZXMgdGhlIGxhYmVsIGZvciB0aGUgXCIjIHNlbGVjdGVkXCIgdGV4dC5cblx0ICogRGVmYXVsdHMgdG8gdGhlIGBEUk9QRE9XTi5TRUxFQ1RFRGAgdmFsdWUgZnJvbSB0aGUgaTE4biBzZXJ2aWNlLlxuXHQgKi9cblx0QElucHV0KCkgc2VsZWN0ZWRMYWJlbCA9IHRoaXMuaTE4bi5nZXQoKS5EUk9QRE9XTi5TRUxFQ1RFRDtcblx0LyoqXG5cdCAqIE92ZXJyaWRlcyB0aGUgYXV0b21hdGljIGRyb3BVcC5cblx0ICovXG5cdEBJbnB1dCgpIGRyb3BVcDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIEVtaXRzIHNlbGVjdGlvbiBldmVudHMuXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxPYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cdC8qKlxuXHQgKiBFbWl0cyBldmVudCBub3RpZnlpbmcgdG8gb3RoZXIgY2xhc3NlcyB0aGF0IHRoZSBgRHJvcGRvd25gIGhhcyBiZWVuIGNsb3NlZCAoY29sbGFwc2VkKS5cblx0ICovXG5cdEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXHQvKipcblx0ICogRW1pdHMgZXZlbnQgbm90aWZ5aW5nIHRvIG90aGVyIGNsYXNzZXMgdGhhdCB0aGUgYERyb3Bkb3duYCBoYXMgYmVlbiBjbG9zZWQgKGNvbGxhcHNlZCkuXG5cdCAqL1xuXHRAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblx0LyoqXG5cdCAqIE1haW50YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgYEFic3RyYWN0RHJvcGRvd25WaWV3YCBvYmplY3Qgd2l0aGluIHRoZSBjb250ZW50IERPTS5cblx0ICovXG5cdEBDb250ZW50Q2hpbGQoQWJzdHJhY3REcm9wZG93blZpZXcsIHsgc3RhdGljOiB0cnVlIH0pIHZpZXc6IEFic3RyYWN0RHJvcGRvd25WaWV3O1xuXHQvKipcblx0ICogTWFpbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3IERPTSBlbGVtZW50IG9mIHRoZSBgRHJvcGRvd25gIGJ1dHRvbi5cblx0ICovXG5cdEBWaWV3Q2hpbGQoXCJkcm9wZG93bkJ1dHRvblwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bkJ1dHRvbjtcblx0LyoqXG5cdCAqIFZpZXdDaGlkIG9mIHRoZSBkcm9wZG93biB2aWV3LlxuXHQgKi9cblx0QFZpZXdDaGlsZChcImRyb3Bkb3duTWVudVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkcm9wZG93bk1lbnU7XG5cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1kcm9wZG93bl9fd3JhcHBlclwiKSBob3N0Q2xhc3MgPSB0cnVlO1xuXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tbGlzdC1ib3hfX3dyYXBwZXJcIikgaG9zdFdyYXBwZXJDbGFzcyA9IHRydWU7XG5cdC8qKlxuXHQgKiBFeHBlcmltZW50YWw6IGVuYWJsZSBmbHVpZCBzdGF0ZVxuXHQgKi9cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1saXN0LWJveF9fd3JhcHBlci0tZmx1aWRcIikgQElucHV0KCkgZmx1aWQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBpZiB0aGUgZHJvcGRvd24gaXMgY2xvc2VkIChub3QgZXhwYW5kZWQpLlxuXHQgKi9cblx0bWVudUlzQ2xvc2VkID0gdHJ1ZTtcblxuXHQvKipcblx0ICogY29udHJvbHMgd2hldGhlciB0aGUgYGRyb3AtdXBgIGNsYXNzIGlzIGFwcGxpZWRcblx0ICovXG5cdF9kcm9wVXAgPSBmYWxzZTtcblxuXHQvLyAuYmluZCBjcmVhdGVzIGEgbmV3IGZ1bmN0aW9uLCBzbyB3ZSBkZWNsYXJlIHRoZSBtZXRob2RzIGJlbG93XG5cdC8vIGJ1dCAuYmluZCB0aGVtIHVwIGhlcmVcblx0bm9vcCA9IHRoaXMuX25vb3AuYmluZCh0aGlzKTtcblx0b3V0c2lkZUNsaWNrID0gdGhpcy5fb3V0c2lkZUNsaWNrLmJpbmQodGhpcyk7XG5cdG91dHNpZGVLZXkgPSB0aGlzLl9vdXRzaWRlS2V5LmJpbmQodGhpcyk7XG5cdGtleWJvYXJkTmF2ID0gdGhpcy5fa2V5Ym9hcmROYXYuYmluZCh0aGlzKTtcblxuXHRwcm90ZWN0ZWQgdmlzaWJpbGl0eVN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuXHRwcm90ZWN0ZWQgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSB0aGlzLl9ub29wO1xuXG5cdHByb3RlY3RlZCBfaXNGb2N1c2VkID0gZmFsc2U7XG5cblx0Ly8gcHJpbWFyaWx5IHVzZWQgdG8gY2FwdHVyZSBhbmQgcHJvcGFnYXRlIGlucHV0IHRvIGB3cml0ZVZhbHVlYCBiZWZvcmUgdGhlIGNvbnRlbnQgaXMgYXZhaWxhYmxlXG5cdHByaXZhdGUgX3dyaXR0ZW5WYWx1ZTogYW55ID0gW107XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRHJvcGRvd24uXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcblx0XHRwcm90ZWN0ZWQgaTE4bjogSTE4bixcblx0XHRwcm90ZWN0ZWQgZHJvcGRvd25TZXJ2aWNlOiBEcm9wZG93blNlcnZpY2UsXG5cdFx0cHJvdGVjdGVkIGVsZW1lbnRTZXJ2aWNlOiBFbGVtZW50U2VydmljZSkge31cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgYHR5cGVgIHByb3BlcnR5IGluIHRoZSBgQENvbnRlbnRDaGlsZGAuXG5cdCAqIFRoZSBgdHlwZWAgcHJvcGVydHkgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGBEcm9wZG93bmAgYWxsb3dzIHNpbmdsZSBzZWxlY3Rpb24gb3IgbXVsdGkgc2VsZWN0aW9uLlxuXHQgKi9cblx0bmdPbkluaXQoKSB7XG5cdFx0aWYgKHRoaXMudmlldykge1xuXHRcdFx0dGhpcy52aWV3LnR5cGUgPSB0aGlzLnR5cGU7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIGNsYXNzZXMgYW5kIHN1YnNjcmliZXMgdG8gZXZlbnRzIGZvciBzaW5nbGUgb3IgbXVsdGkgc2VsZWN0aW9uLlxuXHQgKi9cblx0bmdBZnRlckNvbnRlbnRJbml0KCkge1xuXHRcdGlmICghdGhpcy52aWV3KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICgodGhpcy53cml0dGVuVmFsdWUgJiYgdGhpcy53cml0dGVuVmFsdWUubGVuZ3RoKSB8fCB0eXBlb2YgdGhpcy53cml0dGVuVmFsdWUgPT09IFwibnVtYmVyXCIpIHtcblx0XHRcdHRoaXMud3JpdGVWYWx1ZSh0aGlzLndyaXR0ZW5WYWx1ZSk7XG5cdFx0fVxuXHRcdHRoaXMudmlldy50eXBlID0gdGhpcy50eXBlO1xuXHRcdHRoaXMudmlldy5zaXplID0gdGhpcy5zaXplO1xuXG5cdFx0Ly8gZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGV2ZW50IGlzIG9yZ2FuaWMgKGlzVXBkYXRlID09PSBmYWxzZSkgb3IgcHJvZ3JhbW1hdGljXG5cdFx0Y29uc3QgaXNVcGRhdGUgPSBldmVudCA9PiBldmVudCAmJiBldmVudC5pc1VwZGF0ZTtcblxuXHRcdHRoaXMudmlldy5zZWxlY3Quc3Vic2NyaWJlKGV2ZW50ID0+IHtcblx0XHRcdGlmICh0aGlzLnR5cGUgPT09IFwic2luZ2xlXCIgJiYgIWlzVXBkYXRlKGV2ZW50KSAmJiAhQXJyYXkuaXNBcnJheShldmVudCkpIHtcblx0XHRcdFx0dGhpcy5jbG9zZU1lbnUoKTtcblx0XHRcdFx0aWYgKGV2ZW50Lml0ZW0gJiYgZXZlbnQuaXRlbS5zZWxlY3RlZCkge1xuXHRcdFx0XHRcdGlmICh0aGlzLml0ZW1WYWx1ZUtleSkge1xuXHRcdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UoZXZlbnQuaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0pO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZShldmVudC5pdGVtKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5wcm9wYWdhdGVDaGFuZ2UobnVsbCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiICYmICFpc1VwZGF0ZShldmVudCkpIHtcblx0XHRcdFx0Ly8gaWYgd2UgaGF2ZSBhIGB2YWx1ZWAgc2VsZWN0b3IgYW5kIHNlbGVjdGVkIGl0ZW1zIG1hcCB0aGVtIGFwcHJvcHJpYXRlbHlcblx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5ICYmIHRoaXMudmlldy5nZXRTZWxlY3RlZCgpKSB7XG5cdFx0XHRcdFx0Y29uc3QgdmFsdWVzID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCkubWFwKGl0ZW0gPT4gaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0pO1xuXHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKHZhbHVlcyk7XG5cdFx0XHRcdFx0Ly8gb3RoZXJ3aXNlIGp1c3QgcGFzcyB1cCB0aGUgdmFsdWVzIGZyb20gYGdldFNlbGVjdGVkYFxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmlldy5nZXRTZWxlY3RlZCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Ly8gb25seSBlbWl0IHNlbGVjdGVkIGZvciBcIm9yZ2FuaWNcIiBzZWxlY3Rpb25zXG5cdFx0XHRpZiAoIWlzVXBkYXRlKGV2ZW50KSkge1xuXHRcdFx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoZXZlbnQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdC8vIGlmIGFwcGVuZElubGluZSBpcyBkZWZhdWx0IHZhbHVlZCAobnVsbCkgd2Ugc2hvdWxkOlxuXHRcdC8vIDEuIGlmIHRoZXJlIGFyZSBzY3JvbGxhYmxlIHBhcmVudHMgKG5vdCBpbmNsdWRpbmcgYm9keSkgZG9uJ3QgYXBwZW5kIGlubGluZVxuXHRcdC8vICAgIHRoaXMgc2hvdWxkIGFsc28gY292ZXIgdGhlIGNhc2Ugd2hlcmUgdGhlIGRyb3Bkb3duIGlzIGluIGEgbW9kYWxcblx0XHQvLyAgICAod2hlcmUgd2UgX2RvXyB3YW50IHRvIGFwcGVuZCB0byB0aGUgcGxhY2Vob2xkZXIpXG5cdFx0aWYgKHRoaXMuYXBwZW5kSW5saW5lID09PSBudWxsICYmIGhhc1Njcm9sbGFibGVQYXJlbnRzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSkge1xuXHRcdFx0dGhpcy5hcHBlbmRJbmxpbmUgPSBmYWxzZTtcblx0XHRcdC8vIDIuIG90aGVyd2lzZSB3ZSBzaG91bGQgYXBwZW5kIGlubGluZVxuXHRcdH0gZWxzZSBpZiAodGhpcy5hcHBlbmRJbmxpbmUgPT09IG51bGwpIHtcblx0XHRcdHRoaXMuYXBwZW5kSW5saW5lID0gdHJ1ZTtcblx0XHR9XG5cdFx0dGhpcy5jaGVja0ZvclJlb3JkZXIoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmluZyB0aGUgYERyb3Bkb3duYCBmcm9tIHRoZSBib2R5IGlmIGl0IGlzIGFwcGVuZGVkIHRvIHRoZSBib2R5LlxuXHQgKi9cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy5fYXBwZW5kVG9Ecm9wZG93bigpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9wYWdhdGVzIHRoZSBpbmplY3RlZCBgdmFsdWVgLlxuXHQgKi9cblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG5cdFx0Ly8gY2FjaGUgdGhlIHdyaXR0ZW4gdmFsdWUgc28gd2UgY2FuIHVzZSBpdCBpbiBgQWZ0ZXJDb250ZW50SW5pdGBcblx0XHR0aGlzLndyaXR0ZW5WYWx1ZSA9IHZhbHVlO1xuXHRcdHRoaXMudmlldy5vbkl0ZW1zUmVhZHkoKCkgPT4ge1xuXHRcdFx0Ly8gcHJvcGFnYXRlIG51bGwvZmFsc2V5IGFzIGFuIGFycmF5IChkZXNlbGVjdCBldmVyeXRoaW5nKVxuXHRcdFx0aWYgKCF2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQoW3ZhbHVlXSk7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gXCJzaW5nbGVcIikge1xuXHRcdFx0XHRpZiAodGhpcy5pdGVtVmFsdWVLZXkpIHtcblx0XHRcdFx0XHQvLyBjbG9uZSB0aGUgc3BlY2lmaWVkIGl0ZW0gYW5kIHVwZGF0ZSBpdHMgc3RhdGVcblx0XHRcdFx0XHRjb25zdCBuZXdWYWx1ZSA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKS5maW5kKGl0ZW0gPT4gaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0gPT09IHZhbHVlKSk7XG5cdFx0XHRcdFx0bmV3VmFsdWUuc2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZChbbmV3VmFsdWVdKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBwYXNzIHRoZSBzaW5ndWxhciB2YWx1ZSBhcyBhbiBhcnJheSBvZiBMaXN0SXRlbVxuXHRcdFx0XHRcdHRoaXMudmlldy5wcm9wYWdhdGVTZWxlY3RlZChbdmFsdWVdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKHRoaXMuaXRlbVZhbHVlS2V5KSB7XG5cdFx0XHRcdFx0Ly8gY2xvbmUgdGhlIGl0ZW1zIGFuZCB1cGRhdGUgdGhlaXIgc3RhdGUgYmFzZWQgb24gdGhlIHJlY2VpdmVkIHZhbHVlIGFycmF5XG5cdFx0XHRcdFx0Ly8gdGhpcyB3YXkgd2UgZG9uJ3QgbG9zZSBhbnkgYWRkaXRpb25hbCBtZXRhZGF0YSB0aGF0IG1heSBiZSBwYXNzZWQgaW4gdmlhIHRoZSBgaXRlbXNgIElucHV0XG5cdFx0XHRcdFx0bGV0IG5ld1ZhbHVlcyA9IFtdO1xuXHRcdFx0XHRcdGZvciAoY29uc3QgdiBvZiB2YWx1ZSkge1xuXHRcdFx0XHRcdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoaXRlbVt0aGlzLml0ZW1WYWx1ZUtleV0gPT09IHYpIHtcblx0XHRcdFx0XHRcdFx0XHRuZXdWYWx1ZXMucHVzaChPYmplY3QuYXNzaWduKHt9LCBpdGVtLCB7IHNlbGVjdGVkOiB0cnVlIH0pKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLnZpZXcucHJvcGFnYXRlU2VsZWN0ZWQobmV3VmFsdWVzKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyB3ZSBjYW4gc2FmZWx5IGFzc3VtZSB3ZSdyZSBwYXNzaW5nIGFuIGFycmF5IG9mIGBMaXN0SXRlbWBzXG5cdFx0XHRcdFx0dGhpcy52aWV3LnByb3BhZ2F0ZVNlbGVjdGVkKHZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhpcy5jaGVja0ZvclJlb3JkZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uQmx1cigpIHtcblx0XHR0aGlzLm9uVG91Y2hlZENhbGxiYWNrKCk7XG5cdH1cblxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcblx0XHR0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlZ2lzdGVyaW5nIHRoZSBmdW5jdGlvbiBpbmplY3RlZCB0byBjb250cm9sIHRoZSB0b3VjaCB1c2Ugb2YgdGhlIGBEcm9wZG93bmAuXG5cdCAqL1xuXHRyZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG5cdFx0dGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuXHR9XG5cblx0LyoqXG5cdCAqIGZ1bmN0aW9uIHBhc3NlZCBpbiBieSBgcmVnaXN0ZXJPbkNoYW5nZWBcblx0ICovXG5cdHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcblxuXHQvKipcblx0ICogYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBtZXRob2QgdG8gcHJvZ3JhbW1hdGljYWxseSBkaXNhYmxlIHRoZSBkcm9wZG93bi5cblx0ICpcblx0ICogZXg6IGB0aGlzLmZvcm1Hcm91cC5nZXQoXCJteURyb3Bkb3duXCIpLmRpc2FibGUoKTtgXG5cdCAqXG5cdCAqIEBwYXJhbSBpc0Rpc2FibGVkIGB0cnVlYCB0byBkaXNhYmxlIHRoZSBpbnB1dFxuXHQgKi9cblx0c2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG5cdFx0dGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBrZXlib2FyZCBmdW5jdGlvbmFsaXR5IGZvciBuYXZpZ2F0aW9uLCBzZWxlY3Rpb24gYW5kIGNsb3Npbmcgb2YgdGhlIGBEcm9wZG93bmAuXG5cdCAqL1xuXHRASG9zdExpc3RlbmVyKFwia2V5ZG93blwiLCBbXCIkZXZlbnRcIl0pXG5cdG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuXHRcdGlmICh0aGlzLnJlYWRvbmx5KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpICYmICF0aGlzLm1lbnVJc0Nsb3NlZCkge1xuXHRcdFx0ZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7ICAvLyBkb24ndCB1bmludGVudGlvbmFsbHkgY2xvc2Ugb3RoZXIgd2lkZ2V0cyB0aGF0IGxpc3RlbiBmb3IgRXNjYXBlXG5cdFx0fVxuXHRcdGlmIChldmVudC5rZXkgPT09IFwiRXNjYXBlXCIpIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdFx0dGhpcy5kcm9wZG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cdFx0fSBlbHNlIGlmICh0aGlzLm1lbnVJc0Nsb3NlZCAmJiAoZXZlbnQua2V5ID09PSBcIiBcIiB8fCBldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIgfHwgZXZlbnQua2V5ID09PSBcIkFycm93VXBcIikpIHtcblx0XHRcdGlmICh0aGlzLmRpc2FibGVBcnJvd0tleXMgJiYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0Rvd25cIiB8fCBldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0dGhpcy5vcGVuTWVudSgpO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5tZW51SXNDbG9zZWQgJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiICYmIHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpKSB7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5tZW51SXNDbG9zZWQgJiYgZXZlbnQua2V5ID09PSBcIlRhYlwiICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnR5cGUgPT09IFwibXVsdGlcIikgeyByZXR1cm47IH1cblxuXHRcdGlmICh0aGlzLm1lbnVJc0Nsb3NlZCkge1xuXHRcdFx0dGhpcy5jbG9zZWREcm9wZG93bk5hdmlnYXRpb24oZXZlbnQpO1xuXHRcdH1cblx0fVxuXG5cdGNsb3NlZERyb3Bkb3duTmF2aWdhdGlvbihldmVudCkge1xuXHRcdGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dEb3duXCIpIHtcblx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHR0aGlzLnZpZXcuZ2V0Q3VycmVudEl0ZW0oKS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdFx0bGV0IGl0ZW0gPSB0aGlzLnZpZXcuZ2V0TmV4dEl0ZW0oKTtcblx0XHRcdGlmIChpdGVtKSB7IGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOyB9XG5cdFx0fSBlbHNlIGlmIChldmVudC5rZXkgPT09IFwiQXJyb3dVcFwiKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0dGhpcy52aWV3LmdldEN1cnJlbnRJdGVtKCkuc2VsZWN0ZWQgPSBmYWxzZTtcblx0XHRcdGxldCBpdGVtID0gdGhpcy52aWV3LmdldFByZXZJdGVtKCk7XG5cdFx0XHRpZiAoaXRlbSkgeyBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsgfVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBkaXNwbGF5IHZhbHVlIGlmIHRoZXJlIGlzIGEgc2VsZWN0aW9uIGFuZCBkaXNwbGF5VmFsdWUgaXMgc2V0LFxuXHQgKiBpZiB0aGVyZSBpcyBqdXN0IGEgc2VsZWN0aW9uIHRoZSBMaXN0SXRlbSBjb250ZW50IHByb3BlcnR5IHdpbGwgYmUgcmV0dXJuZWQsXG5cdCAqIG90aGVyd2lzZSB0aGUgcGxhY2Vob2xkZXIgd2lsbCBiZSByZXR1cm5lZC5cblx0ICovXG5cdGdldERpc3BsYXlTdHJpbmdWYWx1ZSgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuXHRcdGlmICghdGhpcy52aWV3IHx8IHRoaXMuc2tlbGV0b24pIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHNlbGVjdGVkID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCk7XG5cdFx0aWYgKHNlbGVjdGVkLmxlbmd0aCAmJiAoIXRoaXMuZGlzcGxheVZhbHVlIHx8ICF0aGlzLmlzUmVuZGVyU3RyaW5nKCkpKSB7XG5cdFx0XHRpZiAodGhpcy50eXBlID09PSBcIm11bHRpXCIpIHtcblx0XHRcdFx0cmV0dXJuIG9mKHRoaXMucGxhY2Vob2xkZXIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIG9mKHNlbGVjdGVkWzBdLmNvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWQubGVuZ3RoICYmIHRoaXMuaXNSZW5kZXJTdHJpbmcoKSkge1xuXHRcdFx0cmV0dXJuIG9mKHRoaXMuZGlzcGxheVZhbHVlIGFzIHN0cmluZyk7XG5cdFx0fVxuXHRcdHJldHVybiBvZih0aGlzLnBsYWNlaG9sZGVyKTtcblx0fVxuXG5cdGlzUmVuZGVyU3RyaW5nKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0eXBlb2YgdGhpcy5kaXNwbGF5VmFsdWUgPT09IFwic3RyaW5nXCI7XG5cdH1cblxuXHRnZXRSZW5kZXJUZW1wbGF0ZUNvbnRleHQoKSB7XG5cdFx0aWYgKCF0aGlzLnZpZXcpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0bGV0IHNlbGVjdGVkID0gdGhpcy52aWV3LmdldFNlbGVjdGVkKCk7XG5cdFx0aWYgKHRoaXMudHlwZSA9PT0gXCJtdWx0aVwiKSB7XG5cdFx0XHRyZXR1cm4geyBpdGVtczogc2VsZWN0ZWQgfTtcblx0XHR9IGVsc2UgaWYgKHNlbGVjdGVkICYmIHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcblx0XHRcdHJldHVybiB7IGl0ZW06IHNlbGVjdGVkWzBdIH07IC8vIHRoaXMgaXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBkcm9wZG93bi1saXN0IHRlbXBsYXRlXG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7fTtcblx0XHR9XG5cdH1cblxuXHRnZXRTZWxlY3RlZENvdW50KCk6IG51bWJlciB7XG5cdFx0aWYgKHRoaXMudmlldy5nZXRTZWxlY3RlZCgpKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy52aWV3LmdldFNlbGVjdGVkKCkubGVuZ3RoO1xuXHRcdH1cblx0fVxuXG5cdGNsZWFyU2VsZWN0ZWQoKSB7XG5cdFx0aWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5nZXRTZWxlY3RlZENvdW50KCkgPT09IDApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Zm9yIChjb25zdCBpdGVtIG9mIHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKSkge1xuXHRcdFx0aXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xuXHRcdH1cblx0XHR0aGlzLnNlbGVjdGVkLmVtaXQoW10pO1xuXHRcdHRoaXMucHJvcGFnYXRlQ2hhbmdlKFtdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGVyZSBpcyBhIHZhbHVlIHNlbGVjdGVkLlxuXHQgKi9cblx0dmFsdWVTZWxlY3RlZCgpOiBib29sZWFuIHtcblx0XHRpZiAodGhpcy52aWV3LmdldFNlbGVjdGVkKCkpIHsgcmV0dXJuIHRydWU7IH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRfbm9vcCgpIHsgfVxuXHQvKipcblx0ICogSGFuZGxlcyBjbGlja3Mgb3V0c2lkZSBvZiB0aGUgYERyb3Bkb3duYC5cblx0ICovXG5cdF9vdXRzaWRlQ2xpY2soZXZlbnQpIHtcblx0XHRpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcblx0XHRcdC8vIGlmIHdlJ3JlIGFwcGVuZFRvQm9keSB0aGUgbGlzdCBpc24ndCB3aXRoaW4gdGhlIF9lbGVtZW50UmVmLFxuXHRcdFx0Ly8gc28gd2UndmUgZ290IHRvIGNoZWNrIGlmIG91ciB0YXJnZXQgaXMgcG9zc2libHkgaW4gdGhlcmUgdG9vLlxuXHRcdFx0IXRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuXHRcdFx0dGhpcy5jbG9zZU1lbnUoKTtcblx0XHR9XG5cdH1cblx0X291dHNpZGVLZXkoZXZlbnQpIHtcblx0XHRpZiAoIXRoaXMubWVudUlzQ2xvc2VkICYmIGV2ZW50LmtleSA9PT0gXCJUYWJcIiAmJiB0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuXHRcdFx0dGhpcy5jbG9zZU1lbnUoKTtcblx0XHR9XG5cdH1cblx0LyoqXG5cdCAqIEhhbmRsZXMga2V5Ym9hcmQgZXZlbnRzIHNvIHVzZXJzIGFyZSBjb250cm9sbGluZyB0aGUgYERyb3Bkb3duYCBpbnN0ZWFkIG9mIHVuaW50ZW50aW9uYWxseSBjb250cm9sbGluZyBvdXRzaWRlIGVsZW1lbnRzLlxuXHQgKi9cblx0X2tleWJvYXJkTmF2KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG5cdFx0aWYgKGV2ZW50LmtleSA9PT0gXCJFc2NhcGVcIiAmJiAhdGhpcy5tZW51SXNDbG9zZWQpIHtcblx0XHRcdGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOyAgLy8gZG9uJ3QgdW5pbnRlbnRpb25hbGx5IGNsb3NlIG1vZGFsIGlmIGluc2lkZSBvZiBpdFxuXHRcdH1cblx0XHRpZiAoZXZlbnQua2V5ID09PSBcIkVzY2FwZVwiKSB7XG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0dGhpcy5jbG9zZU1lbnUoKTtcblx0XHRcdHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXHRcdH0gZWxzZSBpZiAoIXRoaXMubWVudUlzQ2xvc2VkICYmIGV2ZW50LmtleSA9PT0gXCJUYWJcIikge1xuXHRcdFx0Ly8gdGhpcyB3YXkgZm9jdXMgd2lsbCBzdGFydCBvbiB0aGUgbmV4dCBmb2N1c2FibGUgaXRlbSBmcm9tIHRoZSBkcm9wZG93blxuXHRcdFx0Ly8gbm90IHRoZSB0b3Agb2YgdGhlIGJvZHkhXG5cdFx0XHR0aGlzLmRyb3Bkb3duQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblx0XHRcdHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBLZXlib2FyZEV2ZW50KFwia2V5ZG93blwiLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUsIGtleTogXCJUYWJcIiB9KSk7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIHRoZSBgRHJvcGRvd25gIGxpc3QgYXBwZW5kaW5nIGl0IHRvIHRoZSBkcm9wZG93biBwYXJlbnQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIGJvZHkuXG5cdCAqL1xuXHRfYXBwZW5kVG9Ecm9wZG93bigpIHtcblx0XHR0aGlzLmRyb3Bkb3duU2VydmljZS5hcHBlbmRUb0Ryb3Bkb3duKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5Ym9hcmROYXYsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIGBEcm9wZG93bmAgbGlzdCBhcyBhbiBlbGVtZW50IHRoYXQgaXMgYXBwZW5kZWQgdG8gdGhlIERPTSBib2R5LlxuXHQgKi9cblx0X2FwcGVuZFRvQm9keSgpIHtcblx0XHRjb25zdCBsaWdodENsYXNzID0gdGhpcy50aGVtZSA9PT0gXCJsaWdodFwiID8gXCIgY2RzLS1saXN0LWJveC0tbGlnaHRcIiA6IFwiXCI7XG5cdFx0Y29uc3QgZXhwYW5kZWRDbGFzcyA9ICF0aGlzLm1lbnVJc0Nsb3NlZCA/IFwiIGNkcy0tbGlzdC1ib3gtLWV4cGFuZGVkXCIgOiBcIlwiO1xuXHRcdHRoaXMuZHJvcGRvd25TZXJ2aWNlLmFwcGVuZFRvQm9keShcblx0XHRcdHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudCxcblx0XHRcdHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQsXG5cdFx0XHRgJHt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc05hbWV9JHtsaWdodENsYXNzfSR7ZXhwYW5kZWRDbGFzc31gKTtcblx0XHR0aGlzLmRyb3Bkb3duTWVudS5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMua2V5Ym9hcmROYXYsIHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVjdHMgd2hldGhlciBvciBub3QgdGhlIGBEcm9wZG93bmAgbGlzdCBpcyB2aXNpYmxlIHdpdGhpbiBhbGwgc2Nyb2xsYWJsZSBwYXJlbnRzLlxuXHQgKiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgaW4gYSB2YWx1ZSB0byB0aGUgYGRyb3BVcGAgaW5wdXQuXG5cdCAqL1xuXHRfc2hvdWxkRHJvcFVwKCkge1xuXHRcdC8vIGNoZWNrIGlmIGRyb3Bkb3duTWVudSBleGlzdHMgZmlyc3QuXG5cdFx0Y29uc3QgbWVudSA9IHRoaXMuZHJvcGRvd25NZW51ICYmIHRoaXMuZHJvcGRvd25NZW51Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIi5jZHMtLWxpc3QtYm94X19tZW51XCIpO1xuXHRcdC8vIGNoZWNrIGlmIG1lbnUgZXhpc3RzIGZpcnN0LlxuXHRcdGNvbnN0IG1lbnVSZWN0ID0gbWVudSAmJiBtZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRcdGlmIChtZW51ICYmIG1lbnVSZWN0KSB7XG5cdFx0XHRjb25zdCBzY3JvbGxhYmxlUGFyZW50cyA9IGdldFNjcm9sbGFibGVQYXJlbnRzKG1lbnUpO1xuXHRcdFx0cmV0dXJuIHNjcm9sbGFibGVQYXJlbnRzLnJlZHVjZSgoc2hvdWxkRHJvcFVwOiBib29sZWFuLCBwYXJlbnQ6IEhUTUxFbGVtZW50KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHBhcmVudFJlY3QgPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0XHRcdGNvbnN0IGlzQmVsb3dQYXJlbnQgPSAhKG1lbnVSZWN0LmJvdHRvbSA8PSBwYXJlbnRSZWN0LmJvdHRvbSk7XG5cdFx0XHRcdHJldHVybiBzaG91bGREcm9wVXAgfHwgaXNCZWxvd1BhcmVudDtcblx0XHRcdH0sIGZhbHNlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogRXhwYW5kcyB0aGUgZHJvcGRvd24gbWVudSBpbiB0aGUgdmlldy5cblx0ICovXG5cdG9wZW5NZW51KCkge1xuXHRcdC8vIHByZXZlbnRzIHRoZSBkcm9wZG93biBmcm9tIG9wZW5pbmcgd2hlbiBsaXN0IG9mIGl0ZW1zIGlzIGVtcHR5XG5cdFx0aWYgKHRoaXMudmlldy5nZXRMaXN0SXRlbXMoKS5sZW5ndGggPT09IDApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLl9kcm9wVXAgPSBmYWxzZTtcblx0XHR0aGlzLm1lbnVJc0Nsb3NlZCA9IGZhbHNlO1xuXG5cdFx0Ly8gbW92ZSB0aGUgZHJvcGRvd24gbGlzdCB0byB0aGUgYm9keSBpZiB3ZSdyZSBub3QgYXBwZW5kaW5nIGlubGluZVxuXHRcdC8vIGFuZCBwb3NpdGlvbiBpdCByZWxhdGl2ZSB0byB0aGUgZHJvcGRvd24gd3JhcHBlclxuXHRcdGlmICghdGhpcy5hcHBlbmRJbmxpbmUpIHtcblx0XHRcdGNvbnN0IHRhcmdldCA9IHRoaXMuZHJvcGRvd25CdXR0b24ubmF0aXZlRWxlbWVudDtcblx0XHRcdGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXHRcdFx0dGhpcy52aXNpYmlsaXR5U3Vic2NyaXB0aW9uID0gdGhpcy5lbGVtZW50U2VydmljZVxuXHRcdFx0XHQudmlzaWJpbGl0eSh0YXJnZXQsIHBhcmVudClcblx0XHRcdFx0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG5cdFx0XHRcdFx0aWYgKCF2YWx1ZS52aXNpYmxlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR0aGlzLl9hcHBlbmRUb0JvZHkoKTtcblx0XHR9XG5cblx0XHQvLyBzZXQgdGhlIGRyb3Bkb3duIG1lbnUgdG8gZHJvcCB1cCBpZiBpdCdzIG5lYXIgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuXG5cdFx0Ly8gc2V0VGltZW91dCBsZXRzIHVzIG1lYXN1cmUgYWZ0ZXIgaXQncyB2aXNpYmxlIGluIHRoZSBET01cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdGlmICh0aGlzLmRyb3BVcCA9PT0gbnVsbCB8fCB0aGlzLmRyb3BVcCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuX2Ryb3BVcCA9IHRoaXMuX3Nob3VsZERyb3BVcCgpO1xuXHRcdFx0fVxuXHRcdH0sIDApO1xuXG5cdFx0Ly8gd2UgYmluZCBub29wIHRvIGRvY3VtZW50LmJvZHkuZmlyc3RFbGVtZW50Q2hpbGQgdG8gYWxsb3cgc2FmYXJpIHRvIGZpcmUgZXZlbnRzXG5cdFx0Ly8gZnJvbSBkb2N1bWVudC4gVGhlbiB3ZSB1bmJpbmQgZXZlcnl0aGluZyBsYXRlciB0byBrZWVwIHRoaW5ncyBsaWdodC5cblx0XHRkb2N1bWVudC5ib2R5LmZpcnN0RWxlbWVudENoaWxkLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm5vb3AsIHRydWUpO1xuXHRcdGRvY3VtZW50LmJvZHkuZmlyc3RFbGVtZW50Q2hpbGQuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5ub29wLCB0cnVlKTtcblx0XHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdGhpcy5vdXRzaWRlQ2xpY2ssIHRydWUpO1xuXHRcdGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsIHRoaXMub3V0c2lkZUtleSwgdHJ1ZSk7XG5cdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLnZpZXcuaW5pdEZvY3VzKCksIDApO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbGxhcHNpbmcgdGhlIGRyb3Bkb3duIG1lbnUgYW5kIHJlbW92aW5nIHVubmVjZXNzYXJ5IGBFdmVudExpc3RlbmVyc2AuXG5cdCAqL1xuXHRjbG9zZU1lbnUoKSB7XG5cdFx0Ly8gcmV0dXJuIGVhcmx5IGlmIHRoZSBtZW51IGlzIGFscmVhZHkgY2xvc2VkXG5cdFx0aWYgKHRoaXMubWVudUlzQ2xvc2VkKSB7IHJldHVybjsgfVxuXHRcdHRoaXMubWVudUlzQ2xvc2VkID0gdHJ1ZTtcblx0XHR0aGlzLmNoZWNrRm9yUmVvcmRlcigpO1xuXHRcdHRoaXMub25DbG9zZS5lbWl0KCk7XG5cdFx0dGhpcy5jbG9zZS5lbWl0KCk7XG5cblx0XHQvLyBmb2N1cyB0aGUgdHJpZ2dlciBidXR0b24gd2hlbiB3ZSBjbG9zZSAuLi5cblx0XHR0aGlzLmRyb3Bkb3duQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuXHRcdC8vIHJlbW92ZSB0aGUgY29uZGl0aW9uYWwgb25jZSB0aGlzIGFwaSBpcyBzZXR0bGVkIGFuZCBwYXJ0IG9mIGFic3RyYWN0LWRyb3Bkb3duLXZpZXcuY2xhc3Ncblx0XHRpZiAodGhpcy52aWV3W1wiZGlzYWJsZVNjcm9sbFwiXSkge1xuXHRcdFx0dGhpcy52aWV3W1wiZGlzYWJsZVNjcm9sbFwiXSgpO1xuXHRcdH1cblxuXHRcdC8vIG1vdmUgdGhlIGxpc3QgYmFjayBpbiB0aGUgY29tcG9uZW50IG9uIGNsb3NlXG5cdFx0aWYgKCF0aGlzLmFwcGVuZElubGluZSkge1xuXHRcdFx0dGhpcy52aXNpYmlsaXR5U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdFx0XHR0aGlzLl9hcHBlbmRUb0Ryb3Bkb3duKCk7XG5cdFx0fVxuXHRcdGRvY3VtZW50LmJvZHkuZmlyc3RFbGVtZW50Q2hpbGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIHRoaXMubm9vcCwgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQuYm9keS5maXJzdEVsZW1lbnRDaGlsZC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLCB0aGlzLm5vb3AsIHRydWUpO1xuXHRcdGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCB0aGlzLm91dHNpZGVDbGljaywgdHJ1ZSk7XG5cdFx0ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIiwgdGhpcy5vdXRzaWRlS2V5LCB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0b2dnbGluZyBtZW51IHN0YXRlcyBiZXR3ZWVuIG9wZW4vZXhwYW5kZWQgYW5kIGNsb3NlZC9jb2xsYXBzZWQuXG5cdCAqL1xuXHR0b2dnbGVNZW51KCkge1xuXHRcdGlmICh0aGlzLm1lbnVJc0Nsb3NlZCkge1xuXHRcdFx0dGhpcy5vcGVuTWVudSgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNsb3NlTWVudSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG5cdFx0cmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG5cdH1cblxuXHRoYW5kbGVGb2N1cyhldmVudDogRm9jdXNFdmVudCkge1xuXHRcdHRoaXMuX2lzRm9jdXNlZCA9IGV2ZW50LnR5cGUgPT09IFwiZm9jdXNcIjtcblx0XHRpZiAoZXZlbnQudHlwZSA9PT0gXCJibHVyXCIpIHtcblx0XHRcdHRoaXMub25CbHVyKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZW4gaXQncyBuZWVkZWQgdG8gYXBwbHkgdGhlIHNlbGVjdGlvbiBmZWVkYmFja1xuXHQgKi9cblx0cHJvdGVjdGVkIGNoZWNrRm9yUmVvcmRlcigpIHtcblx0XHRjb25zdCB0b3BBZnRlclJlb3BlbiA9IHRoaXMubWVudUlzQ2xvc2VkICYmIHRoaXMuc2VsZWN0aW9uRmVlZGJhY2sgPT09IFwidG9wLWFmdGVyLXJlb3BlblwiO1xuXHRcdGlmICgodGhpcy50eXBlID09PSBcIm11bHRpXCIpICYmICh0b3BBZnRlclJlb3BlbiB8fCB0aGlzLnNlbGVjdGlvbkZlZWRiYWNrID09PSBcInRvcFwiKSkge1xuXHRcdFx0dGhpcy52aWV3LnJlb3JkZXJTZWxlY3RlZCgpO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -66,7 +66,8 @@ export class IconDirective {
66
66
  "aria-label": this.ariaLabel,
67
67
  "aria-labelledby": this.ariaLabelledBy,
68
68
  "aria-hidden": this.ariaHidden,
69
- focusable: this.isFocusable.toString()
69
+ focusable: this.isFocusable.toString(),
70
+ fill: icon.attrs.fill
70
71
  });
71
72
  const attrKeys = Object.keys(attributes);
72
73
  for (let i = 0; i < attrKeys.length; i++) {
@@ -124,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
124
125
  }], isFocusable: [{
125
126
  type: Input
126
127
  }] } });
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWNvbi9pY29uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUVULEtBQUssRUFHTCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVyRDs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFFekI7O09BRUc7SUFDSCxJQUFhLE9BQU8sQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUN6QixDQUFDO2FBRU0sbUJBQWMsR0FBRyxDQUFDLEFBQUosQ0FBSztJQWdCMUIsWUFDVyxVQUFzQixFQUN0QixXQUF3QjtRQUR4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBaEIxQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUVaLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUsxQixDQUFDO0lBRUosVUFBVSxDQUFDLFFBQWdCO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQztRQUNULElBQUksQ0FBQztZQUNKLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hC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R0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLFVBQVUsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDM0YsQ0FBQztJQUNGLENBQUM7SUFFRCxlQUFlO1FBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBaUI7UUFDckMsMERBQTBEO1FBQzFELCtDQUErQztRQUMvQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDRixDQUFDOytHQTFHVyxhQUFhO21HQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBSHpCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtpQkFDaEM7eUdBTWEsT0FBTztzQkFBbkIsS0FBSztnQkFNRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0QWZ0ZXJWaWV3SW5pdCxcblx0RGlyZWN0aXZlLFxuXHRFbGVtZW50UmVmLFxuXHRJbnB1dCxcblx0T25DaGFuZ2VzLFxuXHRTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gXCIuL2ljb24uc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0QXR0cmlidXRlcyB9IGZyb20gXCJAY2FyYm9uL2ljb24taGVscGVyc1wiO1xuXG4vKipcbiAqIEEgZGlyZWN0aXZlIGZvciBwb3B1bGF0aW5nIGEgc3ZnIGVsZW1lbnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNhcmJvbiBpY29uIG5hbWUuXG4gKlxuICogR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG4gKiBgYGBcbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLWljb24tLWJhc2ljKVxuICovXG5ARGlyZWN0aXZlKHtcblx0c2VsZWN0b3I6IFwiW2Nkc0ljb25dLCBbaWJtSWNvbl1cIlxufSlcbmV4cG9ydCBjbGFzcyBJY29uRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuXHQvKipcblx0ICogQGRlcHJlY2F0ZWQgc2luY2UgdjUgLSBVc2UgYGNkc0ljb25gIGlucHV0IHByb3BlcnR5IGluc3RlYWRcblx0ICovXG5cdEBJbnB1dCgpIHNldCBpYm1JY29uKGljb25OYW1lOiBzdHJpbmcpIHtcblx0XHR0aGlzLmNkc0ljb24gPSBpY29uTmFtZTtcblx0fVxuXG5cdHN0YXRpYyB0aXRsZUlkQ291bnRlciA9IDA7XG5cblx0QElucHV0KCkgY2RzSWNvbiA9IFwiXCI7XG5cblx0QElucHV0KCkgc2l6ZSA9IFwiMTZcIjtcblxuXHRASW5wdXQoKSB0aXRsZSA9IFwiXCI7XG5cblx0QElucHV0KCkgYXJpYUxhYmVsID0gXCJcIjtcblxuXHRASW5wdXQoKSBhcmlhTGFiZWxsZWRCeSA9IFwiXCI7XG5cblx0QElucHV0KCkgYXJpYUhpZGRlbiA9IFwiXCI7XG5cblx0QElucHV0KCkgaXNGb2N1c2FibGUgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcblx0XHRwcm90ZWN0ZWQgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlXG5cdCkge31cblxuXHRyZW5kZXJJY29uKGljb25OYW1lOiBzdHJpbmcpIHtcblx0XHRjb25zdCByb290ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG5cblx0XHRsZXQgaWNvbjtcblx0XHR0cnkge1xuXHRcdFx0aWNvbiA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0KGljb25OYW1lLCB0aGlzLnNpemUudG9TdHJpbmcoKSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGNvbnNvbGUud2FybihlcnJvcik7XG5cdFx0XHQvLyBiYWlsIG91dFxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IGRvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcblx0XHRjb25zdCByYXdTVkcgPSBpY29uLnN2Zztcblx0XHRjb25zdCBzdmdFbGVtZW50ID0gZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyhyYXdTVkcsIFwiaW1hZ2Uvc3ZnK3htbFwiKS5kb2N1bWVudEVsZW1lbnQ7XG5cblx0XHRsZXQgbm9kZTogQ2hpbGROb2RlID0gcm9vdC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09IFwiU1ZHXCIgPyBzdmdFbGVtZW50IDogc3ZnRWxlbWVudC5maXJzdENoaWxkO1xuXHRcdHJvb3QuaW5uZXJIVE1MID0gXCJcIjsgLy8gQ2xlYXIgcm9vdCBlbGVtZW50XG5cdFx0d2hpbGUgKG5vZGUpIHtcblx0XHRcdC8vIGltcG9ydE5vZGUgbWFrZXMgYSBjbG9uZSBvZiB0aGUgbm9kZVxuXHRcdFx0Ly8gdGhpcyBlbnN1cmVzIHdlIGtlZXAgbG9vcGluZyBvdmVyIHRoZSBub2RlcyBpbiB0aGUgcGFyc2VkIGRvY3VtZW50XG5cdFx0XHRyb290LmFwcGVuZENoaWxkKHJvb3Qub3duZXJEb2N1bWVudC5pbXBvcnROb2RlKG5vZGUsIHRydWUpKTtcblx0XHRcdC8vIHR5cGUgdGhlIG5vZGUgYmVjYXVzZSB0aGUgYW5ndWxhciBjb21waWxlciBmcmVha3Mgb3V0IGlmIGl0XG5cdFx0XHQvLyBlbmRzIHVwIHRoaW5raW5nIGl0J3MgYSBgTm9kZWAgaW5zdGVhZCBvZiBhIGBDaGlsZE5vZGVgXG5cdFx0XHRub2RlID0gbm9kZS5uZXh0U2libGluZyBhcyBDaGlsZE5vZGU7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3ZnID0gcm9vdC50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09IFwiU1ZHXCIgPyBzdmdFbGVtZW50IDogcm9vdDtcblx0XHRzdmcuc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiKTtcblxuXHRcdGNvbnN0IGF0dHJpYnV0ZXMgPSBnZXRBdHRyaWJ1dGVzKHtcblx0XHRcdHdpZHRoOiBpY29uLmF0dHJzLndpZHRoLFxuXHRcdFx0aGVpZ2h0OiBpY29uLmF0dHJzLmhlaWdodCxcblx0XHRcdHZpZXdCb3g6IGljb24uYXR0cnMudmlld0JveCxcblx0XHRcdHRpdGxlOiB0aGlzLnRpdGxlLFxuXHRcdFx0XCJhcmlhLWxhYmVsXCI6IHRoaXMuYXJpYUxhYmVsLFxuXHRcdFx0XCJhcmlhLWxhYmVsbGVkYnlcIjogdGhpcy5hcmlhTGFiZWxsZWRCeSxcblx0XHRcdFwiYXJpYS1oaWRkZW5cIjogdGhpcy5hcmlhSGlkZGVuLFxuXHRcdFx0Zm9jdXNhYmxlOiB0aGlzLmlzRm9jdXNhYmxlLnRvU3RyaW5nKClcblx0XHR9KTtcblxuXHRcdGNvbnN0IGF0dHJLZXlzID0gT2JqZWN0LmtleXMoYXR0cmlidXRlcyk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhdHRyS2V5cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Y29uc3Qga2V5ID0gYXR0cktleXNbaV07XG5cdFx0XHRjb25zdCB2YWx1ZSA9IGF0dHJpYnV0ZXNba2V5XSBhcyBzdHJpbmc7XG5cblx0XHRcdGlmIChrZXkgPT09IFwidGl0bGVcIikge1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdHN2Zy5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGF0dHJpYnV0ZXNbXCJ0aXRsZVwiXSkge1xuXHRcdFx0Y29uc3QgdGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwidGl0bGVcIik7XG5cdFx0XHR0aXRsZS50ZXh0Q29udGVudCA9IGF0dHJpYnV0ZXMudGl0bGUgYXMgc3RyaW5nO1xuXHRcdFx0SWNvbkRpcmVjdGl2ZS50aXRsZUlkQ291bnRlcisrO1xuXHRcdFx0dGl0bGUuc2V0QXR0cmlidXRlKFwiaWRcIiwgYCR7aWNvbi5uYW1lfS10aXRsZS0ke0ljb25EaXJlY3RpdmUudGl0bGVJZENvdW50ZXJ9YCk7XG5cdFx0XHQvLyB0aXRsZSBtdXN0IGJlIGZpcnN0IGZvciBzY3JlZW4gcmVhZGVyc1xuXHRcdFx0c3ZnLmluc2VydEJlZm9yZSh0aXRsZSwgc3ZnLmZpcnN0RWxlbWVudENoaWxkKTtcblx0XHRcdHN2Zy5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsbGVkYnlcIiwgYCR7aWNvbi5uYW1lfS10aXRsZS0ke0ljb25EaXJlY3RpdmUudGl0bGVJZENvdW50ZXJ9YCk7XG5cdFx0fVxuXHR9XG5cblx0bmdBZnRlclZpZXdJbml0KCkge1xuXHRcdHRoaXMucmVuZGVySWNvbih0aGlzLmNkc0ljb24pO1xuXHR9XG5cblx0bmdPbkNoYW5nZXMoeyBjZHNJY29uIH06IFNpbXBsZUNoYW5nZXMpIHtcblx0XHQvLyBXZSB3YW50IHRvIGlnbm9yZSBmaXJzdCBjaGFuZ2UgdG8gbGV0IHRoZSBpY29uIHJlZ2lzdGVyXG5cdFx0Ly8gYW5kIGFkZCBvbmx5IGFmdGVyIHZpZXcgaGFzIGJlZW4gaW5pdGlhbGl6ZWRcblx0XHRpZiAoY2RzSWNvbiAmJiAhY2RzSWNvbi5pc0ZpcnN0Q2hhbmdlKCkpIHtcblx0XHRcdHRoaXMucmVuZGVySWNvbih0aGlzLmNkc0ljb24pO1xuXHRcdH1cblx0fVxufVxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaWNvbi9pY29uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRU4sU0FBUyxFQUVULEtBQUssRUFHTCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUVyRDs7Ozs7Ozs7OztHQVVHO0FBSUgsTUFBTSxPQUFPLGFBQWE7SUFFekI7O09BRUc7SUFDSCxJQUFhLE9BQU8sQ0FBQyxRQUFnQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUN6QixDQUFDO2FBRU0sbUJBQWMsR0FBRyxDQUFDLEFBQUosQ0FBSztJQWdCMUIsWUFDVyxVQUFzQixFQUN0QixXQUF3QjtRQUR4QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBaEIxQixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRWIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUVaLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFWCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUsxQixDQUFDO0lBRUosVUFBVSxDQUFDLFFBQWdCO1FBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBNEIsQ0FBQztRQUUxRCxJQUFJLElBQUksQ0FBQztRQUNULElBQUksQ0FBQztZQUNKLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEIsV0FBVztZQUNYLE9BQU87UUFDUixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxDQUFDLGVBQWUsQ0FBQztRQUV0RixJQUFJLElBQUksR0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMscUJBQXFCO1FBQzFDLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDYix1Q0FBdUM7WUFDdkMscUVBQXFFO1lBQ3JFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUQsOERBQThEO1lBQzlELDBEQUEwRDtZQUMxRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQXdCLENBQUM7UUFDdEMsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRSxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO1FBRXhELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQztZQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQzVCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ3RDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUM5QixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtTQUNyQixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQVcsQ0FBQztZQUV4QyxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDckIsU0FBUztZQUNWLENBQUM7WUFFRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNYLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN6QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLEtBQUssQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEtBQWUsQ0FBQztZQUMvQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDL0IsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxVQUFVLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLHlDQUF5QztZQUN6QyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvQyxHQUFHLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksVUFBVSxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUMzRixDQUFDO0lBQ0YsQ0FBQztJQUVELGVBQWU7UUFDZCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFpQjtRQUNyQywwREFBMEQ7UUFDMUQsK0NBQStDO1FBQy9DLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNGLENBQUM7K0dBM0dXLGFBQWE7bUdBQWIsYUFBYTs7NEZBQWIsYUFBYTtrQkFIekIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsc0JBQXNCO2lCQUNoQzt5R0FNYSxPQUFPO3NCQUFuQixLQUFLO2dCQU1HLE9BQU87c0JBQWYsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBZnRlclZpZXdJbml0LFxuXHREaXJlY3RpdmUsXG5cdEVsZW1lbnRSZWYsXG5cdElucHV0LFxuXHRPbkNoYW5nZXMsXG5cdFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSBcIi4vaWNvbi5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZXRBdHRyaWJ1dGVzIH0gZnJvbSBcIkBjYXJib24vaWNvbi1oZWxwZXJzXCI7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgZm9yIHBvcHVsYXRpbmcgYSBzdmcgZWxlbWVudCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgY2FyYm9uIGljb24gbmFtZS5cbiAqXG4gKiBHZXQgc3RhcnRlZCB3aXRoIGltcG9ydGluZyB0aGUgbW9kdWxlOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIFtTZWUgZGVtb10oLi4vLi4vP3BhdGg9L3N0b3J5L2NvbXBvbmVudHMtaWNvbi0tYmFzaWMpXG4gKi9cbkBEaXJlY3RpdmUoe1xuXHRzZWxlY3RvcjogXCJbY2RzSWNvbl0sIFtpYm1JY29uXVwiXG59KVxuZXhwb3J0IGNsYXNzIEljb25EaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBzaW5jZSB2NSAtIFVzZSBgY2RzSWNvbmAgaW5wdXQgcHJvcGVydHkgaW5zdGVhZFxuXHQgKi9cblx0QElucHV0KCkgc2V0IGlibUljb24oaWNvbk5hbWU6IHN0cmluZykge1xuXHRcdHRoaXMuY2RzSWNvbiA9IGljb25OYW1lO1xuXHR9XG5cblx0c3RhdGljIHRpdGxlSWRDb3VudGVyID0gMDtcblxuXHRASW5wdXQoKSBjZHNJY29uID0gXCJcIjtcblxuXHRASW5wdXQoKSBzaXplID0gXCIxNlwiO1xuXG5cdEBJbnB1dCgpIHRpdGxlID0gXCJcIjtcblxuXHRASW5wdXQoKSBhcmlhTGFiZWwgPSBcIlwiO1xuXG5cdEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5ID0gXCJcIjtcblxuXHRASW5wdXQoKSBhcmlhSGlkZGVuID0gXCJcIjtcblxuXHRASW5wdXQoKSBpc0ZvY3VzYWJsZSA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByb3RlY3RlZCBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuXHRcdHByb3RlY3RlZCBpY29uU2VydmljZTogSWNvblNlcnZpY2Vcblx0KSB7fVxuXG5cdHJlbmRlckljb24oaWNvbk5hbWU6IHN0cmluZykge1xuXHRcdGNvbnN0IHJvb3QgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuXHRcdGxldCBpY29uO1xuXHRcdHRyeSB7XG5cdFx0XHRpY29uID0gdGhpcy5pY29uU2VydmljZS5nZXQoaWNvbk5hbWUsIHRoaXMuc2l6ZS50b1N0cmluZygpKTtcblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0Y29uc29sZS53YXJuKGVycm9yKTtcblx0XHRcdC8vIGJhaWwgb3V0XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3QgZG9tUGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuXHRcdGNvbnN0IHJhd1NWRyA9IGljb24uc3ZnO1xuXHRcdGNvbnN0IHN2Z0VsZW1lbnQgPSBkb21QYXJzZXIucGFyc2VGcm9tU3RyaW5nKHJhd1NWRywgXCJpbWFnZS9zdmcreG1sXCIpLmRvY3VtZW50RWxlbWVudDtcblxuXHRcdGxldCBub2RlOiBDaGlsZE5vZGUgPSByb290LnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gXCJTVkdcIiA/IHN2Z0VsZW1lbnQgOiBzdmdFbGVtZW50LmZpcnN0Q2hpbGQ7XG5cdFx0cm9vdC5pbm5lckhUTUwgPSBcIlwiOyAvLyBDbGVhciByb290IGVsZW1lbnRcblx0XHR3aGlsZSAobm9kZSkge1xuXHRcdFx0Ly8gaW1wb3J0Tm9kZSBtYWtlcyBhIGNsb25lIG9mIHRoZSBub2RlXG5cdFx0XHQvLyB0aGlzIGVuc3VyZXMgd2Uga2VlcCBsb29waW5nIG92ZXIgdGhlIG5vZGVzIGluIHRoZSBwYXJzZWQgZG9jdW1lbnRcblx0XHRcdHJvb3QuYXBwZW5kQ2hpbGQocm9vdC5vd25lckRvY3VtZW50LmltcG9ydE5vZGUobm9kZSwgdHJ1ZSkpO1xuXHRcdFx0Ly8gdHlwZSB0aGUgbm9kZSBiZWNhdXNlIHRoZSBhbmd1bGFyIGNvbXBpbGVyIGZyZWFrcyBvdXQgaWYgaXRcblx0XHRcdC8vIGVuZHMgdXAgdGhpbmtpbmcgaXQncyBhIGBOb2RlYCBpbnN0ZWFkIG9mIGEgYENoaWxkTm9kZWBcblx0XHRcdG5vZGUgPSBub2RlLm5leHRTaWJsaW5nIGFzIENoaWxkTm9kZTtcblx0XHR9XG5cblx0XHRjb25zdCBzdmcgPSByb290LnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gXCJTVkdcIiA/IHN2Z0VsZW1lbnQgOiByb290O1xuXHRcdHN2Zy5zZXRBdHRyaWJ1dGUoXCJ4bWxuc1wiLCBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIpO1xuXG5cdFx0Y29uc3QgYXR0cmlidXRlcyA9IGdldEF0dHJpYnV0ZXMoe1xuXHRcdFx0d2lkdGg6IGljb24uYXR0cnMud2lkdGgsXG5cdFx0XHRoZWlnaHQ6IGljb24uYXR0cnMuaGVpZ2h0LFxuXHRcdFx0dmlld0JveDogaWNvbi5hdHRycy52aWV3Qm94LFxuXHRcdFx0dGl0bGU6IHRoaXMudGl0bGUsXG5cdFx0XHRcImFyaWEtbGFiZWxcIjogdGhpcy5hcmlhTGFiZWwsXG5cdFx0XHRcImFyaWEtbGFiZWxsZWRieVwiOiB0aGlzLmFyaWFMYWJlbGxlZEJ5LFxuXHRcdFx0XCJhcmlhLWhpZGRlblwiOiB0aGlzLmFyaWFIaWRkZW4sXG5cdFx0XHRmb2N1c2FibGU6IHRoaXMuaXNGb2N1c2FibGUudG9TdHJpbmcoKSxcblx0XHRcdGZpbGw6IGljb24uYXR0cnMuZmlsbFxuXHRcdH0pO1xuXG5cdFx0Y29uc3QgYXR0cktleXMgPSBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJLZXlzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRjb25zdCBrZXkgPSBhdHRyS2V5c1tpXTtcblx0XHRcdGNvbnN0IHZhbHVlID0gYXR0cmlidXRlc1trZXldIGFzIHN0cmluZztcblxuXHRcdFx0aWYgKGtleSA9PT0gXCJ0aXRsZVwiKSB7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0c3ZnLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoYXR0cmlidXRlc1tcInRpdGxlXCJdKSB7XG5cdFx0XHRjb25zdCB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0aXRsZVwiKTtcblx0XHRcdHRpdGxlLnRleHRDb250ZW50ID0gYXR0cmlidXRlcy50aXRsZSBhcyBzdHJpbmc7XG5cdFx0XHRJY29uRGlyZWN0aXZlLnRpdGxlSWRDb3VudGVyKys7XG5cdFx0XHR0aXRsZS5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBgJHtpY29uLm5hbWV9LXRpdGxlLSR7SWNvbkRpcmVjdGl2ZS50aXRsZUlkQ291bnRlcn1gKTtcblx0XHRcdC8vIHRpdGxlIG11c3QgYmUgZmlyc3QgZm9yIHNjcmVlbiByZWFkZXJzXG5cdFx0XHRzdmcuaW5zZXJ0QmVmb3JlKHRpdGxlLCBzdmcuZmlyc3RFbGVtZW50Q2hpbGQpO1xuXHRcdFx0c3ZnLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxsZWRieVwiLCBgJHtpY29uLm5hbWV9LXRpdGxlLSR7SWNvbkRpcmVjdGl2ZS50aXRsZUlkQ291bnRlcn1gKTtcblx0XHR9XG5cdH1cblxuXHRuZ0FmdGVyVmlld0luaXQoKSB7XG5cdFx0dGhpcy5yZW5kZXJJY29uKHRoaXMuY2RzSWNvbik7XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyh7IGNkc0ljb24gfTogU2ltcGxlQ2hhbmdlcykge1xuXHRcdC8vIFdlIHdhbnQgdG8gaWdub3JlIGZpcnN0IGNoYW5nZSB0byBsZXQgdGhlIGljb24gcmVnaXN0ZXJcblx0XHQvLyBhbmQgYWRkIG9ubHkgYWZ0ZXIgdmlldyBoYXMgYmVlbiBpbml0aWFsaXplZFxuXHRcdGlmIChjZHNJY29uICYmICFjZHNJY29uLmlzRmlyc3RDaGFuZ2UoKSkge1xuXHRcdFx0dGhpcy5yZW5kZXJJY29uKHRoaXMuY2RzSWNvbik7XG5cdFx0fVxuXHR9XG59XG4iXX0=