@comet/cms-admin 9.0.0-beta.1 → 9.0.0-beta.3

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 (543) hide show
  1. package/lib/blocks/AnchorBlock.d.ts +1 -1
  2. package/lib/blocks/AnchorBlock.d.ts.map +1 -1
  3. package/lib/blocks/DamVideoBlock.d.ts +1 -1
  4. package/lib/blocks/DamVideoBlock.d.ts.map +1 -1
  5. package/lib/blocks/DamVideoBlock.js +7 -3
  6. package/lib/blocks/EmailLinkBlock.d.ts +1 -1
  7. package/lib/blocks/EmailLinkBlock.d.ts.map +1 -1
  8. package/lib/blocks/ExternalLinkBlock.d.ts +1 -1
  9. package/lib/blocks/ExternalLinkBlock.d.ts.map +1 -1
  10. package/lib/blocks/InternalLinkBlock.d.ts +1 -1
  11. package/lib/blocks/InternalLinkBlock.d.ts.map +1 -1
  12. package/lib/blocks/InternalLinkBlock.js +1 -1
  13. package/lib/blocks/PhoneLinkBlock.d.ts +1 -1
  14. package/lib/blocks/PhoneLinkBlock.d.ts.map +1 -1
  15. package/lib/blocks/PixelImageBlock.d.ts +1 -1
  16. package/lib/blocks/PixelImageBlock.d.ts.map +1 -1
  17. package/lib/blocks/PixelImageBlock.js +11 -5
  18. package/lib/blocks/SpaceBlock.d.ts +1 -1
  19. package/lib/blocks/SpaceBlock.d.ts.map +1 -1
  20. package/lib/blocks/SvgImageBlock.d.ts +1 -1
  21. package/lib/blocks/SvgImageBlock.d.ts.map +1 -1
  22. package/lib/blocks/SvgImageBlock.js +10 -4
  23. package/lib/blocks/VimeoVideoBlock.d.ts +1 -1
  24. package/lib/blocks/VimeoVideoBlock.d.ts.map +1 -1
  25. package/lib/blocks/VimeoVideoBlock.js +9 -3
  26. package/lib/blocks/YouTubeVideoBlock.d.ts +1 -1
  27. package/lib/blocks/YouTubeVideoBlock.d.ts.map +1 -1
  28. package/lib/blocks/YouTubeVideoBlock.js +9 -3
  29. package/lib/blocks/clipboard/CannotPasteBlockDialog.d.ts +1 -1
  30. package/lib/blocks/clipboard/CannotPasteBlockDialog.d.ts.map +1 -1
  31. package/lib/blocks/clipboard/useBlockClipboard.d.ts +2 -2
  32. package/lib/blocks/clipboard/useBlockClipboard.d.ts.map +1 -1
  33. package/lib/blocks/common/AdminTabsTabContent.d.ts +1 -1
  34. package/lib/blocks/common/AdminTabsTabContent.d.ts.map +1 -1
  35. package/lib/blocks/common/AdminTabsTabContent.js +2 -2
  36. package/lib/blocks/common/BlockAdminComponentButton.d.ts +1 -1
  37. package/lib/blocks/common/BlockAdminComponentButton.d.ts.map +1 -1
  38. package/lib/blocks/common/BlockAdminComponentNestedButton.d.ts +1 -1
  39. package/lib/blocks/common/BlockAdminComponentNestedButton.d.ts.map +1 -1
  40. package/lib/blocks/common/BlockAdminComponentNestedButton.js +1 -1
  41. package/lib/blocks/common/BlockAdminComponentRoot.d.ts +1 -1
  42. package/lib/blocks/common/BlockAdminComponentRoot.d.ts.map +1 -1
  43. package/lib/blocks/common/BlockAdminComponentRoot.js +1 -1
  44. package/lib/blocks/common/BlockAdminComponentSection.d.ts +1 -1
  45. package/lib/blocks/common/BlockAdminComponentSection.d.ts.map +1 -1
  46. package/lib/blocks/common/BlockAdminComponentSection.js +2 -2
  47. package/lib/blocks/common/BlockAdminComponentSectionGroup.d.ts +1 -1
  48. package/lib/blocks/common/BlockAdminComponentSectionGroup.d.ts.map +1 -1
  49. package/lib/blocks/common/BlockAdminComponentSectionGroup.js +1 -1
  50. package/lib/blocks/common/BlockAdminTabLabel.d.ts +1 -1
  51. package/lib/blocks/common/BlockAdminTabLabel.d.ts.map +1 -1
  52. package/lib/blocks/common/BlockAdminTabLabel.js +1 -1
  53. package/lib/blocks/common/BlockAdminTabs.d.ts +1 -1
  54. package/lib/blocks/common/BlockAdminTabs.d.ts.map +1 -1
  55. package/lib/blocks/common/BlockAdminTabs.js +3 -3
  56. package/lib/blocks/common/Collapsible.d.ts +1 -1
  57. package/lib/blocks/common/Collapsible.d.ts.map +1 -1
  58. package/lib/blocks/common/CollapsibleSwitchButtonHeader.d.ts +1 -1
  59. package/lib/blocks/common/CollapsibleSwitchButtonHeader.d.ts.map +1 -1
  60. package/lib/blocks/common/CollapsibleSwitchButtonHeader.js +1 -1
  61. package/lib/blocks/common/HiddenInSubroute.d.ts +1 -1
  62. package/lib/blocks/common/HiddenInSubroute.d.ts.map +1 -1
  63. package/lib/blocks/common/blockRow/BlockPreviewContent.d.ts +1 -1
  64. package/lib/blocks/common/blockRow/BlockPreviewContent.d.ts.map +1 -1
  65. package/lib/blocks/common/blockRow/BlockRow.d.ts.map +1 -1
  66. package/lib/blocks/common/blockRow/BlockRow.js +3 -1
  67. package/lib/blocks/common/blockRow/image/StackedImages.d.ts +1 -1
  68. package/lib/blocks/common/blockRow/image/StackedImages.d.ts.map +1 -1
  69. package/lib/blocks/config/BlocksConfigContext.d.ts +2 -2
  70. package/lib/blocks/config/BlocksConfigContext.d.ts.map +1 -1
  71. package/lib/blocks/context/BlockContext.d.ts +2 -2
  72. package/lib/blocks/context/BlockContext.d.ts.map +1 -1
  73. package/lib/blocks/context/BlockContextProvider.d.ts +1 -1
  74. package/lib/blocks/context/BlockContextProvider.d.ts.map +1 -1
  75. package/lib/blocks/createImageLinkBlock.d.ts +1 -1
  76. package/lib/blocks/createImageLinkBlock.d.ts.map +1 -1
  77. package/lib/blocks/createLinkBlock.d.ts +1 -1
  78. package/lib/blocks/createLinkBlock.d.ts.map +1 -1
  79. package/lib/blocks/createRichTextBlock.d.ts +1 -1
  80. package/lib/blocks/createRichTextBlock.d.ts.map +1 -1
  81. package/lib/blocks/createSeoBlock.d.ts +1 -1
  82. package/lib/blocks/createSeoBlock.d.ts.map +1 -1
  83. package/lib/blocks/createSeoBlock.js +3 -3
  84. package/lib/blocks/createTableBlock.d.ts +2 -2
  85. package/lib/blocks/createTableBlock.d.ts.map +1 -1
  86. package/lib/blocks/createTextImageBlock.d.ts +2 -2
  87. package/lib/blocks/createTextImageBlock.d.ts.map +1 -1
  88. package/lib/blocks/createTextLinkBlock.d.ts +1 -1
  89. package/lib/blocks/createTextLinkBlock.d.ts.map +1 -1
  90. package/lib/blocks/factories/columnsBlock/FinalFormColumnsSelect.d.ts +1 -1
  91. package/lib/blocks/factories/columnsBlock/FinalFormColumnsSelect.d.ts.map +1 -1
  92. package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.d.ts +2 -2
  93. package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.d.ts.map +1 -1
  94. package/lib/blocks/factories/columnsBlock/FinalFormLayoutSelect.js +6 -6
  95. package/lib/blocks/factories/createBlocksBlock.d.ts +1 -1
  96. package/lib/blocks/factories/createBlocksBlock.d.ts.map +1 -1
  97. package/lib/blocks/factories/createBlocksBlock.js +6 -6
  98. package/lib/blocks/factories/createColumnsBlock.d.ts +2 -2
  99. package/lib/blocks/factories/createColumnsBlock.d.ts.map +1 -1
  100. package/lib/blocks/factories/createColumnsBlock.js +5 -5
  101. package/lib/blocks/factories/createCompositeBlock.d.ts +1 -1
  102. package/lib/blocks/factories/createCompositeBlock.d.ts.map +1 -1
  103. package/lib/blocks/factories/createCompositeBlock.js +3 -1
  104. package/lib/blocks/factories/createListBlock.d.ts +2 -2
  105. package/lib/blocks/factories/createListBlock.d.ts.map +1 -1
  106. package/lib/blocks/factories/createListBlock.js +8 -6
  107. package/lib/blocks/factories/createOptionalBlock.d.ts +3 -3
  108. package/lib/blocks/factories/createOptionalBlock.d.ts.map +1 -1
  109. package/lib/blocks/factories/listBlock/createUseAdminComponent.d.ts +2 -2
  110. package/lib/blocks/factories/listBlock/createUseAdminComponent.d.ts.map +1 -1
  111. package/lib/blocks/factories/spaceBlock/createSpaceBlock.d.ts +1 -1
  112. package/lib/blocks/factories/spaceBlock/createSpaceBlock.d.ts.map +1 -1
  113. package/lib/blocks/form/createFinalFormBlock.d.ts +2 -2
  114. package/lib/blocks/form/createFinalFormBlock.d.ts.map +1 -1
  115. package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts +4 -4
  116. package/lib/blocks/helpers/composeBlocks/composeBlocks.d.ts.map +1 -1
  117. package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.d.ts +1 -1
  118. package/lib/blocks/helpers/composeBlocks/createCompositeBlockField.d.ts.map +1 -1
  119. package/lib/blocks/helpers/composeBlocks/createCompositeBlockFields.d.ts +1 -1
  120. package/lib/blocks/helpers/composeBlocks/createCompositeBlockFields.d.ts.map +1 -1
  121. package/lib/blocks/helpers/composeBlocks/createSettingsBlock.d.ts +1 -1
  122. package/lib/blocks/helpers/composeBlocks/createSettingsBlock.d.ts.map +1 -1
  123. package/lib/blocks/helpers/composeBlocks/types.d.ts +3 -3
  124. package/lib/blocks/helpers/composeBlocks/types.d.ts.map +1 -1
  125. package/lib/blocks/helpers/composeBlocks/utils.d.ts +2 -2
  126. package/lib/blocks/helpers/composeBlocks/utils.d.ts.map +1 -1
  127. package/lib/blocks/helpers/createCompositeBlockSelectField.d.ts +1 -1
  128. package/lib/blocks/helpers/createCompositeBlockSelectField.d.ts.map +1 -1
  129. package/lib/blocks/helpers/createCompositeBlockSwitchField.d.ts +1 -1
  130. package/lib/blocks/helpers/createCompositeBlockSwitchField.d.ts.map +1 -1
  131. package/lib/blocks/helpers/createCompositeBlockTextField.d.ts +1 -1
  132. package/lib/blocks/helpers/createCompositeBlockTextField.d.ts.map +1 -1
  133. package/lib/blocks/helpers/decomposeUpdateStateAction.d.ts +1 -1
  134. package/lib/blocks/helpers/decomposeUpdateStateAction.d.ts.map +1 -1
  135. package/lib/blocks/helpers/deduplicateBlockDependencies.d.ts +1 -1
  136. package/lib/blocks/helpers/deduplicateBlockDependencies.d.ts.map +1 -1
  137. package/lib/blocks/helpers/isBlockInterface.d.ts +1 -1
  138. package/lib/blocks/helpers/isBlockInterface.d.ts.map +1 -1
  139. package/lib/blocks/helpers/withAdditionalBlockAttributes.d.ts +1 -1
  140. package/lib/blocks/helpers/withAdditionalBlockAttributes.d.ts.map +1 -1
  141. package/lib/blocks/iframebridge/IFrameMessage.d.ts +1 -1
  142. package/lib/blocks/iframebridge/IFrameMessage.d.ts.map +1 -1
  143. package/lib/blocks/image/EditImageDialog.d.ts +1 -1
  144. package/lib/blocks/image/EditImageDialog.d.ts.map +1 -1
  145. package/lib/blocks/image/EditImageDialog.js +2 -2
  146. package/lib/blocks/rte/extension/CmsLink/Decorator.d.ts +1 -1
  147. package/lib/blocks/rte/extension/CmsLink/Decorator.d.ts.map +1 -1
  148. package/lib/blocks/rte/extension/CmsLink/EditorComponent.d.ts +2 -2
  149. package/lib/blocks/rte/extension/CmsLink/EditorComponent.d.ts.map +1 -1
  150. package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.d.ts +1 -1
  151. package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.d.ts.map +1 -1
  152. package/lib/blocks/rte/extension/CmsLink/createCmsLinkToolbarButton.js +2 -2
  153. package/lib/blocks/table/CellValue.d.ts +1 -1
  154. package/lib/blocks/table/CellValue.d.ts.map +1 -1
  155. package/lib/blocks/table/CellValue.js +6 -6
  156. package/lib/blocks/table/ColumnHeader.d.ts +4 -4
  157. package/lib/blocks/table/ColumnHeader.d.ts.map +1 -1
  158. package/lib/blocks/table/ColumnHeader.js +1 -1
  159. package/lib/blocks/table/EditCell.js +4 -4
  160. package/lib/blocks/table/RowActionsCell.d.ts +2 -2
  161. package/lib/blocks/table/RowActionsCell.d.ts.map +1 -1
  162. package/lib/blocks/table/TableBlockContext.d.ts +1 -1
  163. package/lib/blocks/table/TableBlockContext.d.ts.map +1 -1
  164. package/lib/blocks/table/TableBlockContext.js +3 -1
  165. package/lib/blocks/table/TableBlockGrid.d.ts +1 -1
  166. package/lib/blocks/table/TableBlockGrid.d.ts.map +1 -1
  167. package/lib/blocks/table/TableBlockGrid.js +17 -6
  168. package/lib/blocks/table/dataGridStyles.d.ts +1 -1
  169. package/lib/blocks/table/dataGridStyles.d.ts.map +1 -1
  170. package/lib/blocks/table/utils/column.d.ts +3 -3
  171. package/lib/blocks/table/utils/column.d.ts.map +1 -1
  172. package/lib/blocks/table/utils/ensureMinimumTableState.d.ts +2 -2
  173. package/lib/blocks/table/utils/ensureMinimumTableState.d.ts.map +1 -1
  174. package/lib/blocks/table/utils/getClipboardValueForSchema.d.ts +1 -1
  175. package/lib/blocks/table/utils/getClipboardValueForSchema.d.ts.map +1 -1
  176. package/lib/blocks/table/utils/row.d.ts +2 -2
  177. package/lib/blocks/table/utils/row.d.ts.map +1 -1
  178. package/lib/blocks/types.d.ts +2 -2
  179. package/lib/blocks/types.d.ts.map +1 -1
  180. package/lib/blocks/utils.d.ts +1 -1
  181. package/lib/blocks/utils.d.ts.map +1 -1
  182. package/lib/builds/BuildEntry.js +1 -1
  183. package/lib/builds/PublisherPage.js +1 -1
  184. package/lib/builds/StartBuildsDialog.d.ts.map +1 -1
  185. package/lib/builds/StartBuildsDialog.js +7 -3
  186. package/lib/common/InsertInBetweenAction.d.ts +1 -1
  187. package/lib/common/InsertInBetweenAction.d.ts.map +1 -1
  188. package/lib/common/InsertInBetweenAction.js +3 -3
  189. package/lib/common/MasterMenuRoutes.d.ts +1 -1
  190. package/lib/common/MasterMenuRoutes.d.ts.map +1 -1
  191. package/lib/common/PageName.js +1 -1
  192. package/lib/common/errors/errorMessages.d.ts +1 -1
  193. package/lib/common/errors/errorMessages.d.ts.map +1 -1
  194. package/lib/common/header/Header.d.ts +1 -1
  195. package/lib/common/header/Header.d.ts.map +1 -1
  196. package/lib/common/header/Header.js +1 -1
  197. package/lib/common/header/about/AboutModal.d.ts +1 -1
  198. package/lib/common/header/about/AboutModal.d.ts.map +1 -1
  199. package/lib/common/header/about/AboutModal.js +6 -6
  200. package/lib/common/header/about/build-information/useBuildInformation.d.ts +1 -1
  201. package/lib/common/header/about/build-information/useBuildInformation.d.ts.map +1 -1
  202. package/lib/common/image/ChooseFocalPoint.d.ts +1 -1
  203. package/lib/common/image/ChooseFocalPoint.d.ts.map +1 -1
  204. package/lib/common/image/ImageCrop.sc.d.ts +1 -1
  205. package/lib/common/image/ImageCrop.sc.d.ts.map +1 -1
  206. package/lib/common/image/ImageCrop.sc.js +2 -2
  207. package/lib/common/signOutButton/SignOutButton.d.ts +1 -1
  208. package/lib/common/signOutButton/SignOutButton.d.ts.map +1 -1
  209. package/lib/common/useEditState.d.ts +1 -1
  210. package/lib/common/useEditState.d.ts.map +1 -1
  211. package/lib/config/CometConfigContext.d.ts +9 -9
  212. package/lib/config/CometConfigContext.d.ts.map +1 -1
  213. package/lib/contentLanguage/contentLanguageConfig.d.ts +1 -1
  214. package/lib/contentLanguage/contentLanguageConfig.d.ts.map +1 -1
  215. package/lib/contentLanguage/useContentLanguage.d.ts +1 -1
  216. package/lib/contentLanguage/useContentLanguage.d.ts.map +1 -1
  217. package/lib/contentScope/ContentScopeIndicator.d.ts +1 -1
  218. package/lib/contentScope/ContentScopeIndicator.d.ts.map +1 -1
  219. package/lib/contentScope/ContentScopeIndicator.js +4 -4
  220. package/lib/contentScope/ContentScopeSelect.d.ts +1 -1
  221. package/lib/contentScope/ContentScopeSelect.d.ts.map +1 -1
  222. package/lib/contentScope/ContentScopeSelect.js +2 -3
  223. package/lib/contentScope/Controls.d.ts +1 -1
  224. package/lib/contentScope/Controls.d.ts.map +1 -1
  225. package/lib/contentScope/noContentScopeFallback/NoContentScopeFallback.d.ts +1 -1
  226. package/lib/contentScope/noContentScopeFallback/NoContentScopeFallback.d.ts.map +1 -1
  227. package/lib/contentScope/utils/defaultCreatePath.d.ts +1 -1
  228. package/lib/contentScope/utils/defaultCreatePath.d.ts.map +1 -1
  229. package/lib/contentScope/utils/groupObjectsIntoArrays.d.ts +1 -1
  230. package/lib/contentScope/utils/groupObjectsIntoArrays.d.ts.map +1 -1
  231. package/lib/cronJobs/JobLogs.js +1 -1
  232. package/lib/cronJobs/JobStatus.d.ts +1 -1
  233. package/lib/cronJobs/JobStatus.d.ts.map +1 -1
  234. package/lib/cronJobs/JobStatus.js +1 -1
  235. package/lib/dam/DamPage.d.ts +1 -1
  236. package/lib/dam/DamPage.d.ts.map +1 -1
  237. package/lib/dam/DamTable.d.ts +4 -3
  238. package/lib/dam/DamTable.d.ts.map +1 -1
  239. package/lib/dam/DamTable.js +3 -17
  240. package/lib/dam/DataGrid/DamContextMenu.d.ts +1 -1
  241. package/lib/dam/DataGrid/DamContextMenu.d.ts.map +1 -1
  242. package/lib/dam/DataGrid/FolderDataGrid.d.ts +2 -2
  243. package/lib/dam/DataGrid/FolderDataGrid.d.ts.map +1 -1
  244. package/lib/dam/DataGrid/FolderDataGrid.js +264 -259
  245. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.d.ts +1 -1
  246. package/lib/dam/DataGrid/duplicatedFilenames/ManualDuplicatedFilenamesHandler.d.ts.map +1 -1
  247. package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.d.ts +1 -1
  248. package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.d.ts.map +1 -1
  249. package/lib/dam/DataGrid/duplicatedFilenames/ManuallyHandleDuplicatedFilenamesDialog.js +2 -2
  250. package/lib/dam/DataGrid/fileUpload/FileUploadContext.d.ts +1 -1
  251. package/lib/dam/DataGrid/fileUpload/FileUploadContext.d.ts.map +1 -1
  252. package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.d.ts +1 -1
  253. package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.d.ts.map +1 -1
  254. package/lib/dam/DataGrid/fileUpload/FileUploadErrorDialog.js +2 -2
  255. package/lib/dam/DataGrid/fileUpload/fileUpload.utils.d.ts +1 -1
  256. package/lib/dam/DataGrid/fileUpload/fileUpload.utils.d.ts.map +1 -1
  257. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.d.ts +2 -2
  258. package/lib/dam/DataGrid/fileUpload/useDamFileUpload.d.ts.map +1 -1
  259. package/lib/dam/DataGrid/filter/DamTableFilter.d.ts +1 -1
  260. package/lib/dam/DataGrid/filter/DamTableFilter.d.ts.map +1 -1
  261. package/lib/dam/DataGrid/filter/DamTableFilter.js +0 -10
  262. package/lib/dam/DataGrid/footer/DamFooter.d.ts +1 -1
  263. package/lib/dam/DataGrid/footer/DamFooter.d.ts.map +1 -1
  264. package/lib/dam/DataGrid/footer/DamFooter.js +1 -1
  265. package/lib/dam/DataGrid/label/DamItemLabel.d.ts +1 -1
  266. package/lib/dam/DataGrid/label/DamItemLabel.d.ts.map +1 -1
  267. package/lib/dam/DataGrid/label/DamItemLabel.js +3 -3
  268. package/lib/dam/DataGrid/label/DamItemLabelColumn.d.ts +5 -5
  269. package/lib/dam/DataGrid/label/DamItemLabelColumn.d.ts.map +1 -1
  270. package/lib/dam/DataGrid/label/DamItemLabelColumn.js +2 -2
  271. package/lib/dam/DataGrid/selection/DamMoreActions.d.ts +2 -1
  272. package/lib/dam/DataGrid/selection/DamMoreActions.d.ts.map +1 -1
  273. package/lib/dam/DataGrid/selection/DamMoreActions.js +4 -3
  274. package/lib/dam/DataGrid/selection/DamSelectionContext.d.ts +1 -1
  275. package/lib/dam/DataGrid/selection/DamSelectionContext.d.ts.map +1 -1
  276. package/lib/dam/DataGrid/thumbnail/DamThumbnail.d.ts +2 -2
  277. package/lib/dam/DataGrid/thumbnail/DamThumbnail.d.ts.map +1 -1
  278. package/lib/dam/DataGrid/thumbnail/DamThumbnail.js +4 -4
  279. package/lib/dam/DataGrid/useDamSearchHighlighting.d.ts +1 -1
  280. package/lib/dam/DataGrid/useDamSearchHighlighting.d.ts.map +1 -1
  281. package/lib/dam/FileForm/CropSettingsFields.d.ts +1 -1
  282. package/lib/dam/FileForm/CropSettingsFields.d.ts.map +1 -1
  283. package/lib/dam/FileForm/CropSettingsFields.js +1 -1
  284. package/lib/dam/FileForm/Duplicates.js +5 -5
  285. package/lib/dam/FileForm/EditFile.d.ts +3 -3
  286. package/lib/dam/FileForm/EditFile.d.ts.map +1 -1
  287. package/lib/dam/FileForm/EditFile.js +2 -2
  288. package/lib/dam/FileForm/FilePreview.d.ts +1 -1
  289. package/lib/dam/FileForm/FilePreview.d.ts.map +1 -1
  290. package/lib/dam/FileForm/FilePreview.js +4 -4
  291. package/lib/dam/FileForm/FileSettingsFields.d.ts +1 -1
  292. package/lib/dam/FileForm/FileSettingsFields.d.ts.map +1 -1
  293. package/lib/dam/FileForm/FileSettingsFields.js +1 -1
  294. package/lib/dam/FileForm/ReplaceFileButton.d.ts +1 -1
  295. package/lib/dam/FileForm/ReplaceFileButton.d.ts.map +1 -1
  296. package/lib/dam/FileForm/licenseType.d.ts +2 -2
  297. package/lib/dam/FileForm/licenseType.d.ts.map +1 -1
  298. package/lib/dam/FileForm/previews/AudioPreview.d.ts +1 -1
  299. package/lib/dam/FileForm/previews/AudioPreview.d.ts.map +1 -1
  300. package/lib/dam/FileForm/previews/AudioPreview.js +5 -5
  301. package/lib/dam/FileForm/previews/DefaultFilePreview.d.ts +1 -1
  302. package/lib/dam/FileForm/previews/DefaultFilePreview.d.ts.map +1 -1
  303. package/lib/dam/FileForm/previews/DefaultFilePreview.js +3 -3
  304. package/lib/dam/FileForm/previews/ImagePreview.d.ts +1 -1
  305. package/lib/dam/FileForm/previews/ImagePreview.d.ts.map +1 -1
  306. package/lib/dam/FileForm/previews/PdfPreview.d.ts +1 -1
  307. package/lib/dam/FileForm/previews/PdfPreview.d.ts.map +1 -1
  308. package/lib/dam/FileForm/previews/PdfPreview.js +2 -2
  309. package/lib/dam/FileForm/previews/VideoPreview.d.ts +1 -1
  310. package/lib/dam/FileForm/previews/VideoPreview.d.ts.map +1 -1
  311. package/lib/dam/FileForm/previews/VideoPreview.js +2 -2
  312. package/lib/dam/MoveDamItemDialog/ChooseFolder.d.ts +2 -2
  313. package/lib/dam/MoveDamItemDialog/ChooseFolder.d.ts.map +1 -1
  314. package/lib/dam/MoveDamItemDialog/ChooseFolder.js +1 -1
  315. package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.d.ts +1 -1
  316. package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.d.ts.map +1 -1
  317. package/lib/dam/MoveDamItemDialog/MoveDamItemDialog.js +1 -1
  318. package/lib/dam/MoveDamItemDialog/useFolderTree.d.ts +1 -1
  319. package/lib/dam/MoveDamItemDialog/useFolderTree.d.ts.map +1 -1
  320. package/lib/dam/MoveDamItemDialog/useFolderTreeSearch.d.ts +2 -2
  321. package/lib/dam/MoveDamItemDialog/useFolderTreeSearch.d.ts.map +1 -1
  322. package/lib/dam/blocks/DamFileDownloadLinkBlock.d.ts +1 -1
  323. package/lib/dam/blocks/DamFileDownloadLinkBlock.d.ts.map +1 -1
  324. package/lib/dam/blocks/DamFileDownloadLinkBlock.js +7 -3
  325. package/lib/dam/config/DamScopeProvider.d.ts +1 -1
  326. package/lib/dam/config/DamScopeProvider.d.ts.map +1 -1
  327. package/lib/dam/config/damConfig.d.ts +1 -1
  328. package/lib/dam/config/damConfig.d.ts.map +1 -1
  329. package/lib/dam/dependencies/createDamFileDependency.d.ts +1 -1
  330. package/lib/dam/dependencies/createDamFileDependency.d.ts.map +1 -1
  331. package/lib/dam/helpers/clearDamItemCache.d.ts +1 -1
  332. package/lib/dam/helpers/clearDamItemCache.d.ts.map +1 -1
  333. package/lib/dam/helpers/isFile.d.ts +1 -1
  334. package/lib/dam/helpers/isFile.d.ts.map +1 -1
  335. package/lib/dam/helpers/isFolder.d.ts +1 -1
  336. package/lib/dam/helpers/isFolder.d.ts.map +1 -1
  337. package/lib/dam/mediaAlternatives/MediaAlternativeForm.d.ts +1 -1
  338. package/lib/dam/mediaAlternatives/MediaAlternativeForm.d.ts.map +1 -1
  339. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.d.ts +1 -1
  340. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.d.ts.map +1 -1
  341. package/lib/dam/mediaAlternatives/MediaAlternativesGrid.js +7 -4
  342. package/lib/dashboard/DashboardHeader.d.ts +1 -1
  343. package/lib/dashboard/DashboardHeader.d.ts.map +1 -1
  344. package/lib/dashboard/DashboardHeader.js +2 -2
  345. package/lib/dashboard/__stories__/DateTime.stories.d.ts +7 -0
  346. package/lib/dashboard/__stories__/DateTime.stories.d.ts.map +1 -0
  347. package/lib/dashboard/__stories__/DateTime.stories.js +7 -0
  348. package/lib/dashboard/widgets/DashboardWidgetRoot.d.ts +1 -1
  349. package/lib/dashboard/widgets/DashboardWidgetRoot.d.ts.map +1 -1
  350. package/lib/dashboard/widgets/DashboardWidgetRoot.js +1 -1
  351. package/lib/dependencies/DependenciesList.d.ts +1 -1
  352. package/lib/dependencies/DependenciesList.d.ts.map +1 -1
  353. package/lib/dependencies/DependenciesList.js +5 -2
  354. package/lib/dependencies/DependentsList.d.ts +1 -1
  355. package/lib/dependencies/DependentsList.d.ts.map +1 -1
  356. package/lib/dependencies/DependentsList.js +5 -2
  357. package/lib/dependencies/createDependencyMethods.d.ts +3 -3
  358. package/lib/dependencies/createDependencyMethods.d.ts.map +1 -1
  359. package/lib/dependencies/createDocumentDependencyMethods.d.ts +3 -3
  360. package/lib/dependencies/createDocumentDependencyMethods.d.ts.map +1 -1
  361. package/lib/dependencies/dependenciesConfig.d.ts +1 -1
  362. package/lib/dependencies/dependenciesConfig.d.ts.map +1 -1
  363. package/lib/dependencies/getDisplayNameString.d.ts.map +1 -1
  364. package/lib/dependencies/getDisplayNameString.js +3 -1
  365. package/lib/dependencies/types.d.ts +2 -2
  366. package/lib/dependencies/types.d.ts.map +1 -1
  367. package/lib/documents/createDocumentRootBlocksMethods.d.ts +2 -2
  368. package/lib/documents/createDocumentRootBlocksMethods.d.ts.map +1 -1
  369. package/lib/documents/types.d.ts +10 -6
  370. package/lib/documents/types.d.ts.map +1 -1
  371. package/lib/form/file/FileField.d.ts +2 -2
  372. package/lib/form/file/FileField.d.ts.map +1 -1
  373. package/lib/form/file/FileField.js +5 -3
  374. package/lib/form/file/FileUploadField.d.ts +1 -1
  375. package/lib/form/file/FileUploadField.d.ts.map +1 -1
  376. package/lib/form/file/FinalFormFileUpload.d.ts +2 -2
  377. package/lib/form/file/FinalFormFileUpload.d.ts.map +1 -1
  378. package/lib/form/file/chooseFile/ChooseDamFileDialog.d.ts +10 -0
  379. package/lib/form/file/chooseFile/ChooseDamFileDialog.d.ts.map +1 -0
  380. package/lib/form/file/chooseFile/ChooseDamFileDialog.js +118 -0
  381. package/lib/form/file/upload.d.ts +1 -1
  382. package/lib/form/file/upload.d.ts.map +1 -1
  383. package/lib/form/queryUpdatedAt.d.ts.map +1 -1
  384. package/lib/form/useFormSaveConflict.d.ts +2 -2
  385. package/lib/form/useFormSaveConflict.d.ts.map +1 -1
  386. package/lib/graphql.generated.d.ts +7 -13
  387. package/lib/graphql.generated.d.ts.map +1 -1
  388. package/lib/index.d.ts +5 -2
  389. package/lib/index.d.ts.map +1 -1
  390. package/lib/index.js +4 -1
  391. package/lib/pages/createEditPageNode.d.ts +2 -2
  392. package/lib/pages/createEditPageNode.d.ts.map +1 -1
  393. package/lib/pages/createUsePage.d.ts +2 -2
  394. package/lib/pages/createUsePage.d.ts.map +1 -1
  395. package/lib/pages/pageSearch/PageSearch.d.ts +1 -1
  396. package/lib/pages/pageSearch/PageSearch.d.ts.map +1 -1
  397. package/lib/pages/pageSearch/usePageSearch.d.ts +3 -3
  398. package/lib/pages/pageSearch/usePageSearch.d.ts.map +1 -1
  399. package/lib/pages/pageTree/CopyPasteMenuItem.d.ts +1 -1
  400. package/lib/pages/pageTree/CopyPasteMenuItem.d.ts.map +1 -1
  401. package/lib/pages/pageTree/MovePageMenuItem.d.ts +1 -1
  402. package/lib/pages/pageTree/MovePageMenuItem.d.ts.map +1 -1
  403. package/lib/pages/pageTree/PageActions.d.ts +1 -1
  404. package/lib/pages/pageTree/PageActions.d.ts.map +1 -1
  405. package/lib/pages/pageTree/PageActions.js +3 -1
  406. package/lib/pages/pageTree/PageDeleteDialog.d.ts +1 -1
  407. package/lib/pages/pageTree/PageDeleteDialog.d.ts.map +1 -1
  408. package/lib/pages/pageTree/PageInfo.d.ts +2 -2
  409. package/lib/pages/pageTree/PageInfo.d.ts.map +1 -1
  410. package/lib/pages/pageTree/PageInfo.js +3 -3
  411. package/lib/pages/pageTree/PageLabel.d.ts +2 -2
  412. package/lib/pages/pageTree/PageLabel.d.ts.map +1 -1
  413. package/lib/pages/pageTree/PageLabel.js +5 -5
  414. package/lib/pages/pageTree/PageTree.d.ts +1 -1
  415. package/lib/pages/pageTree/PageTree.d.ts.map +1 -1
  416. package/lib/pages/pageTree/PageTree.js +2 -2
  417. package/lib/pages/pageTree/PageTreeContext.d.ts +4 -4
  418. package/lib/pages/pageTree/PageTreeContext.d.ts.map +1 -1
  419. package/lib/pages/pageTree/PageTreeRow.d.ts +3 -3
  420. package/lib/pages/pageTree/PageTreeRow.d.ts.map +1 -1
  421. package/lib/pages/pageTree/PageTreeService.d.ts +2 -2
  422. package/lib/pages/pageTree/PageTreeService.d.ts.map +1 -1
  423. package/lib/pages/pageTree/PageTypeIcon.d.ts +2 -2
  424. package/lib/pages/pageTree/PageTypeIcon.d.ts.map +1 -1
  425. package/lib/pages/pageTree/PageVisibility.d.ts +1 -1
  426. package/lib/pages/pageTree/PageVisibility.d.ts.map +1 -1
  427. package/lib/pages/pageTree/PageVisibilityIcon.d.ts +1 -1
  428. package/lib/pages/pageTree/PageVisibilityIcon.d.ts.map +1 -1
  429. package/lib/pages/pageTree/common/PageTreeTableRow.d.ts +1 -1
  430. package/lib/pages/pageTree/common/PageTreeTableRow.d.ts.map +1 -1
  431. package/lib/pages/pageTree/common/PageTreeTableRow.js +2 -2
  432. package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts +4 -4
  433. package/lib/pages/pageTree/useCopyPastePages/sendPages.d.ts.map +1 -1
  434. package/lib/pages/pageTree/useCopyPastePages.d.ts +3 -3
  435. package/lib/pages/pageTree/useCopyPastePages.d.ts.map +1 -1
  436. package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.d.ts +1 -1
  437. package/lib/pages/pageTree/useDndWindowScroll/useDndWindowScroll.d.ts.map +1 -1
  438. package/lib/pages/pageTree/usePageTree.d.ts +2 -2
  439. package/lib/pages/pageTree/usePageTree.d.ts.map +1 -1
  440. package/lib/pages/pageTreeConfig.d.ts +3 -3
  441. package/lib/pages/pageTreeConfig.d.ts.map +1 -1
  442. package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.d.ts +2 -2
  443. package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.d.ts.map +1 -1
  444. package/lib/pages/pageTreeSelect/FinalFormPageTreeSelect.js +1 -1
  445. package/lib/pages/pageTreeSelect/PageTreeSelect.d.ts +1 -1
  446. package/lib/pages/pageTreeSelect/PageTreeSelect.d.ts.map +1 -1
  447. package/lib/pages/pageTreeSelect/PageTreeSelect.js +1 -1
  448. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts +2 -2
  449. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.d.ts.map +1 -1
  450. package/lib/pages/pageTreeSelect/PageTreeSelectDialog.js +5 -5
  451. package/lib/pages/pagesPage/ConfirmPageActionDialog.d.ts +1 -1
  452. package/lib/pages/pagesPage/ConfirmPageActionDialog.d.ts.map +1 -1
  453. package/lib/pages/pagesPage/PagesPage.d.ts +2 -2
  454. package/lib/pages/pagesPage/PagesPage.d.ts.map +1 -1
  455. package/lib/pages/pagesPage/PagesPageActionToolbar.d.ts +1 -1
  456. package/lib/pages/pagesPage/PagesPageActionToolbar.d.ts.map +1 -1
  457. package/lib/pages/pagesPage/PagesPageActionToolbarBatchUpdateHelper.d.ts +3 -3
  458. package/lib/pages/pagesPage/PagesPageActionToolbarBatchUpdateHelper.d.ts.map +1 -1
  459. package/lib/pages/pagesPage/createPagesQuery.d.ts +1 -1
  460. package/lib/pages/pagesPage/createPagesQuery.d.ts.map +1 -1
  461. package/lib/pages/useSaveConflictQuery.d.ts.map +1 -1
  462. package/lib/preview/block/BlockPreview.d.ts +1 -1
  463. package/lib/preview/block/BlockPreview.d.ts.map +1 -1
  464. package/lib/preview/block/BlockPreview.js +6 -4
  465. package/lib/preview/block/BlockPreviewWithTabs.d.ts +2 -2
  466. package/lib/preview/block/BlockPreviewWithTabs.d.ts.map +1 -1
  467. package/lib/preview/block/SplitPreview.d.ts +1 -1
  468. package/lib/preview/block/SplitPreview.d.ts.map +1 -1
  469. package/lib/preview/block/useBlockPreview.d.ts +1 -1
  470. package/lib/preview/block/useBlockPreview.d.ts.map +1 -1
  471. package/lib/preview/common/DeviceToggle.js +1 -1
  472. package/lib/preview/site/OpenLinkDialog.d.ts +1 -1
  473. package/lib/preview/site/OpenLinkDialog.d.ts.map +1 -1
  474. package/lib/preview/site/OpenLinkDialog.js +1 -1
  475. package/lib/preview/site/SitePreview.d.ts.map +1 -1
  476. package/lib/preview/site/SitePreview.js +9 -3
  477. package/lib/preview/site/iframebridge/SitePreviewIFrameMessage.d.ts +1 -1
  478. package/lib/preview/site/iframebridge/SitePreviewIFrameMessage.d.ts.map +1 -1
  479. package/lib/redirects/RedirectActiveness.d.ts +1 -1
  480. package/lib/redirects/RedirectActiveness.d.ts.map +1 -1
  481. package/lib/redirects/RedirectForm.d.ts +3 -3
  482. package/lib/redirects/RedirectForm.d.ts.map +1 -1
  483. package/lib/redirects/RedirectForm.gql.generated.d.ts +4 -4
  484. package/lib/redirects/RedirectForm.gql.generated.d.ts.map +1 -1
  485. package/lib/redirects/RedirectsGrid.d.ts +1 -1
  486. package/lib/redirects/RedirectsGrid.d.ts.map +1 -1
  487. package/lib/redirects/RedirectsGrid.gql.generated.d.ts +2 -2
  488. package/lib/redirects/RedirectsGrid.gql.generated.d.ts.map +1 -1
  489. package/lib/redirects/RedirectsGrid.js +6 -5
  490. package/lib/redirects/createRedirectsPage.d.ts +2 -2
  491. package/lib/redirects/createRedirectsPage.d.ts.map +1 -1
  492. package/lib/redirects/submitMutation.d.ts +3 -3
  493. package/lib/redirects/submitMutation.d.ts.map +1 -1
  494. package/lib/siteConfigs/siteConfigsConfig.d.ts +1 -1
  495. package/lib/siteConfigs/siteConfigsConfig.d.ts.map +1 -1
  496. package/lib/siteConfigs/useSiteConfig.d.ts +2 -2
  497. package/lib/siteConfigs/useSiteConfig.d.ts.map +1 -1
  498. package/lib/siteConfigs/useSiteConfigs.d.ts +1 -1
  499. package/lib/siteConfigs/useSiteConfigs.d.ts.map +1 -1
  500. package/lib/testing/test-utils.d.ts +1 -1
  501. package/lib/testing/test-utils.d.ts.map +1 -1
  502. package/lib/translation/AzureAiTranslatorProvider.d.ts +1 -1
  503. package/lib/translation/AzureAiTranslatorProvider.d.ts.map +1 -1
  504. package/lib/userPermissions/UserGrid.d.ts +1 -1
  505. package/lib/userPermissions/UserGrid.d.ts.map +1 -1
  506. package/lib/userPermissions/UserGrid.js +8 -5
  507. package/lib/userPermissions/hooks/currentUser.d.ts +1 -1
  508. package/lib/userPermissions/hooks/currentUser.d.ts.map +1 -1
  509. package/lib/userPermissions/hooks/currentUser.js +14 -6
  510. package/lib/userPermissions/user/ImpersonationButtons.d.ts.map +1 -1
  511. package/lib/userPermissions/user/ImpersonationButtons.js +3 -1
  512. package/lib/userPermissions/user/UserPageToolbar.js +2 -2
  513. package/lib/userPermissions/user/basicData/UserBasicData.js +1 -1
  514. package/lib/userPermissions/user/permissions/ContentScopeGrid.d.ts +1 -1
  515. package/lib/userPermissions/user/permissions/ContentScopeGrid.d.ts.map +1 -1
  516. package/lib/userPermissions/user/permissions/ContentScopeGrid.js +5 -2
  517. package/lib/userPermissions/user/permissions/OverrideContentScopesDialog.d.ts.map +1 -1
  518. package/lib/userPermissions/user/permissions/OverrideContentScopesDialog.js +10 -5
  519. package/lib/userPermissions/user/permissions/PermissionGrid.d.ts.map +1 -1
  520. package/lib/userPermissions/user/permissions/PermissionGrid.js +5 -2
  521. package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.d.ts +2 -2
  522. package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.d.ts.map +1 -1
  523. package/lib/userPermissions/user/permissions/selectScopesDialogContent/SelectScopesDialogContent.js +13 -6
  524. package/lib/warnings/WarningActions.d.ts.map +1 -1
  525. package/lib/warnings/WarningActions.js +3 -1
  526. package/lib/warnings/WarningMessage.d.ts +1 -1
  527. package/lib/warnings/WarningMessage.d.ts.map +1 -1
  528. package/lib/warnings/WarningSeverity.d.ts +1 -1
  529. package/lib/warnings/WarningSeverity.d.ts.map +1 -1
  530. package/lib/warnings/WarningsGrid.d.ts.map +1 -1
  531. package/lib/warnings/WarningsGrid.js +7 -4
  532. package/lib/warnings/warningsConfig.d.ts +1 -1
  533. package/lib/warnings/warningsConfig.d.ts.map +1 -1
  534. package/package.json +28 -16
  535. package/lib/dam/DataGrid/filter/DamSortPopover.d.ts +0 -8
  536. package/lib/dam/DataGrid/filter/DamSortPopover.d.ts.map +0 -1
  537. package/lib/dam/DataGrid/filter/DamSortPopover.js +0 -124
  538. package/lib/dam/DataGrid/filter/DamSortPopover.sc.d.ts +0 -20
  539. package/lib/dam/DataGrid/filter/DamSortPopover.sc.d.ts.map +0 -1
  540. package/lib/dam/DataGrid/filter/DamSortPopover.sc.js +0 -71
  541. package/lib/form/file/chooseFile/ChooseFileDialog.d.ts +0 -10
  542. package/lib/form/file/chooseFile/ChooseFileDialog.d.ts.map +0 -1
  543. package/lib/form/file/chooseFile/ChooseFileDialog.js +0 -115
