@projectcor/maia-components 2.45.1-1 → 2.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +51 -5
  4. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +76 -18
  5. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +31 -3
  6. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -2
  7. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +255 -15
  8. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +34 -5
  9. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  10. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  11. package/lib/components/atoms/MAIAInput/MAIAInput.js +12 -8
  12. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +60 -8
  13. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +15 -3
  14. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  15. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  16. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +13 -27
  17. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +52 -79
  18. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  19. package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +1 -6
  20. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -36
  21. package/lib/components/index.js +1 -2
  22. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +29 -5
  23. package/lib/components/molecules/AbmSection/AbmGeneralSection.js +40 -6
  24. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +90 -18
  25. package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +15 -5
  26. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  27. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +73 -92
  28. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  29. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +57 -39
  30. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  31. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +4 -147
  32. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +108 -64
  33. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  34. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +2 -3
  35. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  36. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  37. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +86 -76
  38. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  39. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +44 -9
  40. package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
  41. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +171 -56
  42. package/lib/constants/maiaFeatureAccess.js +22 -0
  43. package/lib/constants/maiaHourAgentAccess.js +6 -4
  44. package/lib/constants/maiaTaskPanelAccess.js +3 -6
  45. package/lib/constants/permissions/clientRoleAccess.js +4 -3
  46. package/lib/constants/permissions/index.js +2 -2
  47. package/lib/constants/permissions/utils.js +1 -4
  48. package/lib/dev/DevReasoningTimeline.js +37 -68
  49. package/lib/dev/Providers.js +3 -5
  50. package/lib/hooks/useChatManager/useChatManager.js +351 -76
  51. package/lib/hooks/useChatMessages/useChatMessages.js +82 -12
  52. package/lib/hooks/useClientSearch.js +32 -4
  53. package/lib/hooks/useContextMentions.js +163 -2
  54. package/lib/hooks/useContextPinPopover.js +75 -16
  55. package/lib/hooks/useEntitySearch.js +391 -38
  56. package/lib/hooks/useFrequentlyUsedActions.js +22 -60
  57. package/lib/hooks/useMentionPopover.js +35 -9
  58. package/lib/hooks/useMinimizedPillBottomOffset.js +45 -15
  59. package/lib/hooks/useProjectSearch.js +58 -4
  60. package/lib/hooks/useProjectSummaryConfig.js +52 -14
  61. package/lib/hooks/useRecentClientsSearch.js +32 -4
  62. package/lib/index.js +2 -5
  63. package/lib/lang/br/index.js +1 -26
  64. package/lib/lang/en/index.js +1 -26
  65. package/lib/lang/es/index.js +1 -26
  66. package/lib/lang/fr/index.js +1 -26
  67. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  68. package/lib/services/maia/Agents/getAgents.js +242 -78
  69. package/lib/services/maia/Orchestrator/orchestrator.js +121 -38
  70. package/lib/store/sessions/sessionNotifications.js +41 -35
  71. package/lib/store/sessions/sessionStreamManager.js +52 -40
  72. package/lib/styles/cascade.js +3 -29
  73. package/lib/styles/transitions.js +1 -3
  74. package/lib/types/agentModal.js +1 -1
  75. package/lib/types/global.d.js +1 -1
  76. package/lib/utils/hoursPlannerQuickActionType.js +1 -74
  77. package/lib/utils/imagePreprocessor.js +37 -12
  78. package/lib/utils/streamActivityMessages.js +19 -32
  79. package/package.json +1 -1
  80. package/lib/components/atoms/ActionableButton.spec.js +0 -111
  81. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
  82. package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
  83. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
  84. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  85. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +0 -65
  86. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -66
  87. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -211
  88. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  89. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +0 -55
  90. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -41
  91. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -253
  92. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  93. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +0 -31
  94. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -33
  95. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -25
  96. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +0 -4
  97. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  98. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  99. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  100. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  101. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  102. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  103. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  104. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  105. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -88
  106. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  107. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  108. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.js +0 -227
  109. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -77
  110. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  111. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +0 -31
  112. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -48
  113. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -231
  114. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  115. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  116. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  117. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  118. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  119. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  120. package/lib/components/atoms/Fade/Fade.spec.js +0 -31
  121. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  122. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  123. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  124. package/lib/components/atoms/HelpButton.spec.js +0 -87
  125. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  126. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  127. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  128. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  129. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  130. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  131. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  132. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  133. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +0 -12
  134. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -26
  135. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -444
  136. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +0 -50
  137. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -20
  138. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -53
  139. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -22
  140. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  141. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  142. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  143. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  144. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  145. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  146. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  147. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  148. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.js +0 -17
  149. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  150. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  151. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -86
  152. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  153. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  154. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  155. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  156. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  157. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  158. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  159. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  160. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  161. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.js +0 -10
  162. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  163. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  164. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  165. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  166. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  167. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  168. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  169. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  170. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
  171. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  172. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  173. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -68
  174. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  175. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  176. package/lib/components/atoms/WithAppCfg.spec.js +0 -60
  177. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +0 -37
  178. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  179. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -371
  180. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +0 -39
  181. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -57
  182. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -227
  183. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +0 -86
  184. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -108
  185. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -254
  186. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +0 -17
  187. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  188. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  189. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  190. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  191. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  192. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  193. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  194. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  195. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  196. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  197. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  198. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  199. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  200. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
  201. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  202. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  203. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +0 -54
  204. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -77
  205. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -445
  206. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  207. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -471
  208. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -659
  209. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +0 -5
  210. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  211. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  212. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  213. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +0 -30
  214. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -95
  215. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  216. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  217. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  218. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  219. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  220. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  221. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -172
  222. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
  223. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  224. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  225. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  226. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +0 -48
  227. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -82
  228. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  229. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  230. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  231. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  232. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  233. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  234. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  235. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -453
  236. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +0 -198
  237. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -385
  238. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1125
  239. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  240. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
  241. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  242. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -526
  243. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  244. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  245. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -275
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -275
  250. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -195
  251. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  252. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  253. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  254. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  255. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  256. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  257. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  258. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  259. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  260. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  261. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  262. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  263. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  264. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  265. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  266. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  267. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  268. package/lib/constants/permissions/utils.spec.js +0 -128
  269. package/lib/dev/DevMaiaPage.js +0 -30
  270. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  271. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  272. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  273. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  274. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -231
  275. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  276. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -313
  277. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  278. package/lib/hooks/useCaretPosition.spec.js +0 -58
  279. package/lib/hooks/useChatManager/useChatManager.helpers.js +0 -353
  280. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -506
  281. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -1261
  282. package/lib/hooks/useChatMessages/useChatMessages.helpers.js +0 -109
  283. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -176
  284. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -379
  285. package/lib/hooks/useChats/useChats.spec.js +0 -208
  286. package/lib/hooks/useClientSearch.helpers.js +0 -36
  287. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  288. package/lib/hooks/useClientSearch.spec.js +0 -86
  289. package/lib/hooks/useContextMentions.helpers.js +0 -152
  290. package/lib/hooks/useContextMentions.helpers.spec.js +0 -143
  291. package/lib/hooks/useContextMentions.spec.js +0 -239
  292. package/lib/hooks/useContextMentions.types.js +0 -2
  293. package/lib/hooks/useContextPinPopover.helpers.js +0 -95
  294. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -115
  295. package/lib/hooks/useContextPinPopover.spec.js +0 -159
  296. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  297. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  298. package/lib/hooks/useDebounce.spec.js +0 -42
  299. package/lib/hooks/useEntitySearch.helpers.js +0 -359
  300. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -321
  301. package/lib/hooks/useEntitySearch.spec.js +0 -443
  302. package/lib/hooks/useEvent.spec.js +0 -45
  303. package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
  304. package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -135
  305. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  306. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  307. package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
  308. package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
  309. package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
  310. package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
  311. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  312. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  313. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  314. package/lib/hooks/useMentionPopover.helpers.js +0 -41
  315. package/lib/hooks/useMentionPopover.helpers.spec.js +0 -71
  316. package/lib/hooks/useMentionPopover.spec.js +0 -215
  317. package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +0 -47
  318. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -132
  319. package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
  320. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  321. package/lib/hooks/useModal/useModal.spec.js +0 -73
  322. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -192
  323. package/lib/hooks/useProjectSearch.helpers.js +0 -61
  324. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -70
  325. package/lib/hooks/useProjectSearch.spec.js +0 -91
  326. package/lib/hooks/useProjectSummary.spec.js +0 -193
  327. package/lib/hooks/useProjectSummaryConfig.helpers.js +0 -62
  328. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -92
  329. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  330. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  331. package/lib/hooks/useRecentClientsSearch.helpers.js +0 -33
  332. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  333. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  334. package/lib/hooks/useRecentContexts.spec.js +0 -139
  335. package/lib/hooks/useResize.spec.js +0 -37
  336. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  337. package/lib/hooks/useSlashCommands.spec.js +0 -139
  338. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  339. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  340. package/lib/hooks/useStreamResponse.spec.js +0 -199
  341. package/lib/hooks/useT.spec.js +0 -20
  342. package/lib/hooks/useToggle.spec.js +0 -33
  343. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  344. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  345. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
  346. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  347. package/lib/services/maia/Agents/connectors.spec.js +0 -359
  348. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  349. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  350. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  351. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  352. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  353. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  354. package/lib/services/maia/Agents/getAgents.helpers.js +0 -181
  355. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -211
  356. package/lib/services/maia/Agents/getAgents.spec.js +0 -697
  357. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  358. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  359. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  360. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  361. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  362. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  363. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  364. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  365. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  366. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  367. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  368. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  369. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  370. package/lib/services/maia/Orchestrator/orchestrator.helpers.js +0 -130
  371. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -153
  372. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  373. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  374. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  375. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  376. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  377. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  378. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  379. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  380. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  381. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  382. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  383. package/lib/services/maia/client.spec.js +0 -56
  384. package/lib/services/utils/fetchCOR.spec.js +0 -211
  385. package/lib/services/utils/getCookie.spec.js +0 -20
  386. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  387. package/lib/store/chatsSidebarOptimistic.spec.js +0 -112
  388. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  389. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  390. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  391. package/lib/store/sessions/sessionNotifications.helpers.js +0 -45
  392. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  393. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  394. package/lib/store/sessions/sessionStreamManager.spec.js +0 -503
  395. package/lib/store/sessions/sessions.types.spec.js +0 -16
  396. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  397. package/lib/store/useChatsStore.spec.js +0 -619
  398. package/lib/store/useFaqsStore.spec.js +0 -57
  399. package/lib/test/mockSseStream.js +0 -121
  400. package/lib/test/streamdownCodeMock.js +0 -6
  401. package/lib/test/streamdownMock.js +0 -12
  402. package/lib/utils/actionCategoryMap.spec.js +0 -18
  403. package/lib/utils/agentDisplayName.spec.js +0 -44
  404. package/lib/utils/autoApproveStorage.spec.js +0 -25
  405. package/lib/utils/chatInputFiles.spec.js +0 -39
  406. package/lib/utils/contextMentionIcons.spec.js +0 -41
  407. package/lib/utils/contextMentionLabel.spec.js +0 -13
  408. package/lib/utils/contextMentionTriggers.spec.js +0 -38
  409. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  410. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  411. package/lib/utils/entityLinkRender.spec.js +0 -72
  412. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  413. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  414. package/lib/utils/formatUnreadCount.spec.js +0 -12
  415. package/lib/utils/getUnitFileSize.spec.js +0 -18
  416. package/lib/utils/hitlAnalytics.spec.js +0 -100
  417. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
  418. package/lib/utils/imagePreprocessor.helpers.js +0 -28
  419. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  420. package/lib/utils/imagePreprocessor.spec.js +0 -112
  421. package/lib/utils/maiaPageRoute.js +0 -24
  422. package/lib/utils/maiaPageRoute.spec.js +0 -23
  423. package/lib/utils/mapBackendLang.spec.js +0 -19
  424. package/lib/utils/navigateContextEntity.spec.js +0 -50
  425. package/lib/utils/normalizeAgentConnectors.spec.js +0 -107
  426. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  427. package/lib/utils/reasoningMappers.spec.js +0 -103
  428. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  429. package/lib/utils/renderContextMentions.spec.js +0 -158
  430. package/lib/utils/retryCompletion.spec.js +0 -99
  431. package/lib/utils/skillContentSize.spec.js +0 -13
  432. package/lib/utils/slashCommandMarker.spec.js +0 -43
  433. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  434. package/lib/utils/sseStreamContent.spec.js +0 -31
  435. package/lib/utils/streamActivityMessages.spec.js +0 -229
  436. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -12,7 +12,6 @@ import { getAvailableConnectors } from '../../../../services/maia/Agents/connect
12
12
  import { DEFAULT_COR_ACCESS } from '../../../../utils/normalizeAgentConnectors';
13
13
  import { hasMaiaExternalConnectorsAccess } from '../../../../constants/maiaExternalConnectorsAccess';
14
14
  import { SCAASWrapper, SCAASHeader, SCAASTitle, SCAASSubtitle, SCAASContent, SCAASSection, SCAASSectionHeader, SCAASSectionTitle, SCAASSectionSubtitle, SCAASOptionsContainer, SCAASDivider } from './AbmAccessibilitySection.styles';
15
- import { buildAccessibilitySelection, mapAccessibilityAnalyticsOption, shouldTrackAccessibilityClientSelection } from './AbmAccessibilitySection.helpers';
16
15
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
16
  // Orden = jerarquía de COR (cliente > proyecto > tarea), de más amplio a más específico.
18
17
  var COR_PERMISSION_ROWS = [{
@@ -51,13 +50,38 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
51
50
  setCatalogConnectors = _useState4[1];
52
51
  var externalConnectorsEnabled = hasMaiaExternalConnectorsAccess();
53
52
  var _handleSelectOption = function handleSelectOption(option, clients) {
53
+ var optionMapping = {
54
+ company: 'all_company',
55
+ clients: 'by_clientes',
56
+ only_me: 'just_me'
57
+ };
54
58
  eventAmplitude(EVENTS.accessibilityType, {
55
- option: mapAccessibilityAnalyticsOption(option)
59
+ option: optionMapping[option]
60
+ });
61
+ var valueToSend = {
62
+ accessType: option,
63
+ clients: null,
64
+ corAccess: formValues.corAccess,
65
+ selectedConnectors: formValues.selectedConnectors
66
+ };
67
+ if (option !== 'clients' || !clients) {
68
+ setFormValues(valueToSend);
69
+ return;
70
+ }
71
+ var clientFormData = clients.map(function (client) {
72
+ return {
73
+ id: client.id,
74
+ name: client.name,
75
+ is_active: client.is_active,
76
+ is_deleted: client.is_deleted
77
+ };
56
78
  });
57
- if (shouldTrackAccessibilityClientSelection(clients)) {
79
+ if (clients && clients.length > 0) {
58
80
  eventAmplitude(EVENTS.accessibilitySelectClient);
59
81
  }
60
- setFormValues(buildAccessibilitySelection(option, clients, formValues.corAccess, formValues.selectedConnectors));
82
+ setFormValues(_objectSpread(_objectSpread({}, valueToSend), {}, {
83
+ clients: clientFormData
84
+ }));
61
85
  };
62
86
  var handleCorAccessChange = function handleCorAccessChange(slug, checked) {
63
87
  eventAmplitude(EVENTS.connectorCor, {
@@ -230,4 +254,4 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
230
254
  })]
231
255
  });
232
256
  };