@@ -72,7 +72,9 @@ export function createListBlock(_ref, override) {
72
72
  maxVisibleBlocks: maxVisibleBlocks,
73
73
  additionalItemFields: additionalItemFields
74
74
  });
75
- if (minVisibleBlocks && maxVisibleBlocks && minVisibleBlocks > maxVisibleBlocks) throw new Error("".concat(name, ": The property 'minVisibleBlocks' (value: ").concat(minVisibleBlocks, ") must be equal to or smaller than 'maxVisibleBlocks' (value: ").concat(maxVisibleBlocks, ")"));
75
+ if (minVisibleBlocks && maxVisibleBlocks && minVisibleBlocks > maxVisibleBlocks) {
76
+ throw new Error("".concat(name, ": The property 'minVisibleBlocks' (value: ").concat(minVisibleBlocks, ") must be equal to or smaller than 'maxVisibleBlocks' (value: ").concat(maxVisibleBlocks, ")"));
77
+ }
76
78
  var getDefaultListEntry = function getDefaultListEntry() {
77
79
  return _objectSpread({
78
80
  key: uuid(),
@@ -577,7 +579,7 @@ var BlockListHeader = /*#__PURE__*/styled("div", process.env.NODE_ENV === "produ
577
579
  styles: "display:flex;justify-content:space-between;align-items:center"
578
580
  } : {
579
581
  name: "1066lcq",
580
- styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ2pCcUMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB7IHR5cGUgRnVuY3Rpb25Db21wb25lbnQsIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2tTa2VsZXRvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUJsb2NrU2tlbGV0b25cIjtcbmltcG9ydCB7IGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vaGVscGVycy9kZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBIb3ZlclByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL0hvdmVyUHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvU2VsZWN0UHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgdHlwZSBCbG9ja0RlcGVuZGVuY3ksIHR5cGUgQmxvY2tJbnRlcmZhY2UsIHR5cGUgQmxvY2tTdGF0ZSwgdHlwZSBQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcGFyYWxsZWxBc3luY0V2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxzL3BhcmFsbGVsQXN5bmNFdmVyeVwiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuLy8gVXNpbmcge30gaW5zdGVhZCBvZiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gYmVjYXVzZSBuZXZlciBhbmQgdW5rbm93biBhcmUgaW5jb21wYXRpYmxlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxudHlwZSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHMgPSB7fTtcblxuZXhwb3J0IHR5cGUgTGlzdEJsb2NrSXRlbTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwcm9wczogQmxvY2tTdGF0ZTxUPjtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzbGlkZUluOiBib29sZWFuO1xufSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tGcmFnbWVudDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja0FkZGl0aW9uYWxJdGVtRmllbGQ8VmFsdWUgPSB1bmtub3duPiB7XG4gICAgZGVmYXVsdFZhbHVlOiBWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUxpc3RCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1OYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1zTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBibG9jazogVDtcbiAgICBtaW5WaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIG1heFZpc2libGVCbG9ja3M/OiBudW1iZXI7XG4gICAgY3JlYXRlRGVmYXVsdExpc3RFbnRyeT86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbEl0ZW1GaWVsZHM/OiB7XG4gICAgICAgIFtLZXkgaW4ga2V5b2YgQWRkaXRpb25hbEl0ZW1GaWVsZHNdOiBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPEFkZGl0aW9uYWxJdGVtRmllbGRzW0tleV0+O1xuICAgIH07XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zPzogRnVuY3Rpb25Db21wb25lbnQ8e1xuICAgICAgICBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPjtcbiAgICAgICAgb25DaGFuZ2U6IChpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPikgPT4gdm9pZDtcbiAgICAgICAgb25NZW51Q2xvc2U6ICgpID0+IHZvaWQ7XG4gICAgfT47XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZW50PzogRnVuY3Rpb25Db21wb25lbnQ8eyBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiB9PjtcbiAgICB0YWdzPzogQXJyYXk8TWVzc2FnZURlc2NyaXB0b3IgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEJsb2NrPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4oXG4gICAge1xuICAgICAgICBuYW1lLFxuICAgICAgICBibG9jayxcbiAgICAgICAgZGlzcGxheU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2submFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiTGlzdFwiIC8+LFxuICAgICAgICBpdGVtTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tcIiAvPixcbiAgICAgICAgaXRlbXNOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLml0ZW1zTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tzXCIgLz4sXG4gICAgICAgIG1pblZpc2libGVCbG9ja3MsXG4gICAgICAgIG1heFZpc2libGVCbG9ja3MsXG4gICAgICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnksXG4gICAgICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCxcbiAgICAgICAgdGFncyxcbiAgICB9OiBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPFxuICAgICAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPlxuICAgICAgICA+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+LFxuKTogQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+IHtcbiAgICBjb25zdCB1c2VBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50KHsgYmxvY2ssIG1heFZpc2libGVCbG9ja3MsIGFkZGl0aW9uYWxJdGVtRmllbGRzIH0pO1xuICAgIGlmIChtaW5WaXNpYmxlQmxvY2tzICYmIG1heFZpc2libGVCbG9ja3MgJiYgbWluVmlzaWJsZUJsb2NrcyA+IG1heFZpc2libGVCbG9ja3MpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgZ2V0RGVmYXVsdExpc3RFbnRyeSA9ICgpID0+ICh7XG4gICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBwcm9wczogYmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgLi4uKE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoZmllbGRzLCBbZmllbGQsIHsgZGVmYXVsdFZhbHVlIH1dKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRlZmF1bHRWYWx1ZSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IEJsb2NrTGlzdEJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICA+ID0ge1xuICAgICAgICAuLi5jcmVhdGVCbG9ja1NrZWxldG9uKCksXG5cbiAgICAgICAgbmFtZSxcblxuICAgICAgICBkaXNwbGF5TmFtZSxcblxuICAgICAgICB0YWdzOiB0YWdzID8gdGFncyA6IGJsb2NrLnRhZ3MsXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4gKHtcbiAgICAgICAgICAgIGJsb2NrczpcbiAgICAgICAgICAgICAgICBtaW5WaXNpYmxlQmxvY2tzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBtaW5WaXNpYmxlQmxvY2tzIH0sIGdldERlZmF1bHRMaXN0RW50cnkpXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlRGVmYXVsdExpc3RFbnRyeVxuICAgICAgICAgICAgICAgICAgICAgID8gW2dldERlZmF1bHRMaXN0RW50cnkoKV1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICB9KSxcblxuICAgICAgICBjYXRlZ29yeTogYmxvY2suY2F0ZWdvcnksXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IGlucHV0LmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5pbnB1dDJTdGF0ZShjaGlsZC5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGNoaWxkW2ZpZWxkXSB9KSwge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5zdGF0ZTJPdXRwdXQoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgICAgICAgICAgICAgIGJsb2NrczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG91dHB1dC5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGJsb2NrLm91dHB1dDJTdGF0ZShjaGlsZC5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q3R4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IHByZXZpZXdDdHgucGFyZW50VXJsLFxuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiAocHJldmlld0N0eC5zaG93VmlzaWJsZU9ubHkgPyBjaGlsZC52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0FkbWluUm91dGUgPSBgJHtwcmV2aWV3Q3R4LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDdHgucGFyZW50VXJsfS8ke2NoaWxkLmtleX0vZWRpdGA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNoaWxkLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDdHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQWRkaXRpb25hbEl0ZW1GaWVsZHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNWYWxpZDogYXN5bmMgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1ZhbGlkaXR5UmVzdWx0ID0gYXdhaXQgcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmJsb2NrcywgYXN5bmMgKGMpID0+IGJsb2NrLmlzVmFsaWQoYy5wcm9wcykpO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrVmFsaWRpdHlSZXN1bHQgJiYgKG1pblZpc2libGVCbG9ja3MgPyBtaW5WaXNpYmxlQmxvY2tzIDw9IHN0YXRlLmJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jay52aXNpYmxlKS5sZW5ndGggOiB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGlsZEJsb2NrQ291bnQ6IChzdGF0ZSkgPT4gc3RhdGUuYmxvY2tzLmxlbmd0aCxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFuY2hvcnMsIC4uLihibG9jay5hbmNob3JzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8QmxvY2tEZXBlbmRlbmN5W10+KChkZXBlbmRlbmNpZXMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihibG9jay5kZXBlbmRlbmNpZXM/LihjaGlsZC5wcm9wcykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMobWVyZ2VkRGVwZW5kZW5jaWVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQ6IChvdXRwdXQsIHJlcGxhY2VtZW50cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3T3V0cHV0OiBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0geyAuLi5vdXRwdXQsIGJsb2NrczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmJsb2Nrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY2hpbGQucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVmaW5lc093blBhZGRpbmc6IHRydWUsXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHRvdGFsVmlzaWJsZUJsb2NrcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50LFxuICAgICAgICAgICAgICAgIGFkZE5ld0Jsb2NrLFxuICAgICAgICAgICAgICAgIGNvcHlTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBkZWxldGVBbGxTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayxcbiAgICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVTZWxlY3RBbGwsXG4gICAgICAgICAgICAgICAgcGFzdGVCbG9jayxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWlzc2luZyBBZGRpdGlvbmFsSXRlbUZpZWxkcyBnZW5lcmljIGluIGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50XG4gICAgICAgICAgICB9ID0gdXNlQWRtaW5Db21wb25lbnQoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cInRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuYmxvY2tzLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmJsb2Nrcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlVG9nZ2xlU2VsZWN0QWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3Quc2VsZWN0QWxsXCIgZGVmYXVsdE1lc3NhZ2U9XCJTZWxlY3QgYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkQ291bnQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtkZWxldGVBbGxTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17Y29weVNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb3B5IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBwYXN0ZUJsb2NrKDApfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFzdGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLm1hcCgoZGF0YSwgYmxvY2tJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01pblZpc2libGVCbG9ja3NNZXQgPSAhIW1pblZpc2libGVCbG9ja3MgJiYgdG90YWxWaXNpYmxlQmxvY2tzID49IG1pblZpc2libGVCbG9ja3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWF4VmlzaWJsZUJsb2Nrc1JlYWNoZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFtYXhWaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtYXhWaXNpYmxlQmxvY2tzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhblRvZ2dsZVZpc2liaWxpdHkgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID8gZGF0YS52aXNpYmxlIDogdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkICYmICFkYXRhLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCEhbWluVmlzaWJsZUJsb2NrcyAmJiAhaXNNaW5WaXNpYmxlQmxvY2tzTWV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pblZpc2libGVCbG9ja3MgPT09IHRvdGFsVmlzaWJsZUJsb2NrcyAmJiBkYXRhLnZpc2libGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SG92ZXJQcmV2aWV3Q29tcG9uZW50IGtleT17ZGF0YS5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2RhdGEua2V5fS9lZGl0YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtkYXRhLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUHJldmlld0NvbnRlbnQ9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtibG9ja30gc3RhdGU9e2RhdGEucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9ja0luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBkYXRhLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbZGF0YS5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUJsb2NrPXsoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3MgPSBbLi4ucHJldlN0YXRlLmJsb2Nrc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tUb01vdmUgPSBibG9ja3Muc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5zcGxpY2UodG8sIDAsIGJsb2NrVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGJsb2NrcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlCdXR0b249e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNYXhCbG9ja3NBbGxvd2VkTWVzc2FnZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5tYXhWaXNpYmxlQmxvY2tzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIk1heC4gdmlzaWJsZSBibG9ja3MgYWxsb3dlZDoge21heFZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWF4VmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWluVmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNaW4uIHZpc2libGUgYmxvY2tzIHJlcXVpcmVkOiB7bWluVmlzaWJsZUJsb2Nrc31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBtaW5WaXNpYmxlQmxvY2tzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IGNvbXBvbmVudD1cInNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNhblRvZ2dsZVZpc2liaWxpdHkgJiYgdG9nZ2xlVmlzaWJsZShkYXRhLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5Ub2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGF0YS52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soYmVmb3JlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBibG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBkYXRhLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogZGF0YVtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhibG9ja0luZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkYXRhLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QmxvY2soZGF0YSwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGJsb2NrLmlzVmFsaWQoZGF0YS5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2RhdGEuc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2Jsb2NrSW5kZXggPj0gc3RhdGUuYmxvY2tzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZW51SXRlbXM9eyhvbk1lbnVDbG9zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW09e2RhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodXBkYXRlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrczogcHJldmlvdXNTdGF0ZS5ibG9ja3MubWFwKChibG9jaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sua2V5ID09PSBkYXRhLmtleSA/IHVwZGF0ZWRJdGVtIDogYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbnRlbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZW50ID8gPEFkZGl0aW9uYWxJdGVtQ29udGVudCBpdGVtPXtkYXRhfSAvPiA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSG92ZXJQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFkZCB7aXRlbU5hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LmFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImVkaXRcIiB0aXRsZT17YmxvY2suZGlzcGxheU5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaXRlbUlkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHN0YWNrQXBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5ibG9ja3MuZmluZCgoYykgPT4gYy5rZXkgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJtYWluXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxibG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihpdGVtSWQpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3Q29udGVudDogKHN0YXRlLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5ibG9ja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm5vQmxvY2tzXCIgZGVmYXVsdE1lc3NhZ2U9XCJObyB7aXRlbXNOYW1lfVwiIHZhbHVlcz17eyBpdGVtc05hbWUgfX0gLz4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmJsb2Nrcy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UHJldmlld0NvbnRlbnQgPSBibG9jay5wcmV2aWV3Q29udGVudChuZXh0LnByb3BzLCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4ubmV4dFByZXZpZXdDb250ZW50XTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eYmxvY2tzLlxcZCsucHJvcHMvLnRlc3QoanNvblBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlzdEJsb2NrOiBJbnZhbGlkIGpzb25QYXRoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXRoQXJyID0ganNvblBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHBhdGhBcnJbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tJdGVtID0gc3RhdGUuYmxvY2tzW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihibG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY2hpbGQucHJvcHMsIG9wdGlvbnMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gb3ZlcnJpZGUoQmxvY2tMaXN0QmxvY2spO1xuICAgIH1cbiAgICByZXR1cm4gQmxvY2tMaXN0QmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuIl19 */",
582
+ styles: "display:flex;justify-content:space-between;align-items:center/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaWpCcUMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
581
583
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
582
584
  });
583
585
  var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE_ENV === "production" ? {
@@ -590,7 +592,7 @@ var BlockListHeaderActionContainer = /*#__PURE__*/styled("div", process.env.NODE
590
592
  styles: "padding:12px 0"
591
593
  } : {
592
594
  name: "14o5m2r",
593
- styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc2pCb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB7IHR5cGUgRnVuY3Rpb25Db21wb25lbnQsIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2tTa2VsZXRvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUJsb2NrU2tlbGV0b25cIjtcbmltcG9ydCB7IGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vaGVscGVycy9kZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBIb3ZlclByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL0hvdmVyUHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvU2VsZWN0UHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgdHlwZSBCbG9ja0RlcGVuZGVuY3ksIHR5cGUgQmxvY2tJbnRlcmZhY2UsIHR5cGUgQmxvY2tTdGF0ZSwgdHlwZSBQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcGFyYWxsZWxBc3luY0V2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxzL3BhcmFsbGVsQXN5bmNFdmVyeVwiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuLy8gVXNpbmcge30gaW5zdGVhZCBvZiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gYmVjYXVzZSBuZXZlciBhbmQgdW5rbm93biBhcmUgaW5jb21wYXRpYmxlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxudHlwZSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHMgPSB7fTtcblxuZXhwb3J0IHR5cGUgTGlzdEJsb2NrSXRlbTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwcm9wczogQmxvY2tTdGF0ZTxUPjtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzbGlkZUluOiBib29sZWFuO1xufSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tGcmFnbWVudDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja0FkZGl0aW9uYWxJdGVtRmllbGQ8VmFsdWUgPSB1bmtub3duPiB7XG4gICAgZGVmYXVsdFZhbHVlOiBWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUxpc3RCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1OYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1zTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBibG9jazogVDtcbiAgICBtaW5WaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIG1heFZpc2libGVCbG9ja3M/OiBudW1iZXI7XG4gICAgY3JlYXRlRGVmYXVsdExpc3RFbnRyeT86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbEl0ZW1GaWVsZHM/OiB7XG4gICAgICAgIFtLZXkgaW4ga2V5b2YgQWRkaXRpb25hbEl0ZW1GaWVsZHNdOiBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPEFkZGl0aW9uYWxJdGVtRmllbGRzW0tleV0+O1xuICAgIH07XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zPzogRnVuY3Rpb25Db21wb25lbnQ8e1xuICAgICAgICBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPjtcbiAgICAgICAgb25DaGFuZ2U6IChpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPikgPT4gdm9pZDtcbiAgICAgICAgb25NZW51Q2xvc2U6ICgpID0+IHZvaWQ7XG4gICAgfT47XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZW50PzogRnVuY3Rpb25Db21wb25lbnQ8eyBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiB9PjtcbiAgICB0YWdzPzogQXJyYXk8TWVzc2FnZURlc2NyaXB0b3IgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEJsb2NrPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4oXG4gICAge1xuICAgICAgICBuYW1lLFxuICAgICAgICBibG9jayxcbiAgICAgICAgZGlzcGxheU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2submFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiTGlzdFwiIC8+LFxuICAgICAgICBpdGVtTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tcIiAvPixcbiAgICAgICAgaXRlbXNOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLml0ZW1zTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tzXCIgLz4sXG4gICAgICAgIG1pblZpc2libGVCbG9ja3MsXG4gICAgICAgIG1heFZpc2libGVCbG9ja3MsXG4gICAgICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnksXG4gICAgICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCxcbiAgICAgICAgdGFncyxcbiAgICB9OiBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPFxuICAgICAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPlxuICAgICAgICA+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+LFxuKTogQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+IHtcbiAgICBjb25zdCB1c2VBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50KHsgYmxvY2ssIG1heFZpc2libGVCbG9ja3MsIGFkZGl0aW9uYWxJdGVtRmllbGRzIH0pO1xuICAgIGlmIChtaW5WaXNpYmxlQmxvY2tzICYmIG1heFZpc2libGVCbG9ja3MgJiYgbWluVmlzaWJsZUJsb2NrcyA+IG1heFZpc2libGVCbG9ja3MpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgZ2V0RGVmYXVsdExpc3RFbnRyeSA9ICgpID0+ICh7XG4gICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBwcm9wczogYmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgLi4uKE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoZmllbGRzLCBbZmllbGQsIHsgZGVmYXVsdFZhbHVlIH1dKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRlZmF1bHRWYWx1ZSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IEJsb2NrTGlzdEJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICA+ID0ge1xuICAgICAgICAuLi5jcmVhdGVCbG9ja1NrZWxldG9uKCksXG5cbiAgICAgICAgbmFtZSxcblxuICAgICAgICBkaXNwbGF5TmFtZSxcblxuICAgICAgICB0YWdzOiB0YWdzID8gdGFncyA6IGJsb2NrLnRhZ3MsXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4gKHtcbiAgICAgICAgICAgIGJsb2NrczpcbiAgICAgICAgICAgICAgICBtaW5WaXNpYmxlQmxvY2tzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBtaW5WaXNpYmxlQmxvY2tzIH0sIGdldERlZmF1bHRMaXN0RW50cnkpXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlRGVmYXVsdExpc3RFbnRyeVxuICAgICAgICAgICAgICAgICAgICAgID8gW2dldERlZmF1bHRMaXN0RW50cnkoKV1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICB9KSxcblxuICAgICAgICBjYXRlZ29yeTogYmxvY2suY2F0ZWdvcnksXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IGlucHV0LmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5pbnB1dDJTdGF0ZShjaGlsZC5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGNoaWxkW2ZpZWxkXSB9KSwge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5zdGF0ZTJPdXRwdXQoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgICAgICAgICAgICAgIGJsb2NrczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG91dHB1dC5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGJsb2NrLm91dHB1dDJTdGF0ZShjaGlsZC5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q3R4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IHByZXZpZXdDdHgucGFyZW50VXJsLFxuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiAocHJldmlld0N0eC5zaG93VmlzaWJsZU9ubHkgPyBjaGlsZC52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0FkbWluUm91dGUgPSBgJHtwcmV2aWV3Q3R4LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDdHgucGFyZW50VXJsfS8ke2NoaWxkLmtleX0vZWRpdGA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNoaWxkLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDdHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQWRkaXRpb25hbEl0ZW1GaWVsZHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNWYWxpZDogYXN5bmMgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1ZhbGlkaXR5UmVzdWx0ID0gYXdhaXQgcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmJsb2NrcywgYXN5bmMgKGMpID0+IGJsb2NrLmlzVmFsaWQoYy5wcm9wcykpO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrVmFsaWRpdHlSZXN1bHQgJiYgKG1pblZpc2libGVCbG9ja3MgPyBtaW5WaXNpYmxlQmxvY2tzIDw9IHN0YXRlLmJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jay52aXNpYmxlKS5sZW5ndGggOiB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGlsZEJsb2NrQ291bnQ6IChzdGF0ZSkgPT4gc3RhdGUuYmxvY2tzLmxlbmd0aCxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFuY2hvcnMsIC4uLihibG9jay5hbmNob3JzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8QmxvY2tEZXBlbmRlbmN5W10+KChkZXBlbmRlbmNpZXMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihibG9jay5kZXBlbmRlbmNpZXM/LihjaGlsZC5wcm9wcykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMobWVyZ2VkRGVwZW5kZW5jaWVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQ6IChvdXRwdXQsIHJlcGxhY2VtZW50cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3T3V0cHV0OiBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0geyAuLi5vdXRwdXQsIGJsb2NrczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmJsb2Nrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY2hpbGQucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVmaW5lc093blBhZGRpbmc6IHRydWUsXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHRvdGFsVmlzaWJsZUJsb2NrcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50LFxuICAgICAgICAgICAgICAgIGFkZE5ld0Jsb2NrLFxuICAgICAgICAgICAgICAgIGNvcHlTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBkZWxldGVBbGxTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayxcbiAgICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVTZWxlY3RBbGwsXG4gICAgICAgICAgICAgICAgcGFzdGVCbG9jayxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWlzc2luZyBBZGRpdGlvbmFsSXRlbUZpZWxkcyBnZW5lcmljIGluIGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50XG4gICAgICAgICAgICB9ID0gdXNlQWRtaW5Db21wb25lbnQoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cInRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuYmxvY2tzLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmJsb2Nrcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlVG9nZ2xlU2VsZWN0QWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3Quc2VsZWN0QWxsXCIgZGVmYXVsdE1lc3NhZ2U9XCJTZWxlY3QgYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkQ291bnQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtkZWxldGVBbGxTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17Y29weVNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb3B5IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBwYXN0ZUJsb2NrKDApfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFzdGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLm1hcCgoZGF0YSwgYmxvY2tJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01pblZpc2libGVCbG9ja3NNZXQgPSAhIW1pblZpc2libGVCbG9ja3MgJiYgdG90YWxWaXNpYmxlQmxvY2tzID49IG1pblZpc2libGVCbG9ja3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWF4VmlzaWJsZUJsb2Nrc1JlYWNoZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFtYXhWaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtYXhWaXNpYmxlQmxvY2tzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhblRvZ2dsZVZpc2liaWxpdHkgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID8gZGF0YS52aXNpYmxlIDogdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkICYmICFkYXRhLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCEhbWluVmlzaWJsZUJsb2NrcyAmJiAhaXNNaW5WaXNpYmxlQmxvY2tzTWV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pblZpc2libGVCbG9ja3MgPT09IHRvdGFsVmlzaWJsZUJsb2NrcyAmJiBkYXRhLnZpc2libGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SG92ZXJQcmV2aWV3Q29tcG9uZW50IGtleT17ZGF0YS5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2RhdGEua2V5fS9lZGl0YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtkYXRhLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUHJldmlld0NvbnRlbnQ9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtibG9ja30gc3RhdGU9e2RhdGEucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9ja0luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBkYXRhLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbZGF0YS5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUJsb2NrPXsoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3MgPSBbLi4ucHJldlN0YXRlLmJsb2Nrc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tUb01vdmUgPSBibG9ja3Muc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5zcGxpY2UodG8sIDAsIGJsb2NrVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGJsb2NrcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlCdXR0b249e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNYXhCbG9ja3NBbGxvd2VkTWVzc2FnZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5tYXhWaXNpYmxlQmxvY2tzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIk1heC4gdmlzaWJsZSBibG9ja3MgYWxsb3dlZDoge21heFZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWF4VmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWluVmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNaW4uIHZpc2libGUgYmxvY2tzIHJlcXVpcmVkOiB7bWluVmlzaWJsZUJsb2Nrc31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBtaW5WaXNpYmxlQmxvY2tzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IGNvbXBvbmVudD1cInNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNhblRvZ2dsZVZpc2liaWxpdHkgJiYgdG9nZ2xlVmlzaWJsZShkYXRhLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5Ub2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGF0YS52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soYmVmb3JlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBibG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBkYXRhLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogZGF0YVtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhibG9ja0luZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkYXRhLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QmxvY2soZGF0YSwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGJsb2NrLmlzVmFsaWQoZGF0YS5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2RhdGEuc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2Jsb2NrSW5kZXggPj0gc3RhdGUuYmxvY2tzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZW51SXRlbXM9eyhvbk1lbnVDbG9zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW09e2RhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodXBkYXRlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrczogcHJldmlvdXNTdGF0ZS5ibG9ja3MubWFwKChibG9jaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sua2V5ID09PSBkYXRhLmtleSA/IHVwZGF0ZWRJdGVtIDogYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbnRlbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZW50ID8gPEFkZGl0aW9uYWxJdGVtQ29udGVudCBpdGVtPXtkYXRhfSAvPiA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSG92ZXJQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFkZCB7aXRlbU5hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LmFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImVkaXRcIiB0aXRsZT17YmxvY2suZGlzcGxheU5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaXRlbUlkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHN0YWNrQXBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5ibG9ja3MuZmluZCgoYykgPT4gYy5rZXkgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJtYWluXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxibG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihpdGVtSWQpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3Q29udGVudDogKHN0YXRlLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5ibG9ja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm5vQmxvY2tzXCIgZGVmYXVsdE1lc3NhZ2U9XCJObyB7aXRlbXNOYW1lfVwiIHZhbHVlcz17eyBpdGVtc05hbWUgfX0gLz4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmJsb2Nrcy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UHJldmlld0NvbnRlbnQgPSBibG9jay5wcmV2aWV3Q29udGVudChuZXh0LnByb3BzLCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4ubmV4dFByZXZpZXdDb250ZW50XTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eYmxvY2tzLlxcZCsucHJvcHMvLnRlc3QoanNvblBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlzdEJsb2NrOiBJbnZhbGlkIGpzb25QYXRoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXRoQXJyID0ganNvblBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHBhdGhBcnJbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tJdGVtID0gc3RhdGUuYmxvY2tzW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihibG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY2hpbGQucHJvcHMsIG9wdGlvbnMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gb3ZlcnJpZGUoQmxvY2tMaXN0QmxvY2spO1xuICAgIH1cbiAgICByZXR1cm4gQmxvY2tMaXN0QmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuIl19 */",
595
+ styles: "padding:12px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdWpCb0QiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
594
596
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
595
597
  });
596
598
  var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.env.NODE_ENV === "production" ? {
@@ -603,7 +605,7 @@ var SelectAllFromControlLabel = /*#__PURE__*/styled(FormControlLabel, process.en
603
605
  styles: "padding:15px 10px 15px 7px"
604
606
  } : {
605
607
  name: "gqnhuy",
606
- styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMGpCMEQiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB7IHR5cGUgRnVuY3Rpb25Db21wb25lbnQsIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2tTa2VsZXRvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUJsb2NrU2tlbGV0b25cIjtcbmltcG9ydCB7IGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vaGVscGVycy9kZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBIb3ZlclByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL0hvdmVyUHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvU2VsZWN0UHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgdHlwZSBCbG9ja0RlcGVuZGVuY3ksIHR5cGUgQmxvY2tJbnRlcmZhY2UsIHR5cGUgQmxvY2tTdGF0ZSwgdHlwZSBQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcGFyYWxsZWxBc3luY0V2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxzL3BhcmFsbGVsQXN5bmNFdmVyeVwiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuLy8gVXNpbmcge30gaW5zdGVhZCBvZiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gYmVjYXVzZSBuZXZlciBhbmQgdW5rbm93biBhcmUgaW5jb21wYXRpYmxlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxudHlwZSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHMgPSB7fTtcblxuZXhwb3J0IHR5cGUgTGlzdEJsb2NrSXRlbTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwcm9wczogQmxvY2tTdGF0ZTxUPjtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzbGlkZUluOiBib29sZWFuO1xufSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tGcmFnbWVudDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja0FkZGl0aW9uYWxJdGVtRmllbGQ8VmFsdWUgPSB1bmtub3duPiB7XG4gICAgZGVmYXVsdFZhbHVlOiBWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUxpc3RCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1OYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1zTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBibG9jazogVDtcbiAgICBtaW5WaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIG1heFZpc2libGVCbG9ja3M/OiBudW1iZXI7XG4gICAgY3JlYXRlRGVmYXVsdExpc3RFbnRyeT86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbEl0ZW1GaWVsZHM/OiB7XG4gICAgICAgIFtLZXkgaW4ga2V5b2YgQWRkaXRpb25hbEl0ZW1GaWVsZHNdOiBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPEFkZGl0aW9uYWxJdGVtRmllbGRzW0tleV0+O1xuICAgIH07XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zPzogRnVuY3Rpb25Db21wb25lbnQ8e1xuICAgICAgICBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPjtcbiAgICAgICAgb25DaGFuZ2U6IChpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPikgPT4gdm9pZDtcbiAgICAgICAgb25NZW51Q2xvc2U6ICgpID0+IHZvaWQ7XG4gICAgfT47XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZW50PzogRnVuY3Rpb25Db21wb25lbnQ8eyBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiB9PjtcbiAgICB0YWdzPzogQXJyYXk8TWVzc2FnZURlc2NyaXB0b3IgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEJsb2NrPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4oXG4gICAge1xuICAgICAgICBuYW1lLFxuICAgICAgICBibG9jayxcbiAgICAgICAgZGlzcGxheU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2submFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiTGlzdFwiIC8+LFxuICAgICAgICBpdGVtTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tcIiAvPixcbiAgICAgICAgaXRlbXNOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLml0ZW1zTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tzXCIgLz4sXG4gICAgICAgIG1pblZpc2libGVCbG9ja3MsXG4gICAgICAgIG1heFZpc2libGVCbG9ja3MsXG4gICAgICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnksXG4gICAgICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCxcbiAgICAgICAgdGFncyxcbiAgICB9OiBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPFxuICAgICAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPlxuICAgICAgICA+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+LFxuKTogQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+IHtcbiAgICBjb25zdCB1c2VBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50KHsgYmxvY2ssIG1heFZpc2libGVCbG9ja3MsIGFkZGl0aW9uYWxJdGVtRmllbGRzIH0pO1xuICAgIGlmIChtaW5WaXNpYmxlQmxvY2tzICYmIG1heFZpc2libGVCbG9ja3MgJiYgbWluVmlzaWJsZUJsb2NrcyA+IG1heFZpc2libGVCbG9ja3MpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgZ2V0RGVmYXVsdExpc3RFbnRyeSA9ICgpID0+ICh7XG4gICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBwcm9wczogYmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgLi4uKE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoZmllbGRzLCBbZmllbGQsIHsgZGVmYXVsdFZhbHVlIH1dKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRlZmF1bHRWYWx1ZSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IEJsb2NrTGlzdEJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICA+ID0ge1xuICAgICAgICAuLi5jcmVhdGVCbG9ja1NrZWxldG9uKCksXG5cbiAgICAgICAgbmFtZSxcblxuICAgICAgICBkaXNwbGF5TmFtZSxcblxuICAgICAgICB0YWdzOiB0YWdzID8gdGFncyA6IGJsb2NrLnRhZ3MsXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4gKHtcbiAgICAgICAgICAgIGJsb2NrczpcbiAgICAgICAgICAgICAgICBtaW5WaXNpYmxlQmxvY2tzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBtaW5WaXNpYmxlQmxvY2tzIH0sIGdldERlZmF1bHRMaXN0RW50cnkpXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlRGVmYXVsdExpc3RFbnRyeVxuICAgICAgICAgICAgICAgICAgICAgID8gW2dldERlZmF1bHRMaXN0RW50cnkoKV1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICB9KSxcblxuICAgICAgICBjYXRlZ29yeTogYmxvY2suY2F0ZWdvcnksXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IGlucHV0LmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5pbnB1dDJTdGF0ZShjaGlsZC5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGNoaWxkW2ZpZWxkXSB9KSwge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5zdGF0ZTJPdXRwdXQoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgICAgICAgICAgICAgIGJsb2NrczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG91dHB1dC5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGJsb2NrLm91dHB1dDJTdGF0ZShjaGlsZC5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q3R4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IHByZXZpZXdDdHgucGFyZW50VXJsLFxuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiAocHJldmlld0N0eC5zaG93VmlzaWJsZU9ubHkgPyBjaGlsZC52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0FkbWluUm91dGUgPSBgJHtwcmV2aWV3Q3R4LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDdHgucGFyZW50VXJsfS8ke2NoaWxkLmtleX0vZWRpdGA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNoaWxkLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDdHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQWRkaXRpb25hbEl0ZW1GaWVsZHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNWYWxpZDogYXN5bmMgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1ZhbGlkaXR5UmVzdWx0ID0gYXdhaXQgcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmJsb2NrcywgYXN5bmMgKGMpID0+IGJsb2NrLmlzVmFsaWQoYy5wcm9wcykpO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrVmFsaWRpdHlSZXN1bHQgJiYgKG1pblZpc2libGVCbG9ja3MgPyBtaW5WaXNpYmxlQmxvY2tzIDw9IHN0YXRlLmJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jay52aXNpYmxlKS5sZW5ndGggOiB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGlsZEJsb2NrQ291bnQ6IChzdGF0ZSkgPT4gc3RhdGUuYmxvY2tzLmxlbmd0aCxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFuY2hvcnMsIC4uLihibG9jay5hbmNob3JzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8QmxvY2tEZXBlbmRlbmN5W10+KChkZXBlbmRlbmNpZXMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihibG9jay5kZXBlbmRlbmNpZXM/LihjaGlsZC5wcm9wcykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMobWVyZ2VkRGVwZW5kZW5jaWVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQ6IChvdXRwdXQsIHJlcGxhY2VtZW50cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3T3V0cHV0OiBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0geyAuLi5vdXRwdXQsIGJsb2NrczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmJsb2Nrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY2hpbGQucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVmaW5lc093blBhZGRpbmc6IHRydWUsXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHRvdGFsVmlzaWJsZUJsb2NrcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50LFxuICAgICAgICAgICAgICAgIGFkZE5ld0Jsb2NrLFxuICAgICAgICAgICAgICAgIGNvcHlTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBkZWxldGVBbGxTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayxcbiAgICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVTZWxlY3RBbGwsXG4gICAgICAgICAgICAgICAgcGFzdGVCbG9jayxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWlzc2luZyBBZGRpdGlvbmFsSXRlbUZpZWxkcyBnZW5lcmljIGluIGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50XG4gICAgICAgICAgICB9ID0gdXNlQWRtaW5Db21wb25lbnQoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cInRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuYmxvY2tzLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmJsb2Nrcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlVG9nZ2xlU2VsZWN0QWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3Quc2VsZWN0QWxsXCIgZGVmYXVsdE1lc3NhZ2U9XCJTZWxlY3QgYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkQ291bnQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtkZWxldGVBbGxTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17Y29weVNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb3B5IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBwYXN0ZUJsb2NrKDApfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFzdGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLm1hcCgoZGF0YSwgYmxvY2tJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01pblZpc2libGVCbG9ja3NNZXQgPSAhIW1pblZpc2libGVCbG9ja3MgJiYgdG90YWxWaXNpYmxlQmxvY2tzID49IG1pblZpc2libGVCbG9ja3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWF4VmlzaWJsZUJsb2Nrc1JlYWNoZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFtYXhWaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtYXhWaXNpYmxlQmxvY2tzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhblRvZ2dsZVZpc2liaWxpdHkgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID8gZGF0YS52aXNpYmxlIDogdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkICYmICFkYXRhLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCEhbWluVmlzaWJsZUJsb2NrcyAmJiAhaXNNaW5WaXNpYmxlQmxvY2tzTWV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pblZpc2libGVCbG9ja3MgPT09IHRvdGFsVmlzaWJsZUJsb2NrcyAmJiBkYXRhLnZpc2libGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SG92ZXJQcmV2aWV3Q29tcG9uZW50IGtleT17ZGF0YS5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2RhdGEua2V5fS9lZGl0YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtkYXRhLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUHJldmlld0NvbnRlbnQ9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtibG9ja30gc3RhdGU9e2RhdGEucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9ja0luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBkYXRhLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbZGF0YS5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUJsb2NrPXsoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3MgPSBbLi4ucHJldlN0YXRlLmJsb2Nrc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tUb01vdmUgPSBibG9ja3Muc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5zcGxpY2UodG8sIDAsIGJsb2NrVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGJsb2NrcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlCdXR0b249e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNYXhCbG9ja3NBbGxvd2VkTWVzc2FnZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5tYXhWaXNpYmxlQmxvY2tzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIk1heC4gdmlzaWJsZSBibG9ja3MgYWxsb3dlZDoge21heFZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWF4VmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWluVmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNaW4uIHZpc2libGUgYmxvY2tzIHJlcXVpcmVkOiB7bWluVmlzaWJsZUJsb2Nrc31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBtaW5WaXNpYmxlQmxvY2tzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IGNvbXBvbmVudD1cInNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNhblRvZ2dsZVZpc2liaWxpdHkgJiYgdG9nZ2xlVmlzaWJsZShkYXRhLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5Ub2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGF0YS52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soYmVmb3JlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBibG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBkYXRhLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogZGF0YVtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhibG9ja0luZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkYXRhLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QmxvY2soZGF0YSwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGJsb2NrLmlzVmFsaWQoZGF0YS5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2RhdGEuc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2Jsb2NrSW5kZXggPj0gc3RhdGUuYmxvY2tzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZW51SXRlbXM9eyhvbk1lbnVDbG9zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW09e2RhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodXBkYXRlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrczogcHJldmlvdXNTdGF0ZS5ibG9ja3MubWFwKChibG9jaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sua2V5ID09PSBkYXRhLmtleSA/IHVwZGF0ZWRJdGVtIDogYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbnRlbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZW50ID8gPEFkZGl0aW9uYWxJdGVtQ29udGVudCBpdGVtPXtkYXRhfSAvPiA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSG92ZXJQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFkZCB7aXRlbU5hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LmFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImVkaXRcIiB0aXRsZT17YmxvY2suZGlzcGxheU5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaXRlbUlkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHN0YWNrQXBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5ibG9ja3MuZmluZCgoYykgPT4gYy5rZXkgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJtYWluXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxibG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihpdGVtSWQpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3Q29udGVudDogKHN0YXRlLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5ibG9ja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm5vQmxvY2tzXCIgZGVmYXVsdE1lc3NhZ2U9XCJObyB7aXRlbXNOYW1lfVwiIHZhbHVlcz17eyBpdGVtc05hbWUgfX0gLz4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmJsb2Nrcy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UHJldmlld0NvbnRlbnQgPSBibG9jay5wcmV2aWV3Q29udGVudChuZXh0LnByb3BzLCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4ubmV4dFByZXZpZXdDb250ZW50XTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eYmxvY2tzLlxcZCsucHJvcHMvLnRlc3QoanNvblBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlzdEJsb2NrOiBJbnZhbGlkIGpzb25QYXRoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXRoQXJyID0ganNvblBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHBhdGhBcnJbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tJdGVtID0gc3RhdGUuYmxvY2tzW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihibG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY2hpbGQucHJvcHMsIG9wdGlvbnMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gb3ZlcnJpZGUoQmxvY2tMaXN0QmxvY2spO1xuICAgIH1cbiAgICByZXR1cm4gQmxvY2tMaXN0QmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuIl19 */",
608
+ styles: "padding:15px 10px 15px 7px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMmpCMEQiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
607
609
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
608
610
  });
609
611
  var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV === "production" ? {
@@ -616,7 +618,7 @@ var LargeAddButtonContent = /*#__PURE__*/styled("span", process.env.NODE_ENV ===
616
618
  styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0"
617
619
  } : {
618
620
  name: "3g6o2",
619
- styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOGpCNEMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB7IHR5cGUgRnVuY3Rpb25Db21wb25lbnQsIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2tTa2VsZXRvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUJsb2NrU2tlbGV0b25cIjtcbmltcG9ydCB7IGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vaGVscGVycy9kZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBIb3ZlclByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL0hvdmVyUHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvU2VsZWN0UHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgdHlwZSBCbG9ja0RlcGVuZGVuY3ksIHR5cGUgQmxvY2tJbnRlcmZhY2UsIHR5cGUgQmxvY2tTdGF0ZSwgdHlwZSBQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcGFyYWxsZWxBc3luY0V2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxzL3BhcmFsbGVsQXN5bmNFdmVyeVwiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuLy8gVXNpbmcge30gaW5zdGVhZCBvZiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gYmVjYXVzZSBuZXZlciBhbmQgdW5rbm93biBhcmUgaW5jb21wYXRpYmxlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxudHlwZSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHMgPSB7fTtcblxuZXhwb3J0IHR5cGUgTGlzdEJsb2NrSXRlbTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwcm9wczogQmxvY2tTdGF0ZTxUPjtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzbGlkZUluOiBib29sZWFuO1xufSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tGcmFnbWVudDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja0FkZGl0aW9uYWxJdGVtRmllbGQ8VmFsdWUgPSB1bmtub3duPiB7XG4gICAgZGVmYXVsdFZhbHVlOiBWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUxpc3RCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1OYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1zTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBibG9jazogVDtcbiAgICBtaW5WaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIG1heFZpc2libGVCbG9ja3M/OiBudW1iZXI7XG4gICAgY3JlYXRlRGVmYXVsdExpc3RFbnRyeT86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbEl0ZW1GaWVsZHM/OiB7XG4gICAgICAgIFtLZXkgaW4ga2V5b2YgQWRkaXRpb25hbEl0ZW1GaWVsZHNdOiBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPEFkZGl0aW9uYWxJdGVtRmllbGRzW0tleV0+O1xuICAgIH07XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zPzogRnVuY3Rpb25Db21wb25lbnQ8e1xuICAgICAgICBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPjtcbiAgICAgICAgb25DaGFuZ2U6IChpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPikgPT4gdm9pZDtcbiAgICAgICAgb25NZW51Q2xvc2U6ICgpID0+IHZvaWQ7XG4gICAgfT47XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZW50PzogRnVuY3Rpb25Db21wb25lbnQ8eyBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiB9PjtcbiAgICB0YWdzPzogQXJyYXk8TWVzc2FnZURlc2NyaXB0b3IgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEJsb2NrPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4oXG4gICAge1xuICAgICAgICBuYW1lLFxuICAgICAgICBibG9jayxcbiAgICAgICAgZGlzcGxheU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2submFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiTGlzdFwiIC8+LFxuICAgICAgICBpdGVtTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tcIiAvPixcbiAgICAgICAgaXRlbXNOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLml0ZW1zTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tzXCIgLz4sXG4gICAgICAgIG1pblZpc2libGVCbG9ja3MsXG4gICAgICAgIG1heFZpc2libGVCbG9ja3MsXG4gICAgICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnksXG4gICAgICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCxcbiAgICAgICAgdGFncyxcbiAgICB9OiBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPFxuICAgICAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPlxuICAgICAgICA+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+LFxuKTogQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+IHtcbiAgICBjb25zdCB1c2VBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50KHsgYmxvY2ssIG1heFZpc2libGVCbG9ja3MsIGFkZGl0aW9uYWxJdGVtRmllbGRzIH0pO1xuICAgIGlmIChtaW5WaXNpYmxlQmxvY2tzICYmIG1heFZpc2libGVCbG9ja3MgJiYgbWluVmlzaWJsZUJsb2NrcyA+IG1heFZpc2libGVCbG9ja3MpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgZ2V0RGVmYXVsdExpc3RFbnRyeSA9ICgpID0+ICh7XG4gICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBwcm9wczogYmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgLi4uKE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoZmllbGRzLCBbZmllbGQsIHsgZGVmYXVsdFZhbHVlIH1dKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRlZmF1bHRWYWx1ZSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IEJsb2NrTGlzdEJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICA+ID0ge1xuICAgICAgICAuLi5jcmVhdGVCbG9ja1NrZWxldG9uKCksXG5cbiAgICAgICAgbmFtZSxcblxuICAgICAgICBkaXNwbGF5TmFtZSxcblxuICAgICAgICB0YWdzOiB0YWdzID8gdGFncyA6IGJsb2NrLnRhZ3MsXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4gKHtcbiAgICAgICAgICAgIGJsb2NrczpcbiAgICAgICAgICAgICAgICBtaW5WaXNpYmxlQmxvY2tzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBtaW5WaXNpYmxlQmxvY2tzIH0sIGdldERlZmF1bHRMaXN0RW50cnkpXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlRGVmYXVsdExpc3RFbnRyeVxuICAgICAgICAgICAgICAgICAgICAgID8gW2dldERlZmF1bHRMaXN0RW50cnkoKV1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICB9KSxcblxuICAgICAgICBjYXRlZ29yeTogYmxvY2suY2F0ZWdvcnksXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IGlucHV0LmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5pbnB1dDJTdGF0ZShjaGlsZC5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGNoaWxkW2ZpZWxkXSB9KSwge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5zdGF0ZTJPdXRwdXQoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgICAgICAgICAgICAgIGJsb2NrczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG91dHB1dC5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGJsb2NrLm91dHB1dDJTdGF0ZShjaGlsZC5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q3R4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IHByZXZpZXdDdHgucGFyZW50VXJsLFxuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiAocHJldmlld0N0eC5zaG93VmlzaWJsZU9ubHkgPyBjaGlsZC52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0FkbWluUm91dGUgPSBgJHtwcmV2aWV3Q3R4LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDdHgucGFyZW50VXJsfS8ke2NoaWxkLmtleX0vZWRpdGA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNoaWxkLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDdHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQWRkaXRpb25hbEl0ZW1GaWVsZHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNWYWxpZDogYXN5bmMgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1ZhbGlkaXR5UmVzdWx0ID0gYXdhaXQgcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmJsb2NrcywgYXN5bmMgKGMpID0+IGJsb2NrLmlzVmFsaWQoYy5wcm9wcykpO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrVmFsaWRpdHlSZXN1bHQgJiYgKG1pblZpc2libGVCbG9ja3MgPyBtaW5WaXNpYmxlQmxvY2tzIDw9IHN0YXRlLmJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jay52aXNpYmxlKS5sZW5ndGggOiB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGlsZEJsb2NrQ291bnQ6IChzdGF0ZSkgPT4gc3RhdGUuYmxvY2tzLmxlbmd0aCxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFuY2hvcnMsIC4uLihibG9jay5hbmNob3JzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8QmxvY2tEZXBlbmRlbmN5W10+KChkZXBlbmRlbmNpZXMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihibG9jay5kZXBlbmRlbmNpZXM/LihjaGlsZC5wcm9wcykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMobWVyZ2VkRGVwZW5kZW5jaWVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQ6IChvdXRwdXQsIHJlcGxhY2VtZW50cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3T3V0cHV0OiBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0geyAuLi5vdXRwdXQsIGJsb2NrczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmJsb2Nrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY2hpbGQucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVmaW5lc093blBhZGRpbmc6IHRydWUsXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHRvdGFsVmlzaWJsZUJsb2NrcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50LFxuICAgICAgICAgICAgICAgIGFkZE5ld0Jsb2NrLFxuICAgICAgICAgICAgICAgIGNvcHlTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBkZWxldGVBbGxTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayxcbiAgICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVTZWxlY3RBbGwsXG4gICAgICAgICAgICAgICAgcGFzdGVCbG9jayxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWlzc2luZyBBZGRpdGlvbmFsSXRlbUZpZWxkcyBnZW5lcmljIGluIGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50XG4gICAgICAgICAgICB9ID0gdXNlQWRtaW5Db21wb25lbnQoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cInRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuYmxvY2tzLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmJsb2Nrcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlVG9nZ2xlU2VsZWN0QWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3Quc2VsZWN0QWxsXCIgZGVmYXVsdE1lc3NhZ2U9XCJTZWxlY3QgYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkQ291bnQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtkZWxldGVBbGxTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17Y29weVNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb3B5IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBwYXN0ZUJsb2NrKDApfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFzdGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLm1hcCgoZGF0YSwgYmxvY2tJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01pblZpc2libGVCbG9ja3NNZXQgPSAhIW1pblZpc2libGVCbG9ja3MgJiYgdG90YWxWaXNpYmxlQmxvY2tzID49IG1pblZpc2libGVCbG9ja3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWF4VmlzaWJsZUJsb2Nrc1JlYWNoZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFtYXhWaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtYXhWaXNpYmxlQmxvY2tzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhblRvZ2dsZVZpc2liaWxpdHkgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID8gZGF0YS52aXNpYmxlIDogdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkICYmICFkYXRhLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCEhbWluVmlzaWJsZUJsb2NrcyAmJiAhaXNNaW5WaXNpYmxlQmxvY2tzTWV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pblZpc2libGVCbG9ja3MgPT09IHRvdGFsVmlzaWJsZUJsb2NrcyAmJiBkYXRhLnZpc2libGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SG92ZXJQcmV2aWV3Q29tcG9uZW50IGtleT17ZGF0YS5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2RhdGEua2V5fS9lZGl0YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtkYXRhLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUHJldmlld0NvbnRlbnQ9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtibG9ja30gc3RhdGU9e2RhdGEucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9ja0luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBkYXRhLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbZGF0YS5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUJsb2NrPXsoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3MgPSBbLi4ucHJldlN0YXRlLmJsb2Nrc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tUb01vdmUgPSBibG9ja3Muc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5zcGxpY2UodG8sIDAsIGJsb2NrVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGJsb2NrcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlCdXR0b249e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNYXhCbG9ja3NBbGxvd2VkTWVzc2FnZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5tYXhWaXNpYmxlQmxvY2tzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIk1heC4gdmlzaWJsZSBibG9ja3MgYWxsb3dlZDoge21heFZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWF4VmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWluVmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNaW4uIHZpc2libGUgYmxvY2tzIHJlcXVpcmVkOiB7bWluVmlzaWJsZUJsb2Nrc31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBtaW5WaXNpYmxlQmxvY2tzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IGNvbXBvbmVudD1cInNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNhblRvZ2dsZVZpc2liaWxpdHkgJiYgdG9nZ2xlVmlzaWJsZShkYXRhLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5Ub2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGF0YS52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soYmVmb3JlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBibG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBkYXRhLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogZGF0YVtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhibG9ja0luZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkYXRhLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QmxvY2soZGF0YSwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGJsb2NrLmlzVmFsaWQoZGF0YS5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2RhdGEuc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2Jsb2NrSW5kZXggPj0gc3RhdGUuYmxvY2tzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZW51SXRlbXM9eyhvbk1lbnVDbG9zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW09e2RhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodXBkYXRlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrczogcHJldmlvdXNTdGF0ZS5ibG9ja3MubWFwKChibG9jaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sua2V5ID09PSBkYXRhLmtleSA/IHVwZGF0ZWRJdGVtIDogYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbnRlbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZW50ID8gPEFkZGl0aW9uYWxJdGVtQ29udGVudCBpdGVtPXtkYXRhfSAvPiA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSG92ZXJQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFkZCB7aXRlbU5hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LmFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImVkaXRcIiB0aXRsZT17YmxvY2suZGlzcGxheU5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaXRlbUlkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHN0YWNrQXBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5ibG9ja3MuZmluZCgoYykgPT4gYy5rZXkgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJtYWluXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxibG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihpdGVtSWQpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3Q29udGVudDogKHN0YXRlLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5ibG9ja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm5vQmxvY2tzXCIgZGVmYXVsdE1lc3NhZ2U9XCJObyB7aXRlbXNOYW1lfVwiIHZhbHVlcz17eyBpdGVtc05hbWUgfX0gLz4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmJsb2Nrcy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UHJldmlld0NvbnRlbnQgPSBibG9jay5wcmV2aWV3Q29udGVudChuZXh0LnByb3BzLCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4ubmV4dFByZXZpZXdDb250ZW50XTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eYmxvY2tzLlxcZCsucHJvcHMvLnRlc3QoanNvblBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlzdEJsb2NrOiBJbnZhbGlkIGpzb25QYXRoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXRoQXJyID0ganNvblBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHBhdGhBcnJbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tJdGVtID0gc3RhdGUuYmxvY2tzW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihibG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY2hpbGQucHJvcHMsIG9wdGlvbnMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gb3ZlcnJpZGUoQmxvY2tMaXN0QmxvY2spO1xuICAgIH1cbiAgICByZXR1cm4gQmxvY2tMaXN0QmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuIl19 */",
621
+ styles: "display:flex;flex-direction:column;align-items:center;padding:4px 0/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK2pCNEMiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
620
622
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
621
623
  });
622
624
  var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "production" ? {
@@ -629,6 +631,6 @@ var LargeAddButtonIcon = /*#__PURE__*/styled(Add, process.env.NODE_ENV === "prod
629
631
  styles: "font-size:24px;margin-bottom:8px"
630
632
  } : {
631
633
  name: "1yvy7h3",
632
- styles: "font-size:24px;margin-bottom:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcWtCc0MiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB7IHR5cGUgRnVuY3Rpb25Db21wb25lbnQsIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBGb3JtYXR0ZWRNZXNzYWdlLCB0eXBlIE1lc3NhZ2VEZXNjcmlwdG9yIH0gZnJvbSBcInJlYWN0LWludGxcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUZvb3RlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXJcIjtcbmltcG9ydCB7IEFkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlclwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbiB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblwiO1xuaW1wb3J0IHsgQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyIH0gZnJvbSBcIi4uL2NvbW1vbi9CbG9ja0FkbWluQ29tcG9uZW50UGFwZXJcIjtcbmltcG9ydCB7IEJsb2NrUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vY29tbW9uL2Jsb2NrUm93L0Jsb2NrUHJldmlld0NvbnRlbnRcIjtcbmltcG9ydCB7IEJsb2NrUm93IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1Jvd1wiO1xuaW1wb3J0IHsgY3JlYXRlQmxvY2tTa2VsZXRvbiB9IGZyb20gXCIuLi9oZWxwZXJzL2NyZWF0ZUJsb2NrU2tlbGV0b25cIjtcbmltcG9ydCB7IGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMgfSBmcm9tIFwiLi4vaGVscGVycy9kZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzXCI7XG5pbXBvcnQgeyBIb3ZlclByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL0hvdmVyUHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VsZWN0UHJldmlld0NvbXBvbmVudCB9IGZyb20gXCIuLi9pZnJhbWVicmlkZ2UvU2VsZWN0UHJldmlld0NvbXBvbmVudFwiO1xuaW1wb3J0IHsgdHlwZSBCbG9ja0RlcGVuZGVuY3ksIHR5cGUgQmxvY2tJbnRlcmZhY2UsIHR5cGUgQmxvY2tTdGF0ZSwgdHlwZSBQcmV2aWV3Q29udGVudCB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgcGFyYWxsZWxBc3luY0V2ZXJ5IH0gZnJvbSBcIi4uL3V0aWxzL3BhcmFsbGVsQXN5bmNFdmVyeVwiO1xuaW1wb3J0IHsgY3JlYXRlVXNlQWRtaW5Db21wb25lbnQgfSBmcm9tIFwiLi9saXN0QmxvY2svY3JlYXRlVXNlQWRtaW5Db21wb25lbnRcIjtcblxuLy8gVXNpbmcge30gaW5zdGVhZCBvZiBSZWNvcmQ8c3RyaW5nLCBuZXZlcj4gYmVjYXVzZSBuZXZlciBhbmQgdW5rbm93biBhcmUgaW5jb21wYXRpYmxlLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxudHlwZSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHMgPSB7fTtcblxuZXhwb3J0IHR5cGUgTGlzdEJsb2NrSXRlbTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICBwcm9wczogQmxvY2tTdGF0ZTxUPjtcbiAgICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBzbGlkZUluOiBib29sZWFuO1xufSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja1N0YXRlPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tGcmFnbWVudDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiB7XG4gICAgYmxvY2tzOiBBcnJheTxcbiAgICAgICAge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICAgICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICAgICAgdmlzaWJsZTogYm9vbGVhbjtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICBwcm9wczogYW55O1xuICAgICAgICB9ICYgQWRkaXRpb25hbEl0ZW1GaWVsZHNcbiAgICA+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RCbG9ja0FkZGl0aW9uYWxJdGVtRmllbGQ8VmFsdWUgPSB1bmtub3duPiB7XG4gICAgZGVmYXVsdFZhbHVlOiBWYWx1ZTtcbn1cblxuaW50ZXJmYWNlIENyZWF0ZUxpc3RCbG9ja09wdGlvbnM8VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1OYW1lPzogUmVhY3ROb2RlO1xuICAgIGl0ZW1zTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBibG9jazogVDtcbiAgICBtaW5WaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIG1heFZpc2libGVCbG9ja3M/OiBudW1iZXI7XG4gICAgY3JlYXRlRGVmYXVsdExpc3RFbnRyeT86IGJvb2xlYW47XG4gICAgYWRkaXRpb25hbEl0ZW1GaWVsZHM/OiB7XG4gICAgICAgIFtLZXkgaW4ga2V5b2YgQWRkaXRpb25hbEl0ZW1GaWVsZHNdOiBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPEFkZGl0aW9uYWxJdGVtRmllbGRzW0tleV0+O1xuICAgIH07XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zPzogRnVuY3Rpb25Db21wb25lbnQ8e1xuICAgICAgICBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPjtcbiAgICAgICAgb25DaGFuZ2U6IChpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPikgPT4gdm9pZDtcbiAgICAgICAgb25NZW51Q2xvc2U6ICgpID0+IHZvaWQ7XG4gICAgfT47XG4gICAgQWRkaXRpb25hbEl0ZW1Db250ZW50PzogRnVuY3Rpb25Db21wb25lbnQ8eyBpdGVtOiBMaXN0QmxvY2tJdGVtPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiB9PjtcbiAgICB0YWdzPzogQXJyYXk8TWVzc2FnZURlc2NyaXB0b3IgfCBzdHJpbmc+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEJsb2NrPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4oXG4gICAge1xuICAgICAgICBuYW1lLFxuICAgICAgICBibG9jayxcbiAgICAgICAgZGlzcGxheU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2submFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiTGlzdFwiIC8+LFxuICAgICAgICBpdGVtTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tcIiAvPixcbiAgICAgICAgaXRlbXNOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLml0ZW1zTmFtZVwiIGRlZmF1bHRNZXNzYWdlPVwiYmxvY2tzXCIgLz4sXG4gICAgICAgIG1pblZpc2libGVCbG9ja3MsXG4gICAgICAgIG1heFZpc2libGVCbG9ja3MsXG4gICAgICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnksXG4gICAgICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMsXG4gICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCxcbiAgICAgICAgdGFncyxcbiAgICB9OiBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICBvdmVycmlkZT86IChcbiAgICAgICAgYmxvY2s6IEJsb2NrSW50ZXJmYWNlPFxuICAgICAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICAgICAgTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPlxuICAgICAgICA+LFxuICAgICkgPT4gQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+LFxuKTogQmxvY2tJbnRlcmZhY2U8TGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz4+IHtcbiAgICBjb25zdCB1c2VBZG1pbkNvbXBvbmVudCA9IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50KHsgYmxvY2ssIG1heFZpc2libGVCbG9ja3MsIGFkZGl0aW9uYWxJdGVtRmllbGRzIH0pO1xuICAgIGlmIChtaW5WaXNpYmxlQmxvY2tzICYmIG1heFZpc2libGVCbG9ja3MgJiYgbWluVmlzaWJsZUJsb2NrcyA+IG1heFZpc2libGVCbG9ja3MpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuXG4gICAgY29uc3QgZ2V0RGVmYXVsdExpc3RFbnRyeSA9ICgpID0+ICh7XG4gICAgICAgIGtleTogdXVpZCgpLFxuICAgICAgICB2aXNpYmxlOiB0cnVlLFxuICAgICAgICBwcm9wczogYmxvY2suZGVmYXVsdFZhbHVlcygpLFxuICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgLi4uKE9iamVjdC5lbnRyaWVzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAoZmllbGRzLCBbZmllbGQsIHsgZGVmYXVsdFZhbHVlIH1dKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRlZmF1bHRWYWx1ZSB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IEJsb2NrTGlzdEJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tTdGF0ZTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICA+ID0ge1xuICAgICAgICAuLi5jcmVhdGVCbG9ja1NrZWxldG9uKCksXG5cbiAgICAgICAgbmFtZSxcblxuICAgICAgICBkaXNwbGF5TmFtZSxcblxuICAgICAgICB0YWdzOiB0YWdzID8gdGFncyA6IGJsb2NrLnRhZ3MsXG5cbiAgICAgICAgZGVmYXVsdFZhbHVlczogKCkgPT4gKHtcbiAgICAgICAgICAgIGJsb2NrczpcbiAgICAgICAgICAgICAgICBtaW5WaXNpYmxlQmxvY2tzICE9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgPyBBcnJheS5mcm9tKHsgbGVuZ3RoOiBtaW5WaXNpYmxlQmxvY2tzIH0sIGdldERlZmF1bHRMaXN0RW50cnkpXG4gICAgICAgICAgICAgICAgICAgIDogY3JlYXRlRGVmYXVsdExpc3RFbnRyeVxuICAgICAgICAgICAgICAgICAgICAgID8gW2dldERlZmF1bHRMaXN0RW50cnkoKV1cbiAgICAgICAgICAgICAgICAgICAgICA6IFtdLFxuICAgICAgICB9KSxcblxuICAgICAgICBjYXRlZ29yeTogYmxvY2suY2F0ZWdvcnksXG5cbiAgICAgICAgaW5wdXQyU3RhdGU6IChpbnB1dCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IGlucHV0LmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5pbnB1dDJTdGF0ZShjaGlsZC5wcm9wcyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5PYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGNoaWxkW2ZpZWxkXSB9KSwge30pLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVJbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIHN0YXRlMk91dHB1dDogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5zdGF0ZTJPdXRwdXQoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG5cbiAgICAgICAgb3V0cHV0MlN0YXRlOiBhc3luYyAob3V0cHV0LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGF0ZTogTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0ge1xuICAgICAgICAgICAgICAgIGJsb2NrczogW10sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG91dHB1dC5ibG9ja3MpIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGF3YWl0IGJsb2NrLm91dHB1dDJTdGF0ZShjaGlsZC5wcm9wcywgY29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9LFxuXG4gICAgICAgIGNyZWF0ZVByZXZpZXdTdGF0ZTogKHN0YXRlLCBwcmV2aWV3Q3R4KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IHByZXZpZXdDdHgucGFyZW50VXJsLFxuICAgICAgICAgICAgICAgIGJsb2Nrczogc3RhdGUuYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkKSA9PiAocHJldmlld0N0eC5zaG93VmlzaWJsZU9ubHkgPyBjaGlsZC52aXNpYmxlIDogdHJ1ZSkpIC8vIGRlcGVuZGluZyBvbiBjb250ZXh0IHNob3cgYWxsIGJsb2NrcyBvciBvbmx5IHZpc2libGUgYmxvY2tzXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja0FkbWluUm91dGUgPSBgJHtwcmV2aWV3Q3R4LnBhcmVudFVybFN1YlJvdXRlID8/IHByZXZpZXdDdHgucGFyZW50VXJsfS8ke2NoaWxkLmtleX0vZWRpdGA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBjaGlsZC5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY2hpbGQudmlzaWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suY3JlYXRlUHJldmlld1N0YXRlKGNoaWxkLnByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByZXZpZXdDdHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybFN1YlJvdXRlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudFVybDogYmxvY2tBZG1pblJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgYXMgQWRkaXRpb25hbEl0ZW1GaWVsZHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkbWluUm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pbk1ldGE6IHsgcm91dGU6IGJsb2NrQWRtaW5Sb3V0ZSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNWYWxpZDogYXN5bmMgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9ja1ZhbGlkaXR5UmVzdWx0ID0gYXdhaXQgcGFyYWxsZWxBc3luY0V2ZXJ5KHN0YXRlLmJsb2NrcywgYXN5bmMgKGMpID0+IGJsb2NrLmlzVmFsaWQoYy5wcm9wcykpO1xuICAgICAgICAgICAgcmV0dXJuIGJsb2NrVmFsaWRpdHlSZXN1bHQgJiYgKG1pblZpc2libGVCbG9ja3MgPyBtaW5WaXNpYmxlQmxvY2tzIDw9IHN0YXRlLmJsb2Nrcy5maWx0ZXIoKGJsb2NrKSA9PiBibG9jay52aXNpYmxlKS5sZW5ndGggOiB0cnVlKTtcbiAgICAgICAgfSxcblxuICAgICAgICBjaGlsZEJsb2NrQ291bnQ6IChzdGF0ZSkgPT4gc3RhdGUuYmxvY2tzLmxlbmd0aCxcblxuICAgICAgICBhbmNob3JzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPHN0cmluZ1tdPigoYW5jaG9ycywgY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmFuY2hvcnMsIC4uLihibG9jay5hbmNob3JzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVwZW5kZW5jaWVzOiAoc3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8QmxvY2tEZXBlbmRlbmN5W10+KChkZXBlbmRlbmNpZXMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5kZXBlbmRlbmNpZXMsIC4uLihibG9jay5kZXBlbmRlbmNpZXM/LihjaGlsZC5wcm9wcykgPz8gW10pXTtcbiAgICAgICAgICAgIH0sIFtdKTtcblxuICAgICAgICAgICAgcmV0dXJuIGRlZHVwbGljYXRlQmxvY2tEZXBlbmRlbmNpZXMobWVyZ2VkRGVwZW5kZW5jaWVzKTtcbiAgICAgICAgfSxcblxuICAgICAgICByZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQ6IChvdXRwdXQsIHJlcGxhY2VtZW50cykgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3T3V0cHV0OiBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+ID0geyAuLi5vdXRwdXQsIGJsb2NrczogW10gfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgbmV3T3V0cHV0LmJsb2Nrcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBibG9jay5yZXBsYWNlRGVwZW5kZW5jaWVzSW5PdXRwdXQoY2hpbGQucHJvcHMsIHJlcGxhY2VtZW50cyksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBuZXdPdXRwdXQ7XG4gICAgICAgIH0sXG5cbiAgICAgICAgZGVmaW5lc093blBhZGRpbmc6IHRydWUsXG5cbiAgICAgICAgQWRtaW5Db21wb25lbnQ6ICh7IHN0YXRlLCB1cGRhdGVTdGF0ZSB9KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgY2Fubm90UGFzdGVCbG9ja0Vycm9yRGlhbG9nLFxuICAgICAgICAgICAgICAgIGNyZWF0ZVVwZGF0ZVN1YkJsb2Nrc0ZuLFxuICAgICAgICAgICAgICAgIHRvdGFsVmlzaWJsZUJsb2NrcyxcbiAgICAgICAgICAgICAgICB1cGRhdGVDbGlwYm9hcmRDb250ZW50LFxuICAgICAgICAgICAgICAgIGFkZE5ld0Jsb2NrLFxuICAgICAgICAgICAgICAgIGNvcHlTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBkZWxldGVBbGxTZWxlY3RlZEJsb2NrcyxcbiAgICAgICAgICAgICAgICBzZWxlY3RCbG9jayxcbiAgICAgICAgICAgICAgICBoYW5kbGVUb2dnbGVTZWxlY3RBbGwsXG4gICAgICAgICAgICAgICAgcGFzdGVCbG9jayxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZENvdW50LFxuICAgICAgICAgICAgICAgIHRvZ2dsZVZpc2libGUsXG4gICAgICAgICAgICAgICAgZGVsZXRlQmxvY2tzLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgbWlzc2luZyBBZGRpdGlvbmFsSXRlbUZpZWxkcyBnZW5lcmljIGluIGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50XG4gICAgICAgICAgICB9ID0gdXNlQWRtaW5Db21wb25lbnQoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaCBkaXNhYmxlRm9yY2VQcm9tcHRSb3V0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cInRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciBkaXNhYmxlUGFkZGluZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWRDb3VudCA9PT0gc3RhdGUuYmxvY2tzLmxlbmd0aCAmJiBzZWxlY3RlZENvdW50ID4gMH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV0ZXJtaW5hdGU9e3NlbGVjdGVkQ291bnQgPiAwICYmIHNlbGVjdGVkQ291bnQgIT09IHN0YXRlLmJsb2Nrcy5sZW5ndGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlVG9nZ2xlU2VsZWN0QWxsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3Quc2VsZWN0QWxsXCIgZGVmYXVsdE1lc3NhZ2U9XCJTZWxlY3QgYWxsXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3NlbGVjdGVkQ291bnQgPiAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXtkZWxldGVBbGxTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17Y29weVNlbGVjdGVkQmxvY2tzfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxDb3B5IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBwYXN0ZUJsb2NrKDApfSBzaXplPVwibGFyZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UGFzdGUgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXJBY3Rpb25Db250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0xpc3RIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FkbWluQ29tcG9uZW50U3RpY2t5SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLm1hcCgoZGF0YSwgYmxvY2tJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01pblZpc2libGVCbG9ja3NNZXQgPSAhIW1pblZpc2libGVCbG9ja3MgJiYgdG90YWxWaXNpYmxlQmxvY2tzID49IG1pblZpc2libGVCbG9ja3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTWF4VmlzaWJsZUJsb2Nrc1JlYWNoZWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISFtYXhWaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtYXhWaXNpYmxlQmxvY2tzO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhblRvZ2dsZVZpc2liaWxpdHkgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID8gZGF0YS52aXNpYmxlIDogdHJ1ZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPSBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkICYmICFkYXRhLnZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCEhbWluVmlzaWJsZUJsb2NrcyAmJiAhaXNNaW5WaXNpYmxlQmxvY2tzTWV0KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1pblZpc2libGVCbG9ja3MgPT09IHRvdGFsVmlzaWJsZUJsb2NrcyAmJiBkYXRhLnZpc2libGUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SG92ZXJQcmV2aWV3Q29tcG9uZW50IGtleT17ZGF0YS5rZXl9IGNvbXBvbmVudFNsdWc9e2Ake2RhdGEua2V5fS9lZGl0YH0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrUm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPXtkYXRhLmtleX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyUHJldmlld0NvbnRlbnQ9eygpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1ByZXZpZXdDb250ZW50IGJsb2NrPXtibG9ja30gc3RhdGU9e2RhdGEucHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4PXtibG9ja0luZGV4fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvbnRlbnRDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBkYXRhLmtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRGVsZXRlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyhbZGF0YS5rZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZUJsb2NrPXsoZnJvbSwgdG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2U3RhdGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9ja3MgPSBbLi4ucHJldlN0YXRlLmJsb2Nrc107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tUb01vdmUgPSBibG9ja3Muc3BsaWNlKGZyb20sIDEpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrcy5zcGxpY2UodG8sIDAsIGJsb2NrVG9Nb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5wcmV2U3RhdGUsIGJsb2NrcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHlCdXR0b249e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dNYXhCbG9ja3NBbGxvd2VkTWVzc2FnZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5tYXhWaXNpYmxlQmxvY2tzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIk1heC4gdmlzaWJsZSBibG9ja3MgYWxsb3dlZDoge21heFZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWF4VmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHNob3dNaW5CbG9ja3NSZXF1aXJlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWluVmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNaW4uIHZpc2libGUgYmxvY2tzIHJlcXVpcmVkOiB7bWluVmlzaWJsZUJsb2Nrc31cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBtaW5WaXNpYmxlQmxvY2tzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm94IGNvbXBvbmVudD1cInNwYW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNhblRvZ2dsZVZpc2liaWxpdHkgJiYgdG9nZ2xlVmlzaWJsZShkYXRhLmtleSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5Ub2dnbGVWaXNpYmlsaXR5fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGF0YS52aXNpYmxlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxWaXNpYmxlIGNvbG9yPVwic3VjY2Vzc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJbnZpc2libGUgY29sb3I9XCJhY3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQWRkTmV3QmxvY2s9eyhiZWZvcmVJbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soYmVmb3JlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNvcHlDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudChbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBibG9jay5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBkYXRhLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlOiBkYXRhLnByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsRmllbGRzOiBPYmplY3Qua2V5cyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogZGF0YVtmaWVsZF0gfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uUGFzdGVDbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdGVCbG9jayhibG9ja0luZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPXtkYXRhLnNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblNlbGVjdGVkQ2xpY2s9eyhzZWxlY3RlZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QmxvY2soZGF0YSwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkRm49eygpID0+IGJsb2NrLmlzVmFsaWQoZGF0YS5wcm9wcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW49e2RhdGEuc2xpZGVJbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUJvdHRvbUluc2VydEJldHdlZW5CdXR0b249e2Jsb2NrSW5kZXggPj0gc3RhdGUuYmxvY2tzLmxlbmd0aCAtIDF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxNZW51SXRlbXM9eyhvbk1lbnVDbG9zZSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW09e2RhdGF9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodXBkYXRlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlKChwcmV2aW91c1N0YXRlKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrczogcHJldmlvdXNTdGF0ZS5ibG9ja3MubWFwKChibG9jaykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2sua2V5ID09PSBkYXRhLmtleSA/IHVwZGF0ZWRJdGVtIDogYmxvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbENvbnRlbnQ9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZW50ID8gPEFkZGl0aW9uYWxJdGVtQ29udGVudCBpdGVtPXtkYXRhfSAvPiA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSG92ZXJQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0TWVzc2FnZT1cIkFkZCB7aXRlbU5hbWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9MYXJnZUFkZEJ1dHRvbkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYWRkTmV3QmxvY2soKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJlZGl0XCIsIGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17PEFkZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LmFkZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IGl0ZW1OYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUZvb3Rlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0UHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1BhZ2UgbmFtZT1cImVkaXRcIiB0aXRsZT17YmxvY2suZGlzcGxheU5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoaXRlbUlkKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KHN0YWNrQXBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5ibG9ja3MuZmluZCgoYykgPT4gYy5rZXkgPT09IGl0ZW1JZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja0FwaS5hY3RpdmF0ZVBhZ2UoXCJtYWluXCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxibG9jay5BZG1pbkNvbXBvbmVudCBzdGF0ZT17bWF0Y2gucHJvcHN9IHVwZGF0ZVN0YXRlPXtjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbihpdGVtSWQpfSAvPjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrUGFnZT5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFja1N3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAge2Nhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZ31cbiAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgICBwcmV2aWV3Q29udGVudDogKHN0YXRlLCBjdHgpID0+IHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5ibG9ja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm5vQmxvY2tzXCIgZGVmYXVsdE1lc3NhZ2U9XCJObyB7aXRlbXNOYW1lfVwiIHZhbHVlcz17eyBpdGVtc05hbWUgfX0gLz4sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHN0YXRlLmJsb2Nrcy5yZWR1Y2U8UHJldmlld0NvbnRlbnRbXT4oKHByZXYsIG5leHQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0UHJldmlld0NvbnRlbnQgPSBibG9jay5wcmV2aWV3Q29udGVudChuZXh0LnByb3BzLCBjdHgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4ubmV4dFByZXZpZXdDb250ZW50XTtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzb2x2ZURlcGVuZGVuY3lQYXRoOiAoc3RhdGUsIGpzb25QYXRoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIS9eYmxvY2tzLlxcZCsucHJvcHMvLnRlc3QoanNvblBhdGgpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTGlzdEJsb2NrOiBJbnZhbGlkIGpzb25QYXRoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwYXRoQXJyID0ganNvblBhdGguc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHBhdGhBcnJbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmxvY2tJdGVtID0gc3RhdGUuYmxvY2tzW251bV07XG5cbiAgICAgICAgICAgIGNvbnN0IGNoaWxkUGF0aCA9IGJsb2NrLnJlc29sdmVEZXBlbmRlbmN5UGF0aChibG9ja0l0ZW0ucHJvcHMsIHBhdGhBcnIuc2xpY2UoMykuam9pbihcIi5cIikpO1xuICAgICAgICAgICAgcmV0dXJuIGAke2Jsb2NrSXRlbS5rZXl9L2VkaXQvJHtjaGlsZFBhdGh9YDtcbiAgICAgICAgfSxcbiAgICAgICAgZXh0cmFjdFRleHRDb250ZW50czogKHN0YXRlLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNsdWRlSW52aXNpYmxlQ29udGVudCA9IG9wdGlvbnM/LmluY2x1ZGVJbnZpc2libGVDb250ZW50ID8/IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGNvbnRlbnQsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFjaGlsZC52aXNpYmxlICYmICFpbmNsdWRlSW52aXNpYmxlQ29udGVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLmNvbnRlbnQsIC4uLihibG9jay5leHRyYWN0VGV4dENvbnRlbnRzPy4oY2hpbGQucHJvcHMsIG9wdGlvbnMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gb3ZlcnJpZGUoQmxvY2tMaXN0QmxvY2spO1xuICAgIH1cbiAgICByZXR1cm4gQmxvY2tMaXN0QmxvY2s7XG59XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuY29uc3QgQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpYFxuICAgIHBhZGRpbmc6IDEycHggMDtcbmA7XG5cbmNvbnN0IFNlbGVjdEFsbEZyb21Db250cm9sTGFiZWwgPSBzdHlsZWQoRm9ybUNvbnRyb2xMYWJlbClgXG4gICAgcGFkZGluZzogMTVweCAxMHB4IDE1cHggN3B4O1xuYDtcblxuY29uc3QgTGFyZ2VBZGRCdXR0b25Db250ZW50ID0gc3R5bGVkKFwic3BhblwiKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA0cHggMDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uSWNvbiA9IHN0eWxlZChBZGQpYFxuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG5gO1xuIl19 */",
634
+ styles: "font-size:24px;margin-bottom:8px/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9ja3MvZmFjdG9yaWVzL2NyZWF0ZUxpc3RCbG9jay50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc2tCc0MiLCJmaWxlIjoiLi4vLi4vLi4vc3JjL2Jsb2Nrcy9mYWN0b3JpZXMvY3JlYXRlTGlzdEJsb2NrLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrUGFnZSwgU3RhY2tTd2l0Y2gsIFN0YWNrU3dpdGNoQXBpQ29udGV4dCwgVG9vbHRpcCB9IGZyb20gXCJAY29tZXQvYWRtaW5cIjtcbmltcG9ydCB7IEFkZCwgQ29weSwgRGVsZXRlLCBJbnZpc2libGUsIFBhc3RlLCBWaXNpYmxlIH0gZnJvbSBcIkBjb21ldC9hZG1pbi1pY29uc1wiO1xuaW1wb3J0IHsgQm94LCBDaGVja2JveCwgRm9ybUNvbnRyb2xMYWJlbCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB0eXBlIHsgRnVuY3Rpb25Db21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdHlwZSBNZXNzYWdlRGVzY3JpcHRvciB9IGZyb20gXCJyZWFjdC1pbnRsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcblxuaW1wb3J0IHsgQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXIgfSBmcm9tIFwiLi4vY29tbW9uL0FkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyXCI7XG5pbXBvcnQgeyBBZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlciB9IGZyb20gXCIuLi9jb21tb24vQWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXJcIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b24gfSBmcm9tIFwiLi4vY29tbW9uL0Jsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cIjtcbmltcG9ydCB7IEJsb2NrQWRtaW5Db21wb25lbnRQYXBlciB9IGZyb20gXCIuLi9jb21tb24vQmxvY2tBZG1pbkNvbXBvbmVudFBhcGVyXCI7XG5pbXBvcnQgeyBCbG9ja1ByZXZpZXdDb250ZW50IH0gZnJvbSBcIi4uL2NvbW1vbi9ibG9ja1Jvdy9CbG9ja1ByZXZpZXdDb250ZW50XCI7XG5pbXBvcnQgeyBCbG9ja1JvdyB9IGZyb20gXCIuLi9jb21tb24vYmxvY2tSb3cvQmxvY2tSb3dcIjtcbmltcG9ydCB7IGNyZWF0ZUJsb2NrU2tlbGV0b24gfSBmcm9tIFwiLi4vaGVscGVycy9jcmVhdGVCbG9ja1NrZWxldG9uXCI7XG5pbXBvcnQgeyBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4uL2hlbHBlcnMvZGVkdXBsaWNhdGVCbG9ja0RlcGVuZGVuY2llc1wiO1xuaW1wb3J0IHsgSG92ZXJQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSBcIi4uL2lmcmFtZWJyaWRnZS9Ib3ZlclByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB7IFNlbGVjdFByZXZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi4vaWZyYW1lYnJpZGdlL1NlbGVjdFByZXZpZXdDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgQmxvY2tEZXBlbmRlbmN5LCBCbG9ja0ludGVyZmFjZSwgQmxvY2tTdGF0ZSwgUHJldmlld0NvbnRlbnQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IHBhcmFsbGVsQXN5bmNFdmVyeSB9IGZyb20gXCIuLi91dGlscy9wYXJhbGxlbEFzeW5jRXZlcnlcIjtcbmltcG9ydCB7IGNyZWF0ZVVzZUFkbWluQ29tcG9uZW50IH0gZnJvbSBcIi4vbGlzdEJsb2NrL2NyZWF0ZVVzZUFkbWluQ29tcG9uZW50XCI7XG5cbi8vIFVzaW5nIHt9IGluc3RlYWQgb2YgUmVjb3JkPHN0cmluZywgbmV2ZXI+IGJlY2F1c2UgbmV2ZXIgYW5kIHVua25vd24gYXJlIGluY29tcGF0aWJsZS5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbnR5cGUgRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzID0ge307XG5cbmV4cG9ydCB0eXBlIExpc3RCbG9ja0l0ZW08VCBleHRlbmRzIEJsb2NrSW50ZXJmYWNlLCBBZGRpdGlvbmFsSXRlbUZpZWxkcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gRGVmYXVsdEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgcHJvcHM6IEJsb2NrU3RhdGU8VD47XG4gICAgc2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgc2xpZGVJbjogYm9vbGVhbjtcbn0gJiBBZGRpdGlvbmFsSXRlbUZpZWxkcztcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tTdGF0ZTxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+IHtcbiAgICBibG9ja3M6IExpc3RCbG9ja0l0ZW08VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEJsb2NrRnJhZ21lbnQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IERlZmF1bHRBZGRpdGlvbmFsSXRlbUZpZWxkcz4ge1xuICAgIGJsb2NrczogQXJyYXk8XG4gICAgICAgIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICAgICAgICBrZXk6IHN0cmluZztcbiAgICAgICAgICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICAgcHJvcHM6IGFueTtcbiAgICAgICAgfSAmIEFkZGl0aW9uYWxJdGVtRmllbGRzXG4gICAgPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMaXN0QmxvY2tBZGRpdGlvbmFsSXRlbUZpZWxkPFZhbHVlID0gdW5rbm93bj4ge1xuICAgIGRlZmF1bHRWYWx1ZTogVmFsdWU7XG59XG5cbmludGVyZmFjZSBDcmVhdGVMaXN0QmxvY2tPcHRpb25zPFQgZXh0ZW5kcyBCbG9ja0ludGVyZmFjZSwgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtTmFtZT86IFJlYWN0Tm9kZTtcbiAgICBpdGVtc05hbWU/OiBSZWFjdE5vZGU7XG4gICAgYmxvY2s6IFQ7XG4gICAgbWluVmlzaWJsZUJsb2Nrcz86IG51bWJlcjtcbiAgICBtYXhWaXNpYmxlQmxvY2tzPzogbnVtYmVyO1xuICAgIGNyZWF0ZURlZmF1bHRMaXN0RW50cnk/OiBib29sZWFuO1xuICAgIGFkZGl0aW9uYWxJdGVtRmllbGRzPzoge1xuICAgICAgICBbS2V5IGluIGtleW9mIEFkZGl0aW9uYWxJdGVtRmllbGRzXTogTGlzdEJsb2NrQWRkaXRpb25hbEl0ZW1GaWVsZDxBZGRpdGlvbmFsSXRlbUZpZWxkc1tLZXldPjtcbiAgICB9O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtcz86IEZ1bmN0aW9uQ29tcG9uZW50PHtcbiAgICAgICAgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz47XG4gICAgICAgIG9uQ2hhbmdlOiAoaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4pID0+IHZvaWQ7XG4gICAgICAgIG9uTWVudUNsb3NlOiAoKSA9PiB2b2lkO1xuICAgIH0+O1xuICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudD86IEZ1bmN0aW9uQ29tcG9uZW50PHsgaXRlbTogTGlzdEJsb2NrSXRlbTxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4gfT47XG4gICAgdGFncz86IEFycmF5PE1lc3NhZ2VEZXNjcmlwdG9yIHwgc3RyaW5nPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RCbG9jazxUIGV4dGVuZHMgQmxvY2tJbnRlcmZhY2UsIEFkZGl0aW9uYWxJdGVtRmllbGRzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBEZWZhdWx0QWRkaXRpb25hbEl0ZW1GaWVsZHM+KFxuICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgIGRpc3BsYXlOYW1lID0gPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdEJsb2NrLm5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cIkxpc3RcIiAvPixcbiAgICAgICAgaXRlbU5hbWUgPSA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0QmxvY2suaXRlbU5hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2NrXCIgLz4sXG4gICAgICAgIGl0ZW1zTmFtZSA9IDxGb3JtYXR0ZWRNZXNzYWdlIGlkPVwiY29tZXQuYmxvY2tzLmxpc3RCbG9jay5pdGVtc05hbWVcIiBkZWZhdWx0TWVzc2FnZT1cImJsb2Nrc1wiIC8+LFxuICAgICAgICBtaW5WaXNpYmxlQmxvY2tzLFxuICAgICAgICBtYXhWaXNpYmxlQmxvY2tzLFxuICAgICAgICBjcmVhdGVEZWZhdWx0TGlzdEVudHJ5LFxuICAgICAgICBhZGRpdGlvbmFsSXRlbUZpZWxkcyxcbiAgICAgICAgQWRkaXRpb25hbEl0ZW1Db250ZXh0TWVudUl0ZW1zLFxuICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRlbnQsXG4gICAgICAgIHRhZ3MsXG4gICAgfTogQ3JlYXRlTGlzdEJsb2NrT3B0aW9uczxULCBBZGRpdGlvbmFsSXRlbUZpZWxkcz4sXG4gICAgb3ZlcnJpZGU/OiAoXG4gICAgICAgIGJsb2NrOiBCbG9ja0ludGVyZmFjZTxcbiAgICAgICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgICAgIExpc3RCbG9ja091dHB1dDxBZGRpdGlvbmFsSXRlbUZpZWxkcz5cbiAgICAgICAgPixcbiAgICApID0+IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+Pixcbik6IEJsb2NrSW50ZXJmYWNlPExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPiwgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LCBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+PiB7XG4gICAgY29uc3QgdXNlQWRtaW5Db21wb25lbnQgPSBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudCh7IGJsb2NrLCBtYXhWaXNpYmxlQmxvY2tzLCBhZGRpdGlvbmFsSXRlbUZpZWxkcyB9KTtcbiAgICBpZiAobWluVmlzaWJsZUJsb2NrcyAmJiBtYXhWaXNpYmxlQmxvY2tzICYmIG1pblZpc2libGVCbG9ja3MgPiBtYXhWaXNpYmxlQmxvY2tzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAke25hbWV9OiBUaGUgcHJvcGVydHkgJ21pblZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttaW5WaXNpYmxlQmxvY2tzfSkgbXVzdCBiZSBlcXVhbCB0byBvciBzbWFsbGVyIHRoYW4gJ21heFZpc2libGVCbG9ja3MnICh2YWx1ZTogJHttYXhWaXNpYmxlQmxvY2tzfSlgLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGdldERlZmF1bHRMaXN0RW50cnkgPSAoKSA9PiAoe1xuICAgICAgICBrZXk6IHV1aWQoKSxcbiAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgcHJvcHM6IGJsb2NrLmRlZmF1bHRWYWx1ZXMoKSxcbiAgICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgLy8gVHlwZSBjYXN0IHRvIHN1cHByZXNzIFwiJ0FkZGl0aW9uYWxJdGVtRmllbGRzJyBjb3VsZCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBhIGRpZmZlcmVudCBzdWJ0eXBlIG9mIGNvbnN0cmFpbnQgJ1JlY29yZDxzdHJpbmcsIHVua25vd24+J1wiIGVycm9yXG4gICAgICAgIC4uLihPYmplY3QuZW50cmllcyhhZGRpdGlvbmFsSXRlbUZpZWxkcyA/PyB7fSkucmVkdWNlKFxuICAgICAgICAgICAgKGZpZWxkcywgW2ZpZWxkLCB7IGRlZmF1bHRWYWx1ZSB9XSkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBkZWZhdWx0VmFsdWUgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgfSk7XG5cbiAgICBjb25zdCBCbG9ja0xpc3RCbG9jazogQmxvY2tJbnRlcmZhY2U8XG4gICAgICAgIExpc3RCbG9ja0ZyYWdtZW50PEFkZGl0aW9uYWxJdGVtRmllbGRzPixcbiAgICAgICAgTGlzdEJsb2NrU3RhdGU8VCwgQWRkaXRpb25hbEl0ZW1GaWVsZHM+LFxuICAgICAgICBMaXN0QmxvY2tPdXRwdXQ8QWRkaXRpb25hbEl0ZW1GaWVsZHM+XG4gICAgPiA9IHtcbiAgICAgICAgLi4uY3JlYXRlQmxvY2tTa2VsZXRvbigpLFxuXG4gICAgICAgIG5hbWUsXG5cbiAgICAgICAgZGlzcGxheU5hbWUsXG5cbiAgICAgICAgdGFnczogdGFncyA/IHRhZ3MgOiBibG9jay50YWdzLFxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZXM6ICgpID0+ICh7XG4gICAgICAgICAgICBibG9ja3M6XG4gICAgICAgICAgICAgICAgbWluVmlzaWJsZUJsb2NrcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgID8gQXJyYXkuZnJvbSh7IGxlbmd0aDogbWluVmlzaWJsZUJsb2NrcyB9LCBnZXREZWZhdWx0TGlzdEVudHJ5KVxuICAgICAgICAgICAgICAgICAgICA6IGNyZWF0ZURlZmF1bHRMaXN0RW50cnlcbiAgICAgICAgICAgICAgICAgICAgICA/IFtnZXREZWZhdWx0TGlzdEVudHJ5KCldXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgfSksXG5cbiAgICAgICAgY2F0ZWdvcnk6IGJsb2NrLmNhdGVnb3J5LFxuXG4gICAgICAgIGlucHV0MlN0YXRlOiAoaW5wdXQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaW5wdXQsXG4gICAgICAgICAgICAgICAgYmxvY2tzOiBpbnB1dC5ibG9ja3MubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suaW5wdXQyU3RhdGUoY2hpbGQucHJvcHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZSgoZmllbGRzLCBmaWVsZCkgPT4gKHsgLi4uZmllbGRzLCBbZmllbGRdOiBjaGlsZFtmaWVsZF0gfSksIHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlSW46IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBzdGF0ZTJPdXRwdXQ6IChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrcy5tYXAoKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2suc3RhdGUyT3V0cHV0KGNoaWxkLnByb3BzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFR5cGUgY2FzdCB0byBzdXBwcmVzcyBcIidBZGRpdGlvbmFsSXRlbUZpZWxkcycgY291bGQgYmUgaW5zdGFudGlhdGVkIHdpdGggYSBkaWZmZXJlbnQgc3VidHlwZSBvZiBjb25zdHJhaW50ICdSZWNvcmQ8c3RyaW5nLCB1bmtub3duPidcIiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGFkZGl0aW9uYWxJdGVtRmllbGRzID8/IHt9KS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBBZGRpdGlvbmFsSXRlbUZpZWxkcyksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuXG4gICAgICAgIG91dHB1dDJTdGF0ZTogYXN5bmMgKG91dHB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhdGU6IExpc3RCbG9ja1N0YXRlPFQsIEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHtcbiAgICAgICAgICAgICAgICBibG9ja3M6IFtdLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBvdXRwdXQuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYmxvY2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzbGlkZUluOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiBhd2FpdCBibG9jay5vdXRwdXQyU3RhdGUoY2hpbGQucHJvcHMsIGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfSxcblxuICAgICAgICBjcmVhdGVQcmV2aWV3U3RhdGU6IChzdGF0ZSwgcHJldmlld0N0eCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBwcmV2aWV3Q3R4LnBhcmVudFVybCxcbiAgICAgICAgICAgICAgICBibG9ja3M6IHN0YXRlLmJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gKHByZXZpZXdDdHguc2hvd1Zpc2libGVPbmx5ID8gY2hpbGQudmlzaWJsZSA6IHRydWUpKSAvLyBkZXBlbmRpbmcgb24gY29udGV4dCBzaG93IGFsbCBibG9ja3Mgb3Igb25seSB2aXNpYmxlIGJsb2Nrc1xuICAgICAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tBZG1pblJvdXRlID0gYCR7cHJldmlld0N0eC5wYXJlbnRVcmxTdWJSb3V0ZSA/PyBwcmV2aWV3Q3R4LnBhcmVudFVybH0vJHtjaGlsZC5rZXl9L2VkaXRgO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY2hpbGQua2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU6IGNoaWxkLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IGJsb2NrLmNyZWF0ZVByZXZpZXdTdGF0ZShjaGlsZC5wcm9wcywge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wcmV2aWV3Q3R4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmxTdWJSb3V0ZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRVcmw6IGJsb2NrQWRtaW5Sb3V0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUeXBlIGNhc3QgdG8gc3VwcHJlc3MgXCInQWRkaXRpb25hbEl0ZW1GaWVsZHMnIGNvdWxkIGJlIGluc3RhbnRpYXRlZCB3aXRoIGEgZGlmZmVyZW50IHN1YnR5cGUgb2YgY29uc3RyYWludCAnUmVjb3JkPHN0cmluZywgdW5rbm93bj4nXCIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpZWxkcywgZmllbGQpID0+ICh7IC4uLmZpZWxkcywgW2ZpZWxkXTogY2hpbGRbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIGFzIEFkZGl0aW9uYWxJdGVtRmllbGRzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZG1pblJvdXRlOiBibG9ja0FkbWluUm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRtaW5NZXRhOiB7IHJvdXRlOiBibG9ja0FkbWluUm91dGUgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGFkbWluTWV0YTogeyByb3V0ZTogcHJldmlld0N0eC5wYXJlbnRVcmwgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGlzVmFsaWQ6IGFzeW5jIChzdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2tWYWxpZGl0eVJlc3VsdCA9IGF3YWl0IHBhcmFsbGVsQXN5bmNFdmVyeShzdGF0ZS5ibG9ja3MsIGFzeW5jIChjKSA9PiBibG9jay5pc1ZhbGlkKGMucHJvcHMpKTtcbiAgICAgICAgICAgIHJldHVybiBibG9ja1ZhbGlkaXR5UmVzdWx0ICYmIChtaW5WaXNpYmxlQmxvY2tzID8gbWluVmlzaWJsZUJsb2NrcyA8PSBzdGF0ZS5ibG9ja3MuZmlsdGVyKChibG9jaykgPT4gYmxvY2sudmlzaWJsZSkubGVuZ3RoIDogdHJ1ZSk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgY2hpbGRCbG9ja0NvdW50OiAoc3RhdGUpID0+IHN0YXRlLmJsb2Nrcy5sZW5ndGgsXG5cbiAgICAgICAgYW5jaG9yczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc3RhdGUuYmxvY2tzLnJlZHVjZTxzdHJpbmdbXT4oKGFuY2hvcnMsIGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5hbmNob3JzLCAuLi4oYmxvY2suYW5jaG9ycz8uKGNoaWxkLnByb3BzKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlcGVuZGVuY2llczogKHN0YXRlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBzdGF0ZS5ibG9ja3MucmVkdWNlPEJsb2NrRGVwZW5kZW5jeVtdPigoZGVwZW5kZW5jaWVzLCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbLi4uZGVwZW5kZW5jaWVzLCAuLi4oYmxvY2suZGVwZW5kZW5jaWVzPy4oY2hpbGQucHJvcHMpID8/IFtdKV07XG4gICAgICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgICAgIHJldHVybiBkZWR1cGxpY2F0ZUJsb2NrRGVwZW5kZW5jaWVzKG1lcmdlZERlcGVuZGVuY2llcyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgcmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0OiAob3V0cHV0LCByZXBsYWNlbWVudHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld091dHB1dDogTGlzdEJsb2NrT3V0cHV0PEFkZGl0aW9uYWxJdGVtRmllbGRzPiA9IHsgLi4ub3V0cHV0LCBibG9ja3M6IFtdIH07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygb3V0cHV0LmJsb2Nrcykge1xuICAgICAgICAgICAgICAgIG5ld091dHB1dC5ibG9ja3MucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczogYmxvY2sucmVwbGFjZURlcGVuZGVuY2llc0luT3V0cHV0KGNoaWxkLnByb3BzLCByZXBsYWNlbWVudHMpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gbmV3T3V0cHV0O1xuICAgICAgICB9LFxuXG4gICAgICAgIGRlZmluZXNPd25QYWRkaW5nOiB0cnVlLFxuXG4gICAgICAgIEFkbWluQ29tcG9uZW50OiAoeyBzdGF0ZSwgdXBkYXRlU3RhdGUgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGNhbm5vdFBhc3RlQmxvY2tFcnJvckRpYWxvZyxcbiAgICAgICAgICAgICAgICBjcmVhdGVVcGRhdGVTdWJCbG9ja3NGbixcbiAgICAgICAgICAgICAgICB0b3RhbFZpc2libGVCbG9ja3MsXG4gICAgICAgICAgICAgICAgdXBkYXRlQ2xpcGJvYXJkQ29udGVudCxcbiAgICAgICAgICAgICAgICBhZGROZXdCbG9jayxcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3MsXG4gICAgICAgICAgICAgICAgc2VsZWN0QmxvY2ssXG4gICAgICAgICAgICAgICAgaGFuZGxlVG9nZ2xlU2VsZWN0QWxsLFxuICAgICAgICAgICAgICAgIHBhc3RlQmxvY2ssXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRDb3VudCxcbiAgICAgICAgICAgICAgICB0b2dnbGVWaXNpYmxlLFxuICAgICAgICAgICAgICAgIGRlbGV0ZUJsb2NrcyxcbiAgICAgICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIG1pc3NpbmcgQWRkaXRpb25hbEl0ZW1GaWVsZHMgZ2VuZXJpYyBpbiBjcmVhdGVVc2VBZG1pbkNvbXBvbmVudFxuICAgICAgICAgICAgfSA9IHVzZUFkbWluQ29tcG9uZW50KHsgc3RhdGUsIHVwZGF0ZVN0YXRlIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxTZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2ggZGlzYWJsZUZvcmNlUHJvbXB0Um91dGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxTdGFja1N3aXRjaEFwaUNvbnRleHQuQ29uc3VtZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsoc3RhY2tBcGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFNlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja0FkbWluQ29tcG9uZW50UGFwZXIgZGlzYWJsZVBhZGRpbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QWRtaW5Db21wb25lbnRTdGlja3lIZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U2VsZWN0QWxsRnJvbUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkQ291bnQgPT09IHN0YXRlLmJsb2Nrcy5sZW5ndGggJiYgc2VsZWN0ZWRDb3VudCA+IDB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRldGVybWluYXRlPXtzZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ICE9PSBzdGF0ZS5ibG9ja3MubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRvZ2dsZVNlbGVjdEFsbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZSBpZD1cImNvbWV0LmJsb2Nrcy5saXN0LnNlbGVjdEFsbFwiIGRlZmF1bHRNZXNzYWdlPVwiU2VsZWN0IGFsbFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RlZENvdW50ID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17ZGVsZXRlQWxsU2VsZWN0ZWRCbG9ja3N9IHNpemU9XCJsYXJnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPERlbGV0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uIG9uQ2xpY2s9e2NvcHlTZWxlY3RlZEJsb2Nrc30gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29weSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25CdXR0b24gb25DbGljaz17KCkgPT4gcGFzdGVCbG9jaygwKX0gc2l6ZT1cImxhcmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFBhc3RlIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyQWN0aW9uQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tMaXN0SGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BZG1pbkNvbXBvbmVudFN0aWNreUhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5tYXAoKGRhdGEsIGJsb2NrSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNNaW5WaXNpYmxlQmxvY2tzTWV0ID0gISFtaW5WaXNpYmxlQmxvY2tzICYmIHRvdGFsVmlzaWJsZUJsb2NrcyA+PSBtaW5WaXNpYmxlQmxvY2tzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc01heFZpc2libGVCbG9ja3NSZWFjaGVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhbWF4VmlzaWJsZUJsb2NrcyAmJiB0b3RhbFZpc2libGVCbG9ja3MgPj0gbWF4VmlzaWJsZUJsb2NrcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjYW5Ub2dnbGVWaXNpYmlsaXR5ID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCA/IGRhdGEudmlzaWJsZSA6IHRydWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvd01heEJsb2Nrc0FsbG93ZWRNZXNzYWdlID0gaXNNYXhWaXNpYmxlQmxvY2tzUmVhY2hlZCAmJiAhZGF0YS52aXNpYmxlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIW1pblZpc2libGVCbG9ja3MgJiYgIWlzTWluVmlzaWJsZUJsb2Nrc01ldCkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW5WaXNpYmxlQmxvY2tzID09PSB0b3RhbFZpc2libGVCbG9ja3MgJiYgZGF0YS52aXNpYmxlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEhvdmVyUHJldmlld0NvbXBvbmVudCBrZXk9e2RhdGEua2V5fSBjb21wb25lbnRTbHVnPXtgJHtkYXRhLmtleX0vZWRpdGB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCbG9ja1Jvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD17ZGF0YS5rZXl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclByZXZpZXdDb250ZW50PXsoKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tQcmV2aWV3Q29udGVudCBibG9jaz17YmxvY2t9IHN0YXRlPXtkYXRhLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17YmxvY2tJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db250ZW50Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwgZGF0YS5rZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRlbGV0ZUNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVCbG9ja3MoW2RhdGEua2V5XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVCbG9jaz17KGZyb20sIHRvKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldlN0YXRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2tzID0gWy4uLnByZXZTdGF0ZS5ibG9ja3NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrVG9Nb3ZlID0gYmxvY2tzLnNwbGljZShmcm9tLCAxKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3Muc3BsaWNlKHRvLCAwLCBibG9ja1RvTW92ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4ucHJldlN0YXRlLCBibG9ja3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5QnV0dG9uPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TWF4QmxvY2tzQWxsb3dlZE1lc3NhZ2UgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rm9ybWF0dGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QubWF4VmlzaWJsZUJsb2Nrc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJNYXguIHZpc2libGUgYmxvY2tzIGFsbG93ZWQ6IHttYXhWaXNpYmxlQmxvY2tzfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzPXt7IG1heFZpc2libGVCbG9ja3MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBzaG93TWluQmxvY2tzUmVxdWlyZWRNZXNzYWdlID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbWV0LmJsb2Nrcy5saXN0Lm1pblZpc2libGVCbG9ja3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiTWluLiB2aXNpYmxlIGJsb2NrcyByZXF1aXJlZDoge21pblZpc2libGVCbG9ja3N9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM9e3sgbWluVmlzaWJsZUJsb2NrcyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJveCBjb21wb25lbnQ9XCJzcGFuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjYW5Ub2dnbGVWaXNpYmlsaXR5ICYmIHRvZ2dsZVZpc2libGUoZGF0YS5rZXkpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshY2FuVG9nZ2xlVmlzaWJpbGl0eX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEudmlzaWJsZSA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VmlzaWJsZSBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SW52aXNpYmxlIGNvbG9yPVwiYWN0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkFkZE5ld0Jsb2NrPXsoYmVmb3JlSW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKGJlZm9yZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrQXBpLmFjdGl2YXRlUGFnZShcImVkaXRcIiwga2V5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Db3B5Q2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUNsaXBib2FyZENvbnRlbnQoW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYmxvY2submFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZGF0YS52aXNpYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogZGF0YS5wcm9wcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZpZWxkczogT2JqZWN0LmtleXMoYWRkaXRpb25hbEl0ZW1GaWVsZHMgPz8ge30pLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZHMsIGZpZWxkKSA9PiAoeyAuLi5maWVsZHMsIFtmaWVsZF06IGRhdGFbZmllbGRdIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblBhc3RlQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3RlQmxvY2soYmxvY2tJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZD17ZGF0YS5zZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TZWxlY3RlZENsaWNrPXsoc2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEJsb2NrKGRhdGEsIHNlbGVjdGVkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWYWxpZEZuPXsoKSA9PiBibG9jay5pc1ZhbGlkKGRhdGEucHJvcHMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGlkZUluPXtkYXRhLnNsaWRlSW59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVCb3R0b21JbnNlcnRCZXR3ZWVuQnV0dG9uPXtibG9ja0luZGV4ID49IHN0YXRlLmJsb2Nrcy5sZW5ndGggLSAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsTWVudUl0ZW1zPXsob25NZW51Q2xvc2UpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsSXRlbUNvbnRleHRNZW51SXRlbXMgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkZGl0aW9uYWxJdGVtQ29udGV4dE1lbnVJdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPXtkYXRhfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHVwZGF0ZWRJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTdGF0ZSgocHJldmlvdXNTdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3M6IHByZXZpb3VzU3RhdGUuYmxvY2tzLm1hcCgoYmxvY2spID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmtleSA9PT0gZGF0YS5rZXkgPyB1cGRhdGVkSXRlbSA6IGJsb2NrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxDb250ZW50PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZGl0aW9uYWxJdGVtQ29udGVudCA/IDxBZGRpdGlvbmFsSXRlbUNvbnRlbnQgaXRlbT17ZGF0YX0gLz4gOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0hvdmVyUHJldmlld0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0YXRlLmJsb2Nrcy5sZW5ndGggPT09IDAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJsb2NrQWRtaW5Db21wb25lbnRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBhZGROZXdCbG9jaygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExhcmdlQWRkQnV0dG9uQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMYXJnZUFkZEJ1dHRvbkljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29tZXQuYmxvY2tzLmxpc3QuYWRkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdE1lc3NhZ2U9XCJBZGQge2l0ZW1OYW1lfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGFyZ2VBZGRCdXR0b25Db250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFkbWluQ29tcG9uZW50U3RpY2t5Rm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QmxvY2tBZG1pbkNvbXBvbmVudEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IGFkZE5ld0Jsb2NrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwiZWRpdFwiLCBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydEljb249ezxBZGQgLz59XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5hZGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRNZXNzYWdlPVwiQWRkIHtpdGVtTmFtZX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcz17eyBpdGVtTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9CbG9ja0FkbWluQ29tcG9uZW50QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQWRtaW5Db21wb25lbnRTdGlja3lGb290ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Jsb2NrQWRtaW5Db21wb25lbnRQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdFByZXZpZXdDb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tQYWdlIG5hbWU9XCJlZGl0XCIgdGl0bGU9e2Jsb2NrLmRpc3BsYXlOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGl0ZW1JZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2tTd2l0Y2hBcGlDb250ZXh0LkNvbnN1bWVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyhzdGFja0FwaSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gc3RhdGUuYmxvY2tzLmZpbmQoKGMpID0+IGMua2V5ID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tBcGkuYWN0aXZhdGVQYWdlKFwibWFpblwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA8YmxvY2suQWRtaW5Db21wb25lbnQgc3RhdGU9e21hdGNoLnByb3BzfSB1cGRhdGVTdGF0ZT17Y3JlYXRlVXBkYXRlU3ViQmxvY2tzRm4oaXRlbUlkKX0gLz47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrU3dpdGNoQXBpQ29udGV4dC5Db25zdW1lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdGFja1BhZ2U+XG4gICAgICAgICAgICAgICAgICAgIDwvU3RhY2tTd2l0Y2g+XG4gICAgICAgICAgICAgICAgICAgIHtjYW5ub3RQYXN0ZUJsb2NrRXJyb3JEaWFsb2d9XG4gICAgICAgICAgICAgICAgPC9TZWxlY3RQcmV2aWV3Q29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlld0NvbnRlbnQ6IChzdGF0ZSwgY3R4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuYmxvY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogPEZvcm1hdHRlZE1lc3NhZ2UgaWQ9XCJjb21ldC5ibG9ja3MubGlzdC5ub0Jsb2Nrc1wiIGRlZmF1bHRNZXNzYWdlPVwiTm8ge2l0ZW1zTmFtZX1cIiB2YWx1ZXM9e3sgaXRlbXNOYW1lIH19IC8+LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBzdGF0ZS5ibG9ja3MucmVkdWNlPFByZXZpZXdDb250ZW50W10+KChwcmV2LCBuZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV4dFByZXZpZXdDb250ZW50ID0gYmxvY2sucHJldmlld0NvbnRlbnQobmV4dC5wcm9wcywgY3R4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLm5leHRQcmV2aWV3Q29udGVudF07XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlc29sdmVEZXBlbmRlbmN5UGF0aDogKHN0YXRlLCBqc29uUGF0aCkgPT4ge1xuICAgICAgICAgICAgaWYgKCEvXmJsb2Nrcy5cXGQrLnByb3BzLy50ZXN0KGpzb25QYXRoKSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkxpc3RCbG9jazogSW52YWxpZCBqc29uUGF0aFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcGF0aEFyciA9IGpzb25QYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcihwYXRoQXJyWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrSXRlbSA9IHN0YXRlLmJsb2Nrc1tudW1dO1xuXG4gICAgICAgICAgICBjb25zdCBjaGlsZFBhdGggPSBibG9jay5yZXNvbHZlRGVwZW5kZW5jeVBhdGgoYmxvY2tJdGVtLnByb3BzLCBwYXRoQXJyLnNsaWNlKDMpLmpvaW4oXCIuXCIpKTtcbiAgICAgICAgICAgIHJldHVybiBgJHtibG9ja0l0ZW0ua2V5fS9lZGl0LyR7Y2hpbGRQYXRofWA7XG4gICAgICAgIH0sXG4gICAgICAgIGV4dHJhY3RUZXh0Q29udGVudHM6IChzdGF0ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZUludmlzaWJsZUNvbnRlbnQgPSBvcHRpb25zPy5pbmNsdWRlSW52aXNpYmxlQ29udGVudCA/PyBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHN0YXRlLmJsb2Nrcy5yZWR1Y2U8c3RyaW5nW10+KChjb250ZW50LCBjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2hpbGQudmlzaWJsZSAmJiAhaW5jbHVkZUludmlzaWJsZUNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIFsuLi5jb250ZW50LCAuLi4oYmxvY2suZXh0cmFjdFRleHRDb250ZW50cz8uKGNoaWxkLnByb3BzLCBvcHRpb25zKSA/PyBbXSldO1xuICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAob3ZlcnJpZGUpIHtcbiAgICAgICAgcmV0dXJuIG92ZXJyaWRlKEJsb2NrTGlzdEJsb2NrKTtcbiAgICB9XG4gICAgcmV0dXJuIEJsb2NrTGlzdEJsb2NrO1xufVxuXG5jb25zdCBCbG9ja0xpc3RIZWFkZXIgPSBzdHlsZWQoXCJkaXZcIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmA7XG5cbmNvbnN0IEJsb2NrTGlzdEhlYWRlckFjdGlvbkNvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKWBcbiAgICBwYWRkaW5nOiAxMnB4IDA7XG5gO1xuXG5jb25zdCBTZWxlY3RBbGxGcm9tQ29udHJvbExhYmVsID0gc3R5bGVkKEZvcm1Db250cm9sTGFiZWwpYFxuICAgIHBhZGRpbmc6IDE1cHggMTBweCAxNXB4IDdweDtcbmA7XG5cbmNvbnN0IExhcmdlQWRkQnV0dG9uQ29udGVudCA9IHN0eWxlZChcInNwYW5cIilgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDA7XG5gO1xuXG5jb25zdCBMYXJnZUFkZEJ1dHRvbkljb24gPSBzdHlsZWQoQWRkKWBcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuYDtcbiJdfQ== */",
633
635
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
634
636
  });