233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVRyYW5zbGF0aW9uIiwiT3B0aW9uQWNjZXNzaWJpbGl0eSIsIk9wdGlvbkNvclBlcm1pc3Npb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldEF2YWlsYWJsZUNvbm5lY3RvcnMiLCJERUZBVUxUX0NPUl9BQ0NFU1MiLCJoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzIiwiU0NBQVNXcmFwcGVyIiwiU0NBQVNIZWFkZXIiLCJTQ0FBU1RpdGxlIiwiU0NBQVNTdWJ0aXRsZSIsIlNDQUFTQ29udGVudCIsIlNDQUFTU2VjdGlvbiIsIlNDQUFTU2VjdGlvbkhlYWRlciIsIlNDQUFTU2VjdGlvblRpdGxlIiwiU0NBQVNTZWN0aW9uU3VidGl0bGUiLCJTQ0FBU09wdGlvbnNDb250YWluZXIiLCJTQ0FBU0RpdmlkZXIiLCJidWlsZEFjY2Vzc2liaWxpdHlTZWxlY3Rpb24iLCJtYXBBY2Nlc3NpYmlsaXR5QW5hbHl0aWNzT3B0aW9uIiwic2hvdWxkVHJhY2tBY2Nlc3NpYmlsaXR5Q2xpZW50U2VsZWN0aW9uIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQ09SX1BFUk1JU1NJT05fUk9XUyIsInNsdWciLCJ0aXRsZUtleSIsImRlc2NyaXB0aW9uS2V5IiwiQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MiIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTMiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk0IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NSIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTciLCJfZm9ybVZhbHVlcyRjbGllbnRzIiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU3RhdGUiLCJhY2Nlc3NUeXBlIiwiYWNjZXNzaWJpbGl0eSIsImNsaWVudHMiLCJjb3JBY2Nlc3MiLCJzZWxlY3RlZENvbm5lY3RvcnMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJmb3JtVmFsdWVzIiwic2V0Rm9ybVZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2F0YWxvZ0Nvbm5lY3RvcnMiLCJzZXRDYXRhbG9nQ29ubmVjdG9ycyIsImV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJvcHRpb24iLCJhY2Nlc3NpYmlsaXR5VHlwZSIsImFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQiLCJoYW5kbGVDb3JBY2Nlc3NDaGFuZ2UiLCJjaGVja2VkIiwiY29ubmVjdG9yQ29yIiwicHJldiIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UiLCJjb25uZWN0b3JNY3AiLCJuZXh0IiwiU2V0IiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NiIsIm5leHRDb25uZWN0b3JzIiwiY3VycmVudCIsIl90b0NvbnN1bWFibGVBcnJheSIsInNvcnQiLCJqb2luIiwiaW5jb21pbmciLCJrZXkiLCJ2YWx1ZSIsInVuZGVmaW5lZCIsImNhbmNlbGxlZCIsInRoZW4iLCJjb25uZWN0b3JzIiwiZmlsdGVyIiwiY29ubmVjdG9yIiwiaXNfYWN0aXZlIiwiZXJyb3IiLCJjb25zb2xlIiwiY2hpbGRyZW4iLCIkaW5kZXgiLCJtYXAiLCJfcmVmMiIsInRpdGxlIiwiY29uY2F0IiwiZGVzY3JpcHRpb24iLCJvbkNoYW5nZSIsIm5hbWUiLCJpbmNsdWRlcyIsIm9wdGlvblNlbGVjdGVkIiwiaXNDbGllbnQiLCJwcm9wcyIsInNlbGVjdGVkQ2xpZW50cyIsImNsaWVudCIsIl9jbGllbnQkbmFtZSIsImlkIiwiaXNfZGVsZXRlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBPcHRpb25BY2Nlc3NpYmlsaXR5IH0gZnJvbSAnLi4vLi4vLi4vYXRvbXMvT3B0aW9uQWNjZXNzaWJpbGl0eSdcbmltcG9ydCB7IE9wdGlvbkNvclBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9hdG9tcy9PcHRpb25Db3JQZXJtaXNzaW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0QXZhaWxhYmxlQ29ubmVjdG9ycywgdHlwZSBDYXRhbG9nQ29ubmVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvY29ubmVjdG9ycydcbmltcG9ydCB7IENvckFjY2VzcywgQ29yVG9vbEdyb3VwU2x1ZywgREVGQVVMVF9DT1JfQUNDRVNTIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuaW1wb3J0IHsgaGFzTWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzJ1xuaW1wb3J0IHtcbiAgU0NBQVNXcmFwcGVyLFxuICBTQ0FBU0hlYWRlcixcbiAgU0NBQVNUaXRsZSxcbiAgU0NBQVNTdWJ0aXRsZSxcbiAgU0NBQVNDb250ZW50LFxuICBTQ0FBU1NlY3Rpb24sXG4gIFNDQUFTU2VjdGlvbkhlYWRlcixcbiAgU0NBQVNTZWN0aW9uVGl0bGUsXG4gIFNDQUFTU2VjdGlvblN1YnRpdGxlLFxuICBTQ0FBU09wdGlvbnNDb250YWluZXIsXG4gIFNDQUFTRGl2aWRlcixcbn0gZnJvbSAnLi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi5zdHlsZXMnXG5pbXBvcnQgeyBDbGllbnRGb3JtRGF0YSB9IGZyb20gJy4vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24uaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgYnVpbGRBY2Nlc3NpYmlsaXR5U2VsZWN0aW9uLFxuICBtYXBBY2Nlc3NpYmlsaXR5QW5hbHl0aWNzT3B0aW9uLFxuICBzaG91bGRUcmFja0FjY2Vzc2liaWxpdHlDbGllbnRTZWxlY3Rpb24sXG59IGZyb20gJy4vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24uaGVscGVycydcblxuaW50ZXJmYWNlIEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uUHJvcHMge1xuICB2YWx1ZXM/OiB7XG4gICAgYWNjZXNzaWJpbGl0eT86IHtcbiAgICAgIGFjY2Vzc1R5cGU/OiBzdHJpbmdcbiAgICAgIGNsaWVudHM/OiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbFxuICAgICAgY29yQWNjZXNzPzogQ29yQWNjZXNzXG4gICAgICBzZWxlY3RlZENvbm5lY3RvcnM/OiBzdHJpbmdbXVxuICAgIH1cbiAgfVxuICBoYW5kbGVTZXRBZ2VudFZhbHVlcz86ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxufVxuXG4vLyBPcmRlbiA9IGplcmFycXXDrWEgZGUgQ09SIChjbGllbnRlID4gcHJveWVjdG8gPiB0YXJlYSksIGRlIG3DoXMgYW1wbGlvIGEgbcOhcyBlc3BlY8OtZmljby5cbmNvbnN0IENPUl9QRVJNSVNTSU9OX1JPV1M6IHsgc2x1ZzogQ29yVG9vbEdyb3VwU2x1ZzsgdGl0bGVLZXk6IHN0cmluZzsgZGVzY3JpcHRpb25LZXk6IHN0cmluZyB9W10gPSBbXG4gIHsgc2x1ZzogJ2NsaWVudGVzJywgdGl0bGVLZXk6ICdjbGllbnRBY2Nlc3NUaXRsZScsIGRlc2NyaXB0aW9uS2V5OiAnY2xpZW50QWNjZXNzRGVzY3JpcHRpb24nIH0sXG4gIHsgc2x1ZzogJ3Byb3llY3RvcycsIHRpdGxlS2V5OiAncHJvamVjdEFjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICdwcm9qZWN0QWNjZXNzRGVzY3JpcHRpb24nIH0sXG4gIHsgc2x1ZzogJ3RhcmVhcycsIHRpdGxlS2V5OiAndGFza0FjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICd0YXNrQWNjZXNzRGVzY3JpcHRpb24nIH0sXG5dXG5cbmV4cG9ydCBjb25zdCBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiA9ICh7IHZhbHVlcywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgfTogQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IFtmb3JtVmFsdWVzLCBzZXRGb3JtVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBhY2Nlc3NUeXBlOiBzdHJpbmdcbiAgICBjbGllbnRzOiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbFxuICAgIGNvckFjY2VzczogQ29yQWNjZXNzXG4gICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBzdHJpbmdbXVxuICB9Pih7XG4gICAgYWNjZXNzVHlwZTogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5hY2Nlc3NUeXBlIHx8ICdjb21wYW55JyxcbiAgICBjbGllbnRzOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMgfHwgbnVsbCxcbiAgICBjb3JBY2Nlc3M6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY29yQWNjZXNzID8/IERFRkFVTFRfQ09SX0FDQ0VTUyxcbiAgICBzZWxlY3RlZENvbm5lY3RvcnM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uc2VsZWN0ZWRDb25uZWN0b3JzIHx8IFtdLFxuICB9KVxuICAvLyBFbCBjYXTDoWxvZ28gbG8gZGVmaW5lIGVsIGJhY2sgKGBHRVQgL3YxL2Nvbm5lY3RvcnNgKTsgZWwgQUJNIHJlbmRlcml6YSB1bmEgZmlsYSBwb3IgY29uZWN0b3IgYWN0aXZvLlxuICBjb25zdCBbY2F0YWxvZ0Nvbm5lY3RvcnMsIHNldENhdGFsb2dDb25uZWN0b3JzXSA9IHVzZVN0YXRlPENhdGFsb2dDb25uZWN0b3JbXT4oW10pXG4gIGNvbnN0IGV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQgPSBoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzKClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcsIGNsaWVudHM/OiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5hY2Nlc3NpYmlsaXR5VHlwZSwgeyBvcHRpb246IG1hcEFjY2Vzc2liaWxpdHlBbmFseXRpY3NPcHRpb24ob3B0aW9uKSB9KVxuXG4gICAgaWYgKHNob3VsZFRyYWNrQWNjZXNzaWJpbGl0eUNsaWVudFNlbGVjdGlvbihjbGllbnRzKSkge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQpXG4gICAgfVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhidWlsZEFjY2Vzc2liaWxpdHlTZWxlY3Rpb24ob3B0aW9uLCBjbGllbnRzLCBmb3JtVmFsdWVzLmNvckFjY2VzcywgZm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMpKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29yQWNjZXNzQ2hhbmdlID0gKHNsdWc6IENvclRvb2xHcm91cFNsdWcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yQ29yLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgY29yQWNjZXNzOiB7IC4uLnByZXYuY29yQWNjZXNzLCBbc2x1Z106IGNoZWNrZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbm5lY3RvckFjY2Vzc0NoYW5nZSA9IChzbHVnOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yTWNwLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHByZXYuc2VsZWN0ZWRDb25uZWN0b3JzKVxuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgbmV4dC5hZGQoc2x1ZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQuZGVsZXRlKHNsdWcpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IEFycmF5LmZyb20obmV4dCksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV4dENvbm5lY3RvcnMgPSB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LnNlbGVjdGVkQ29ubmVjdG9yc1xuICAgIGlmICghbmV4dENvbm5lY3RvcnMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IFsuLi5wcmV2LnNlbGVjdGVkQ29ubmVjdG9yc10uc29ydCgpLmpvaW4oJ3wnKVxuICAgICAgY29uc3QgaW5jb21pbmcgPSBbLi4ubmV4dENvbm5lY3RvcnNdLnNvcnQoKS5qb2luKCd8JylcbiAgICAgIGlmIChjdXJyZW50ID09PSBpbmNvbWluZykge1xuICAgICAgICByZXR1cm4gcHJldlxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBuZXh0Q29ubmVjdG9ycyxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvcm1WYWx1ZXMpIHtcbiAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzPy4oe1xuICAgICAgICBrZXk6ICdhY2Nlc3NpYmlsaXR5JyxcbiAgICAgICAgdmFsdWU6IGZvcm1WYWx1ZXMsXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2Zvcm1WYWx1ZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2VcbiAgICBnZXRBdmFpbGFibGVDb25uZWN0b3JzKClcbiAgICAgIC50aGVuKGNvbm5lY3RvcnMgPT4ge1xuICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgIHNldENhdGFsb2dDb25uZWN0b3JzKGNvbm5lY3RvcnMuZmlsdGVyKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuaXNfYWN0aXZlKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbm5lY3RvcnMgY2F0YWxvZzonLCBlcnJvcilcbiAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXRDYXRhbG9nQ29ubmVjdG9ycyhbXSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsbGVkID0gdHJ1ZVxuICAgIH1cbiAgfSwgW2V4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWRdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDQUFTV3JhcHBlcj5cbiAgICAgIDxTQ0FBU0hlYWRlciAkaW5kZXg9ezB9PlxuICAgICAgICA8U0NBQVNUaXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVTZWN0aW9uJyl9PC9TQ0FBU1RpdGxlPlxuICAgICAgICA8U0NBQVNTdWJ0aXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uc3VidGl0bGVTZWN0aW9uJyl9PC9TQ0FBU1N1YnRpdGxlPlxuICAgICAgPC9TQ0FBU0hlYWRlcj5cbiAgICAgIDxTQ0FBU0NvbnRlbnQgJGluZGV4PXsxfT5cbiAgICAgICAgPFNDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb3JQZXJtaXNzaW9uc1RpdGxlJyl9PC9TQ0FBU1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25TdWJ0aXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29yUGVybWlzc2lvbnNTdWJ0aXRsZScpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAge0NPUl9QRVJNSVNTSU9OX1JPV1MubWFwKCh7IHNsdWcsIHRpdGxlS2V5LCBkZXNjcmlwdGlvbktleSB9KSA9PiAoXG4gICAgICAgICAgICA8T3B0aW9uQ29yUGVybWlzc2lvblxuICAgICAgICAgICAgICBrZXk9e3NsdWd9XG4gICAgICAgICAgICAgIHRpdGxlPXt0KGBhY2Nlc3NpYmlsaXR5U2VjdGlvbi4ke3RpdGxlS2V5fWApfVxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17dChgYWNjZXNzaWJpbGl0eVNlY3Rpb24uJHtkZXNjcmlwdGlvbktleX1gKX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17Zm9ybVZhbHVlcy5jb3JBY2Nlc3Nbc2x1Z119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtjaGVja2VkID0+IGhhbmRsZUNvckFjY2Vzc0NoYW5nZShzbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuXG4gICAgICAgIHtleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQUFTRGl2aWRlciAvPlxuXG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25UaXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ubWNwUGVybWlzc2lvbnNUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5tY3BQZXJtaXNzaW9uc1N1YnRpdGxlJyl9PC9TQ0FBU1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICAgIHtjYXRhbG9nQ29ubmVjdG9ycy5tYXAoY29ubmVjdG9yID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uQ29yUGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAga2V5PXtjb25uZWN0b3Iuc2x1Z31cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtjb25uZWN0b3IubmFtZX1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLmRlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgIHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckFjY2Vzc0Rlc2NyaXB0aW9uJywgeyBuYW1lOiBjb25uZWN0b3IubmFtZSB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Zm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMuaW5jbHVkZXMoY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlKGNvbm5lY3Rvci5zbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FBU0RpdmlkZXIgLz5cblxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnZpc2liaWxpdHlUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLndob0NhbkFjY2VzcycpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgPFNDQUFTT3B0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxPcHRpb25BY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5hbGxDb21wYW55VGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmFsbENvbXBhbnlEZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbignY29tcGFueScpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY29tcGFueVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE9wdGlvbkFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgICAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNsaWVudFRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnREZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBpc0NsaWVudD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlID09PSAnY2xpZW50cyd9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KHByb3BzPzogQ2xpZW50Rm9ybURhdGFbXSkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdjbGllbnRzJywgcHJvcHMpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50c1wiXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ2xpZW50cz17Zm9ybVZhbHVlcy5jbGllbnRzPy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNsaWVudC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUsXG4gICAgICAgICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQsXG4gICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8T3B0aW9uQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ub3duVGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm93bkRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KCkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdvbmx5X21lJyl9XG4gICAgICAgICAgICAgIG9wdGlvblNlbGVjdGVkPXtmb3JtVmFsdWVzLmFjY2Vzc1R5cGV9XG4gICAgICAgICAgICAgIG5hbWU9XCJvbmx5X21lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FBU09wdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgPC9TQ0FBU0NvbnRlbnQ+XG4gICAgPC9TQ0FBU1dyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQzNDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFDeEUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsNEJBQTRCO0FBQzdELFNBQVNDLHNCQUFzQixRQUErQiw2Q0FBNkM7QUFDM0csU0FBc0NDLGtCQUFrQixRQUFRLDRDQUE0QztBQUM1RyxTQUFTQywrQkFBK0IsUUFBUSxvREFBb0Q7QUFDcEcsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLFlBQVksRUFDWkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLG9CQUFvQixFQUNwQkMscUJBQXFCLEVBQ3JCQyxZQUFZLFFBQ1Asa0NBQWtDO0FBRXpDLFNBQ0VDLDJCQUEyQixFQUMzQkMsK0JBQStCLEVBQy9CQyx1Q0FBdUMsUUFDbEMsbUNBQW1DO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFjMUM7QUFDQSxJQUFNQyxtQkFBMkYsR0FB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
257
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVRyYW5zbGF0aW9uIiwiT3B0aW9uQWNjZXNzaWJpbGl0eSIsIk9wdGlvbkNvclBlcm1pc3Npb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldEF2YWlsYWJsZUNvbm5lY3RvcnMiLCJERUZBVUxUX0NPUl9BQ0NFU1MiLCJoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzIiwiU0NBQVNXcmFwcGVyIiwiU0NBQVNIZWFkZXIiLCJTQ0FBU1RpdGxlIiwiU0NBQVNTdWJ0aXRsZSIsIlNDQUFTQ29udGVudCIsIlNDQUFTU2VjdGlvbiIsIlNDQUFTU2VjdGlvbkhlYWRlciIsIlNDQUFTU2VjdGlvblRpdGxlIiwiU0NBQVNTZWN0aW9uU3VidGl0bGUiLCJTQ0FBU09wdGlvbnNDb250YWluZXIiLCJTQ0FBU0RpdmlkZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDT1JfUEVSTUlTU0lPTl9ST1dTIiwic2x1ZyIsInRpdGxlS2V5IiwiZGVzY3JpcHRpb25LZXkiLCJBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiIsIl9yZWYiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkyIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MyIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTQiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk1IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NyIsIl9mb3JtVmFsdWVzJGNsaWVudHMiLCJ2YWx1ZXMiLCJoYW5kbGVTZXRBZ2VudFZhbHVlcyIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJldmVudEFtcGxpdHVkZSIsIl91c2VTdGF0ZSIsImFjY2Vzc1R5cGUiLCJhY2Nlc3NpYmlsaXR5IiwiY2xpZW50cyIsImNvckFjY2VzcyIsInNlbGVjdGVkQ29ubmVjdG9ycyIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJjYXRhbG9nQ29ubmVjdG9ycyIsInNldENhdGFsb2dDb25uZWN0b3JzIiwiZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZCIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIm9wdGlvbiIsIm9wdGlvbk1hcHBpbmciLCJjb21wYW55Iiwib25seV9tZSIsImFjY2Vzc2liaWxpdHlUeXBlIiwidmFsdWVUb1NlbmQiLCJjbGllbnRGb3JtRGF0YSIsIm1hcCIsImNsaWVudCIsImlkIiwibmFtZSIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJsZW5ndGgiLCJhY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50IiwiX29iamVjdFNwcmVhZCIsImhhbmRsZUNvckFjY2Vzc0NoYW5nZSIsImNoZWNrZWQiLCJjb25uZWN0b3JDb3IiLCJwcmV2IiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlIiwiY29ubmVjdG9yTWNwIiwibmV4dCIsIlNldCIsImFkZCIsIkFycmF5IiwiZnJvbSIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTYiLCJuZXh0Q29ubmVjdG9ycyIsImN1cnJlbnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0Iiwiam9pbiIsImluY29taW5nIiwia2V5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJjYW5jZWxsZWQiLCJ0aGVuIiwiY29ubmVjdG9ycyIsImZpbHRlciIsImNvbm5lY3RvciIsImVycm9yIiwiY29uc29sZSIsImNoaWxkcmVuIiwiJGluZGV4IiwiX3JlZjIiLCJ0aXRsZSIsImNvbmNhdCIsImRlc2NyaXB0aW9uIiwib25DaGFuZ2UiLCJpbmNsdWRlcyIsIm9wdGlvblNlbGVjdGVkIiwiaXNDbGllbnQiLCJwcm9wcyIsInNlbGVjdGVkQ2xpZW50cyIsIl9jbGllbnQkbmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBPcHRpb25BY2Nlc3NpYmlsaXR5IH0gZnJvbSAnLi4vLi4vLi4vYXRvbXMvT3B0aW9uQWNjZXNzaWJpbGl0eSdcbmltcG9ydCB7IE9wdGlvbkNvclBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9hdG9tcy9PcHRpb25Db3JQZXJtaXNzaW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0QXZhaWxhYmxlQ29ubmVjdG9ycywgdHlwZSBDYXRhbG9nQ29ubmVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvY29ubmVjdG9ycydcbmltcG9ydCB7IENvckFjY2VzcywgQ29yVG9vbEdyb3VwU2x1ZywgREVGQVVMVF9DT1JfQUNDRVNTIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuaW1wb3J0IHsgaGFzTWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzJ1xuaW1wb3J0IHtcbiAgU0NBQVNXcmFwcGVyLFxuICBTQ0FBU0hlYWRlcixcbiAgU0NBQVNUaXRsZSxcbiAgU0NBQVNTdWJ0aXRsZSxcbiAgU0NBQVNDb250ZW50LFxuICBTQ0FBU1NlY3Rpb24sXG4gIFNDQUFTU2VjdGlvbkhlYWRlcixcbiAgU0NBQVNTZWN0aW9uVGl0bGUsXG4gIFNDQUFTU2VjdGlvblN1YnRpdGxlLFxuICBTQ0FBU09wdGlvbnNDb250YWluZXIsXG4gIFNDQUFTRGl2aWRlcixcbn0gZnJvbSAnLi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi5zdHlsZXMnXG5pbXBvcnQgeyBDbGllbnRGb3JtRGF0YSB9IGZyb20gJy4vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24uaW50ZXJmYWNlJ1xuXG5pbnRlcmZhY2UgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb25Qcm9wcyB7XG4gIHZhbHVlcz86IHtcbiAgICBhY2Nlc3NpYmlsaXR5Pzoge1xuICAgICAgYWNjZXNzVHlwZT86IHN0cmluZ1xuICAgICAgY2xpZW50cz86IENsaWVudEZvcm1EYXRhW10gfCBudWxsXG4gICAgICBjb3JBY2Nlc3M/OiBDb3JBY2Nlc3NcbiAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycz86IHN0cmluZ1tdXG4gICAgfVxuICB9XG4gIGhhbmRsZVNldEFnZW50VmFsdWVzPzogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG59XG5cbi8vIE9yZGVuID0gamVyYXJxdcOtYSBkZSBDT1IgKGNsaWVudGUgPiBwcm95ZWN0byA+IHRhcmVhKSwgZGUgbcOhcyBhbXBsaW8gYSBtw6FzIGVzcGVjw61maWNvLlxuY29uc3QgQ09SX1BFUk1JU1NJT05fUk9XUzogeyBzbHVnOiBDb3JUb29sR3JvdXBTbHVnOyB0aXRsZUtleTogc3RyaW5nOyBkZXNjcmlwdGlvbktleTogc3RyaW5nIH1bXSA9IFtcbiAgeyBzbHVnOiAnY2xpZW50ZXMnLCB0aXRsZUtleTogJ2NsaWVudEFjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICdjbGllbnRBY2Nlc3NEZXNjcmlwdGlvbicgfSxcbiAgeyBzbHVnOiAncHJveWVjdG9zJywgdGl0bGVLZXk6ICdwcm9qZWN0QWNjZXNzVGl0bGUnLCBkZXNjcmlwdGlvbktleTogJ3Byb2plY3RBY2Nlc3NEZXNjcmlwdGlvbicgfSxcbiAgeyBzbHVnOiAndGFyZWFzJywgdGl0bGVLZXk6ICd0YXNrQWNjZXNzVGl0bGUnLCBkZXNjcmlwdGlvbktleTogJ3Rhc2tBY2Nlc3NEZXNjcmlwdGlvbicgfSxcbl1cblxuZXhwb3J0IGNvbnN0IEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uID0gKHsgdmFsdWVzLCBoYW5kbGVTZXRBZ2VudFZhbHVlcyB9OiBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgW2Zvcm1WYWx1ZXMsIHNldEZvcm1WYWx1ZXNdID0gdXNlU3RhdGU8e1xuICAgIGFjY2Vzc1R5cGU6IHN0cmluZ1xuICAgIGNsaWVudHM6IENsaWVudEZvcm1EYXRhW10gfCBudWxsXG4gICAgY29yQWNjZXNzOiBDb3JBY2Nlc3NcbiAgICBzZWxlY3RlZENvbm5lY3RvcnM6IHN0cmluZ1tdXG4gIH0+KHtcbiAgICBhY2Nlc3NUeXBlOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmFjY2Vzc1R5cGUgfHwgJ2NvbXBhbnknLFxuICAgIGNsaWVudHM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50cyB8fCBudWxsLFxuICAgIGNvckFjY2VzczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jb3JBY2Nlc3MgPz8gREVGQVVMVF9DT1JfQUNDRVNTLFxuICAgIHNlbGVjdGVkQ29ubmVjdG9yczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnMgfHwgW10sXG4gIH0pXG4gIC8vIEVsIGNhdMOhbG9nbyBsbyBkZWZpbmUgZWwgYmFjayAoYEdFVCAvdjEvY29ubmVjdG9yc2ApOyBlbCBBQk0gcmVuZGVyaXphIHVuYSBmaWxhIHBvciBjb25lY3RvciBhY3Rpdm8uXG4gIGNvbnN0IFtjYXRhbG9nQ29ubmVjdG9ycywgc2V0Q2F0YWxvZ0Nvbm5lY3RvcnNdID0gdXNlU3RhdGU8Q2F0YWxvZ0Nvbm5lY3RvcltdPihbXSlcbiAgY29uc3QgZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZCA9IGhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MoKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IChvcHRpb246IHN0cmluZywgY2xpZW50cz86IENsaWVudEZvcm1EYXRhW10gfCBudWxsKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9uTWFwcGluZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcbiAgICAgIGNvbXBhbnk6ICdhbGxfY29tcGFueScsXG4gICAgICBjbGllbnRzOiAnYnlfY2xpZW50ZXMnLFxuICAgICAgb25seV9tZTogJ2p1c3RfbWUnLFxuICAgIH1cblxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5hY2Nlc3NpYmlsaXR5VHlwZSwgeyBvcHRpb246IG9wdGlvbk1hcHBpbmdbb3B0aW9uXSB9KVxuXG4gICAgY29uc3QgdmFsdWVUb1NlbmQgPSB7XG4gICAgICBhY2Nlc3NUeXBlOiBvcHRpb24sXG4gICAgICBjbGllbnRzOiBudWxsIGFzIENsaWVudEZvcm1EYXRhW10gfCBudWxsLFxuICAgICAgY29yQWNjZXNzOiBmb3JtVmFsdWVzLmNvckFjY2VzcyxcbiAgICAgIHNlbGVjdGVkQ29ubmVjdG9yczogZm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMsXG4gICAgfVxuICAgIGlmIChvcHRpb24gIT09ICdjbGllbnRzJyB8fCAhY2xpZW50cykge1xuICAgICAgc2V0Rm9ybVZhbHVlcyh2YWx1ZVRvU2VuZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudEZvcm1EYXRhID0gY2xpZW50cy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICBpZDogY2xpZW50LmlkLFxuICAgICAgbmFtZTogY2xpZW50Lm5hbWUsXG4gICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUsXG4gICAgICBpc19kZWxldGVkOiBjbGllbnQuaXNfZGVsZXRlZCxcbiAgICB9KSlcblxuICAgIGlmIChjbGllbnRzICYmIGNsaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQpXG4gICAgfVxuXG4gICAgc2V0Rm9ybVZhbHVlcyh7IC4uLnZhbHVlVG9TZW5kLCBjbGllbnRzOiBjbGllbnRGb3JtRGF0YSB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29yQWNjZXNzQ2hhbmdlID0gKHNsdWc6IENvclRvb2xHcm91cFNsdWcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yQ29yLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgY29yQWNjZXNzOiB7IC4uLnByZXYuY29yQWNjZXNzLCBbc2x1Z106IGNoZWNrZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbm5lY3RvckFjY2Vzc0NoYW5nZSA9IChzbHVnOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yTWNwLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHByZXYuc2VsZWN0ZWRDb25uZWN0b3JzKVxuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgbmV4dC5hZGQoc2x1ZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQuZGVsZXRlKHNsdWcpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IEFycmF5LmZyb20obmV4dCksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV4dENvbm5lY3RvcnMgPSB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LnNlbGVjdGVkQ29ubmVjdG9yc1xuICAgIGlmICghbmV4dENvbm5lY3RvcnMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IFsuLi5wcmV2LnNlbGVjdGVkQ29ubmVjdG9yc10uc29ydCgpLmpvaW4oJ3wnKVxuICAgICAgY29uc3QgaW5jb21pbmcgPSBbLi4ubmV4dENvbm5lY3RvcnNdLnNvcnQoKS5qb2luKCd8JylcbiAgICAgIGlmIChjdXJyZW50ID09PSBpbmNvbWluZykge1xuICAgICAgICByZXR1cm4gcHJldlxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBuZXh0Q29ubmVjdG9ycyxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvcm1WYWx1ZXMpIHtcbiAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzPy4oe1xuICAgICAgICBrZXk6ICdhY2Nlc3NpYmlsaXR5JyxcbiAgICAgICAgdmFsdWU6IGZvcm1WYWx1ZXMsXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2Zvcm1WYWx1ZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2VcbiAgICBnZXRBdmFpbGFibGVDb25uZWN0b3JzKClcbiAgICAgIC50aGVuKGNvbm5lY3RvcnMgPT4ge1xuICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgIHNldENhdGFsb2dDb25uZWN0b3JzKGNvbm5lY3RvcnMuZmlsdGVyKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuaXNfYWN0aXZlKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbm5lY3RvcnMgY2F0YWxvZzonLCBlcnJvcilcbiAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXRDYXRhbG9nQ29ubmVjdG9ycyhbXSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsbGVkID0gdHJ1ZVxuICAgIH1cbiAgfSwgW2V4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWRdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDQUFTV3JhcHBlcj5cbiAgICAgIDxTQ0FBU0hlYWRlciAkaW5kZXg9ezB9PlxuICAgICAgICA8U0NBQVNUaXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVTZWN0aW9uJyl9PC9TQ0FBU1RpdGxlPlxuICAgICAgICA8U0NBQVNTdWJ0aXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uc3VidGl0bGVTZWN0aW9uJyl9PC9TQ0FBU1N1YnRpdGxlPlxuICAgICAgPC9TQ0FBU0hlYWRlcj5cbiAgICAgIDxTQ0FBU0NvbnRlbnQgJGluZGV4PXsxfT5cbiAgICAgICAgPFNDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb3JQZXJtaXNzaW9uc1RpdGxlJyl9PC9TQ0FBU1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25TdWJ0aXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29yUGVybWlzc2lvbnNTdWJ0aXRsZScpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAge0NPUl9QRVJNSVNTSU9OX1JPV1MubWFwKCh7IHNsdWcsIHRpdGxlS2V5LCBkZXNjcmlwdGlvbktleSB9KSA9PiAoXG4gICAgICAgICAgICA8T3B0aW9uQ29yUGVybWlzc2lvblxuICAgICAgICAgICAgICBrZXk9e3NsdWd9XG4gICAgICAgICAgICAgIHRpdGxlPXt0KGBhY2Nlc3NpYmlsaXR5U2VjdGlvbi4ke3RpdGxlS2V5fWApfVxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17dChgYWNjZXNzaWJpbGl0eVNlY3Rpb24uJHtkZXNjcmlwdGlvbktleX1gKX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17Zm9ybVZhbHVlcy5jb3JBY2Nlc3Nbc2x1Z119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtjaGVja2VkID0+IGhhbmRsZUNvckFjY2Vzc0NoYW5nZShzbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuXG4gICAgICAgIHtleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQUFTRGl2aWRlciAvPlxuXG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25UaXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ubWNwUGVybWlzc2lvbnNUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5tY3BQZXJtaXNzaW9uc1N1YnRpdGxlJyl9PC9TQ0FBU1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICAgIHtjYXRhbG9nQ29ubmVjdG9ycy5tYXAoY29ubmVjdG9yID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uQ29yUGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAga2V5PXtjb25uZWN0b3Iuc2x1Z31cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtjb25uZWN0b3IubmFtZX1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLmRlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgIHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckFjY2Vzc0Rlc2NyaXB0aW9uJywgeyBuYW1lOiBjb25uZWN0b3IubmFtZSB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Zm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMuaW5jbHVkZXMoY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlKGNvbm5lY3Rvci5zbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FBU0RpdmlkZXIgLz5cblxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnZpc2liaWxpdHlUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLndob0NhbkFjY2VzcycpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgPFNDQUFTT3B0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxPcHRpb25BY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5hbGxDb21wYW55VGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmFsbENvbXBhbnlEZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbignY29tcGFueScpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY29tcGFueVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE9wdGlvbkFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgICAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNsaWVudFRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnREZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBpc0NsaWVudD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlID09PSAnY2xpZW50cyd9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KHByb3BzPzogQ2xpZW50Rm9ybURhdGFbXSkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdjbGllbnRzJywgcHJvcHMpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50c1wiXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ2xpZW50cz17Zm9ybVZhbHVlcy5jbGllbnRzPy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNsaWVudC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUsXG4gICAgICAgICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQsXG4gICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8T3B0aW9uQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ub3duVGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm93bkRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KCkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdvbmx5X21lJyl9XG4gICAgICAgICAgICAgIG9wdGlvblNlbGVjdGVkPXtmb3JtVmFsdWVzLmFjY2Vzc1R5cGV9XG4gICAgICAgICAgICAgIG5hbWU9XCJvbmx5X21lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FBU09wdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgPC9TQ0FBU0NvbnRlbnQ+XG4gICAgPC9TQ0FBU1dyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQzNDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFDeEUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsNEJBQTRCO0FBQzdELFNBQVNDLHNCQUFzQixRQUErQiw2Q0FBNkM7QUFDM0csU0FB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
@@ -20,9 +20,41 @@ import { useUser } from '../../../context/cor-user';
20
20
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
21
21
  import { useOnboardingNavigation } from '../../../hooks/useOnboardingNavigation';
22
22
  import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
23
- import { computeModelDropdownHeight, EMOJI_PORTAL_ID, filterAvailableAgentModels, resolveDropdownPosition, VALIDATION_FIELDS_RULES } from './AbmGeneralSection.helpers';
24
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
25
- var validationFieldsRules = VALIDATION_FIELDS_RULES;
24
+ var validationFieldsRules = {
25
+ name: 150,
26
+ userPrompt: 5000,
27
+ inputPlaceholder: 100,
28
+ introduction: 400
29
+ };
30
+ var MODEL_OPTION_HEIGHT = 58;
31
+ var MODEL_DROPDOWN_MAX_HEIGHT = 245;
32
+ var MODEL_DROPDOWN_GAP = 4;
33
+ var resolveDropdownPosition = function resolveDropdownPosition(anchor, dropdownHeight) {
34
+ var rect = anchor.getBoundingClientRect();
35
+ var spaceBelow = window.innerHeight - rect.bottom;
36
+ var spaceAbove = rect.top;
37
+ var placement = spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove ? 'bottom' : 'top';
38
+ if (placement === 'bottom') {
39
+ return {
40
+ left: rect.left,
41
+ width: rect.width,
42
+ top: rect.bottom + MODEL_DROPDOWN_GAP,
43
+ placement: placement
44
+ };
45
+ }
46
+ return {
47
+ left: rect.left,
48
+ width: rect.width,
49
+ bottom: window.innerHeight - rect.top + MODEL_DROPDOWN_GAP,
50
+ placement: placement
51
+ };
52
+ };
53
+
54
+ // El picker se portea a un contenedor propio a nivel de body con position:fixed
55
+ // en el origen del viewport, para que el position:absolute que aplica la librería
56
+ // coincida con las coordenadas de getBoundingClientRect (inmune al scroll).
57
+ var EMOJI_PORTAL_ID = 'abm-general-emoji-portal';
26
58
  export var AbmGeneralSection = function AbmGeneralSection(_ref) {
27
59
  var _values$general$creat, _values$general$creat2, _values$general$userP, _formValues$aiModel4, _values$general$intro, _values$general$input;
28
60
  var values = _ref.values,
@@ -63,14 +95,16 @@ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
63
95
  formValues = _useState8[0],
64
96
  setFormValues = _useState8[1];
65
97
  var availableAgentModels = useMemo(function () {
66
- return filterAvailableAgentModels(agentModels);
98
+ return agentModels.filter(function (model) {
99
+ return !model.is_deprecated;
100
+ });
67
101
  }, [agentModels]);
68
102
  var dropdownHeight = useMemo(function () {
69
- return computeModelDropdownHeight(availableAgentModels.length);
103
+ return Math.min(availableAgentModels.length * MODEL_OPTION_HEIGHT + 2, MODEL_DROPDOWN_MAX_HEIGHT);
70
104
  }, [availableAgentModels.length]);
71
105
  var updateDropdownPosition = useCallback(function () {
72
106
  if (!selectorRef.current) return;
73
- setDropdownPosition(resolveDropdownPosition(selectorRef.current.getBoundingClientRect(), dropdownHeight));
107
+ setDropdownPosition(resolveDropdownPosition(selectorRef.current, dropdownHeight));
74
108
  }, [dropdownHeight]);
75
109
  var handleOpenModalAiModel = function handleOpenModalAiModel() {
76
110
  eventAmplitude(EVENTS.selectModel);
@@ -378,4 +412,4 @@ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
378
412
  }), renderModelDropdown()]
379
413
  });
380
414
  };
381
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQiLCJFTU9KSV9QT1JUQUxfSUQiLCJmaWx0ZXJBdmFpbGFibGVBZ2VudE1vZGVscyIsInJlc29sdmVEcm9wZG93blBvc2l0aW9uIiwiVkFMSURBVElPTl9GSUVMRFNfUlVMRVMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwidmFsaWRhdGlvbkZpZWxkc1J1bGVzIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJuYW1lIiwiZ2VuZXJhbCIsImFpTW9kZWwiLCJpbnB1dFBsYWNlaG9sZGVyIiwiaW50cm9kdWN0aW9uIiwidXNlclByb21wdCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJkcm9wZG93bkhlaWdodCIsImxlbmd0aCIsInVwZGF0ZURyb3Bkb3duUG9zaXRpb24iLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGFuZGxlT3Blbk1vZGFsQWlNb2RlbCIsInNlbGVjdE1vZGVsIiwicHJldiIsImhhbmRsZVNlbGVjdE1vZGVsIiwibW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsIndpbmRvdyIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInpJbmRleCIsIlN0cmluZyIsIl9jb250YWluZXIiLCJwYXJlbnROb2RlIiwiaGFzQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaGFuZGxlU2V0R2VuZXJhbFZhbHVlcyIsImhhbmRsZVNlbGVjdEVtb2ppIiwiaGFuZGxlRm9jdXMiLCJmaWVsZE5hbWUiLCJoYW5kbGVCbHVyIiwicmVuZGVyTW9kZWxEcm9wZG93biIsIiRsZWZ0IiwiJHdpZHRoIiwid2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsImJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwicGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHtcbiAgY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQsXG4gIEVNT0pJX1BPUlRBTF9JRCxcbiAgZmlsdGVyQXZhaWxhYmxlQWdlbnRNb2RlbHMsXG4gIHJlc29sdmVEcm9wZG93blBvc2l0aW9uLFxuICBWQUxJREFUSU9OX0ZJRUxEU19SVUxFUyxcbiAgdHlwZSBEcm9wZG93blBvc2l0aW9uLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLmhlbHBlcnMnXG5cbmNvbnN0IHZhbGlkYXRpb25GaWVsZHNSdWxlcyA9IFZBTElEQVRJT05fRklFTERTX1JVTEVTXG5cbmV4cG9ydCBjb25zdCBBYm1HZW5lcmFsU2VjdGlvbiA9ICh7XG4gIHZhbHVlcyxcbiAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMsXG4gIGFnZW50TW9kZWxzLFxuICBsb2FkaW5nLFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICBsb2FkaW5nOiBib29sZWFuXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbn0pID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2FibV9hZ2VudF9zZWN0aW9uJ10pXG4gIGNvbnN0IHsgaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24gfSA9IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKClcbiAgY29uc3QgZW1vamlQb3J0YWxaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IG1vZGVsRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IFtvcGVuTW9kYWxBaU1vZGVsLCBzZXRPcGVuTW9kYWxBaU1vZGVsXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZHJvcGRvd25Qb3NpdGlvbiwgc2V0RHJvcGRvd25Qb3NpdGlvbl0gPSB1c2VTdGF0ZTxEcm9wZG93blBvc2l0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2ZvY3VzZWRGaWVsZCwgc2V0Rm9jdXNlZEZpZWxkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHNlbGVjdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IFtmb3JtVmFsdWVzLCBzZXRGb3JtVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBhaU1vZGVsOiBBZ2VudE1vZGVsIHwgbnVsbFxuICAgIGlucHV0UGxhY2Vob2xkZXI6IHN0cmluZ1xuICAgIGludHJvZHVjdGlvbjogc3RyaW5nXG4gICAgdXNlclByb21wdDogc3RyaW5nXG4gICAgZW1vamk6IHN0cmluZ1xuICB9Pih7XG4gICAgbmFtZTogdmFsdWVzLmdlbmVyYWwubmFtZSB8fCAnJyxcbiAgICBhaU1vZGVsOiB2YWx1ZXMuZ2VuZXJhbC5haU1vZGVsLFxuICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgaW50cm9kdWN0aW9uOiB2YWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gfHwgJycsXG4gICAgdXNlclByb21wdDogdmFsdWVzLmdlbmVyYWwudXNlclByb21wdCB8fCAnJyxcbiAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gIH0pXG5cbiAgY29uc3QgYXZhaWxhYmxlQWdlbnRNb2RlbHMgPSB1c2VNZW1vKCgpID0+IGZpbHRlckF2YWlsYWJsZUFnZW50TW9kZWxzKGFnZW50TW9kZWxzKSwgW2FnZW50TW9kZWxzXSlcblxuICBjb25zdCBkcm9wZG93bkhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQoYXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoKSxcbiAgICBbYXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoXVxuICApXG5cbiAgY29uc3QgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlbGVjdG9yUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNldERyb3Bkb3duUG9zaXRpb24ocmVzb2x2ZURyb3Bkb3duUG9zaXRpb24oc2VsZWN0b3JSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgZHJvcGRvd25IZWlnaHQpKVxuICB9LCBbZHJvcGRvd25IZWlnaHRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbEFpTW9kZWwgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLnNlbGVjdE1vZGVsKVxuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE1vZGVsID0gKG1vZGVsOiBBZ2VudE1vZGVsLCBldmVudD86IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICAgIGlmIChtb2RlbC5pZCAhPT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWQpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jaG9vc2VNb2RlbCwgeyBvcHRpb246IG1vZGVsLmRpc3BsYXlfbmFtZSB9KVxuICAgICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGFpTW9kZWw6IG1vZGVsLFxuICAgICAgfSkpXG4gICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcyh7IGtleTogJ2FpTW9kZWwnLCB2YWx1ZTogbW9kZWwgfSlcbiAgICB9XG4gICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKG9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICAgIGNvbnN0IGlzSW5Nb2RhbCA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1tb2RhbF0nKVxuICAgICAgICBjb25zdCBpc0luT3B0aW9uID0gdGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNlbGVjdG9yLW9wdGlvbl0nKVxuXG4gICAgICAgIGlmICghaXNJbk1vZGFsICYmICFpc0luT3B0aW9uKSB7XG4gICAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmIG9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUmVwb3NpdGlvbiA9ICgpID0+IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXBvc2l0aW9uKVxuICAgIC8vIGNhcHR1cmU6IGVsIEFCTSBzY3JvbGxlYSBlbiBjb250ZW5lZG9yZXMgaW50ZXJub3MsIG5vIGVuIHdpbmRvd1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB0cnVlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB0cnVlKVxuICAgIH1cbiAgfSwgW29wZW5Nb2RhbEFpTW9kZWwsIHVwZGF0ZURyb3Bkb3duUG9zaXRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEVNT0pJX1BPUlRBTF9JRClcbiAgICBjb25zdCBjcmVhdGVkID0gIWNvbnRhaW5lclxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgY29udGFpbmVyLmlkID0gRU1PSklfUE9SVEFMX0lEXG4gICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgICBjb250YWluZXIuc3R5bGUudG9wID0gJzAnXG4gICAgICBjb250YWluZXIuc3R5bGUubGVmdCA9ICcwJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpXG4gICAgfVxuICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoZW1vamlQb3J0YWxaSW5kZXgpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjcmVhdGVkICYmIGNvbnRhaW5lcj8ucGFyZW50Tm9kZSAmJiAhY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICBjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZW1vamlQb3J0YWxaSW5kZXhdKVxuXG4gIGNvbnN0IGhhbmRsZVNldEdlbmVyYWxWYWx1ZXMgPSAodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcyh7IGtleSwgdmFsdWUgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEVtb2ppID0gZW1vamkgPT4ge1xuICAgIGhhbmRsZVNldEdlbmVyYWxWYWx1ZXMoZW1vamkuZW1vamksICdlbW9qaScpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGb2N1cyA9IChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgIHNldEZvY3VzZWRGaWVsZChmaWVsZE5hbWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgIHNldEZvY3VzZWRGaWVsZChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGb3JtVmFsdWVzKHtcbiAgICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgICBhaU1vZGVsOiB2YWx1ZXMuZ2VuZXJhbC5haU1vZGVsLFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogdmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciB8fCAnJyxcbiAgICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgICAgdXNlclByb21wdDogdmFsdWVzLmdlbmVyYWwudXNlclByb21wdCB8fCAnJyxcbiAgICAgIGVtb2ppOiB2YWx1ZXMuZ2VuZXJhbC5lbW9qaSB8fCAnJyxcbiAgICB9KVxuICB9LCBbdmFsdWVzLmdlbmVyYWxdKVxuXG4gIGNvbnN0IHJlbmRlck1vZGVsRHJvcGRvd24gPSAoKSA9PiB7XG4gICAgaWYgKCFvcGVuTW9kYWxBaU1vZGVsIHx8ICFkcm9wZG93blBvc2l0aW9uKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0FHU1NlbGVjdG9yTW9kYWxcbiAgICAgICAgZGF0YS1zZWxlY3Rvci1tb2RhbFxuICAgICAgICAkbGVmdD17ZHJvcGRvd25Qb3NpdGlvbi5sZWZ0fVxuICAgICAgICAkd2lkdGg9e2Ryb3Bkb3duUG9zaXRpb24ud2lkdGh9XG4gICAgICAgICR0b3A9e2Ryb3Bkb3duUG9zaXRpb24udG9wfVxuICAgICAgICAkYm90dG9tPXtkcm9wZG93blBvc2l0aW9uLmJvdHRvbX1cbiAgICAgICAgJHpJbmRleD17bW9kZWxEcm9wZG93blpJbmRleH1cbiAgICAgICAgJHBsYWNlbWVudD17ZHJvcGRvd25Qb3NpdGlvbi5wbGFjZW1lbnR9XG4gICAgICA+XG4gICAgICAgIDxTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50PlxuICAgICAgICAgIHthdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggPT09IDAgJiYgIWxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U0NBR1NOb01vZGVsc0F2YWlsYWJsZT57dCgnZ2VuZXJhbFNlY3Rpb24ubm9Nb2RlbHNBdmFpbGFibGUnKX08L1NDQUdTTm9Nb2RlbHNBdmFpbGFibGU+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIGF2YWlsYWJsZUFnZW50TW9kZWxzLm1hcChtb2RlbCA9PiAoXG4gICAgICAgICAgICAgIDxTQ0FHU09wdGlvblxuICAgICAgICAgICAgICAgIGtleT17bW9kZWwuaWR9XG4gICAgICAgICAgICAgICAgdmFsdWU9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e21vZGVsLmlkID09PSBmb3JtVmFsdWVzPy5haU1vZGVsPy5pZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVTZWxlY3RNb2RlbChtb2RlbCwgZXZlbnQpfVxuICAgICAgICAgICAgICAgIGRhdGEtc2VsZWN0b3Itb3B0aW9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NBR1NPcHRpb25MYWJlbCBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9PlxuICAgICAgICAgICAgICAgICAge21vZGVsLmRpc3BsYXlfbmFtZX1cbiAgICAgICAgICAgICAgICA8L1NDQUdTT3B0aW9uTGFiZWw+XG4gICAgICAgICAgICAgICAge21vZGVsLmtleXdvcmQgJiYgPFNDQUdTT3B0aW9uRGVzY3JpcHRpb24+e21vZGVsLmtleXdvcmR9PC9TQ0FHU09wdGlvbkRlc2NyaXB0aW9uPn1cbiAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbj5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50PlxuICAgICAgPC9TQ0FHU1NlbGVjdG9yTW9kYWw+LFxuICAgICAgZG9jdW1lbnQuYm9keVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQUdTV3JhcHBlciBvcGVuTW9kYWxBaU1vZGVsPXtvcGVuTW9kYWxBaU1vZGVsfT5cbiAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXIgJGluZGV4PXswfT5cbiAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICAgIDxzcGFuPnt0KCdnZW5lcmFsU2VjdGlvbi5nZW5lcmFsU2V0dGluZ3MnKX08L3NwYW4+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQ+e3QoJ2dlbmVyYWxTZWN0aW9uLnJlcXVpcmVkRmllbGRzTGFiZWwnKX08L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVySGVhZGVyVGl0bGU+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPnt0KCdnZW5lcmFsU2VjdGlvbi5pbmZvTGFiZWwnKX08L1NDQUdTV3JhcHBlckhlYWRlckluZm8+XG4gICAgICA8L1NDQUdTV3JhcHBlckhlYWRlcj5cbiAgICAgIHsnY3JlYXRlZF9ieScgaW4gdmFsdWVzLmdlbmVyYWwgJiYgdmFsdWVzLmdlbmVyYWwuY3JlYXRlZF9ieSAmJiAoXG4gICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgekluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWRcbiAgICAgICAgICAgICAgPyB0KCdnZW5lcmFsU2VjdGlvbi5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpXG4gICAgICAgICAgICAgIDogdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT57dmFsdWVzLmdlbmVyYWwuY3JlYXRlZF9ieT8ubmFtZX08L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dD5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICAgIDxTQ0FHU0dlbmVyYWxDYXJkICRpbmRleD17MX0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaT5cbiAgICAgICAgICAgIDxCdXR0b25FbW9qaVxuICAgICAgICAgICAgICBwb3J0YWxJZD17RU1PSklfUE9SVEFMX0lEfVxuICAgICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0RW1vaml9XG4gICAgICAgICAgICAgIHJlbmRlckNvbXBvbmVudD17YSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxTQ0FHU0J1dHRvbkVtb2ppXG4gICAgICAgICAgICAgICAgICAgIHJlZj17YS5pY29uUmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YS5oYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3R9XG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWdlbmVyYWwtZW1vamktYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamlJY29uPntmb3JtVmFsdWVzLmVtb2ppIHx8IDxBZ2VudE1haWFJY29uIC8+fTwvU0NBR1NXcmFwcGVyRW1vamlJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJBZGRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSBjb2xvcj1cInJnYmEoMTM1LCA2NCwgMTkxLCAxKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJBZGRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvU0NBR1NCdXR0b25FbW9qaT5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNvbXBhbnlJZD17dXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgPFNDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lJyl9ICogKCR7dmFsdWVzLmdlbmVyYWwubmFtZS5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMubmFtZX0pYH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVyTmFtZScpfVxuICAgICAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8ubmFtZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgICAgIGlucHV0S2V5PVwibmFtZVwiXG4gICAgICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9XG4gICAgICAgICAgICAgIGlzVHJpbW1lZFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5pdGlhbFByb21wdCcpfSAqICgke3ZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQ/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fSlgfVxuICAgICAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8udXNlclByb21wdH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgICAgIGlucHV0S2V5PVwidXNlclByb21wdFwiXG4gICAgICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4Q2FyYWN0ZXJJbml0aWFsUHJvbXB0Jyl9XG4gICAgICAgICAgICAgIGN1c3RvbUhlaWdodD17MTcwfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQgb25DbGljaz17KCkgPT4gaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24oJ2hvd1RvV3JpdGVQcm9tcHQnKX0+XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+e3QoJ2dlbmVyYWxTZWN0aW9uLmhvd1RvV3JpdGVQcm9tcHQnKX08L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0PnsnICd9XG4gICAgICAgICAgICA8T3BlbiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IGNvbG9yPVwiIzAwNmZhZlwiIC8+XG4gICAgICAgICAgPC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudD5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nPlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyU2VsZWN0b3IgcmVmPXtzZWxlY3RvclJlZn0gZGF0YS1zZWxlY3Rvci1tb2RhbD5cbiAgICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgICAgPENVU2VsZWN0XG4gICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2dlbmVyYWxTZWN0aW9uLm1vZGVsQWlMYWJlbCcpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtsb2FkaW5nID8gJ0NhcmdhbmRvIG1vZGVsb3MuLi4nIDogJ1NlbGVjY2lvbmFyIG1vZGVsbyd9XG4gICAgICAgICAgICAgICAgZW5kSWNvbj17PENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj17bG9hZGluZyA/ICcjYmZiZmJmJyA6ICcjOTk5OTk5J30gLz59XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2tBY3Rpb249e2hhbmRsZU9wZW5Nb2RhbEFpTW9kZWx9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LmFpTW9kZWw/LmRpc3BsYXlfbmFtZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlPXtsb2FkaW5nfVxuICAgICAgICAgICAgICAgIG9wZW49e29wZW5Nb2RhbEFpTW9kZWx9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7LyogQ1VTZWxlY3QgZXhpZ2UgY2hpbGRyZW4gcGFyYSBoYWJpbGl0YXIgZWwgY2xpY2s7IGVsIG1lbsO6IHJlYWwgdmEgcG9yIHBvcnRhbC4gKi99XG4gICAgICAgICAgICAgICAgPHNwYW4gaGlkZGVuIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgICAgICAgIDwvQ1VTZWxlY3Q+XG4gICAgICAgICAgICA8L1NDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyU2VsZWN0b3I+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCd3aGF0SXNNb2RlbEFpJyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi53aGF0SXNNb2RlbEFpJyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgIDwvU0NBR1NHZW5lcmFsQ2FyZD5cbiAgICAgIDxTQ0FHU09wdGlvbmFsRmllbGRzICRpbmRleD17Mn0+XG4gICAgICAgIDxTQ0FHU09wdGlvbmFsTGFiZWw+e3QoJ2dlbmVyYWxTZWN0aW9uLm9wdGlvbmFsTGFiZWwnKX08L1NDQUdTT3B0aW9uYWxMYWJlbD5cbiAgICAgICAgPEN1c3RvbVRleHRBcmVhXG4gICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LmludHJvZHVjdGlvbn1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgaGFuZGxlRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnRyb2R1Y3Rpb25cIlxuICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5pbnRyb2R1Y3Rpb24nKX0gKCR7dmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uPy5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufSlgfVxuICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4Q2FyYWN0ZXJJbnRyb2R1Y3Rpb24nKX1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnRyb2R1Y3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyVGl0bGUnKX0gKCR7dmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlcj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmlucHV0UGxhY2Vob2xkZXJ9KWB9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmlucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICBpbnB1dEtleT1cImlucHV0UGxhY2Vob2xkZXJcIlxuICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4SW5wdXRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmlucHV0UGxhY2Vob2xkZXJ9XG4gICAgICAgIC8+XG4gICAgICA8L1NDQUdTT3B0aW9uYWxGaWVsZHM+XG4gICAgICB7cmVuZGVyTW9kZWxEcm9wZG93bigpfVxuICAgIDwvU0NBR1NXcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUNoRixTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxRQUFRLFFBQVEsOENBQThDO0FBQ3ZFLFNBQVNDLFdBQVcsUUFBUSw0QkFBNEI7QUFDeEQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUFTQyxhQUFhLFFBQVEsaUNBQWlDO0FBQy9ELFNBQVNDLFdBQVcsUUFBUSxtQkFBbUI7QUFDL0MsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsZ0JBQWdCLEVBQ2hCQyxzQkFBc0IsRUFDdEJDLHlCQUF5QixFQUN6QkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLG1CQUFtQixFQUNuQkMsZ0JBQWdCLEVBQ2hCQyx3QkFB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
415
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInZhbGlkYXRpb25GaWVsZHNSdWxlcyIsIm5hbWUiLCJ1c2VyUHJvbXB0IiwiaW5wdXRQbGFjZWhvbGRlciIsImludHJvZHVjdGlvbiIsIk1PREVMX09QVElPTl9IRUlHSFQiLCJNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUIiwiTU9ERUxfRFJPUERPV05fR0FQIiwicmVzb2x2ZURyb3Bkb3duUG9zaXRpb24iLCJhbmNob3IiLCJkcm9wZG93bkhlaWdodCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzcGFjZUJlbG93Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzcGFjZUFib3ZlIiwidG9wIiwicGxhY2VtZW50IiwibGVmdCIsIndpZHRoIiwiRU1PSklfUE9SVEFMX0lEIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJnZW5lcmFsIiwiYWlNb2RlbCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJmaWx0ZXIiLCJtb2RlbCIsImlzX2RlcHJlY2F0ZWQiLCJNYXRoIiwibWluIiwibGVuZ3RoIiwidXBkYXRlRHJvcGRvd25Qb3NpdGlvbiIsImN1cnJlbnQiLCJoYW5kbGVPcGVuTW9kYWxBaU1vZGVsIiwic2VsZWN0TW9kZWwiLCJwcmV2IiwiaGFuZGxlU2VsZWN0TW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwiYm9keSIsImFwcGVuZENoaWxkIiwiekluZGV4IiwiU3RyaW5nIiwiX2NvbnRhaW5lciIsInBhcmVudE5vZGUiLCJoYXNDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGQiLCJoYW5kbGVTZXRHZW5lcmFsVmFsdWVzIiwiaGFuZGxlU2VsZWN0RW1vamkiLCJoYW5kbGVGb2N1cyIsImZpZWxkTmFtZSIsImhhbmRsZUJsdXIiLCJyZW5kZXJNb2RlbERyb3Bkb3duIiwiJGxlZnQiLCIkd2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5jb25zdCB2YWxpZGF0aW9uRmllbGRzUnVsZXMgPSB7XG4gIG5hbWU6IDE1MCxcbiAgdXNlclByb21wdDogNTAwMCxcbiAgaW5wdXRQbGFjZWhvbGRlcjogMTAwLFxuICBpbnRyb2R1Y3Rpb246IDQwMCxcbn1cblxuY29uc3QgTU9ERUxfT1BUSU9OX0hFSUdIVCA9IDU4XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUID0gMjQ1XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9HQVAgPSA0XG5cbnR5cGUgRHJvcGRvd25QbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nXG5cbnR5cGUgRHJvcGRvd25Qb3NpdGlvbiA9IHtcbiAgbGVmdDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgdG9wPzogbnVtYmVyXG4gIGJvdHRvbT86IG51bWJlclxuICBwbGFjZW1lbnQ6IERyb3Bkb3duUGxhY2VtZW50XG59XG5cbmNvbnN0IHJlc29sdmVEcm9wZG93blBvc2l0aW9uID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBvc2l0aW9uID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG4gIGNvbnN0IHBsYWNlbWVudDogRHJvcGRvd25QbGFjZW1lbnQgPSBzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0IHx8IHNwYWNlQmVsb3cgPj0gc3BhY2VBYm92ZSA/ICdib3R0b20nIDogJ3RvcCdcblxuICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIHRvcDogcmVjdC5ib3R0b20gKyBNT0RFTF9EUk9QRE9XTl9HQVAsXG4gICAgICBwbGFjZW1lbnQsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LnRvcCArIE1PREVMX0RST1BET1dOX0dBUCxcbiAgICBwbGFjZW1lbnQsXG4gIH1cbn1cblxuLy8gRWwgcGlja2VyIHNlIHBvcnRlYSBhIHVuIGNvbnRlbmVkb3IgcHJvcGlvIGEgbml2ZWwgZGUgYm9keSBjb24gcG9zaXRpb246Zml4ZWRcbi8vIGVuIGVsIG9yaWdlbiBkZWwgdmlld3BvcnQsIHBhcmEgcXVlIGVsIHBvc2l0aW9uOmFic29sdXRlIHF1ZSBhcGxpY2EgbGEgbGlicmVyw61hXG4vLyBjb2luY2lkYSBjb24gbGFzIGNvb3JkZW5hZGFzIGRlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCAoaW5tdW5lIGFsIHNjcm9sbCkuXG5jb25zdCBFTU9KSV9QT1JUQUxfSUQgPSAnYWJtLWdlbmVyYWwtZW1vamktcG9ydGFsJ1xuXG5leHBvcnQgY29uc3QgQWJtR2VuZXJhbFNlY3Rpb24gPSAoe1xuICB2YWx1ZXMsXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICBhZ2VudE1vZGVscyxcbiAgbG9hZGluZyxcbiAgdG9vbHRpcFpJbmRleCxcbn06IHtcbiAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgbG9hZGluZzogYm9vbGVhblxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oWydhYm1fYWdlbnRfc2VjdGlvbiddKVxuICBjb25zdCB7IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gPSB1c2VPbmJvYXJkaW5nTmF2aWdhdGlvbigpXG4gIGNvbnN0IGVtb2ppUG9ydGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBtb2RlbERyb3Bkb3duWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBbb3Blbk1vZGFsQWlNb2RlbCwgc2V0T3Blbk1vZGFsQWlNb2RlbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Ryb3Bkb3duUG9zaXRpb24sIHNldERyb3Bkb3duUG9zaXRpb25dID0gdXNlU3RhdGU8RHJvcGRvd25Qb3NpdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtmb2N1c2VkRmllbGQsIHNldEZvY3VzZWRGaWVsZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBzZWxlY3RvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBbZm9ybVZhbHVlcywgc2V0Rm9ybVZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgYWlNb2RlbDogQWdlbnRNb2RlbCB8IG51bGxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgICBpbnRyb2R1Y3Rpb246IHN0cmluZ1xuICAgIHVzZXJQcm9tcHQ6IHN0cmluZ1xuICAgIGVtb2ppOiBzdHJpbmdcbiAgfT4oe1xuICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiB2YWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyIHx8ICcnLFxuICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgZW1vamk6IHZhbHVlcy5nZW5lcmFsLmVtb2ppIHx8ICcnLFxuICB9KVxuXG4gIGNvbnN0IGF2YWlsYWJsZUFnZW50TW9kZWxzID0gdXNlTWVtbygoKSA9PiBhZ2VudE1vZGVscy5maWx0ZXIobW9kZWwgPT4gIW1vZGVsLmlzX2RlcHJlY2F0ZWQpLCBbYWdlbnRNb2RlbHNdKVxuXG4gIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBNYXRoLm1pbihhdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggKiBNT0RFTF9PUFRJT05fSEVJR0hUICsgMiwgTU9ERUxfRFJPUERPV05fTUFYX0hFSUdIVCksXG4gICAgW2F2YWlsYWJsZUFnZW50TW9kZWxzLmxlbmd0aF1cbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RvclJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBzZXREcm9wZG93blBvc2l0aW9uKHJlc29sdmVEcm9wZG93blBvc2l0aW9uKHNlbGVjdG9yUmVmLmN1cnJlbnQsIGRyb3Bkb3duSGVpZ2h0KSlcbiAgfSwgW2Ryb3Bkb3duSGVpZ2h0XSlcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWxBaU1vZGVsID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5zZWxlY3RNb2RlbClcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIH1cbiAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RNb2RlbCA9IChtb2RlbDogQWdlbnRNb2RlbCwgZXZlbnQ/OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgICBpZiAobW9kZWwuaWQgIT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2hvb3NlTW9kZWwsIHsgb3B0aW9uOiBtb2RlbC5kaXNwbGF5X25hbWUgfSlcbiAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBhaU1vZGVsOiBtb2RlbCxcbiAgICAgIH0pKVxuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXk6ICdhaU1vZGVsJywgdmFsdWU6IG1vZGVsIH0pXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgICBjb25zdCBpc0luTW9kYWwgPSB0YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2VsZWN0b3ItbW9kYWxdJylcbiAgICAgICAgY29uc3QgaXNJbk9wdGlvbiA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1vcHRpb25dJylcblxuICAgICAgICBpZiAoIWlzSW5Nb2RhbCAmJiAhaXNJbk9wdGlvbikge1xuICAgICAgICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiBvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbb3Blbk1vZGFsQWlNb2RlbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB1cGRhdGVEcm9wZG93blBvc2l0aW9uKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAvLyBjYXB0dXJlOiBlbCBBQk0gc2Nyb2xsZWEgZW4gY29udGVuZWRvcmVzIGludGVybm9zLCBubyBlbiB3aW5kb3dcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsLCB1cGRhdGVEcm9wZG93blBvc2l0aW9uXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChFTU9KSV9QT1JUQUxfSUQpXG4gICAgY29uc3QgY3JlYXRlZCA9ICFjb250YWluZXJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgIGNvbnRhaW5lci5pZCA9IEVNT0pJX1BPUlRBTF9JRFxuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9ICcwJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnMCdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKVxuICAgIH1cbiAgICBjb250YWluZXIuc3R5bGUuekluZGV4ID0gU3RyaW5nKGVtb2ppUG9ydGFsWkluZGV4KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY3JlYXRlZCAmJiBjb250YWluZXI/LnBhcmVudE5vZGUgJiYgIWNvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2Vtb2ppUG9ydGFsWkluZGV4XSlcblxuICBjb25zdCBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzID0gKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXksIHZhbHVlIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RFbW9qaSA9IGVtb2ppID0+IHtcbiAgICBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzKGVtb2ppLmVtb2ppLCAnZW1vamknKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQoZmllbGROYW1lKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Rm9ybVZhbHVlcyh7XG4gICAgICBuYW1lOiB2YWx1ZXMuZ2VuZXJhbC5uYW1lIHx8ICcnLFxuICAgICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgICBpbnRyb2R1Y3Rpb246IHZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiB8fCAnJyxcbiAgICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gICAgfSlcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsXSlcblxuICBjb25zdCByZW5kZXJNb2RlbERyb3Bkb3duID0gKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCB8fCAhZHJvcGRvd25Qb3NpdGlvbikgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsXG4gICAgICAgIGRhdGEtc2VsZWN0b3ItbW9kYWxcbiAgICAgICAgJGxlZnQ9e2Ryb3Bkb3duUG9zaXRpb24ubGVmdH1cbiAgICAgICAgJHdpZHRoPXtkcm9wZG93blBvc2l0aW9uLndpZHRofVxuICAgICAgICAkdG9wPXtkcm9wZG93blBvc2l0aW9uLnRvcH1cbiAgICAgICAgJGJvdHRvbT17ZHJvcGRvd25Qb3NpdGlvbi5ib3R0b219XG4gICAgICAgICR6SW5kZXg9e21vZGVsRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICRwbGFjZW1lbnQ9e2Ryb3Bkb3duUG9zaXRpb24ucGxhY2VtZW50fVxuICAgICAgPlxuICAgICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgICAgICB7YXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoID09PSAwICYmICFsb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNDQUdTTm9Nb2RlbHNBdmFpbGFibGU+e3QoJ2dlbmVyYWxTZWN0aW9uLm5vTW9kZWxzQXZhaWxhYmxlJyl9PC9TQ0FHU05vTW9kZWxzQXZhaWxhYmxlPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBhdmFpbGFibGVBZ2VudE1vZGVscy5tYXAobW9kZWwgPT4gKFxuICAgICAgICAgICAgICA8U0NBR1NPcHRpb25cbiAgICAgICAgICAgICAgICBrZXk9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIHZhbHVlPXttb2RlbC5pZH1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlU2VsZWN0TW9kZWwobW9kZWwsIGV2ZW50KX1cbiAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdG9yLW9wdGlvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQUdTT3B0aW9uTGFiZWwgaXNTZWxlY3RlZD17bW9kZWwuaWQgPT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkfT5cbiAgICAgICAgICAgICAgICAgIHttb2RlbC5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHttb2RlbC5rZXl3b3JkICYmIDxTQ0FHU09wdGlvbkRlc2NyaXB0aW9uPnttb2RlbC5rZXl3b3JkfTwvU0NBR1NPcHRpb25EZXNjcmlwdGlvbj59XG4gICAgICAgICAgICAgIDwvU0NBR1NPcHRpb24+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsPixcbiAgICAgIGRvY3VtZW50LmJvZHlcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0FHU1dyYXBwZXIgb3Blbk1vZGFsQWlNb2RlbD17b3Blbk1vZGFsQWlNb2RlbH0+XG4gICAgICA8U0NBR1NXcmFwcGVySGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZT5cbiAgICAgICAgICA8c3Bhbj57dCgnZ2VuZXJhbFNlY3Rpb24uZ2VuZXJhbFNldHRpbmdzJyl9PC9zcGFuPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPnt0KCdnZW5lcmFsU2VjdGlvbi5yZXF1aXJlZEZpZWxkc0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVySW5mbz57dCgnZ2VuZXJhbFNlY3Rpb24uaW5mb0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgPC9TQ0FHU1dyYXBwZXJIZWFkZXI+XG4gICAgICB7J2NyZWF0ZWRfYnknIGluIHZhbHVlcy5nZW5lcmFsICYmIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnkgJiYgKFxuICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICB2YWx1ZXMuZ2VuZXJhbC5jcmVhdGVkX2J5Py5pc19kZWxldGVkXG4gICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKVxuICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAge3QoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dE5hbWU+e3ZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgICA8U0NBR1NHZW5lcmFsQ2FyZCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBR1NXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgICA8QnV0dG9uRW1vamlcbiAgICAgICAgICAgICAgcG9ydGFsSWQ9e0VNT0pJX1BPUlRBTF9JRH1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdEVtb2ppfVxuICAgICAgICAgICAgICByZW5kZXJDb21wb25lbnQ9e2EgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8U0NBR1NCdXR0b25FbW9qaVxuICAgICAgICAgICAgICAgICAgICByZWY9e2EuaWNvblJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2EuaGFuZGxlT3BlblN1Z2dlc3Rpb25MaXN0fVxuICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1nZW5lcmFsLWVtb2ppLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppSWNvbj57Zm9ybVZhbHVlcy5lbW9qaSB8fCA8QWdlbnRNYWlhSWNvbiAvPn08L1NDQUdTV3JhcHBlckVtb2ppSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCJyZ2JhKDEzNSwgNjQsIDE5MSwgMSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8L1NDQUdTQnV0dG9uRW1vamk+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjb21wYW55SWQ9e3VzZXIuY29tcGFueV9pZC50b1N0cmluZygpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24ubmFtZScpfSAqICgke3ZhbHVlcy5nZW5lcmFsLm5hbWUubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9KWB9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlPXt0KCdnZW5lcmFsU2VjdGlvbi5lcnJvci5tYXhDYXJhY3Rlck5hbWUnKX1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/Lm5hbWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cIm5hbWVcIlxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5uYW1lfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICA8Q3VzdG9tVGV4dEFyZWFcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHQnKX0gKiAoJHt2YWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0Py5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMudXNlclByb21wdH0pYH1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cInVzZXJQcm9tcHRcIlxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW5pdGlhbFByb21wdCcpfVxuICAgICAgICAgICAgICBjdXN0b21IZWlnaHQ9ezE3MH1cbiAgICAgICAgICAgICAgaXNUcmltbWVkXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCdob3dUb1dyaXRlUHJvbXB0Jyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi5ob3dUb1dyaXRlUHJvbXB0Jyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlclNlbGVjdG9yIHJlZj17c2VsZWN0b3JSZWZ9IGRhdGEtc2VsZWN0b3ItbW9kYWw+XG4gICAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICAgIDxDVVNlbGVjdFxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdnZW5lcmFsU2VjdGlvbi5tb2RlbEFpTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17bG9hZGluZyA/ICdDYXJnYW5kbyBtb2RlbG9zLi4uJyA6ICdTZWxlY2Npb25hciBtb2RlbG8nfVxuICAgICAgICAgICAgICAgIGVuZEljb249ezxDaGV2cm9uRG93biB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgY29sb3I9e2xvYWRpbmcgPyAnI2JmYmZiZicgOiAnIzk5OTk5OSd9IC8+fVxuICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrQWN0aW9uPXtoYW5kbGVPcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5haU1vZGVsPy5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZT17bG9hZGluZ31cbiAgICAgICAgICAgICAgICBvcGVuPXtvcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgey8qIENVU2VsZWN0IGV4aWdlIGNoaWxkcmVuIHBhcmEgaGFiaWxpdGFyIGVsIGNsaWNrOyBlbCBtZW7DuiByZWFsIHZhIHBvciBwb3J0YWwuICovfVxuICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgICAgICA8L0NVU2VsZWN0PlxuICAgICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlclNlbGVjdG9yPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbignd2hhdElzTW9kZWxBaScpfT5cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57dCgnZ2VuZXJhbFNlY3Rpb24ud2hhdElzTW9kZWxBaScpfTwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+eycgJ31cbiAgICAgICAgICAgIDxPcGVuIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gY29sb3I9XCIjMDA2ZmFmXCIgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50PlxuICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICA8L1NDQUdTR2VuZXJhbENhcmQ+XG4gICAgICA8U0NBR1NPcHRpb25hbEZpZWxkcyAkaW5kZXg9ezJ9PlxuICAgICAgICA8U0NBR1NPcHRpb25hbExhYmVsPnt0KCdnZW5lcmFsU2VjdGlvbi5vcHRpb25hbExhYmVsJyl9PC9TQ0FHU09wdGlvbmFsTGFiZWw+XG4gICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnRyb2R1Y3Rpb259XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmludHJvZHVjdGlvblBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIGlucHV0S2V5PVwiaW50cm9kdWN0aW9uXCJcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmludHJvZHVjdGlvbn0pYH1cbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW50cm9kdWN0aW9uJyl9XG4gICAgICAgICAgbWF4TGVuZ3RoPXt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8Q3VzdG9tSW5wdXRcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlclRpdGxlJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXI/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfSlgfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heElucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8uaW5wdXRQbGFjZWhvbGRlcn1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2V0R2VuZXJhbFZhbHVlc31cbiAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICBmb2N1c2VkRmllbGQ9e2ZvY3VzZWRGaWVsZH1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgPC9TQ0FHU09wdGlvbmFsRmllbGRzPlxuICAgICAge3JlbmRlck1vZGVsRHJvcGRvd24oKX1cbiAgICA8L1NDQUdTV3JhcHBlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDaEYsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsUUFB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