@projectcor/maia-components 2.50.1-2 → 2.51.1

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 (429) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +1 -3
  4. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +1 -3
  5. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +14 -24
  6. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +10 -28
  7. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +15 -19
  8. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -8
  9. package/lib/components/atoms/ClientSelector/ClientSelector.js +13 -15
  10. package/lib/components/atoms/Fade/Fade.js +6 -10
  11. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  12. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  13. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +2 -3
  14. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +2 -3
  15. package/lib/components/atoms/MAIAInput/MAIAInput.js +99 -123
  16. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +4 -9
  17. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +5 -4
  18. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.js +26 -28
  19. package/lib/components/atoms/OptionCorPermission/OptionCorPermission.styles.js +14 -15
  20. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  21. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
  22. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +10 -25
  23. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +43 -78
  24. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
  25. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -37
  26. package/lib/components/index.js +1 -2
  27. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +8 -6
  28. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +4 -6
  29. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +16 -25
  30. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  31. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +72 -93
  32. package/lib/components/molecules/ChatAIHome/styles.js +78 -85
  33. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +14 -30
  34. package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
  35. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +3 -9
  36. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +20 -25
  37. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  38. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  39. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  40. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +367 -63
  41. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
  42. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +2 -5
  43. package/lib/components/molecules/Sidebar/Sidebar.js +49 -57
  44. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +2 -2
  45. package/lib/components/organisms/ChatAI/ChatAI.js +14 -1
  46. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +7 -11
  47. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +1 -4
  48. package/lib/constants/permissions/index.js +2 -2
  49. package/lib/constants/permissions/utils.js +1 -4
  50. package/lib/dev/DevReasoningTimeline.js +37 -68
  51. package/lib/dev/Providers.js +3 -5
  52. package/lib/hooks/useAgentModel/useUpdateAgent.js +6 -7
  53. package/lib/hooks/useChatManager/useChatManager.helpers.js +3 -3
  54. package/lib/hooks/useChatManager/useChatManager.js +7 -8
  55. package/lib/hooks/useEntitySearch.js +1 -3
  56. package/lib/hooks/useFrequentlyUsedActions.js +22 -61
  57. package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
  58. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +15 -16
  59. package/lib/hooks/useProjectSummaryConfig.js +5 -10
  60. package/lib/index.js +2 -5
  61. package/lib/lang/br/index.js +2 -27
  62. package/lib/lang/en/index.js +2 -27
  63. package/lib/lang/es/index.js +2 -27
  64. package/lib/lang/fr/index.js +2 -27
  65. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  66. package/lib/services/maia/Agents/connectors.js +1 -3
  67. package/lib/services/maia/Chats/getChatsByUserId.js +6 -5
  68. package/lib/store/sessions/sessionStreamManager.js +55 -51
  69. package/lib/store/useChatsStore.js +7 -6
  70. package/lib/styles/cascade.js +3 -29
  71. package/lib/styles/transitions.js +1 -3
  72. package/lib/types/global.d.js +1 -1
  73. package/lib/utils/hoursPlannerQuickActionType.js +1 -116
  74. package/lib/utils/imagePreprocessor.js +3 -14
  75. package/lib/utils/navigateContextEntity.js +2 -2
  76. package/lib/utils/openTaskInCorPanel.js +2 -2
  77. package/lib/utils/streamActivityMessages.helpers.js +4 -5
  78. package/lib/utils/streamActivityMessages.js +20 -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.helpers.spec.js +0 -63
  84. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -183
  85. package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
  86. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -139
  87. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -385
  88. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
  89. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -94
  90. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -396
  91. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
  92. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -526
  93. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -169
  94. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
  95. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
  96. package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
  97. package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
  98. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
  99. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  100. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  101. package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
  102. package/lib/components/atoms/ClientSelector/ClientSelector.helpers.spec.js +0 -45
  103. package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -133
  104. package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
  105. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  106. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
  107. package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -109
  108. package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
  109. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -92
  110. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -319
  111. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
  112. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
  113. package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
  114. package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
  115. package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
  116. package/lib/components/atoms/Expand/Expand.spec.js +0 -57
  117. package/lib/components/atoms/Fade/Fade.spec.js +0 -66
  118. package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
  119. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
  120. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
  121. package/lib/components/atoms/HelpButton.spec.js +0 -87
  122. package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
  123. package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
  124. package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
  125. package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
  126. package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
  127. package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
  128. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  129. package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
  130. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.spec.js +0 -113
  131. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -381
  132. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -719
  133. package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -92
  134. package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -193
  135. package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -32
  136. package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
  137. package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
  138. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
  139. package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
  140. package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
  141. package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
  142. package/lib/components/atoms/NextPageLoader.spec.js +0 -37
  143. package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
  144. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
  145. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
  146. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -146
  147. package/lib/components/atoms/PrimaryButton.spec.js +0 -42
  148. package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
  149. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  150. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  151. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
  152. package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
  153. package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
  154. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
  155. package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
  156. package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
  157. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  158. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  159. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
  160. package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
  161. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
  162. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  163. package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
  164. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.helpers.spec.js +0 -71
  165. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -120
  166. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  167. package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
  168. package/lib/components/atoms/TextArea/TextArea.helpers.spec.js +0 -25
  169. package/lib/components/atoms/TextArea/TextArea.spec.js +0 -126
  170. package/lib/components/atoms/ThirdButton.spec.js +0 -29
  171. package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
  172. package/lib/components/atoms/WithAppCfg.spec.js +0 -82
  173. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
  174. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -742
  175. package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -107
  176. package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -256
  177. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -175
  178. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -318
  179. package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
  180. package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
  181. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  182. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  183. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  184. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  185. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  186. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  187. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  188. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  189. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
  190. package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
  191. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
  192. package/lib/components/molecules/ChatAIHome/ChatAIHome.helpers.spec.js +0 -622
  193. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -264
  194. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
  195. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  196. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -742
  197. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -541
  198. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  199. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -1394
  200. package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -1401
  201. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
  202. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
  203. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
  204. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -142
  205. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
  206. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +0 -69
  207. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +0 -144
  208. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +0 -95
  209. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +0 -174
  210. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +0 -99
  211. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +0 -65
  212. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  213. package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
  214. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
  215. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
  216. package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
  217. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.helpers.spec.js +0 -93
  218. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -297
  219. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.helpers.spec.js +0 -62
  220. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -221
  221. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
  222. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
  223. package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
  224. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -104
  225. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
  226. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  227. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  228. package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
  229. package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
  230. package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
  231. package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
  232. package/lib/components/molecules/Sidebar/Sidebar.helpers.spec.js +0 -119
  233. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -464
  234. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -1067
  235. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1236
  236. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
  237. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.helpers.spec.js +0 -77
  238. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -503
  239. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  240. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  241. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
  242. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  243. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  244. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -291
  245. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  246. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -284
  247. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -343
  248. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -197
  249. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
  250. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
  251. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  252. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  253. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  254. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  255. package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
  256. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  257. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  258. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  259. package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
  260. package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
  261. package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
  262. package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
  263. package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
  264. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
  265. package/lib/constants/formatExtensions.spec.js +0 -15
  266. package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
  267. package/lib/constants/maiaFeatureAccess.spec.js +0 -30
  268. package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
  269. package/lib/constants/maiaTaskPanelAccess.spec.js +0 -41
  270. package/lib/constants/permissions/clientRoleAccess.spec.js +0 -65
  271. package/lib/constants/permissions/utils.spec.js +0 -128
  272. package/lib/constants/plannerSyncEvents.spec.js +0 -31
  273. package/lib/constants/taskUrls.spec.js +0 -9
  274. package/lib/dev/DevMaiaPage.js +0 -30
  275. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  276. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  277. package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
  278. package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
  279. package/lib/hooks/useAgentModel/useCreateAgent.helpers.spec.js +0 -268
  280. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -314
  281. package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
  282. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -374
  283. package/lib/hooks/useAgentSuggestions.spec.js +0 -89
  284. package/lib/hooks/useCaretPosition.spec.js +0 -58
  285. package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -2027
  286. package/lib/hooks/useChatManager/useChatManager.spec.js +0 -2409
  287. package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -491
  288. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -729
  289. package/lib/hooks/useChats/useChats.spec.js +0 -208
  290. package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
  291. package/lib/hooks/useClientSearch.spec.js +0 -86
  292. package/lib/hooks/useContextMentions.helpers.spec.js +0 -267
  293. package/lib/hooks/useContextMentions.spec.js +0 -338
  294. package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -183
  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/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.spec.js +0 -257
  299. package/lib/hooks/useDebounce.spec.js +0 -42
  300. package/lib/hooks/useEntitySearch.helpers.spec.js +0 -723
  301. package/lib/hooks/useEntitySearch.spec.js +0 -718
  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 -293
  305. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  306. package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
  307. package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
  308. package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
  309. package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
  310. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  311. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  312. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  313. package/lib/hooks/useMentionPopover.helpers.spec.js +0 -100
  314. package/lib/hooks/useMentionPopover.spec.js +0 -392
  315. package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -176
  316. package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
  317. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  318. package/lib/hooks/useModal/useModal.spec.js +0 -73
  319. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.helpers.spec.js +0 -138
  320. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -417
  321. package/lib/hooks/useProjectSearch.helpers.spec.js +0 -89
  322. package/lib/hooks/useProjectSearch.spec.js +0 -91
  323. package/lib/hooks/useProjectSummary.spec.js +0 -193
  324. package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -151
  325. package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
  326. package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
  327. package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
  328. package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
  329. package/lib/hooks/useRecentContexts.spec.js +0 -139
  330. package/lib/hooks/useResize.spec.js +0 -37
  331. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  332. package/lib/hooks/useSlashCommands.spec.js +0 -139
  333. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
  334. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  335. package/lib/hooks/useStreamResponse.spec.js +0 -199
  336. package/lib/hooks/useT.spec.js +0 -20
  337. package/lib/hooks/useToggle.spec.js +0 -33
  338. package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
  339. package/lib/services/appcues.spec.js +0 -37
  340. package/lib/services/maia/Access/updateAccess.spec.js +0 -137
  341. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -121
  342. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
  343. package/lib/services/maia/Agents/connectors.spec.js +0 -496
  344. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  345. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
  346. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  347. package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
  348. package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
  349. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
  350. package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -325
  351. package/lib/services/maia/Agents/getAgents.spec.js +0 -1135
  352. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  353. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
  354. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  355. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  356. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  357. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  358. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  359. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  360. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  361. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  362. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  363. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  364. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  365. package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -225
  366. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
  367. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  368. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
  369. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  370. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  371. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  372. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  373. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  374. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  375. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  376. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  377. package/lib/services/maia/client.spec.js +0 -56
  378. package/lib/services/utils/fetchCOR.spec.js +0 -211
  379. package/lib/services/utils/getCookie.spec.js +0 -20
  380. package/lib/services/utils/mapChatMessages.helpers.spec.js +0 -336
  381. package/lib/services/utils/mapChatMessages.spec.js +0 -254
  382. package/lib/store/chatsSidebarOptimistic.spec.js +0 -145
  383. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  384. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  385. package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
  386. package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
  387. package/lib/store/sessions/sessionNotifications.spec.js +0 -106
  388. package/lib/store/sessions/sessionStreamManager.helpers.spec.js +0 -177
  389. package/lib/store/sessions/sessionStreamManager.spec.js +0 -939
  390. package/lib/store/sessions/sessions.types.spec.js +0 -16
  391. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  392. package/lib/store/useChatsStore.spec.js +0 -619
  393. package/lib/store/useFaqsStore.spec.js +0 -57
  394. package/lib/utils/actionCategoryMap.spec.js +0 -18
  395. package/lib/utils/agentDisplayName.spec.js +0 -48
  396. package/lib/utils/autoApproveStorage.spec.js +0 -25
  397. package/lib/utils/chatInputFiles.spec.js +0 -39
  398. package/lib/utils/contextMentionIcons.spec.js +0 -41
  399. package/lib/utils/contextMentionLabel.spec.js +0 -13
  400. package/lib/utils/contextMentionTriggers.spec.js +0 -44
  401. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  402. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  403. package/lib/utils/entityLinkRender.spec.js +0 -72
  404. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  405. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  406. package/lib/utils/formatUnreadCount.spec.js +0 -12
  407. package/lib/utils/getUnitFileSize.spec.js +0 -18
  408. package/lib/utils/hitlAnalytics.spec.js +0 -136
  409. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -124
  410. package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
  411. package/lib/utils/imagePreprocessor.spec.js +0 -112
  412. package/lib/utils/maiaPageRoute.spec.js +0 -23
  413. package/lib/utils/mapBackendLang.spec.js +0 -19
  414. package/lib/utils/navigateContextEntity.spec.js +0 -50
  415. package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
  416. package/lib/utils/openTaskInCorPanel.spec.js +0 -43
  417. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  418. package/lib/utils/reasoningMappers.spec.js +0 -103
  419. package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
  420. package/lib/utils/renderContextMentions.helpers.spec.js +0 -87
  421. package/lib/utils/renderContextMentions.spec.js +0 -268
  422. package/lib/utils/retryCompletion.spec.js +0 -181
  423. package/lib/utils/skillContentSize.spec.js +0 -13
  424. package/lib/utils/slashCommandMarker.spec.js +0 -43
  425. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  426. package/lib/utils/sseStreamContent.spec.js +0 -31
  427. package/lib/utils/streamActivityMessages.helpers.spec.js +0 -84
  428. package/lib/utils/streamActivityMessages.spec.js +0 -336
  429. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -101,10 +101,13 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
101
101
  };
102
102
  var connectorActionLabel = function connectorActionLabel(slug) {
103
103
  if (!formValues.selectedConnectors.includes(slug)) return undefined;
104
- if (formValues.connectorStatuses[slug] === 'needs_attention') return t('accessibilitySection.connectorAuthenticateAction');
105
- if (formValues.connectorStatuses[slug] === 'error') return t('accessibilitySection.connectorReopenAction');
104
+ var status = formValues.connectorStatuses[slug];
105
+ if (status === 'needs_attention' || status === 'error') return t('accessibilitySection.connectorAuthenticateAction');
106
106
  return undefined;
107
107
  };
108
+ var connectorStatusLabel = function connectorStatusLabel(connector) {
109
+ return connector.requires_auth && formValues.selectedConnectors.includes(connector.slug) && formValues.connectorStatuses[connector.slug] === 'ok' ? t('accessibilitySection.connectorAuthenticatedStatus') : undefined;
110
+ };
108
111
  var handleConnectorAuthorization = /*#__PURE__*/function () {
109
112
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(slug) {
110
113
  var _values$general;
@@ -239,7 +242,6 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
239
242
  cancelled = true;
240
243
  };
241
244
  }, [externalConnectorsEnabled]);
242
- var selectedConnectorSet = new Set(formValues.selectedConnectors);
243
245
  return /*#__PURE__*/_jsxs(SCAASWrapper, {
244
246
  children: [/*#__PURE__*/_jsxs(SCAASHeader, {
245
247
  $index: 0,
@@ -284,12 +286,12 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
284
286
  description: connector.description || t('accessibilitySection.connectorAccessDescription', {
285
287
  name: connector.name
286
288
  }),
287
- checked: selectedConnectorSet.has(connector.slug),
289
+ checked: formValues.selectedConnectors.includes(connector.slug),
288
290
  onChange: function onChange(checked) {
289
291
  return handleConnectorAccessChange(connector.slug, checked);
290
292
  },
293
+ statusLabel: connectorStatusLabel(connector),
291
294
  actionLabel: connectorActionLabel(connector.slug),
292
- actionTone: formValues.connectorStatuses[connector.slug] === 'error' ? 'error' : 'attention',
293
295
  onAction: function onAction() {
294
296
  return handleConnectorAuthorization(connector.slug);
295
297
  },
@@ -345,4 +347,4 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
345
347
  })]
346
348
  });
347
349
  };
348
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVRyYW5zbGF0aW9uIiwiT3B0aW9uQWNjZXNzaWJpbGl0eSIsIk9wdGlvbkNvclBlcm1pc3Npb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImF1dGhvcml6ZUNvbm5lY3RvciIsImdldEFnZW50Q29ubmVjdG9ycyIsImdldEF2YWlsYWJsZUNvbm5lY3RvcnMiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsImhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MiLCJTQ0FBU1dyYXBwZXIiLCJTQ0FBU0hlYWRlciIsIlNDQUFTVGl0bGUiLCJTQ0FBU1N1YnRpdGxlIiwiU0NBQVNDb250ZW50IiwiU0NBQVNTZWN0aW9uIiwiU0NBQVNTZWN0aW9uSGVhZGVyIiwiU0NBQVNTZWN0aW9uVGl0bGUiLCJTQ0FBU1NlY3Rpb25TdWJ0aXRsZSIsIlNDQUFTT3B0aW9uc0NvbnRhaW5lciIsIlNDQUFTRGl2aWRlciIsImJ1aWxkQWNjZXNzaWJpbGl0eVNlbGVjdGlvbiIsIm1hcEFjY2Vzc2liaWxpdHlBbmFseXRpY3NPcHRpb24iLCJzaG91bGRUcmFja0FjY2Vzc2liaWxpdHlDbGllbnRTZWxlY3Rpb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDT1JfUEVSTUlTU0lPTl9ST1dTIiwic2x1ZyIsInRpdGxlS2V5IiwiZGVzY3JpcHRpb25LZXkiLCJBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiIsIl9yZWYiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkyIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MyIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTQiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk1IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NiIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTgiLCJfZm9ybVZhbHVlcyRjbGllbnRzIiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsImFjY2Vzc1R5cGUiLCJhY2Nlc3NpYmlsaXR5IiwiY2xpZW50cyIsImNvckFjY2VzcyIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImNvbm5lY3RvclN0YXR1c2VzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZm9ybVZhbHVlcyIsInNldEZvcm1WYWx1ZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNhdGFsb2dDb25uZWN0b3JzIiwic2V0Q2F0YWxvZ0Nvbm5lY3RvcnMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImF1dGhvcml6aW5nU2x1ZyIsInNldEF1dGhvcml6aW5nU2x1ZyIsImV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJvcHRpb24iLCJhY2Nlc3NpYmlsaXR5VHlwZSIsImFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQiLCJfb2JqZWN0U3ByZWFkIiwiaGFuZGxlQ29yQWNjZXNzQ2hhbmdlIiwiY2hlY2tlZCIsImNvbm5lY3RvckNvciIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UiLCJjb25uZWN0b3JNY3AiLCJuZXh0IiwiU2V0IiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiY29ubmVjdG9yQWN0aW9uTGFiZWwiLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsImhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3ZhbHVlcyRnZW5lcmFsIiwiYWdlbnRJZCIsInBvcHVwIiwiX3lpZWxkJHdhaXRGb3JDb25uZWN0IiwiYXV0aG9yaXplZCIsImVycm9yIiwiY29ubmVjdG9ycyIsInVwZGF0ZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsImdlbmVyYWwiLCJpZCIsImFicnVwdCIsIndpbmRvdyIsIm9wZW4iLCJsb2NhdGlvbiIsImhyZWYiLCJzZW50IiwidG9TdHJpbmciLCJzbHVncyIsImNsb3NlZCIsImNsb3NlIiwiZmluZCIsImNvbm5lY3RvciIsImNvbm5lY3Rpb25fc3RhdHVzIiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk3IiwibmV4dENvbm5lY3RvcnMiLCJjdXJyZW50IiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImpvaW4iLCJpbmNvbWluZyIsImtleSIsInZhbHVlIiwiY2FuY2VsbGVkIiwidGhlbiIsImZpbHRlciIsImlzX2FjdGl2ZSIsImNvbnNvbGUiLCJzZWxlY3RlZENvbm5lY3RvclNldCIsImNoaWxkcmVuIiwiJGluZGV4IiwibWFwIiwiX3JlZjMiLCJ0aXRsZSIsImNvbmNhdCIsImRlc2NyaXB0aW9uIiwib25DaGFuZ2UiLCJuYW1lIiwiaGFzIiwiYWN0aW9uTGFiZWwiLCJhY3Rpb25Ub25lIiwib25BY3Rpb24iLCJhY3Rpb25CdXN5Iiwib3B0aW9uU2VsZWN0ZWQiLCJpc0NsaWVudCIsInByb3BzIiwic2VsZWN0ZWRDbGllbnRzIiwiY2xpZW50IiwiX2NsaWVudCRuYW1lIiwiaXNfZGVsZXRlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBPcHRpb25BY2Nlc3NpYmlsaXR5IH0gZnJvbSAnLi4vLi4vLi4vYXRvbXMvT3B0aW9uQWNjZXNzaWJpbGl0eSdcbmltcG9ydCB7IE9wdGlvbkNvclBlcm1pc3Npb24gfSBmcm9tICcuLi8uLi8uLi9hdG9tcy9PcHRpb25Db3JQZXJtaXNzaW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHtcbiAgYXV0aG9yaXplQ29ubmVjdG9yLFxuICBnZXRBZ2VudENvbm5lY3RvcnMsXG4gIGdldEF2YWlsYWJsZUNvbm5lY3RvcnMsXG4gIHdhaXRGb3JDb25uZWN0b3JBdXRob3JpemF0aW9uLFxuICB0eXBlIENhdGFsb2dDb25uZWN0b3IsXG4gIHR5cGUgQ29ubmVjdG9yQ29ubmVjdGlvblN0YXR1cyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvY29ubmVjdG9ycydcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBDb3JBY2Nlc3MsIENvclRvb2xHcm91cFNsdWcsIERFRkFVTFRfQ09SX0FDQ0VTUyB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcbmltcG9ydCB7IGhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHMvbWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcydcbmltcG9ydCB7XG4gIFNDQUFTV3JhcHBlcixcbiAgU0NBQVNIZWFkZXIsXG4gIFNDQUFTVGl0bGUsXG4gIFNDQUFTU3VidGl0bGUsXG4gIFNDQUFTQ29udGVudCxcbiAgU0NBQVNTZWN0aW9uLFxuICBTQ0FBU1NlY3Rpb25IZWFkZXIsXG4gIFNDQUFTU2VjdGlvblRpdGxlLFxuICBTQ0FBU1NlY3Rpb25TdWJ0aXRsZSxcbiAgU0NBQVNPcHRpb25zQ29udGFpbmVyLFxuICBTQ0FBU0RpdmlkZXIsXG59IGZyb20gJy4vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24uc3R5bGVzJ1xuaW1wb3J0IHsgQ2xpZW50Rm9ybURhdGEgfSBmcm9tICcuL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLmludGVyZmFjZSdcbmltcG9ydCB7XG4gIGJ1aWxkQWNjZXNzaWJpbGl0eVNlbGVjdGlvbixcbiAgbWFwQWNjZXNzaWJpbGl0eUFuYWx5dGljc09wdGlvbixcbiAgc2hvdWxkVHJhY2tBY2Nlc3NpYmlsaXR5Q2xpZW50U2VsZWN0aW9uLFxufSBmcm9tICcuL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLmhlbHBlcnMnXG5cbmludGVyZmFjZSBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvblByb3BzIHtcbiAgdmFsdWVzPzoge1xuICAgIGdlbmVyYWw/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9XG4gICAgYWNjZXNzaWJpbGl0eT86IHtcbiAgICAgIGFjY2Vzc1R5cGU/OiBzdHJpbmdcbiAgICAgIGNsaWVudHM/OiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbFxuICAgICAgY29yQWNjZXNzPzogQ29yQWNjZXNzXG4gICAgICBzZWxlY3RlZENvbm5lY3RvcnM/OiBzdHJpbmdbXVxuICAgICAgY29ubmVjdG9yU3RhdHVzZXM/OiBSZWNvcmQ8c3RyaW5nLCBDb25uZWN0b3JDb25uZWN0aW9uU3RhdHVzPlxuICAgIH1cbiAgfVxuICBoYW5kbGVTZXRBZ2VudFZhbHVlcz86ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxufVxuXG4vLyBPcmRlbiA9IGplcmFycXXDrWEgZGUgQ09SIChjbGllbnRlID4gcHJveWVjdG8gPiB0YXJlYSksIGRlIG3DoXMgYW1wbGlvIGEgbcOhcyBlc3BlY8OtZmljby5cbmNvbnN0IENPUl9QRVJNSVNTSU9OX1JPV1M6IHsgc2x1ZzogQ29yVG9vbEdyb3VwU2x1ZzsgdGl0bGVLZXk6IHN0cmluZzsgZGVzY3JpcHRpb25LZXk6IHN0cmluZyB9W10gPSBbXG4gIHsgc2x1ZzogJ2NsaWVudGVzJywgdGl0bGVLZXk6ICdjbGllbnRBY2Nlc3NUaXRsZScsIGRlc2NyaXB0aW9uS2V5OiAnY2xpZW50QWNjZXNzRGVzY3JpcHRpb24nIH0sXG4gIHsgc2x1ZzogJ3Byb3llY3RvcycsIHRpdGxlS2V5OiAncHJvamVjdEFjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICdwcm9qZWN0QWNjZXNzRGVzY3JpcHRpb24nIH0sXG4gIHsgc2x1ZzogJ3RhcmVhcycsIHRpdGxlS2V5OiAndGFza0FjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICd0YXNrQWNjZXNzRGVzY3JpcHRpb24nIH0sXG5dXG5cbmV4cG9ydCBjb25zdCBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiA9ICh7IHZhbHVlcywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgfTogQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3QgW2Zvcm1WYWx1ZXMsIHNldEZvcm1WYWx1ZXNdID0gdXNlU3RhdGU8e1xuICAgIGFjY2Vzc1R5cGU6IHN0cmluZ1xuICAgIGNsaWVudHM6IENsaWVudEZvcm1EYXRhW10gfCBudWxsXG4gICAgY29yQWNjZXNzOiBDb3JBY2Nlc3NcbiAgICBzZWxlY3RlZENvbm5lY3RvcnM6IHN0cmluZ1tdXG4gICAgY29ubmVjdG9yU3RhdHVzZXM6IFJlY29yZDxzdHJpbmcsIENvbm5lY3RvckNvbm5lY3Rpb25TdGF0dXM+XG4gIH0+KHtcbiAgICBhY2Nlc3NUeXBlOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmFjY2Vzc1R5cGUgfHwgJ2NvbXBhbnknLFxuICAgIGNsaWVudHM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50cyB8fCBudWxsLFxuICAgIGNvckFjY2VzczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jb3JBY2Nlc3MgPz8gREVGQVVMVF9DT1JfQUNDRVNTLFxuICAgIHNlbGVjdGVkQ29ubmVjdG9yczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnMgfHwgW10sXG4gICAgY29ubmVjdG9yU3RhdHVzZXM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY29ubmVjdG9yU3RhdHVzZXMgfHwge30sXG4gIH0pXG4gIC8vIEVsIGNhdMOhbG9nbyBsbyBkZWZpbmUgZWwgYmFjayAoYEdFVCAvdjEvY29ubmVjdG9yc2ApOyBlbCBBQk0gcmVuZGVyaXphIHVuYSBmaWxhIHBvciBjb25lY3RvciBhY3Rpdm8uXG4gIGNvbnN0IFtjYXRhbG9nQ29ubmVjdG9ycywgc2V0Q2F0YWxvZ0Nvbm5lY3RvcnNdID0gdXNlU3RhdGU8Q2F0YWxvZ0Nvbm5lY3RvcltdPihbXSlcbiAgY29uc3QgW2F1dGhvcml6aW5nU2x1Zywgc2V0QXV0aG9yaXppbmdTbHVnXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQgPSBoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzKClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcsIGNsaWVudHM/OiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5hY2Nlc3NpYmlsaXR5VHlwZSwgeyBvcHRpb246IG1hcEFjY2Vzc2liaWxpdHlBbmFseXRpY3NPcHRpb24ob3B0aW9uKSB9KVxuXG4gICAgaWYgKHNob3VsZFRyYWNrQWNjZXNzaWJpbGl0eUNsaWVudFNlbGVjdGlvbihjbGllbnRzKSkge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQpXG4gICAgfVxuXG4gICAgc2V0Rm9ybVZhbHVlcyh7XG4gICAgICAuLi5idWlsZEFjY2Vzc2liaWxpdHlTZWxlY3Rpb24ob3B0aW9uLCBjbGllbnRzLCBmb3JtVmFsdWVzLmNvckFjY2VzcywgZm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMpLFxuICAgICAgY29ubmVjdG9yU3RhdHVzZXM6IGZvcm1WYWx1ZXMuY29ubmVjdG9yU3RhdHVzZXMsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvckFjY2Vzc0NoYW5nZSA9IChzbHVnOiBDb3JUb29sR3JvdXBTbHVnLCBjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNvbm5lY3RvckNvciwgeyBvcHRpb246IGNoZWNrZWQgPyAnb24nIDogJ29mZicsIHNsdWcgfSlcblxuICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIGNvckFjY2VzczogeyAuLi5wcmV2LmNvckFjY2VzcywgW3NsdWddOiBjaGVja2VkIH0sXG4gICAgfSkpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UgPSAoc2x1Zzogc3RyaW5nLCBjaGVja2VkOiBib29sZWFuKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmNvbm5lY3Rvck1jcCwgeyBvcHRpb246IGNoZWNrZWQgPyAnb24nIDogJ29mZicsIHNsdWcgfSlcblxuICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBuZXh0ID0gbmV3IFNldChwcmV2LnNlbGVjdGVkQ29ubmVjdG9ycylcbiAgICAgIGlmIChjaGVja2VkKSB7XG4gICAgICAgIG5leHQuYWRkKHNsdWcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0LmRlbGV0ZShzbHVnKVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBBcnJheS5mcm9tKG5leHQpLFxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjb25uZWN0b3JBY3Rpb25MYWJlbCA9IChzbHVnOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmICghZm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMuaW5jbHVkZXMoc2x1ZykpIHJldHVybiB1bmRlZmluZWRcbiAgICBpZiAoZm9ybVZhbHVlcy5jb25uZWN0b3JTdGF0dXNlc1tzbHVnXSA9PT0gJ25lZWRzX2F0dGVudGlvbicpXG4gICAgICByZXR1cm4gdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQXV0aGVudGljYXRlQWN0aW9uJylcbiAgICBpZiAoZm9ybVZhbHVlcy5jb25uZWN0b3JTdGF0dXNlc1tzbHVnXSA9PT0gJ2Vycm9yJykgcmV0dXJuIHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvclJlb3BlbkFjdGlvbicpXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29ubmVjdG9yQXV0aG9yaXphdGlvbiA9IGFzeW5jIChzbHVnOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBhZ2VudElkID0gdmFsdWVzPy5nZW5lcmFsPy5pZFxuICAgIGlmICghYWdlbnRJZCB8fCBhdXRob3JpemluZ1NsdWcpIHJldHVyblxuXG4gICAgLy8gT3BlbiBzeW5jaHJvbm91c2x5IGZyb20gdGhlIGNsaWNrIHNvIHRoZSBicm93c2VyIGRvZXMgbm90IGJsb2NrIE9BdXRoLlxuICAgIGNvbnN0IHBvcHVwID0gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnLCAncG9wdXA9eWVzLHdpZHRoPTU2MCxoZWlnaHQ9NzYwJylcbiAgICBpZiAoIXBvcHVwKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvclBvcHVwQmxvY2tlZCcpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0QXV0aG9yaXppbmdTbHVnKHNsdWcpXG4gICAgdHJ5IHtcbiAgICAgIHBvcHVwLmxvY2F0aW9uLmhyZWYgPSBhd2FpdCBhdXRob3JpemVDb25uZWN0b3Ioc2x1ZylcbiAgICAgIGNvbnN0IHsgYXV0aG9yaXplZCwgZXJyb3IgfSA9IGF3YWl0IHdhaXRGb3JDb25uZWN0b3JBdXRob3JpemF0aW9uKHtcbiAgICAgICAgYWdlbnRJZDogYWdlbnRJZC50b1N0cmluZygpLFxuICAgICAgICBzbHVnczogW3NsdWddLFxuICAgICAgICBwb3B1cCxcbiAgICAgIH0pXG4gICAgICBpZiAoIWF1dGhvcml6ZWQuaW5jbHVkZXMoc2x1ZykpIHtcbiAgICAgICAgaWYgKCFwb3B1cC5jbG9zZWQpIHBvcHVwLmNsb3NlKClcbiAgICAgICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7IC4uLnByZXYsIGNvbm5lY3RvclN0YXR1c2VzOiB7IC4uLnByZXYuY29ubmVjdG9yU3RhdHVzZXMsIFtzbHVnXTogJ2Vycm9yJyB9IH0pKVxuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKGVycm9yICYmIGVycm9yICE9PSAndGltZW91dCcgPyBlcnJvciA6IHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckF1dGhJbmNvbXBsZXRlJykpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgY29uc3QgY29ubmVjdG9ycyA9IGF3YWl0IGdldEFnZW50Q29ubmVjdG9ycyhhZ2VudElkLnRvU3RyaW5nKCkpXG4gICAgICBjb25zdCB1cGRhdGVkID0gY29ubmVjdG9ycy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3Iuc2x1ZyA9PT0gc2x1ZylcbiAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBjb25uZWN0b3JTdGF0dXNlczogeyAuLi5wcmV2LmNvbm5lY3RvclN0YXR1c2VzLCBbc2x1Z106IHVwZGF0ZWQ/LmNvbm5lY3Rpb25fc3RhdHVzIHx8ICdvaycgfSxcbiAgICAgIH0pKVxuICAgIH0gY2F0Y2gge1xuICAgICAgaWYgKCFwb3B1cC5jbG9zZWQpIHBvcHVwLmNsb3NlKClcbiAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoeyAuLi5wcmV2LCBjb25uZWN0b3JTdGF0dXNlczogeyAuLi5wcmV2LmNvbm5lY3RvclN0YXR1c2VzLCBbc2x1Z106ICdlcnJvcicgfSB9KSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQXV0aEZhaWxlZCcpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRBdXRob3JpemluZ1NsdWcobnVsbClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG5leHRDb25uZWN0b3JzID0gdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnNcbiAgICBpZiAoIW5leHRDb25uZWN0b3JzKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSBbLi4ucHJldi5zZWxlY3RlZENvbm5lY3RvcnNdLnNvcnQoKS5qb2luKCd8JylcbiAgICAgIGNvbnN0IGluY29taW5nID0gWy4uLm5leHRDb25uZWN0b3JzXS5zb3J0KCkuam9pbignfCcpXG4gICAgICBpZiAoY3VycmVudCA9PT0gaW5jb21pbmcpIHtcbiAgICAgICAgcmV0dXJuIHByZXZcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIHNlbGVjdGVkQ29ubmVjdG9yczogbmV4dENvbm5lY3RvcnMsXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW3ZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uc2VsZWN0ZWRDb25uZWN0b3JzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmb3JtVmFsdWVzKSB7XG4gICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcz8uKHtcbiAgICAgICAga2V5OiAnYWNjZXNzaWJpbGl0eScsXG4gICAgICAgIHZhbHVlOiBmb3JtVmFsdWVzLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtmb3JtVmFsdWVzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgbGV0IGNhbmNlbGxlZCA9IGZhbHNlXG4gICAgZ2V0QXZhaWxhYmxlQ29ubmVjdG9ycygpXG4gICAgICAudGhlbihjb25uZWN0b3JzID0+IHtcbiAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXRDYXRhbG9nQ29ubmVjdG9ycyhjb25uZWN0b3JzLmZpbHRlcihjb25uZWN0b3IgPT4gY29ubmVjdG9yLmlzX2FjdGl2ZSkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjb25uZWN0b3JzIGNhdGFsb2c6JywgZXJyb3IpXG4gICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgc2V0Q2F0YWxvZ0Nvbm5lY3RvcnMoW10pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNhbmNlbGxlZCA9IHRydWVcbiAgICB9XG4gIH0sIFtleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkXSlcblxuICBjb25zdCBzZWxlY3RlZENvbm5lY3RvclNldCA9IG5ldyBTZXQoZm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBQVNXcmFwcGVyPlxuICAgICAgPFNDQUFTSGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FBU1RpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi50aXRsZVNlY3Rpb24nKX08L1NDQUFTVGl0bGU+XG4gICAgICAgIDxTQ0FBU1N1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5zdWJ0aXRsZVNlY3Rpb24nKX08L1NDQUFTU3VidGl0bGU+XG4gICAgICA8L1NDQUFTSGVhZGVyPlxuICAgICAgPFNDQUFTQ29udGVudCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvclBlcm1pc3Npb25zVGl0bGUnKX08L1NDQUFTU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb3JQZXJtaXNzaW9uc1N1YnRpdGxlJyl9PC9TQ0FBU1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQUFTU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICB7Q09SX1BFUk1JU1NJT05fUk9XUy5tYXAoKHsgc2x1ZywgdGl0bGVLZXksIGRlc2NyaXB0aW9uS2V5IH0pID0+IChcbiAgICAgICAgICAgIDxPcHRpb25Db3JQZXJtaXNzaW9uXG4gICAgICAgICAgICAgIGtleT17c2x1Z31cbiAgICAgICAgICAgICAgdGl0bGU9e3QoYGFjY2Vzc2liaWxpdHlTZWN0aW9uLiR7dGl0bGVLZXl9YCl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KGBhY2Nlc3NpYmlsaXR5U2VjdGlvbi4ke2Rlc2NyaXB0aW9uS2V5fWApfVxuICAgICAgICAgICAgICBjaGVja2VkPXtmb3JtVmFsdWVzLmNvckFjY2Vzc1tzbHVnXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29yQWNjZXNzQ2hhbmdlKHNsdWcsIGNoZWNrZWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TQ0FBU1NlY3Rpb24+XG5cbiAgICAgICAge2V4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NBQVNEaXZpZGVyIC8+XG5cbiAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb24+XG4gICAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5tY3BQZXJtaXNzaW9uc1RpdGxlJyl9PC9TQ0FBU1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm1jcFBlcm1pc3Npb25zU3VidGl0bGUnKX08L1NDQUFTU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L1NDQUFTU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgICAge2NhdGFsb2dDb25uZWN0b3JzLm1hcChjb25uZWN0b3IgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25Db3JQZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICBrZXk9e2Nvbm5lY3Rvci5zbHVnfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2Nvbm5lY3Rvci5uYW1lfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3IuZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQWNjZXNzRGVzY3JpcHRpb24nLCB7IG5hbWU6IGNvbm5lY3Rvci5uYW1lIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZENvbm5lY3RvclNldC5oYXMoY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlKGNvbm5lY3Rvci5zbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbkxhYmVsPXtjb25uZWN0b3JBY3Rpb25MYWJlbChjb25uZWN0b3Iuc2x1Zyl9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25Ub25lPXtmb3JtVmFsdWVzLmNvbm5lY3RvclN0YXR1c2VzW2Nvbm5lY3Rvci5zbHVnXSA9PT0gJ2Vycm9yJyA/ICdlcnJvcicgOiAnYXR0ZW50aW9uJ31cbiAgICAgICAgICAgICAgICAgIG9uQWN0aW9uPXsoKSA9PiBoYW5kbGVDb25uZWN0b3JBdXRob3JpemF0aW9uKGNvbm5lY3Rvci5zbHVnKX1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbkJ1c3k9e2F1dGhvcml6aW5nU2x1ZyA9PT0gY29ubmVjdG9yLnNsdWd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cblxuICAgICAgICA8U0NBQVNEaXZpZGVyIC8+XG5cbiAgICAgICAgPFNDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi52aXNpYmlsaXR5VGl0bGUnKX08L1NDQUFTU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi53aG9DYW5BY2Nlc3MnKX08L1NDQUFTU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgIDxTQ0FBU09wdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICA8T3B0aW9uQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uYWxsQ29tcGFueVRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5hbGxDb21wYW55RGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24oJ2NvbXBhbnknKX1cbiAgICAgICAgICAgICAgb3B0aW9uU2VsZWN0ZWQ9e2Zvcm1WYWx1ZXMuYWNjZXNzVHlwZX1cbiAgICAgICAgICAgICAgbmFtZT1cImNvbXBhbnlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxPcHRpb25BY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnRUaXRsZScpfVxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50RGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgaXNDbGllbnQ9e2Zvcm1WYWx1ZXMuYWNjZXNzVHlwZSA9PT0gJ2NsaWVudHMnfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eyhwcm9wcz86IENsaWVudEZvcm1EYXRhW10pID0+IGhhbmRsZVNlbGVjdE9wdGlvbignY2xpZW50cycsIHByb3BzKX1cbiAgICAgICAgICAgICAgb3B0aW9uU2VsZWN0ZWQ9e2Zvcm1WYWx1ZXMuYWNjZXNzVHlwZX1cbiAgICAgICAgICAgICAgbmFtZT1cImNsaWVudHNcIlxuICAgICAgICAgICAgICBzZWxlY3RlZENsaWVudHM9e2Zvcm1WYWx1ZXMuY2xpZW50cz8ubWFwKGNsaWVudCA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjbGllbnQuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogY2xpZW50Lm5hbWUgPz8gJycsXG4gICAgICAgICAgICAgICAgaXNfYWN0aXZlOiBjbGllbnQuaXNfYWN0aXZlLFxuICAgICAgICAgICAgICAgIGlzX2RlbGV0ZWQ6IGNsaWVudC5pc19kZWxldGVkLFxuICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE9wdGlvbkFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgICAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm93blRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5vd25EZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbignb25seV9tZScpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwib25seV9tZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBQVNPcHRpb25zQ29udGFpbmVyPlxuICAgICAgICA8L1NDQUFTU2VjdGlvbj5cbiAgICAgIDwvU0NBQVNDb250ZW50PlxuICAgIDwvU0NBQVNXcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQzNDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxtQkFBbUIsUUFBUSxvQ0FBb0M7QUFDeEUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEsNEJBQTRCO0FBQzdELFNBQ0VDLGtCQUFrQixFQUNsQkMsa0JBQWtCLEVBQ2xCQyxzQkFBc0IsRUFDdEJDLDZCQUE2QixRQUd4Qiw2Q0FBNkM7QUFDcEQsU0FBU0Msa0JBQWtCLFFBQVEseURBQXlEO0FBQzVGLFNBQXNDQyxrQkFBa0IsUUFBUSw0Q0FBNEM7QUFD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
350
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVRyYW5zbGF0aW9uIiwiT3B0aW9uQWNjZXNzaWJpbGl0eSIsIk9wdGlvbkNvclBlcm1pc3Npb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImF1dGhvcml6ZUNvbm5lY3RvciIsImdldEFnZW50Q29ubmVjdG9ycyIsImdldEF2YWlsYWJsZUNvbm5lY3RvcnMiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsImhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MiLCJTQ0FBU1dyYXBwZXIiLCJTQ0FBU0hlYWRlciIsIlNDQUFTVGl0bGUiLCJTQ0FBU1N1YnRpdGxlIiwiU0NBQVNDb250ZW50IiwiU0NBQVNTZWN0aW9uIiwiU0NBQVNTZWN0aW9uSGVhZGVyIiwiU0NBQVNTZWN0aW9uVGl0bGUiLCJTQ0FBU1NlY3Rpb25TdWJ0aXRsZSIsIlNDQUFTT3B0aW9uc0NvbnRhaW5lciIsIlNDQUFTRGl2aWRlciIsImJ1aWxkQWNjZXNzaWJpbGl0eVNlbGVjdGlvbiIsIm1hcEFjY2Vzc2liaWxpdHlBbmFseXRpY3NPcHRpb24iLCJzaG91bGRUcmFja0FjY2Vzc2liaWxpdHlDbGllbnRTZWxlY3Rpb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDT1JfUEVSTUlTU0lPTl9ST1dTIiwic2x1ZyIsInRpdGxlS2V5IiwiZGVzY3JpcHRpb25LZXkiLCJBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiIsIl9yZWYiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkyIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MyIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTQiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk1IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NiIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTgiLCJfZm9ybVZhbHVlcyRjbGllbnRzIiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsImFjY2Vzc1R5cGUiLCJhY2Nlc3NpYmlsaXR5IiwiY2xpZW50cyIsImNvckFjY2VzcyIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImNvbm5lY3RvclN0YXR1c2VzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZm9ybVZhbHVlcyIsInNldEZvcm1WYWx1ZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNhdGFsb2dDb25uZWN0b3JzIiwic2V0Q2F0YWxvZ0Nvbm5lY3RvcnMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImF1dGhvcml6aW5nU2x1ZyIsInNldEF1dGhvcml6aW5nU2x1ZyIsImV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJvcHRpb24iLCJhY2Nlc3NpYmlsaXR5VHlwZSIsImFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQiLCJfb2JqZWN0U3ByZWFkIiwiaGFuZGxlQ29yQWNjZXNzQ2hhbmdlIiwiY2hlY2tlZCIsImNvbm5lY3RvckNvciIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UiLCJjb25uZWN0b3JNY3AiLCJuZXh0IiwiU2V0IiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiY29ubmVjdG9yQWN0aW9uTGFiZWwiLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsInN0YXR1cyIsImNvbm5lY3RvclN0YXR1c0xhYmVsIiwiY29ubmVjdG9yIiwicmVxdWlyZXNfYXV0aCIsImhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3ZhbHVlcyRnZW5lcmFsIiwiYWdlbnRJZCIsInBvcHVwIiwiX3lpZWxkJHdhaXRGb3JDb25uZWN0IiwiYXV0aG9yaXplZCIsImVycm9yIiwiY29ubmVjdG9ycyIsInVwZGF0ZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsImdlbmVyYWwiLCJpZCIsImFicnVwdCIsIndpbmRvdyIsIm9wZW4iLCJsb2NhdGlvbiIsImhyZWYiLCJzZW50IiwidG9TdHJpbmciLCJzbHVncyIsImNsb3NlZCIsImNsb3NlIiwiZmluZCIsImNvbm5lY3Rpb25fc3RhdHVzIiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk3IiwibmV4dENvbm5lY3RvcnMiLCJjdXJyZW50IiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImpvaW4iLCJpbmNvbWluZyIsImtleSIsInZhbHVlIiwiY2FuY2VsbGVkIiwidGhlbiIsImZpbHRlciIsImlzX2FjdGl2ZSIsImNvbnNvbGUiLCJjaGlsZHJlbiIsIiRpbmRleCIsIm1hcCIsIl9yZWYzIiwidGl0bGUiLCJjb25jYXQiLCJkZXNjcmlwdGlvbiIsIm9uQ2hhbmdlIiwibmFtZSIsInN0YXR1c0xhYmVsIiwiYWN0aW9uTGFiZWwiLCJvbkFjdGlvbiIsImFjdGlvbkJ1c3kiLCJvcHRpb25TZWxlY3RlZCIsImlzQ2xpZW50IiwicHJvcHMiLCJzZWxlY3RlZENsaWVudHMiLCJjbGllbnQiLCJfY2xpZW50JG5hbWUiLCJpc19kZWxldGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IE9wdGlvbkFjY2Vzc2liaWxpdHkgfSBmcm9tICcuLi8uLi8uLi9hdG9tcy9PcHRpb25BY2Nlc3NpYmlsaXR5J1xuaW1wb3J0IHsgT3B0aW9uQ29yUGVybWlzc2lvbiB9IGZyb20gJy4uLy4uLy4uL2F0b21zL09wdGlvbkNvclBlcm1pc3Npb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQge1xuICBhdXRob3JpemVDb25uZWN0b3IsXG4gIGdldEFnZW50Q29ubmVjdG9ycyxcbiAgZ2V0QXZhaWxhYmxlQ29ubmVjdG9ycyxcbiAgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24sXG4gIHR5cGUgQ2F0YWxvZ0Nvbm5lY3RvcixcbiAgdHlwZSBDb25uZWN0b3JDb25uZWN0aW9uU3RhdHVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IENvckFjY2VzcywgQ29yVG9vbEdyb3VwU2x1ZywgREVGQVVMVF9DT1JfQUNDRVNTIH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuaW1wb3J0IHsgaGFzTWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcyB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0YW50cy9tYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzJ1xuaW1wb3J0IHtcbiAgU0NBQVNXcmFwcGVyLFxuICBTQ0FBU0hlYWRlcixcbiAgU0NBQVNUaXRsZSxcbiAgU0NBQVNTdWJ0aXRsZSxcbiAgU0NBQVNDb250ZW50LFxuICBTQ0FBU1NlY3Rpb24sXG4gIFNDQUFTU2VjdGlvbkhlYWRlcixcbiAgU0NBQVNTZWN0aW9uVGl0bGUsXG4gIFNDQUFTU2VjdGlvblN1YnRpdGxlLFxuICBTQ0FBU09wdGlvbnNDb250YWluZXIsXG4gIFNDQUFTRGl2aWRlcixcbn0gZnJvbSAnLi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi5zdHlsZXMnXG5pbXBvcnQgeyBDbGllbnRGb3JtRGF0YSB9IGZyb20gJy4vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24uaW50ZXJmYWNlJ1xuaW1wb3J0IHtcbiAgYnVpbGRBY2Nlc3NpYmlsaXR5U2VsZWN0aW9uLFxuICBtYXBBY2Nlc3NpYmlsaXR5QW5hbHl0aWNzT3B0aW9uLFxuICBzaG91bGRUcmFja0FjY2Vzc2liaWxpdHlDbGllbnRTZWxlY3Rpb24sXG59IGZyb20gJy4vQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24uaGVscGVycydcblxuaW50ZXJmYWNlIEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uUHJvcHMge1xuICB2YWx1ZXM/OiB7XG4gICAgZ2VuZXJhbD86IHsgaWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH1cbiAgICBhY2Nlc3NpYmlsaXR5Pzoge1xuICAgICAgYWNjZXNzVHlwZT86IHN0cmluZ1xuICAgICAgY2xpZW50cz86IENsaWVudEZvcm1EYXRhW10gfCBudWxsXG4gICAgICBjb3JBY2Nlc3M/OiBDb3JBY2Nlc3NcbiAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycz86IHN0cmluZ1tdXG4gICAgICBjb25uZWN0b3JTdGF0dXNlcz86IFJlY29yZDxzdHJpbmcsIENvbm5lY3RvckNvbm5lY3Rpb25TdGF0dXM+XG4gICAgfVxuICB9XG4gIGhhbmRsZVNldEFnZW50VmFsdWVzPzogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG59XG5cbi8vIE9yZGVuID0gamVyYXJxdcOtYSBkZSBDT1IgKGNsaWVudGUgPiBwcm95ZWN0byA+IHRhcmVhKSwgZGUgbcOhcyBhbXBsaW8gYSBtw6FzIGVzcGVjw61maWNvLlxuY29uc3QgQ09SX1BFUk1JU1NJT05fUk9XUzogeyBzbHVnOiBDb3JUb29sR3JvdXBTbHVnOyB0aXRsZUtleTogc3RyaW5nOyBkZXNjcmlwdGlvbktleTogc3RyaW5nIH1bXSA9IFtcbiAgeyBzbHVnOiAnY2xpZW50ZXMnLCB0aXRsZUtleTogJ2NsaWVudEFjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICdjbGllbnRBY2Nlc3NEZXNjcmlwdGlvbicgfSxcbiAgeyBzbHVnOiAncHJveWVjdG9zJywgdGl0bGVLZXk6ICdwcm9qZWN0QWNjZXNzVGl0bGUnLCBkZXNjcmlwdGlvbktleTogJ3Byb2plY3RBY2Nlc3NEZXNjcmlwdGlvbicgfSxcbiAgeyBzbHVnOiAndGFyZWFzJywgdGl0bGVLZXk6ICd0YXNrQWNjZXNzVGl0bGUnLCBkZXNjcmlwdGlvbktleTogJ3Rhc2tBY2Nlc3NEZXNjcmlwdGlvbicgfSxcbl1cblxuZXhwb3J0IGNvbnN0IEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uID0gKHsgdmFsdWVzLCBoYW5kbGVTZXRBZ2VudFZhbHVlcyB9OiBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oJ2FibV9hZ2VudF9zZWN0aW9uJylcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcblxuICBjb25zdCBbZm9ybVZhbHVlcywgc2V0Rm9ybVZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgYWNjZXNzVHlwZTogc3RyaW5nXG4gICAgY2xpZW50czogQ2xpZW50Rm9ybURhdGFbXSB8IG51bGxcbiAgICBjb3JBY2Nlc3M6IENvckFjY2Vzc1xuICAgIHNlbGVjdGVkQ29ubmVjdG9yczogc3RyaW5nW11cbiAgICBjb25uZWN0b3JTdGF0dXNlczogUmVjb3JkPHN0cmluZywgQ29ubmVjdG9yQ29ubmVjdGlvblN0YXR1cz5cbiAgfT4oe1xuICAgIGFjY2Vzc1R5cGU6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uYWNjZXNzVHlwZSB8fCAnY29tcGFueScsXG4gICAgY2xpZW50czogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jbGllbnRzIHx8IG51bGwsXG4gICAgY29yQWNjZXNzOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNvckFjY2VzcyA/PyBERUZBVUxUX0NPUl9BQ0NFU1MsXG4gICAgc2VsZWN0ZWRDb25uZWN0b3JzOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LnNlbGVjdGVkQ29ubmVjdG9ycyB8fCBbXSxcbiAgICBjb25uZWN0b3JTdGF0dXNlczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jb25uZWN0b3JTdGF0dXNlcyB8fCB7fSxcbiAgfSlcbiAgLy8gRWwgY2F0w6Fsb2dvIGxvIGRlZmluZSBlbCBiYWNrIChgR0VUIC92MS9jb25uZWN0b3JzYCk7IGVsIEFCTSByZW5kZXJpemEgdW5hIGZpbGEgcG9yIGNvbmVjdG9yIGFjdGl2by5cbiAgY29uc3QgW2NhdGFsb2dDb25uZWN0b3JzLCBzZXRDYXRhbG9nQ29ubmVjdG9yc10gPSB1c2VTdGF0ZTxDYXRhbG9nQ29ubmVjdG9yW10+KFtdKVxuICBjb25zdCBbYXV0aG9yaXppbmdTbHVnLCBzZXRBdXRob3JpemluZ1NsdWddID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZCA9IGhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MoKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE9wdGlvbiA9IChvcHRpb246IHN0cmluZywgY2xpZW50cz86IENsaWVudEZvcm1EYXRhW10gfCBudWxsKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFjY2Vzc2liaWxpdHlUeXBlLCB7IG9wdGlvbjogbWFwQWNjZXNzaWJpbGl0eUFuYWx5dGljc09wdGlvbihvcHRpb24pIH0pXG5cbiAgICBpZiAoc2hvdWxkVHJhY2tBY2Nlc3NpYmlsaXR5Q2xpZW50U2VsZWN0aW9uKGNsaWVudHMpKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWNjZXNzaWJpbGl0eVNlbGVjdENsaWVudClcbiAgICB9XG5cbiAgICBzZXRGb3JtVmFsdWVzKHtcbiAgICAgIC4uLmJ1aWxkQWNjZXNzaWJpbGl0eVNlbGVjdGlvbihvcHRpb24sIGNsaWVudHMsIGZvcm1WYWx1ZXMuY29yQWNjZXNzLCBmb3JtVmFsdWVzLnNlbGVjdGVkQ29ubmVjdG9ycyksXG4gICAgICBjb25uZWN0b3JTdGF0dXNlczogZm9ybVZhbHVlcy5jb25uZWN0b3JTdGF0dXNlcyxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29yQWNjZXNzQ2hhbmdlID0gKHNsdWc6IENvclRvb2xHcm91cFNsdWcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yQ29yLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgY29yQWNjZXNzOiB7IC4uLnByZXYuY29yQWNjZXNzLCBbc2x1Z106IGNoZWNrZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbm5lY3RvckFjY2Vzc0NoYW5nZSA9IChzbHVnOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yTWNwLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHByZXYuc2VsZWN0ZWRDb25uZWN0b3JzKVxuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgbmV4dC5hZGQoc2x1ZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQuZGVsZXRlKHNsdWcpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IEFycmF5LmZyb20obmV4dCksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbm5lY3RvckFjdGlvbkxhYmVsID0gKHNsdWc6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKCFmb3JtVmFsdWVzLnNlbGVjdGVkQ29ubmVjdG9ycy5pbmNsdWRlcyhzbHVnKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGNvbnN0IHN0YXR1cyA9IGZvcm1WYWx1ZXMuY29ubmVjdG9yU3RhdHVzZXNbc2x1Z11cbiAgICBpZiAoc3RhdHVzID09PSAnbmVlZHNfYXR0ZW50aW9uJyB8fCBzdGF0dXMgPT09ICdlcnJvcicpIHJldHVybiB0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JBdXRoZW50aWNhdGVBY3Rpb24nKVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGNvbm5lY3RvclN0YXR1c0xhYmVsID0gKGNvbm5lY3RvcjogQ2F0YWxvZ0Nvbm5lY3Rvcik6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICAgIGNvbm5lY3Rvci5yZXF1aXJlc19hdXRoICYmXG4gICAgZm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMuaW5jbHVkZXMoY29ubmVjdG9yLnNsdWcpICYmXG4gICAgZm9ybVZhbHVlcy5jb25uZWN0b3JTdGF0dXNlc1tjb25uZWN0b3Iuc2x1Z10gPT09ICdvaydcbiAgICAgID8gdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQXV0aGVudGljYXRlZFN0YXR1cycpXG4gICAgICA6IHVuZGVmaW5lZFxuXG4gIGNvbnN0IGhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24gPSBhc3luYyAoc2x1Zzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYWdlbnRJZCA9IHZhbHVlcz8uZ2VuZXJhbD8uaWRcbiAgICBpZiAoIWFnZW50SWQgfHwgYXV0aG9yaXppbmdTbHVnKSByZXR1cm5cblxuICAgIC8vIE9wZW4gc3luY2hyb25vdXNseSBmcm9tIHRoZSBjbGljayBzbyB0aGUgYnJvd3NlciBkb2VzIG5vdCBibG9jayBPQXV0aC5cbiAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJywgJ3BvcHVwPXllcyx3aWR0aD01NjAsaGVpZ2h0PTc2MCcpXG4gICAgaWYgKCFwb3B1cCkge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JQb3B1cEJsb2NrZWQnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldEF1dGhvcml6aW5nU2x1ZyhzbHVnKVxuICAgIHRyeSB7XG4gICAgICBwb3B1cC5sb2NhdGlvbi5ocmVmID0gYXdhaXQgYXV0aG9yaXplQ29ubmVjdG9yKHNsdWcpXG4gICAgICBjb25zdCB7IGF1dGhvcml6ZWQsIGVycm9yIH0gPSBhd2FpdCB3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbih7XG4gICAgICAgIGFnZW50SWQ6IGFnZW50SWQudG9TdHJpbmcoKSxcbiAgICAgICAgc2x1Z3M6IFtzbHVnXSxcbiAgICAgICAgcG9wdXAsXG4gICAgICB9KVxuICAgICAgaWYgKCFhdXRob3JpemVkLmluY2x1ZGVzKHNsdWcpKSB7XG4gICAgICAgIGlmICghcG9wdXAuY2xvc2VkKSBwb3B1cC5jbG9zZSgpXG4gICAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoeyAuLi5wcmV2LCBjb25uZWN0b3JTdGF0dXNlczogeyAuLi5wcmV2LmNvbm5lY3RvclN0YXR1c2VzLCBbc2x1Z106ICdlcnJvcicgfSB9KSlcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihlcnJvciAmJiBlcnJvciAhPT0gJ3RpbWVvdXQnID8gZXJyb3IgOiB0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JBdXRoSW5jb21wbGV0ZScpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbm5lY3RvcnMgPSBhd2FpdCBnZXRBZ2VudENvbm5lY3RvcnMoYWdlbnRJZC50b1N0cmluZygpKVxuICAgICAgY29uc3QgdXBkYXRlZCA9IGNvbm5lY3RvcnMuZmluZChjb25uZWN0b3IgPT4gY29ubmVjdG9yLnNsdWcgPT09IHNsdWcpXG4gICAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgY29ubmVjdG9yU3RhdHVzZXM6IHsgLi4ucHJldi5jb25uZWN0b3JTdGF0dXNlcywgW3NsdWddOiB1cGRhdGVkPy5jb25uZWN0aW9uX3N0YXR1cyB8fCAnb2snIH0sXG4gICAgICB9KSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIGlmICghcG9wdXAuY2xvc2VkKSBwb3B1cC5jbG9zZSgpXG4gICAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4gKHsgLi4ucHJldiwgY29ubmVjdG9yU3RhdHVzZXM6IHsgLi4ucHJldi5jb25uZWN0b3JTdGF0dXNlcywgW3NsdWddOiAnZXJyb3InIH0gfSkpXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckF1dGhGYWlsZWQnKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0QXV0aG9yaXppbmdTbHVnKG51bGwpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29ubmVjdG9ycyA9IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uc2VsZWN0ZWRDb25uZWN0b3JzXG4gICAgaWYgKCFuZXh0Q29ubmVjdG9ycykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gWy4uLnByZXYuc2VsZWN0ZWRDb25uZWN0b3JzXS5zb3J0KCkuam9pbignfCcpXG4gICAgICBjb25zdCBpbmNvbWluZyA9IFsuLi5uZXh0Q29ubmVjdG9yc10uc29ydCgpLmpvaW4oJ3wnKVxuICAgICAgaWYgKGN1cnJlbnQgPT09IGluY29taW5nKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IG5leHRDb25uZWN0b3JzLFxuICAgICAgfVxuICAgIH0pXG4gIH0sIFt2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LnNlbGVjdGVkQ29ubmVjdG9yc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9ybVZhbHVlcykge1xuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM/Lih7XG4gICAgICAgIGtleTogJ2FjY2Vzc2liaWxpdHknLFxuICAgICAgICB2YWx1ZTogZm9ybVZhbHVlcyxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbZm9ybVZhbHVlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZVxuICAgIGdldEF2YWlsYWJsZUNvbm5lY3RvcnMoKVxuICAgICAgLnRoZW4oY29ubmVjdG9ycyA9PiB7XG4gICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgc2V0Q2F0YWxvZ0Nvbm5lY3RvcnMoY29ubmVjdG9ycy5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5pc19hY3RpdmUpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY29ubmVjdG9ycyBjYXRhbG9nOicsIGVycm9yKVxuICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgIHNldENhdGFsb2dDb25uZWN0b3JzKFtdKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWxsZWQgPSB0cnVlXG4gICAgfVxuICB9LCBbZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBQVNXcmFwcGVyPlxuICAgICAgPFNDQUFTSGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FBU1RpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi50aXRsZVNlY3Rpb24nKX08L1NDQUFTVGl0bGU+XG4gICAgICAgIDxTQ0FBU1N1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5zdWJ0aXRsZVNlY3Rpb24nKX08L1NDQUFTU3VidGl0bGU+XG4gICAgICA8L1NDQUFTSGVhZGVyPlxuICAgICAgPFNDQUFTQ29udGVudCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvclBlcm1pc3Npb25zVGl0bGUnKX08L1NDQUFTU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb3JQZXJtaXNzaW9uc1N1YnRpdGxlJyl9PC9TQ0FBU1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQUFTU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICB7Q09SX1BFUk1JU1NJT05fUk9XUy5tYXAoKHsgc2x1ZywgdGl0bGVLZXksIGRlc2NyaXB0aW9uS2V5IH0pID0+IChcbiAgICAgICAgICAgIDxPcHRpb25Db3JQZXJtaXNzaW9uXG4gICAgICAgICAgICAgIGtleT17c2x1Z31cbiAgICAgICAgICAgICAgdGl0bGU9e3QoYGFjY2Vzc2liaWxpdHlTZWN0aW9uLiR7dGl0bGVLZXl9YCl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KGBhY2Nlc3NpYmlsaXR5U2VjdGlvbi4ke2Rlc2NyaXB0aW9uS2V5fWApfVxuICAgICAgICAgICAgICBjaGVja2VkPXtmb3JtVmFsdWVzLmNvckFjY2Vzc1tzbHVnXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29yQWNjZXNzQ2hhbmdlKHNsdWcsIGNoZWNrZWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TQ0FBU1NlY3Rpb24+XG5cbiAgICAgICAge2V4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NBQVNEaXZpZGVyIC8+XG5cbiAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb24+XG4gICAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5tY3BQZXJtaXNzaW9uc1RpdGxlJyl9PC9TQ0FBU1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm1jcFBlcm1pc3Npb25zU3VidGl0bGUnKX08L1NDQUFTU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L1NDQUFTU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgICAge2NhdGFsb2dDb25uZWN0b3JzLm1hcChjb25uZWN0b3IgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25Db3JQZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICBrZXk9e2Nvbm5lY3Rvci5zbHVnfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2Nvbm5lY3Rvci5uYW1lfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3IuZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQWNjZXNzRGVzY3JpcHRpb24nLCB7IG5hbWU6IGNvbm5lY3Rvci5uYW1lIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtmb3JtVmFsdWVzLnNlbGVjdGVkQ29ubmVjdG9ycy5pbmNsdWRlcyhjb25uZWN0b3Iuc2x1Zyl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17Y2hlY2tlZCA9PiBoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UoY29ubmVjdG9yLnNsdWcsIGNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgc3RhdHVzTGFiZWw9e2Nvbm5lY3RvclN0YXR1c0xhYmVsKGNvbm5lY3Rvcil9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25MYWJlbD17Y29ubmVjdG9yQWN0aW9uTGFiZWwoY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgb25BY3Rpb249eygpID0+IGhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24oY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgYWN0aW9uQnVzeT17YXV0aG9yaXppbmdTbHVnID09PSBjb25uZWN0b3Iuc2x1Z31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FBU0RpdmlkZXIgLz5cblxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnZpc2liaWxpdHlUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLndob0NhbkFjY2VzcycpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgPFNDQUFTT3B0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxPcHRpb25BY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5hbGxDb21wYW55VGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmFsbENvbXBhbnlEZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbignY29tcGFueScpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY29tcGFueVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE9wdGlvbkFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgICAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNsaWVudFRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnREZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBpc0NsaWVudD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlID09PSAnY2xpZW50cyd9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KHByb3BzPzogQ2xpZW50Rm9ybURhdGFbXSkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdjbGllbnRzJywgcHJvcHMpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50c1wiXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ2xpZW50cz17Zm9ybVZhbHVlcy5jbGllbnRzPy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNsaWVudC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUsXG4gICAgICAgICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQsXG4gICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8T3B0aW9uQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ub3duVGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm93bkRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KCkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdvbmx5X21lJyl9XG4gICAgICAgICAgICAgIG9wdGlvblNlbGVjdGVkPXtmb3JtVmFsdWVzLmFjY2Vzc1R5cGV9XG4gICAgICAgICAgICAgIG5hbWU9XCJvbmx5X21lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FBU09wdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgPC9TQ0FBU0NvbnRlbnQ+XG4gICAgPC9TQ0FBU1dyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVEsRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDM0MsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsbUJBQW1CLFFBQVEsb0NBQW9DO0FBQ3hFLFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxN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
@@ -8,13 +8,12 @@ export var getUniqueString = function getUniqueString(prevStrings, stringToChang
8
8
  _stringToChange$split3 = _stringToChange$split2[1],
9
9
  extension = _stringToChange$split3 === void 0 ? '' : _stringToChange$split3;
10
10
  var ext = extension ? ".".concat(extension) : '';
11
- var prevStringsSet = new Set(prevStrings);
12
- if (!prevStringsSet.has(stringToChange)) {
11
+ if (!(prevStrings !== null && prevStrings !== void 0 && prevStrings.includes(stringToChange))) {
13
12
  return stringToChange;
14
13
  }
15
14
  var counter = 1;
16
15
  var newFilename = stringToChange;
17
- while (prevStringsSet.has(newFilename)) {
16
+ while (prevStrings !== null && prevStrings !== void 0 && prevStrings.includes(newFilename)) {
18
17
  newFilename = "".concat(filename, "(").concat(counter, ")").concat(ext);
19
18
  counter += 1;
20
19
  }
@@ -44,12 +43,11 @@ export var processKnowledgeFiles = function processKnowledgeFiles(_ref) {
44
43
  return attachment.name;
45
44
  });
46
45
  var runningTotalSize = computeAttachmentsTotalSize(existingAttachments);
47
- var allowedExtensionSet = new Set(allowedExtensions);
48
46
  files.forEach(function (file) {
49
47
  var _fileNameParts$pop;
50
48
  var fileNameParts = file.name.split('.');
51
49
  var fileExtension = fileNameParts.length > 1 ? ".".concat((_fileNameParts$pop = fileNameParts.pop()) === null || _fileNameParts$pop === void 0 ? void 0 : _fileNameParts$pop.toLowerCase()) : '';
52
- if (!allowedExtensionSet.has(fileExtension)) {
50
+ if (!allowedExtensions.includes(fileExtension)) {
53
51
  invalidExtensionFiles.push(file.name);
54
52
  return;
55
53
  }
@@ -132,4 +130,4 @@ export var createClosedKnowledgeFileErrorModalState = function createClosedKnowl
132
130
  invalidExtensionFiles: []
133
131
  };
134
132
  };
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfS05PV0xFREdFX1RPVEFMX1NJWkUiLCJnZXRVbmlxdWVTdHJpbmciLCJwcmV2U3RyaW5ncyIsInN0cmluZ1RvQ2hhbmdlIiwiX3N0cmluZ1RvQ2hhbmdlJHNwbGl0Iiwic3BsaXQiLCJfc3RyaW5nVG9DaGFuZ2Ukc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWxlbmFtZSIsIl9zdHJpbmdUb0NoYW5nZSRzcGxpdDMiLCJleHRlbnNpb24iLCJleHQiLCJjb25jYXQiLCJwcmV2U3RyaW5nc1NldCIsIlNldCIsImhhcyIsImNvdW50ZXIiLCJuZXdGaWxlbmFtZSIsImNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZSIsImF0dGFjaG1lbnRzIiwicmVkdWNlIiwidG90YWwiLCJhdHRhY2htZW50Iiwic2l6ZSIsIk51bWJlciIsImlzTmFOIiwicHJvY2Vzc0tub3dsZWRnZUZpbGVzIiwiX3JlZiIsImZpbGVzIiwiZXhpc3RpbmdBdHRhY2htZW50cyIsImFsbG93ZWRFeHRlbnNpb25zIiwiZmlsZVR5cGVzIiwiX3JlZiRtYXhUb3RhbFNpemUiLCJtYXhUb3RhbFNpemUiLCJfcmVmJGNyZWF0ZUlkIiwiY3JlYXRlSWQiLCJEYXRlIiwibm93IiwiTWF0aCIsInJhbmRvbSIsImV4Y2VlZGVkRmlsZXMiLCJpbnZhbGlkRXh0ZW5zaW9uRmlsZXMiLCJpbnNlcnRlZEZpbGVzIiwiYXR0YWNobWVudHNOYW1lcyIsIm1hcCIsIm5hbWUiLCJydW5uaW5nVG90YWxTaXplIiwiYWxsb3dlZEV4dGVuc2lvblNldCIsImZvckVhY2giLCJmaWxlIiwiX2ZpbGVOYW1lUGFydHMkcG9wIiwiZmlsZU5hbWVQYXJ0cyIsImZpbGVFeHRlbnNpb24iLCJsZW5ndGgiLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsInB1c2giLCJuZXdUb3RhbFNpemUiLCJ0eXBlRmlsZSIsInR5cGUiLCJ1bmlxdWVOYW1lIiwicGFyc2VkRmlsZSIsIkZpbGUiLCJhdHRhY2htZW50RmlsZSIsImlkIiwic3RhdHVzIiwiaGFzRXJyb3JzIiwiY2FuUHJldmlld0tub3dsZWRnZUF0dGFjaG1lbnQiLCJvcmlnaW5hbEZpbGUiLCJCb29sZWFuIiwidXJsX3RodW1ibmFpbCIsInVybF9vcmlnaW5hbCIsInVybF9maWxlIiwic2hvdWxkQmxvY2tLbm93bGVkZ2VVcGxvYWQiLCJpc0F0U2l6ZUxpbWl0Iiwic2hvdWxkRW5hYmxlS25vd2xlZGdlRHJhZ1N0YXRlIiwic2hvdWxkUHJvY2Vzc0tub3dsZWRnZUZpbGVJbnB1dCIsImFwcGVuZEtub3dsZWRnZUF0dGFjaG1lbnRzIiwiY3VycmVudCIsImluc2VydGVkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwicmVtb3ZlS25vd2xlZGdlQXR0YWNobWVudEJ5SW5kZXgiLCJpbmRleCIsImZpbHRlciIsIl8iLCJhdHRhY2htZW50SW5kZXgiLCJyZXNvbHZlS25vd2xlZGdlQXR0YWNobWVudEF0SW5kZXgiLCJfYXR0YWNobWVudHMkaW5kZXgiLCJzaG91bGRSdW5Lbm93bGVkZ2VEb3dubG9hZEVmZmVjdCIsInN1Y2Nlc3MiLCJlcnJvciIsImlzTG9hZGluZyIsInNob3VsZEhhbmRsZUtub3dsZWRnZUF0dGFjaG1lbnRBY3Rpb24iLCJpc0Rvd25sb2FkaW5nIiwicmVzb2x2ZUtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUiLCJpbnB1dCIsImlzT3BlbiIsImV4Y2x1ZGVkRmlsZXMiLCJjcmVhdGVDbG9zZWRLbm93bGVkZ2VGaWxlRXJyb3JNb2RhbFN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0FibVNlY3Rpb24vQWJtS25vd2xlZGdlU2VjdGlvbi5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5cbmV4cG9ydCBjb25zdCBNQVhfS05PV0xFREdFX1RPVEFMX1NJWkUgPSA1ICogMTAyNCAqIDEwMjRcblxuZXhwb3J0IGNvbnN0IGdldFVuaXF1ZVN0cmluZyA9IChwcmV2U3RyaW5nczogc3RyaW5nW10sIHN0cmluZ1RvQ2hhbmdlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBbZmlsZW5hbWUsIGV4dGVuc2lvbiA9ICcnXSA9IHN0cmluZ1RvQ2hhbmdlLnNwbGl0KCcuJylcbiAgY29uc3QgZXh0ID0gZXh0ZW5zaW9uID8gYC4ke2V4dGVuc2lvbn1gIDogJydcblxuICBjb25zdCBwcmV2U3RyaW5nc1NldCA9IG5ldyBTZXQocHJldlN0cmluZ3MpXG5cbiAgaWYgKCFwcmV2U3RyaW5nc1NldC5oYXMoc3RyaW5nVG9DaGFuZ2UpKSB7XG4gICAgcmV0dXJuIHN0cmluZ1RvQ2hhbmdlXG4gIH1cblxuICBsZXQgY291bnRlciA9IDFcbiAgbGV0IG5ld0ZpbGVuYW1lID0gc3RyaW5nVG9DaGFuZ2VcbiAgd2hpbGUgKHByZXZTdHJpbmdzU2V0LmhhcyhuZXdGaWxlbmFtZSkpIHtcbiAgICBuZXdGaWxlbmFtZSA9IGAke2ZpbGVuYW1lfSgke2NvdW50ZXJ9KSR7ZXh0fWBcbiAgICBjb3VudGVyICs9IDFcbiAgfVxuXG4gIHJldHVybiBuZXdGaWxlbmFtZVxufVxuXG5leHBvcnQgY29uc3QgY29tcHV0ZUF0dGFjaG1lbnRzVG90YWxTaXplID0gKGF0dGFjaG1lbnRzOiBQaWNrPEF0dGFjaG1lbnRGaWxlLCAnc2l6ZSc+W10pOiBudW1iZXIgPT5cbiAgYXR0YWNobWVudHMucmVkdWNlKCh0b3RhbCwgYXR0YWNobWVudCkgPT4ge1xuICAgIGNvbnN0IHNpemUgPSB0eXBlb2YgYXR0YWNobWVudC5zaXplID09PSAnbnVtYmVyJyA/IGF0dGFjaG1lbnQuc2l6ZSA6IE51bWJlcihhdHRhY2htZW50LnNpemUpXG4gICAgcmV0dXJuIHRvdGFsICsgKE51bWJlci5pc05hTihzaXplKSA/IDAgOiBzaXplKVxuICB9LCAwKVxuXG5leHBvcnQgdHlwZSBQcm9jZXNzS25vd2xlZGdlRmlsZXNSZXN1bHQgPSB7XG4gIGluc2VydGVkRmlsZXM6IEF0dGFjaG1lbnRGaWxlW11cbiAgZXhjZWVkZWRGaWxlczogc3RyaW5nW11cbiAgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBzdHJpbmdbXVxuICBoYXNFcnJvcnM6IGJvb2xlYW5cbn1cblxudHlwZSBQcm9jZXNzS25vd2xlZGdlRmlsZXNPcHRpb25zID0ge1xuICBmaWxlczogRmlsZVtdXG4gIGV4aXN0aW5nQXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgYWxsb3dlZEV4dGVuc2lvbnM6IHN0cmluZ1tdXG4gIGZpbGVUeXBlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICBtYXhUb3RhbFNpemU/OiBudW1iZXJcbiAgY3JlYXRlSWQ/OiAoKSA9PiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IHByb2Nlc3NLbm93bGVkZ2VGaWxlcyA9ICh7XG4gIGZpbGVzLFxuICBleGlzdGluZ0F0dGFjaG1lbnRzLFxuICBhbGxvd2VkRXh0ZW5zaW9ucyxcbiAgZmlsZVR5cGVzLFxuICBtYXhUb3RhbFNpemUgPSBNQVhfS05PV0xFREdFX1RPVEFMX1NJWkUsXG4gIGNyZWF0ZUlkID0gKCkgPT4gYCR7RGF0ZS5ub3coKX0tJHtNYXRoLnJhbmRvbSgpfWAsXG59OiBQcm9jZXNzS25vd2xlZGdlRmlsZXNPcHRpb25zKTogUHJvY2Vzc0tub3dsZWRnZUZpbGVzUmVzdWx0ID0+IHtcbiAgY29uc3QgZXhjZWVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICBjb25zdCBpbnZhbGlkRXh0ZW5zaW9uRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgaW5zZXJ0ZWRGaWxlczogQXR0YWNobWVudEZpbGVbXSA9IFtdXG4gIGNvbnN0IGF0dGFjaG1lbnRzTmFtZXMgPSBleGlzdGluZ0F0dGFjaG1lbnRzLm1hcChhdHRhY2htZW50ID0+IGF0dGFjaG1lbnQubmFtZSlcbiAgbGV0IHJ1bm5pbmdUb3RhbFNpemUgPSBjb21wdXRlQXR0YWNobWVudHNUb3RhbFNpemUoZXhpc3RpbmdBdHRhY2htZW50cylcblxuICBjb25zdCBhbGxvd2VkRXh0ZW5zaW9uU2V0ID0gbmV3IFNldChhbGxvd2VkRXh0ZW5zaW9ucylcblxuICBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlTmFtZVBhcnRzLmxlbmd0aCA+IDEgPyBgLiR7ZmlsZU5hbWVQYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKX1gIDogJydcblxuICAgIGlmICghYWxsb3dlZEV4dGVuc2lvblNldC5oYXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgIGludmFsaWRFeHRlbnNpb25GaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IG5ld1RvdGFsU2l6ZSA9IHJ1bm5pbmdUb3RhbFNpemUgKyBmaWxlLnNpemVcbiAgICBpZiAobmV3VG90YWxTaXplID4gbWF4VG90YWxTaXplKSB7XG4gICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgdHlwZUZpbGUgPSBmaWxlLnR5cGUgfHwgZmlsZVR5cGVzW2ZpbGVFeHRlbnNpb25dXG4gICAgY29uc3QgdW5pcXVlTmFtZSA9IGdldFVuaXF1ZVN0cmluZyhhdHRhY2htZW50c05hbWVzLCBmaWxlLm5hbWUpXG4gICAgY29uc3QgcGFyc2VkRmlsZSA9IG5ldyBGaWxlKFtmaWxlXSwgdW5pcXVlTmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KVxuXG4gICAgY29uc3QgYXR0YWNobWVudEZpbGU6IEF0dGFjaG1lbnRGaWxlID0ge1xuICAgICAgZmlsZTogcGFyc2VkRmlsZSxcbiAgICAgIGlkOiBjcmVhdGVJZCgpLFxuICAgICAgbmFtZTogdW5pcXVlTmFtZSxcbiAgICAgIHNpemU6IGZpbGUuc2l6ZSxcbiAgICAgIHR5cGU6IHR5cGVGaWxlLFxuICAgICAgc3RhdHVzOiAnc3RhcnRlZCcsXG4gICAgfVxuXG4gICAgaW5zZXJ0ZWRGaWxlcy5wdXNoKGF0dGFjaG1lbnRGaWxlKVxuICAgIGF0dGFjaG1lbnRzTmFtZXMucHVzaCh1bmlxdWVOYW1lKVxuICAgIHJ1bm5pbmdUb3RhbFNpemUgKz0gZmlsZS5zaXplXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBpbnNlcnRlZEZpbGVzLFxuICAgIGV4Y2VlZGVkRmlsZXMsXG4gICAgaW52YWxpZEV4dGVuc2lvbkZpbGVzLFxuICAgIGhhc0Vycm9yczogaW52YWxpZEV4dGVuc2lvbkZpbGVzLmxlbmd0aCA+IDAgfHwgZXhjZWVkZWRGaWxlcy5sZW5ndGggPiAwLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjYW5QcmV2aWV3S25vd2xlZGdlQXR0YWNobWVudCA9IChhdHRhY2htZW50OiBBdHRhY2htZW50RmlsZSk6IGJvb2xlYW4gPT4ge1xuICBpZiAoYXR0YWNobWVudC5zdGF0dXMgPT09ICdmYWlsZWQnKSByZXR1cm4gZmFsc2VcblxuICByZXR1cm4gKFxuICAgIGF0dGFjaG1lbnQuZmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICBhdHRhY2htZW50Lm9yaWdpbmFsRmlsZSBpbnN0YW5jZW9mIEZpbGUgfHxcbiAgICBCb29sZWFuKGF0dGFjaG1lbnQudXJsX3RodW1ibmFpbCB8fCBhdHRhY2htZW50LnVybF9vcmlnaW5hbCB8fCBhdHRhY2htZW50LnVybF9maWxlKVxuICApXG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRCbG9ja0tub3dsZWRnZVVwbG9hZCA9IChpc0F0U2l6ZUxpbWl0OiBib29sZWFuKTogYm9vbGVhbiA9PiBpc0F0U2l6ZUxpbWl0XG5cbmV4cG9ydCBjb25zdCBzaG91bGRFbmFibGVLbm93bGVkZ2VEcmFnU3RhdGUgPSAoaXNBdFNpemVMaW1pdDogYm9vbGVhbik6IGJvb2xlYW4gPT4gIWlzQXRTaXplTGltaXRcblxuZXhwb3J0IGNvbnN0IHNob3VsZFByb2Nlc3NLbm93bGVkZ2VGaWxlSW5wdXQgPSAoZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGZpbGVzIGlzIEZpbGVMaXN0ID0+XG4gIEJvb2xlYW4oZmlsZXMgJiYgZmlsZXMubGVuZ3RoID4gMClcblxuZXhwb3J0IGNvbnN0IGFwcGVuZEtub3dsZWRnZUF0dGFjaG1lbnRzID0gKGN1cnJlbnQ6IEF0dGFjaG1lbnRGaWxlW10sIGluc2VydGVkOiBBdHRhY2htZW50RmlsZVtdKTogQXR0YWNobWVudEZpbGVbXSA9PiBbXG4gIC4uLihjdXJyZW50IHx8IFtdKSxcbiAgLi4uaW5zZXJ0ZWQsXG5dXG5cbmV4cG9ydCBjb25zdCByZW1vdmVLbm93bGVkZ2VBdHRhY2htZW50QnlJbmRleCA9IChcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW10sXG4gIGluZGV4OiBudW1iZXJcbik6IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsID0+IHtcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBhdHRhY2htZW50cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBhdHRhY2htZW50cy5maWx0ZXIoKF8sIGF0dGFjaG1lbnRJbmRleCkgPT4gYXR0YWNobWVudEluZGV4ICE9PSBpbmRleClcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVLbm93bGVkZ2VBdHRhY2htZW50QXRJbmRleCA9IChcbiAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW10sXG4gIGluZGV4OiBudW1iZXJcbik6IEF0dGFjaG1lbnRGaWxlIHwgbnVsbCA9PiBhdHRhY2htZW50c1tpbmRleF0gPz8gbnVsbFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkUnVuS25vd2xlZGdlRG93bmxvYWRFZmZlY3QgPSAoXG4gIHN1Y2Nlc3M6IHVua25vd24sXG4gIGVycm9yOiB1bmtub3duLFxuICBpc0xvYWRpbmc6IGJvb2xlYW5cbik6IHN1Y2Nlc3MgaXMgeyBibG9iOiBCbG9iOyBmaWxlbmFtZTogc3RyaW5nIH0gPT4gQm9vbGVhbihzdWNjZXNzICYmICFlcnJvciAmJiAhaXNMb2FkaW5nKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkSGFuZGxlS25vd2xlZGdlQXR0YWNobWVudEFjdGlvbiA9IChpc0Rvd25sb2FkaW5nOiBib29sZWFuKTogYm9vbGVhbiA9PiAhaXNEb3dubG9hZGluZ1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUgPSAoaW5wdXQ6IHtcbiAgZXhjZWVkZWRGaWxlczogc3RyaW5nW11cbiAgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBzdHJpbmdbXVxufSk6IHtcbiAgaXNPcGVuOiBib29sZWFuXG4gIGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdXG4gIGV4Y2VlZGVkRmlsZXM6IHN0cmluZ1tdXG4gIGludmFsaWRFeHRlbnNpb25GaWxlczogc3RyaW5nW11cbn0gPT4gKHtcbiAgaXNPcGVuOiB0cnVlLFxuICBleGNsdWRlZEZpbGVzOiBbXSxcbiAgZXhjZWVkZWRGaWxlczogaW5wdXQuZXhjZWVkZWRGaWxlcyxcbiAgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBpbnB1dC5pbnZhbGlkRXh0ZW5zaW9uRmlsZXMsXG59KVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQ2xvc2VkS25vd2xlZGdlRmlsZUVycm9yTW9kYWxTdGF0ZSA9ICgpOiB7XG4gIGlzT3BlbjogYm9vbGVhblxuICBleGNsdWRlZEZpbGVzOiBzdHJpbmdbXVxuICBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXVxuICBpbnZhbGlkRXh0ZW5zaW9uRmlsZXM6IHN0cmluZ1tdXG59ID0+ICh7XG4gIGlzT3BlbjogZmFsc2UsXG4gIGV4Y2x1ZGVkRmlsZXM6IFtdLFxuICBleGNlZWRlZEZpbGVzOiBbXSxcbiAgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBbXSxcbn0pXG4iXSwibWFwcGluZ3MiOiI7O0FBRUEsT0FBTyxJQUFNQSx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUk7QUFFdkQsT0FBTyxJQUFNQyxlQUFlLEdBQUcsU0FBbEJB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
133
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQVhfS05PV0xFREdFX1RPVEFMX1NJWkUiLCJnZXRVbmlxdWVTdHJpbmciLCJwcmV2U3RyaW5ncyIsInN0cmluZ1RvQ2hhbmdlIiwiX3N0cmluZ1RvQ2hhbmdlJHNwbGl0Iiwic3BsaXQiLCJfc3RyaW5nVG9DaGFuZ2Ukc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJmaWxlbmFtZSIsIl9zdHJpbmdUb0NoYW5nZSRzcGxpdDMiLCJleHRlbnNpb24iLCJleHQiLCJjb25jYXQiLCJpbmNsdWRlcyIsImNvdW50ZXIiLCJuZXdGaWxlbmFtZSIsImNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZSIsImF0dGFjaG1lbnRzIiwicmVkdWNlIiwidG90YWwiLCJhdHRhY2htZW50Iiwic2l6ZSIsIk51bWJlciIsImlzTmFOIiwicHJvY2Vzc0tub3dsZWRnZUZpbGVzIiwiX3JlZiIsImZpbGVzIiwiZXhpc3RpbmdBdHRhY2htZW50cyIsImFsbG93ZWRFeHRlbnNpb25zIiwiZmlsZVR5cGVzIiwiX3JlZiRtYXhUb3RhbFNpemUiLCJtYXhUb3RhbFNpemUiLCJfcmVmJGNyZWF0ZUlkIiwiY3JlYXRlSWQiLCJEYXRlIiwibm93IiwiTWF0aCIsInJhbmRvbSIsImV4Y2VlZGVkRmlsZXMiLCJpbnZhbGlkRXh0ZW5zaW9uRmlsZXMiLCJpbnNlcnRlZEZpbGVzIiwiYXR0YWNobWVudHNOYW1lcyIsIm1hcCIsIm5hbWUiLCJydW5uaW5nVG90YWxTaXplIiwiZm9yRWFjaCIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJmaWxlTmFtZVBhcnRzIiwiZmlsZUV4dGVuc2lvbiIsImxlbmd0aCIsInBvcCIsInRvTG93ZXJDYXNlIiwicHVzaCIsIm5ld1RvdGFsU2l6ZSIsInR5cGVGaWxlIiwidHlwZSIsInVuaXF1ZU5hbWUiLCJwYXJzZWRGaWxlIiwiRmlsZSIsImF0dGFjaG1lbnRGaWxlIiwiaWQiLCJzdGF0dXMiLCJoYXNFcnJvcnMiLCJjYW5QcmV2aWV3S25vd2xlZGdlQXR0YWNobWVudCIsIm9yaWdpbmFsRmlsZSIsIkJvb2xlYW4iLCJ1cmxfdGh1bWJuYWlsIiwidXJsX29yaWdpbmFsIiwidXJsX2ZpbGUiLCJzaG91bGRCbG9ja0tub3dsZWRnZVVwbG9hZCIsImlzQXRTaXplTGltaXQiLCJzaG91bGRFbmFibGVLbm93bGVkZ2VEcmFnU3RhdGUiLCJzaG91bGRQcm9jZXNzS25vd2xlZGdlRmlsZUlucHV0IiwiYXBwZW5kS25vd2xlZGdlQXR0YWNobWVudHMiLCJjdXJyZW50IiwiaW5zZXJ0ZWQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJyZW1vdmVLbm93bGVkZ2VBdHRhY2htZW50QnlJbmRleCIsImluZGV4IiwiZmlsdGVyIiwiXyIsImF0dGFjaG1lbnRJbmRleCIsInJlc29sdmVLbm93bGVkZ2VBdHRhY2htZW50QXRJbmRleCIsIl9hdHRhY2htZW50cyRpbmRleCIsInNob3VsZFJ1bktub3dsZWRnZURvd25sb2FkRWZmZWN0Iiwic3VjY2VzcyIsImVycm9yIiwiaXNMb2FkaW5nIiwic2hvdWxkSGFuZGxlS25vd2xlZGdlQXR0YWNobWVudEFjdGlvbiIsImlzRG93bmxvYWRpbmciLCJyZXNvbHZlS25vd2xlZGdlRmlsZUVycm9yTW9kYWxTdGF0ZSIsImlucHV0IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImNyZWF0ZUNsb3NlZEtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1Lbm93bGVkZ2VTZWN0aW9uLmhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcblxuZXhwb3J0IGNvbnN0IE1BWF9LTk9XTEVER0VfVE9UQUxfU0laRSA9IDUgKiAxMDI0ICogMTAyNFxuXG5leHBvcnQgY29uc3QgZ2V0VW5pcXVlU3RyaW5nID0gKHByZXZTdHJpbmdzOiBzdHJpbmdbXSwgc3RyaW5nVG9DaGFuZ2U6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IFtmaWxlbmFtZSwgZXh0ZW5zaW9uID0gJyddID0gc3RyaW5nVG9DaGFuZ2Uuc3BsaXQoJy4nKVxuICBjb25zdCBleHQgPSBleHRlbnNpb24gPyBgLiR7ZXh0ZW5zaW9ufWAgOiAnJ1xuXG4gIGlmICghcHJldlN0cmluZ3M/LmluY2x1ZGVzKHN0cmluZ1RvQ2hhbmdlKSkge1xuICAgIHJldHVybiBzdHJpbmdUb0NoYW5nZVxuICB9XG5cbiAgbGV0IGNvdW50ZXIgPSAxXG4gIGxldCBuZXdGaWxlbmFtZSA9IHN0cmluZ1RvQ2hhbmdlXG4gIHdoaWxlIChwcmV2U3RyaW5ncz8uaW5jbHVkZXMobmV3RmlsZW5hbWUpKSB7XG4gICAgbmV3RmlsZW5hbWUgPSBgJHtmaWxlbmFtZX0oJHtjb3VudGVyfSkke2V4dH1gXG4gICAgY291bnRlciArPSAxXG4gIH1cblxuICByZXR1cm4gbmV3RmlsZW5hbWVcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZSA9IChhdHRhY2htZW50czogUGljazxBdHRhY2htZW50RmlsZSwgJ3NpemUnPltdKTogbnVtYmVyID0+XG4gIGF0dGFjaG1lbnRzLnJlZHVjZSgodG90YWwsIGF0dGFjaG1lbnQpID0+IHtcbiAgICBjb25zdCBzaXplID0gdHlwZW9mIGF0dGFjaG1lbnQuc2l6ZSA9PT0gJ251bWJlcicgPyBhdHRhY2htZW50LnNpemUgOiBOdW1iZXIoYXR0YWNobWVudC5zaXplKVxuICAgIHJldHVybiB0b3RhbCArIChOdW1iZXIuaXNOYU4oc2l6ZSkgPyAwIDogc2l6ZSlcbiAgfSwgMClcblxuZXhwb3J0IHR5cGUgUHJvY2Vzc0tub3dsZWRnZUZpbGVzUmVzdWx0ID0ge1xuICBpbnNlcnRlZEZpbGVzOiBBdHRhY2htZW50RmlsZVtdXG4gIGV4Y2VlZGVkRmlsZXM6IHN0cmluZ1tdXG4gIGludmFsaWRFeHRlbnNpb25GaWxlczogc3RyaW5nW11cbiAgaGFzRXJyb3JzOiBib29sZWFuXG59XG5cbnR5cGUgUHJvY2Vzc0tub3dsZWRnZUZpbGVzT3B0aW9ucyA9IHtcbiAgZmlsZXM6IEZpbGVbXVxuICBleGlzdGluZ0F0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gIGFsbG93ZWRFeHRlbnNpb25zOiBzdHJpbmdbXVxuICBmaWxlVHlwZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgbWF4VG90YWxTaXplPzogbnVtYmVyXG4gIGNyZWF0ZUlkPzogKCkgPT4gc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCBwcm9jZXNzS25vd2xlZGdlRmlsZXMgPSAoe1xuICBmaWxlcyxcbiAgZXhpc3RpbmdBdHRhY2htZW50cyxcbiAgYWxsb3dlZEV4dGVuc2lvbnMsXG4gIGZpbGVUeXBlcyxcbiAgbWF4VG90YWxTaXplID0gTUFYX0tOT1dMRURHRV9UT1RBTF9TSVpFLFxuICBjcmVhdGVJZCA9ICgpID0+IGAke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKX1gLFxufTogUHJvY2Vzc0tub3dsZWRnZUZpbGVzT3B0aW9ucyk6IFByb2Nlc3NLbm93bGVkZ2VGaWxlc1Jlc3VsdCA9PiB7XG4gIGNvbnN0IGV4Y2VlZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgY29uc3QgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gIGNvbnN0IGluc2VydGVkRmlsZXM6IEF0dGFjaG1lbnRGaWxlW10gPSBbXVxuICBjb25zdCBhdHRhY2htZW50c05hbWVzID0gZXhpc3RpbmdBdHRhY2htZW50cy5tYXAoYXR0YWNobWVudCA9PiBhdHRhY2htZW50Lm5hbWUpXG4gIGxldCBydW5uaW5nVG90YWxTaXplID0gY29tcHV0ZUF0dGFjaG1lbnRzVG90YWxTaXplKGV4aXN0aW5nQXR0YWNobWVudHMpXG5cbiAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICBjb25zdCBmaWxlTmFtZVBhcnRzID0gZmlsZS5uYW1lLnNwbGl0KCcuJylcbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG5cbiAgICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICBpbnZhbGlkRXh0ZW5zaW9uRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBuZXdUb3RhbFNpemUgPSBydW5uaW5nVG90YWxTaXplICsgZmlsZS5zaXplXG4gICAgaWYgKG5ld1RvdGFsU2l6ZSA+IG1heFRvdGFsU2l6ZSkge1xuICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHR5cGVGaWxlID0gZmlsZS50eXBlIHx8IGZpbGVUeXBlc1tmaWxlRXh0ZW5zaW9uXVxuICAgIGNvbnN0IHVuaXF1ZU5hbWUgPSBnZXRVbmlxdWVTdHJpbmcoYXR0YWNobWVudHNOYW1lcywgZmlsZS5uYW1lKVxuICAgIGNvbnN0IHBhcnNlZEZpbGUgPSBuZXcgRmlsZShbZmlsZV0sIHVuaXF1ZU5hbWUsIHsgdHlwZTogdHlwZUZpbGUgfSlcblxuICAgIGNvbnN0IGF0dGFjaG1lbnRGaWxlOiBBdHRhY2htZW50RmlsZSA9IHtcbiAgICAgIGZpbGU6IHBhcnNlZEZpbGUsXG4gICAgICBpZDogY3JlYXRlSWQoKSxcbiAgICAgIG5hbWU6IHVuaXF1ZU5hbWUsXG4gICAgICBzaXplOiBmaWxlLnNpemUsXG4gICAgICB0eXBlOiB0eXBlRmlsZSxcbiAgICAgIHN0YXR1czogJ3N0YXJ0ZWQnLFxuICAgIH1cblxuICAgIGluc2VydGVkRmlsZXMucHVzaChhdHRhY2htZW50RmlsZSlcbiAgICBhdHRhY2htZW50c05hbWVzLnB1c2godW5pcXVlTmFtZSlcbiAgICBydW5uaW5nVG90YWxTaXplICs9IGZpbGUuc2l6ZVxuICB9KVxuXG4gIHJldHVybiB7XG4gICAgaW5zZXJ0ZWRGaWxlcyxcbiAgICBleGNlZWRlZEZpbGVzLFxuICAgIGludmFsaWRFeHRlbnNpb25GaWxlcyxcbiAgICBoYXNFcnJvcnM6IGludmFsaWRFeHRlbnNpb25GaWxlcy5sZW5ndGggPiAwIHx8IGV4Y2VlZGVkRmlsZXMubGVuZ3RoID4gMCxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgY2FuUHJldmlld0tub3dsZWRnZUF0dGFjaG1lbnQgPSAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpOiBib29sZWFuID0+IHtcbiAgaWYgKGF0dGFjaG1lbnQuc3RhdHVzID09PSAnZmFpbGVkJykgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIChcbiAgICBhdHRhY2htZW50LmZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgaW5zdGFuY2VvZiBGaWxlIHx8XG4gICAgQm9vbGVhbihhdHRhY2htZW50LnVybF90aHVtYm5haWwgfHwgYXR0YWNobWVudC51cmxfb3JpZ2luYWwgfHwgYXR0YWNobWVudC51cmxfZmlsZSlcbiAgKVxufVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkQmxvY2tLbm93bGVkZ2VVcGxvYWQgPSAoaXNBdFNpemVMaW1pdDogYm9vbGVhbik6IGJvb2xlYW4gPT4gaXNBdFNpemVMaW1pdFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkRW5hYmxlS25vd2xlZGdlRHJhZ1N0YXRlID0gKGlzQXRTaXplTGltaXQ6IGJvb2xlYW4pOiBib29sZWFuID0+ICFpc0F0U2l6ZUxpbWl0XG5cbmV4cG9ydCBjb25zdCBzaG91bGRQcm9jZXNzS25vd2xlZGdlRmlsZUlucHV0ID0gKGZpbGVzOiBGaWxlTGlzdCB8IG51bGwgfCB1bmRlZmluZWQpOiBmaWxlcyBpcyBGaWxlTGlzdCA9PlxuICBCb29sZWFuKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApXG5cbmV4cG9ydCBjb25zdCBhcHBlbmRLbm93bGVkZ2VBdHRhY2htZW50cyA9IChjdXJyZW50OiBBdHRhY2htZW50RmlsZVtdLCBpbnNlcnRlZDogQXR0YWNobWVudEZpbGVbXSk6IEF0dGFjaG1lbnRGaWxlW10gPT4gW1xuICAuLi4oY3VycmVudCB8fCBbXSksXG4gIC4uLmluc2VydGVkLFxuXVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlS25vd2xlZGdlQXR0YWNobWVudEJ5SW5kZXggPSAoXG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdLFxuICBpbmRleDogbnVtYmVyXG4pOiBBdHRhY2htZW50RmlsZVtdIHwgbnVsbCA9PiB7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gYXR0YWNobWVudHMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gYXR0YWNobWVudHMuZmlsdGVyKChfLCBhdHRhY2htZW50SW5kZXgpID0+IGF0dGFjaG1lbnRJbmRleCAhPT0gaW5kZXgpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlS25vd2xlZGdlQXR0YWNobWVudEF0SW5kZXggPSAoXG4gIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdLFxuICBpbmRleDogbnVtYmVyXG4pOiBBdHRhY2htZW50RmlsZSB8IG51bGwgPT4gYXR0YWNobWVudHNbaW5kZXhdID8/IG51bGxcblxuZXhwb3J0IGNvbnN0IHNob3VsZFJ1bktub3dsZWRnZURvd25sb2FkRWZmZWN0ID0gKFxuICBzdWNjZXNzOiB1bmtub3duLFxuICBlcnJvcjogdW5rbm93bixcbiAgaXNMb2FkaW5nOiBib29sZWFuXG4pOiBzdWNjZXNzIGlzIHsgYmxvYjogQmxvYjsgZmlsZW5hbWU6IHN0cmluZyB9ID0+IEJvb2xlYW4oc3VjY2VzcyAmJiAhZXJyb3IgJiYgIWlzTG9hZGluZylcblxuZXhwb3J0IGNvbnN0IHNob3VsZEhhbmRsZUtub3dsZWRnZUF0dGFjaG1lbnRBY3Rpb24gPSAoaXNEb3dubG9hZGluZzogYm9vbGVhbik6IGJvb2xlYW4gPT4gIWlzRG93bmxvYWRpbmdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVLbm93bGVkZ2VGaWxlRXJyb3JNb2RhbFN0YXRlID0gKGlucHV0OiB7XG4gIGV4Y2VlZGVkRmlsZXM6IHN0cmluZ1tdXG4gIGludmFsaWRFeHRlbnNpb25GaWxlczogc3RyaW5nW11cbn0pOiB7XG4gIGlzT3BlbjogYm9vbGVhblxuICBleGNsdWRlZEZpbGVzOiBzdHJpbmdbXVxuICBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXVxuICBpbnZhbGlkRXh0ZW5zaW9uRmlsZXM6IHN0cmluZ1tdXG59ID0+ICh7XG4gIGlzT3BlbjogdHJ1ZSxcbiAgZXhjbHVkZWRGaWxlczogW10sXG4gIGV4Y2VlZGVkRmlsZXM6IGlucHV0LmV4Y2VlZGVkRmlsZXMsXG4gIGludmFsaWRFeHRlbnNpb25GaWxlczogaW5wdXQuaW52YWxpZEV4dGVuc2lvbkZpbGVzLFxufSlcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNsb3NlZEtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUgPSAoKToge1xuICBpc09wZW46IGJvb2xlYW5cbiAgZXhjbHVkZWRGaWxlczogc3RyaW5nW11cbiAgZXhjZWVkZWRGaWxlczogc3RyaW5nW11cbiAgaW52YWxpZEV4dGVuc2lvbkZpbGVzOiBzdHJpbmdbXVxufSA9PiAoe1xuICBpc09wZW46IGZhbHNlLFxuICBleGNsdWRlZEZpbGVzOiBbXSxcbiAgZXhjZWVkZWRGaWxlczogW10sXG4gIGludmFsaWRFeHRlbnNpb25GaWxlczogW10sXG59KVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLE9BQU8sSUFBTUEsd0JBQXdCLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJO0FBRXZELE9BQU8sSUFBTUMsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJQyxXQUFxQixFQUFFQyxjQUFzQixFQUFhO0VBQ3hGLElBQUFDLHFCQUFBLEdBQW1DRCxjQUFjLENBQUNFLEtBQUssQ0FBQyxHQUFHLENBQUM7SUFBQUMsc0JBQUEsR0FBQUMsY0FBQSxDQUFBSCxxQkFBQTtJQUFyREksUUFBUSxH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
@@ -160,29 +160,20 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
160
160
  });
161
161
  };
162
162
  useEffect(function () {
163
- if (!shouldRunKnowledgeDownloadEffect(isDownloadingSuccess, isDownloadingError, isDownloading)) return undefined;
164
-
165
- // Falso positivo: releaseLink revoca la URL en el timer y en el cleanup
166
- // react-doctor-disable-next-line react-doctor/no-create-object-url-without-revoke
167
- var url = URL.createObjectURL(isDownloadingSuccess.blob);
168
- var link = document.createElement('a');
169
- link.href = url;
170
- link.download = isDownloadingSuccess.filename;
171
- link.style.display = 'none';
172
- document.body.appendChild(link);
173
- link.click();
174
- var releaseLink = function releaseLink() {
175
- link.remove();
176
- URL.revokeObjectURL(url);
177
- };
178
- var timeoutId = setTimeout(function () {
179
- releaseLink();
180
- handleResetStates();
181
- }, 100);
182
- return function () {
183
- clearTimeout(timeoutId);
184
- releaseLink();
185
- };
163
+ if (shouldRunKnowledgeDownloadEffect(isDownloadingSuccess, isDownloadingError, isDownloading)) {
164
+ var url = URL.createObjectURL(isDownloadingSuccess.blob);
165
+ var link = document.createElement('a');
166
+ link.href = url;
167
+ link.download = isDownloadingSuccess.filename;
168
+ link.style.display = 'none';
169
+ document.body.appendChild(link);
170
+ link.click();
171
+ setTimeout(function () {
172
+ document.body.removeChild(link);
173
+ URL.revokeObjectURL(url);
174
+ handleResetStates();
175
+ }, 100);
176
+ }
186
177
  }, [isDownloadingSuccess, isDownloadingError, isDownloading, handleResetStates]);
187
178
  var handleAction = function handleAction(_ref2) {
188
179
  var id = _ref2.id,
@@ -270,7 +261,7 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
270
261
  onClick: function onClick() {
271
262
  return handleAttachmentClick(attachment);
272
263
  }
273
- }, "attachment-".concat(attachment === null || attachment === void 0 ? void 0 : attachment.name, "-").concat(attachment === null || attachment === void 0 ? void 0 : attachment.id));
264
+ }, "attachment-".concat(attachment === null || attachment === void 0 ? void 0 : attachment.name, "-").concat(attachment === null || attachment === void 0 ? void 0 : attachment.id, "-").concat(index));
274
265
  })
275
266
  })]
276
267
  }), /*#__PURE__*/_jsx("input", {
@@ -299,4 +290,4 @@ export var AbmKnowledgeSection = function AbmKnowledgeSection(_ref) {
299
290
  })]
300
291
  });
301
292
  };
302
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUb29sdGlwIiwiRmlsZVVwbG9hZCIsIk9wZW4iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQXR0YWNobWVudENhcmQiLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiU0NBS1NXcmFwcGVyIiwiU0NBS1NXcmFwcGVySGVhZGVyIiwiU0NBS1NXcmFwcGVyQ29udGVudCIsIlNDQUtTV3JhcHBlckhlYWRlclRpdGxlIiwiU0NBS1NXcmFwcGVySGVhZGVySW5mbyIsIlNDQUtTRmlsZVVwbG9hZFdyYXBwZXJDb250ZW50IiwiU0NBS1NBdHRhY2htZW50c1dyYXBwZXIiLCJTQ0FLU01vcmVJbmZvU3BhbiIsIlNDQUtTTW9yZUluZm9JY29uV3JhcHBlciIsIlNDQUtTRHJvcFpvbmUiLCJTQ0FLU0Ryb3Bab25lSWNvbiIsIlNDQUtTRHJvcFpvbmVUZXh0IiwiU0NBS1NEcm9wWm9uZUluZm8iLCJTQ0FLU0Ryb3Bab25lVGV4dFNwYW4iLCJ1c2VEb3dubG9hZEtub3dsZWRnZSIsInVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiTW9kYWxGaWxlRXhjZWVkcyIsImFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UiLCJmaWxlVHlwZXMiLCJhcHBlbmRLbm93bGVkZ2VBdHRhY2htZW50cyIsImNhblByZXZpZXdLbm93bGVkZ2VBdHRhY2htZW50IiwiY29tcHV0ZUF0dGFjaG1lbnRzVG90YWxTaXplIiwiY3JlYXRlQ2xvc2VkS25vd2xlZGdlRmlsZUVycm9yTW9kYWxTdGF0ZSIsIk1BWF9LTk9XTEVER0VfVE9UQUxfU0laRSIsInByb2Nlc3NLbm93bGVkZ2VGaWxlcyIsInJlbW92ZUtub3dsZWRnZUF0dGFjaG1lbnRCeUluZGV4IiwicmVzb2x2ZUtub3dsZWRnZUF0dGFjaG1lbnRBdEluZGV4IiwicmVzb2x2ZUtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUiLCJzaG91bGRCbG9ja0tub3dsZWRnZVVwbG9hZCIsInNob3VsZEVuYWJsZUtub3dsZWRnZURyYWdTdGF0ZSIsInNob3VsZEhhbmRsZUtub3dsZWRnZUF0dGFjaG1lbnRBY3Rpb24iLCJzaG91bGRQcm9jZXNzS25vd2xlZGdlRmlsZUlucHV0Iiwic2hvdWxkUnVuS25vd2xlZGdlRG93bmxvYWRFZmZlY3QiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNQVhfVE9UQUxfU0laRSIsIkFibUtub3dsZWRnZVNlY3Rpb24iLCJfcmVmIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJvbkZpbGVFcnJvckNoYW5nZSIsInRvb2x0aXBaSW5kZXgiLCJfdXNlU3RhdGUiLCJrbm93bGVkZ2UiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJsb2NhbEF0dGFjaG1lbnRzIiwic2V0TG9jYWxBdHRhY2htZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicHJldmlld0F0dGFjaG1lbnQiLCJzZXRQcmV2aWV3QXR0YWNobWVudCIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGU1IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJpbnZhbGlkRXh0ZW5zaW9uRmlsZXMiLCJfdXNlU3RhdGU2IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJfdXNlRG93bmxvYWRLbm93bGVkZ2UiLCJoYW5kbGVEb3dubG9hZEtub3dsZWRnZSIsImlzRG93bmxvYWRpbmdTdWNjZXNzIiwic3VjY2VzcyIsImlzRG93bmxvYWRpbmdFcnJvciIsImVycm9yIiwiaXNEb3dubG9hZGluZyIsImlzTG9hZGluZyIsImhhbmRsZVJlc2V0U3RhdGVzIiwiX3VzZU9uYm9hcmRpbmdOYXZpZ2F0IiwiaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24iLCJmaWxlSW5wdXRSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRHJhZ2dpbmciLCJzZXRJc0RyYWdnaW5nIiwiY3VycmVudFRvdGFsU2l6ZSIsImlzQXRTaXplTGltaXQiLCJoYW5kbGVBdHRhY2hDbGljayIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImN1cnJlbnQiLCJjbGljayIsImhhbmRsZUZpbGVTZWxlY3QiLCJlIiwiZmlsZXMiLCJ0YXJnZXQiLCJfcHJvY2Vzc0tub3dsZWRnZUZpbGUiLCJBcnJheSIsImZyb20iLCJleGlzdGluZ0F0dGFjaG1lbnRzIiwiYWxsb3dlZEV4dGVuc2lvbnMiLCJtYXhUb3RhbFNpemUiLCJpbnNlcnRlZEZpbGVzIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwia2V5IiwidmFsdWUiLCJwcmV2IiwiaGFuZGxlRHJhZ0VudGVyIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVEcmFnTGVhdmUiLCJoYW5kbGVEcmFnT3ZlciIsImhhbmRsZURyb3AiLCJkYXRhVHJhbnNmZXIiLCJzeW50aGV0aWNFdmVudCIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJpZCIsImZpbGVUb0RlbGV0ZSIsIm5ld0F0dGFjaG1lbnRzIiwiZGVsZXRlS25vd2xlZGdlIiwiaGFuZGxlRG93bmxvYWRBdHRhY2htZW50IiwiZmlsZSIsImFnZW50SWQiLCJnZW5lcmFsIiwidG9TdHJpbmciLCJrbm93bGVkZ2VJZCIsInVuZGVmaW5lZCIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImJsb2IiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsImRvd25sb2FkIiwiZmlsZW5hbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJyZWxlYXNlTGluayIsInJlbW92ZSIsInJldm9rZU9iamVjdFVSTCIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJoYW5kbGVBY3Rpb24iLCJfcmVmMiIsImFjdGlvbiIsImhhbmRsZUF0dGFjaG1lbnRDbGljayIsImF0dGFjaG1lbnQiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJjaGlsZHJlbiIsIiRpbmRleCIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidGl0bGUiLCJ6SW5kZXgiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsIm1hcCIsImluZGV4IiwicG9zaXRpb25JbmRleCIsImFibUtub3dsZWRnZVNlY3Rpb24iLCJmdWxsV2lkdGgiLCJjb25jYXQiLCJuYW1lIiwicmVmIiwidHlwZSIsIm11bHRpcGxlIiwiYWNjZXB0Iiwib25DaGFuZ2UiLCJvbkNsb3NlIiwic2VjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUtub3dsZWRnZVNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWN5Y2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IE9wZW4gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9PcGVuJ1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIERyYWdFdmVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBNb2RhbFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7XG4gIFNDQUtTV3JhcHBlcixcbiAgU0NBS1NXcmFwcGVySGVhZGVyLFxuICBTQ0FLU1dyYXBwZXJDb250ZW50LFxuICBTQ0FLU1dyYXBwZXJIZWFkZXJUaXRsZSxcbiAgU0NBS1NXcmFwcGVySGVhZGVySW5mbyxcbiAgU0NBS1NGaWxlVXBsb2FkV3JhcHBlckNvbnRlbnQsXG4gIFNDQUtTQXR0YWNobWVudHNXcmFwcGVyLFxuICBTQ0FLU01vcmVJbmZvU3BhbixcbiAgU0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyLFxuICBTQ0FLU0Ryb3Bab25lLFxuICBTQ0FLU0Ryb3Bab25lSWNvbixcbiAgU0NBS1NEcm9wWm9uZVRleHQsXG4gIFNDQUtTRHJvcFpvbmVJbmZvLFxuICBTQ0FLU0Ryb3Bab25lVGV4dFNwYW4sXG59IGZyb20gJy4vQWJtS25vd2xlZGdlU2VjdGlvbi5zdHlsZXMnXG5pbXBvcnQgeyB1c2VEb3dubG9hZEtub3dsZWRnZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUtub3dsZWRnZS9kb3dubG9hZEtub3dsZWRnZSdcbmltcG9ydCB7IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlT25ib2FyZGluZ05hdmlnYXRpb24nXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IGFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UsIGZpbGVUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHtcbiAgYXBwZW5kS25vd2xlZGdlQXR0YWNobWVudHMsXG4gIGNhblByZXZpZXdLbm93bGVkZ2VBdHRhY2htZW50LFxuICBjb21wdXRlQXR0YWNobWVudHNUb3RhbFNpemUsXG4gIGNyZWF0ZUNsb3NlZEtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUsXG4gIE1BWF9LTk9XTEVER0VfVE9UQUxfU0laRSxcbiAgcHJvY2Vzc0tub3dsZWRnZUZpbGVzLFxuICByZW1vdmVLbm93bGVkZ2VBdHRhY2htZW50QnlJbmRleCxcbiAgcmVzb2x2ZUtub3dsZWRnZUF0dGFjaG1lbnRBdEluZGV4LFxuICByZXNvbHZlS25vd2xlZGdlRmlsZUVycm9yTW9kYWxTdGF0ZSxcbiAgc2hvdWxkQmxvY2tLbm93bGVkZ2VVcGxvYWQsXG4gIHNob3VsZEVuYWJsZUtub3dsZWRnZURyYWdTdGF0ZSxcbiAgc2hvdWxkSGFuZGxlS25vd2xlZGdlQXR0YWNobWVudEFjdGlvbixcbiAgc2hvdWxkUHJvY2Vzc0tub3dsZWRnZUZpbGVJbnB1dCxcbiAgc2hvdWxkUnVuS25vd2xlZGdlRG93bmxvYWRFZmZlY3QsXG59IGZyb20gJy4vQWJtS25vd2xlZGdlU2VjdGlvbi5oZWxwZXJzJ1xuXG5jb25zdCBNQVhfVE9UQUxfU0laRSA9IE1BWF9LTk9XTEVER0VfVE9UQUxfU0laRVxuXG5leHBvcnQgY29uc3QgQWJtS25vd2xlZGdlU2VjdGlvbiA9ICh7XG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICB2YWx1ZXMsXG4gIG9uRmlsZUVycm9yQ2hhbmdlLFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogdW5rbm93blxuICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgfSkgPT4gdm9pZFxuICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gIG9uRmlsZUVycm9yQ2hhbmdlPzogKGhhc0Vycm9yczogYm9vbGVhbikgPT4gdm9pZFxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IFtsb2NhbEF0dGFjaG1lbnRzLCBzZXRMb2NhbEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlW10+KHZhbHVlcy5rbm93bGVkZ2UgfHwgW10pXG4gIGNvbnN0IFtwcmV2aWV3QXR0YWNobWVudCwgc2V0UHJldmlld0F0dGFjaG1lbnRdID0gdXNlU3RhdGU8QXR0YWNobWVudEZpbGUgfCBudWxsPihudWxsKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IFttb2RhbFByb3BzLCBzZXRNb2RhbFByb3BzXSA9IHVzZVN0YXRlKHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGV4Y2x1ZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGV4Y2VlZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGludmFsaWRFeHRlbnNpb25GaWxlczogW10gYXMgc3RyaW5nW10sXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVEb3dubG9hZEtub3dsZWRnZSxcbiAgICBzdWNjZXNzOiBpc0Rvd25sb2FkaW5nU3VjY2VzcyxcbiAgICBlcnJvcjogaXNEb3dubG9hZGluZ0Vycm9yLFxuICAgIGlzTG9hZGluZzogaXNEb3dubG9hZGluZyxcbiAgICBoYW5kbGVSZXNldFN0YXRlcyxcbiAgfSA9IHVzZURvd25sb2FkS25vd2xlZGdlKClcbiAgY29uc3QgeyBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbiB9ID0gdXNlT25ib2FyZGluZ05hdmlnYXRpb24oKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2lzRHJhZ2dpbmcsIHNldElzRHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgY3VycmVudFRvdGFsU2l6ZSA9IGNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZShsb2NhbEF0dGFjaG1lbnRzIHx8IFtdKVxuICBjb25zdCBpc0F0U2l6ZUxpbWl0ID0gY3VycmVudFRvdGFsU2l6ZSA+PSBNQVhfVE9UQUxfU0laRVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChzaG91bGRCbG9ja0tub3dsZWRnZVVwbG9hZChpc0F0U2l6ZUxpbWl0KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlU2VsZWN0ID0gKGU6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgeyBmaWxlcyB9ID0gZS50YXJnZXRcbiAgICBpZiAoIXNob3VsZFByb2Nlc3NLbm93bGVkZ2VGaWxlSW5wdXQoZmlsZXMpKSByZXR1cm5cblxuICAgIGNvbnN0IHsgaW5zZXJ0ZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgaW52YWxpZEV4dGVuc2lvbkZpbGVzLCBoYXNFcnJvcnMgfSA9IHByb2Nlc3NLbm93bGVkZ2VGaWxlcyh7XG4gICAgICBmaWxlczogQXJyYXkuZnJvbShmaWxlcyksXG4gICAgICBleGlzdGluZ0F0dGFjaG1lbnRzOiBsb2NhbEF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgYWxsb3dlZEV4dGVuc2lvbnM6IGFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UsXG4gICAgICBmaWxlVHlwZXMsXG4gICAgICBtYXhUb3RhbFNpemU6IE1BWF9UT1RBTF9TSVpFLFxuICAgIH0pXG5cbiAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICBzZXRNb2RhbFByb3BzKHJlc29sdmVLbm93bGVkZ2VGaWxlRXJyb3JNb2RhbFN0YXRlKHsgZXhjZWVkZWRGaWxlcywgaW52YWxpZEV4dGVuc2lvbkZpbGVzIH0pKVxuICAgICAgb25GaWxlRXJyb3JDaGFuZ2U/Lih0cnVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkZpbGVFcnJvckNoYW5nZT8uKGZhbHNlKVxuICAgIH1cblxuICAgIGlmIChpbnNlcnRlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM/Lih7IGtleTogJ2tub3dsZWRnZScsIHZhbHVlOiBpbnNlcnRlZEZpbGVzIH0pXG4gICAgICBzZXRMb2NhbEF0dGFjaG1lbnRzKHByZXYgPT4gYXBwZW5kS25vd2xlZGdlQXR0YWNobWVudHMocHJldiB8fCBbXSwgaW5zZXJ0ZWRGaWxlcykpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VudGVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHNob3VsZEVuYWJsZUtub3dsZWRnZURyYWdTdGF0ZShpc0F0U2l6ZUxpbWl0KSkge1xuICAgICAgc2V0SXNEcmFnZ2luZyh0cnVlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG5cbiAgICBpZiAoc2hvdWxkQmxvY2tLbm93bGVkZ2VVcGxvYWQoaXNBdFNpemVMaW1pdCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHsgZmlsZXMgfSA9IGUuZGF0YVRyYW5zZmVyXG4gICAgaWYgKCFzaG91bGRQcm9jZXNzS25vd2xlZGdlRmlsZUlucHV0KGZpbGVzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ3JlYXIgdW4gZXZlbnRvIHNpbnTDqXRpY28gcGFyYSByZXV0aWxpemFyIGxhIGzDs2dpY2EgZGUgaGFuZGxlRmlsZVNlbGVjdFxuICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50ID0ge1xuICAgICAgdGFyZ2V0OiB7IGZpbGVzIH0sXG4gICAgfSBhcyBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PlxuXG4gICAgaGFuZGxlRmlsZVNlbGVjdChzeW50aGV0aWNFdmVudClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoaWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGZpbGVUb0RlbGV0ZSA9IHJlc29sdmVLbm93bGVkZ2VBdHRhY2htZW50QXRJbmRleChsb2NhbEF0dGFjaG1lbnRzIHx8IFtdLCBpZClcbiAgICBpZiAoIWZpbGVUb0RlbGV0ZSkgcmV0dXJuXG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50cyA9IHJlbW92ZUtub3dsZWRnZUF0dGFjaG1lbnRCeUluZGV4KGxvY2FsQXR0YWNobWVudHMgfHwgW10sIGlkKVxuICAgIGlmICghbmV3QXR0YWNobWVudHMpIHJldHVyblxuICAgIHNldExvY2FsQXR0YWNobWVudHMobmV3QXR0YWNobWVudHMpXG5cbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcz8uKHsga2V5OiAna25vd2xlZGdlJywgdmFsdWU6IG5ld0F0dGFjaG1lbnRzLCBkZWxldGVLbm93bGVkZ2U6IHRydWUgfSlcblxuICAgIG9uRmlsZUVycm9yQ2hhbmdlPy4oZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEb3dubG9hZEF0dGFjaG1lbnQgPSAoaWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSByZXNvbHZlS25vd2xlZGdlQXR0YWNobWVudEF0SW5kZXgobG9jYWxBdHRhY2htZW50cyB8fCBbXSwgaWQpXG4gICAgaWYgKCFmaWxlKSByZXR1cm5cblxuICAgIGhhbmRsZURvd25sb2FkS25vd2xlZGdlKHsgYWdlbnRJZDogdmFsdWVzLmdlbmVyYWwuaWQhLnRvU3RyaW5nKCksIGtub3dsZWRnZUlkOiBmaWxlLmlkIH0pXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvdWxkUnVuS25vd2xlZGdlRG93bmxvYWRFZmZlY3QoaXNEb3dubG9hZGluZ1N1Y2Nlc3MsIGlzRG93bmxvYWRpbmdFcnJvciwgaXNEb3dubG9hZGluZykpIHJldHVybiB1bmRlZmluZWRcblxuICAgIC8vIEZhbHNvIHBvc2l0aXZvOiByZWxlYXNlTGluayByZXZvY2EgbGEgVVJMIGVuIGVsIHRpbWVyIHkgZW4gZWwgY2xlYW51cFxuICAgIC8vIHJlYWN0LWRvY3Rvci1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1kb2N0b3Ivbm8tY3JlYXRlLW9iamVjdC11cmwtd2l0aG91dC1yZXZva2VcbiAgICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGlzRG93bmxvYWRpbmdTdWNjZXNzLmJsb2IpXG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgIGxpbmsuaHJlZiA9IHVybFxuICAgIGxpbmsuZG93bmxvYWQgPSBpc0Rvd25sb2FkaW5nU3VjY2Vzcy5maWxlbmFtZVxuICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKVxuICAgIGxpbmsuY2xpY2soKVxuXG4gICAgY29uc3QgcmVsZWFzZUxpbmsgPSAoKSA9PiB7XG4gICAgICBsaW5rLnJlbW92ZSgpXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybClcbiAgICB9XG4gICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICByZWxlYXNlTGluaygpXG4gICAgICBoYW5kbGVSZXNldFN0YXRlcygpXG4gICAgfSwgMTAwKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gICAgICByZWxlYXNlTGluaygpXG4gICAgfVxuICB9LCBbaXNEb3dubG9hZGluZ1N1Y2Nlc3MsIGlzRG93bmxvYWRpbmdFcnJvciwgaXNEb3dubG9hZGluZywgaGFuZGxlUmVzZXRTdGF0ZXNdKVxuXG4gIGNvbnN0IGhhbmRsZUFjdGlvbiA9ICh7IGlkLCBhY3Rpb24gfTogeyBpZDogbnVtYmVyOyBhY3Rpb246ICdkZWxldGUnIHwgJ2Rvd25sb2FkJyB9KSA9PiB7XG4gICAgaWYgKCFzaG91bGRIYW5kbGVLbm93bGVkZ2VBdHRhY2htZW50QWN0aW9uKGlzRG93bmxvYWRpbmcpKSByZXR1cm5cbiAgICBpZiAoYWN0aW9uID09PSAnZGVsZXRlJykge1xuICAgICAgaGFuZGxlRGVsZXRlQXR0YWNobWVudChpZClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAoYWN0aW9uID09PSAnZG93bmxvYWQnKSB7XG4gICAgICBoYW5kbGVEb3dubG9hZEF0dGFjaG1lbnQoaWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQXR0YWNobWVudENsaWNrID0gKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnRGaWxlKSA9PiB7XG4gICAgaWYgKGNhblByZXZpZXdLbm93bGVkZ2VBdHRhY2htZW50KGF0dGFjaG1lbnQpKSB7XG4gICAgICBzZXRQcmV2aWV3QXR0YWNobWVudChhdHRhY2htZW50KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlUHJldmlldyA9ICgpID0+IHtcbiAgICBzZXRQcmV2aWV3QXR0YWNobWVudChudWxsKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFNDQUtTV3JhcHBlcj5cbiAgICAgICAgPFNDQUtTV3JhcHBlckhlYWRlciAkaW5kZXg9ezB9PlxuICAgICAgICAgIDxTQ0FLU1dyYXBwZXJIZWFkZXJUaXRsZT57dCgna25vd2xlZGdlU2VjdGlvbi5rbm93bGVkZ2VUYWInKX08L1NDQUtTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICAgIDxTQ0FLU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24uaW5mb0xhYmVsJyl9XG4gICAgICAgICAgICAgIDxTQ0FLU01vcmVJbmZvU3BhbiBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbignbW9yZUluZm8nKX0+XG4gICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24ubW9yZUluZm8nKX1cbiAgICAgICAgICAgICAgICA8U0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj1cIiMwMDZGQUZcIiAvPlxuICAgICAgICAgICAgICAgIDwvU0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyPlxuICAgICAgICAgICAgICA8L1NDQUtTTW9yZUluZm9TcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9TQ0FLU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgICA8L1NDQUtTV3JhcHBlckhlYWRlcj5cbiAgICAgICAgPFNDQUtTV3JhcHBlckNvbnRlbnQgJGluZGV4PXsxfT5cbiAgICAgICAgICA8U0NBS1NGaWxlVXBsb2FkV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNBdFNpemVMaW1pdCA/IHQoJ2tub3dsZWRnZVNlY3Rpb24uZXJyb3IubWF4U2l6ZVRpdGxlJykgOiAnJ30gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVcbiAgICAgICAgICAgICAgICBpc0F0U2l6ZUxpbWl0PXtpc0F0U2l6ZUxpbWl0fVxuICAgICAgICAgICAgICAgIGlzRHJhZ2dpbmc9e2lzRHJhZ2dpbmd9XG4gICAgICAgICAgICAgICAgb25EcmFnRW50ZXI9e2hhbmRsZURyYWdFbnRlcn1cbiAgICAgICAgICAgICAgICBvbkRyYWdMZWF2ZT17aGFuZGxlRHJhZ0xlYXZlfVxuICAgICAgICAgICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICAgICAgICAgIG9uRHJvcD17aGFuZGxlRHJvcH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTQ0FLU0Ryb3Bab25lSWNvbj5cbiAgICAgICAgICAgICAgICAgIDxGaWxlVXBsb2FkIHdpZHRoPXszMH0gaGVpZ2h0PXszMH0gY29sb3I9e2lzQXRTaXplTGltaXQgPyAnIzk5OScgOiAnIzAwNkZBRid9IC8+XG4gICAgICAgICAgICAgICAgPC9TQ0FLU0Ryb3Bab25lSWNvbj5cbiAgICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZVRleHQ+XG4gICAgICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZVRleHRTcGFuIGlzQXRTaXplTGltaXQ9e2lzQXRTaXplTGltaXR9IGRhdGEtZHJvcHpvbmUtbGluayBvbkNsaWNrPXtoYW5kbGVBdHRhY2hDbGlja30+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdrbm93bGVkZ2VTZWN0aW9uLmRyb3Bab25lVGV4dC4xJyl9XG4gICAgICAgICAgICAgICAgICA8L1NDQUtTRHJvcFpvbmVUZXh0U3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt0KCdrbm93bGVkZ2VTZWN0aW9uLmRyb3Bab25lVGV4dC4yJyl9PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvU0NBS1NEcm9wWm9uZVRleHQ+XG4gICAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVJbmZvPnt0KCdrbm93bGVkZ2VTZWN0aW9uLmluZm9GaWxlVHlwZXMnKX08L1NDQUtTRHJvcFpvbmVJbmZvPlxuICAgICAgICAgICAgICA8L1NDQUtTRHJvcFpvbmU+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgPC9TQ0FLU0ZpbGVVcGxvYWRXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICA8U0NBS1NBdHRhY2htZW50c1dyYXBwZXI+XG4gICAgICAgICAgICB7KGxvY2FsQXR0YWNobWVudHMgfHwgW10pLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QXR0YWNobWVudENhcmRcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAga2V5PXtgYXR0YWNobWVudC0ke2F0dGFjaG1lbnQ/Lm5hbWV9LSR7YXR0YWNobWVudD8uaWR9YH1cbiAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQ9e2F0dGFjaG1lbnR9XG4gICAgICAgICAgICAgICAgICBoYW5kbGVBY3Rpb249e2hhbmRsZUFjdGlvbn1cbiAgICAgICAgICAgICAgICAgIGFibUtub3dsZWRnZVNlY3Rpb25cbiAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQXR0YWNobWVudENsaWNrKGF0dGFjaG1lbnQpfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NBS1NBdHRhY2htZW50c1dyYXBwZXI+XG4gICAgICAgIDwvU0NBS1NXcmFwcGVyQ29udGVudD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgYWNjZXB0PVwiLnR4dCwubWQsLmNzdiwuZG9jLC5kb2N4LC5wcHQsLnBwdHgsLnBkZiwucG5nLC5qcGcsLmpwZWcsLnhsc3gsLnhsc1wiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICA8L1NDQUtTV3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0TW9kYWxQcm9wcyhjcmVhdGVDbG9zZWRLbm93bGVkZ2VGaWxlRXJyb3JNb2RhbFN0YXRlKCkpXG4gICAgICAgICAgICBvbkZpbGVFcnJvckNoYW5nZT8uKGZhbHNlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBpbnZhbGlkRXh0ZW5zaW9uRmlsZXM9e21vZGFsUHJvcHMuaW52YWxpZEV4dGVuc2lvbkZpbGVzfVxuICAgICAgICAgIHNlY3Rpb249XCJhYm1fYWdlbnRcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxBdHRhY2htZW50UHJldmlld01vZGFsXG4gICAgICAgIGlzT3Blbj17ISFwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VQcmV2aWV3fVxuICAgICAgICBhdHRhY2htZW50PXtwcmV2aWV3QXR0YWNobWVudH1cbiAgICAgIC8+XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsVUFBVSxRQUFRLDZDQUE2QztBQUN4RSxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQWlDQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDM0UsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsY0FBYyxRQUFRLDJDQUEyQztBQUMxRSxTQUFTQyxzQkFBc0IsUUFBUSxvQ0FBb0M7QUFHM0UsU0FDRUMsWUFBWSxFQUNaQyxrQkFBa0IsRUFDbEJDLG1CQUFtQixFQUNuQkMsdUJBQXVCLEVBQ3ZCQyxzQkFBc0IsRUFDdEJDLDZCQUE2QixFQUM3QkMsdUJBQXVCLEVBQ3ZCQyxpQkFBaUIsRUFDakJDLHdCQUF3QixFQUN4QkMsYUFBYSxFQUNiQyxpQkFBaUIsRUFDakJDLGlCQUFpQixFQUNqQkMsaUJBQWlCLEVBQ2pCQyxxQkFBcUIsUUFDaEIsOEJBQThCO0FBQ3JDLFNBQVNDLG9CQUFvQixRQUFRLCtDQUErQztBQUNwRixTQUFTQyx1QkFBdUIsUUFBUSx3Q0FBd0M7QUFDaEYsU0FBU0MsZ0JBQWdCLFFBQVEsbURBQW1EO0FBQ3BGLFNBQVNDLDRCQUE0QixFQUFFQyxTQUFTLFFBQVEscUNBQXFDO0FBQzdGLFNBQ0VDLDBCQUEwQixFQUMxQkMsNkJBQTZCLEVBQzdCQywyQkFBMkIsRUFDM0JDLHdDQUF3QyxFQUN4Q0Msd0JBQXdCLEVB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
293
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUb29sdGlwIiwiRmlsZVVwbG9hZCIsIk9wZW4iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVRyYW5zbGF0aW9uIiwiQXR0YWNobWVudENhcmQiLCJBdHRhY2htZW50UHJldmlld01vZGFsIiwiU0NBS1NXcmFwcGVyIiwiU0NBS1NXcmFwcGVySGVhZGVyIiwiU0NBS1NXcmFwcGVyQ29udGVudCIsIlNDQUtTV3JhcHBlckhlYWRlclRpdGxlIiwiU0NBS1NXcmFwcGVySGVhZGVySW5mbyIsIlNDQUtTRmlsZVVwbG9hZFdyYXBwZXJDb250ZW50IiwiU0NBS1NBdHRhY2htZW50c1dyYXBwZXIiLCJTQ0FLU01vcmVJbmZvU3BhbiIsIlNDQUtTTW9yZUluZm9JY29uV3JhcHBlciIsIlNDQUtTRHJvcFpvbmUiLCJTQ0FLU0Ryb3Bab25lSWNvbiIsIlNDQUtTRHJvcFpvbmVUZXh0IiwiU0NBS1NEcm9wWm9uZUluZm8iLCJTQ0FLU0Ryb3Bab25lVGV4dFNwYW4iLCJ1c2VEb3dubG9hZEtub3dsZWRnZSIsInVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiTW9kYWxGaWxlRXhjZWVkcyIsImFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UiLCJmaWxlVHlwZXMiLCJhcHBlbmRLbm93bGVkZ2VBdHRhY2htZW50cyIsImNhblByZXZpZXdLbm93bGVkZ2VBdHRhY2htZW50IiwiY29tcHV0ZUF0dGFjaG1lbnRzVG90YWxTaXplIiwiY3JlYXRlQ2xvc2VkS25vd2xlZGdlRmlsZUVycm9yTW9kYWxTdGF0ZSIsIk1BWF9LTk9XTEVER0VfVE9UQUxfU0laRSIsInByb2Nlc3NLbm93bGVkZ2VGaWxlcyIsInJlbW92ZUtub3dsZWRnZUF0dGFjaG1lbnRCeUluZGV4IiwicmVzb2x2ZUtub3dsZWRnZUF0dGFjaG1lbnRBdEluZGV4IiwicmVzb2x2ZUtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUiLCJzaG91bGRCbG9ja0tub3dsZWRnZVVwbG9hZCIsInNob3VsZEVuYWJsZUtub3dsZWRnZURyYWdTdGF0ZSIsInNob3VsZEhhbmRsZUtub3dsZWRnZUF0dGFjaG1lbnRBY3Rpb24iLCJzaG91bGRQcm9jZXNzS25vd2xlZGdlRmlsZUlucHV0Iiwic2hvdWxkUnVuS25vd2xlZGdlRG93bmxvYWRFZmZlY3QiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJNQVhfVE9UQUxfU0laRSIsIkFibUtub3dsZWRnZVNlY3Rpb24iLCJfcmVmIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJ2YWx1ZXMiLCJvbkZpbGVFcnJvckNoYW5nZSIsInRvb2x0aXBaSW5kZXgiLCJfdXNlU3RhdGUiLCJrbm93bGVkZ2UiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJsb2NhbEF0dGFjaG1lbnRzIiwic2V0TG9jYWxBdHRhY2htZW50cyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicHJldmlld0F0dGFjaG1lbnQiLCJzZXRQcmV2aWV3QXR0YWNobWVudCIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGU1IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJpbnZhbGlkRXh0ZW5zaW9uRmlsZXMiLCJfdXNlU3RhdGU2IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJfdXNlRG93bmxvYWRLbm93bGVkZ2UiLCJoYW5kbGVEb3dubG9hZEtub3dsZWRnZSIsImlzRG93bmxvYWRpbmdTdWNjZXNzIiwic3VjY2VzcyIsImlzRG93bmxvYWRpbmdFcnJvciIsImVycm9yIiwiaXNEb3dubG9hZGluZyIsImlzTG9hZGluZyIsImhhbmRsZVJlc2V0U3RhdGVzIiwiX3VzZU9uYm9hcmRpbmdOYXZpZ2F0IiwiaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24iLCJmaWxlSW5wdXRSZWYiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRHJhZ2dpbmciLCJzZXRJc0RyYWdnaW5nIiwiY3VycmVudFRvdGFsU2l6ZSIsImlzQXRTaXplTGltaXQiLCJoYW5kbGVBdHRhY2hDbGljayIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImN1cnJlbnQiLCJjbGljayIsImhhbmRsZUZpbGVTZWxlY3QiLCJlIiwiZmlsZXMiLCJ0YXJnZXQiLCJfcHJvY2Vzc0tub3dsZWRnZUZpbGUiLCJBcnJheSIsImZyb20iLCJleGlzdGluZ0F0dGFjaG1lbnRzIiwiYWxsb3dlZEV4dGVuc2lvbnMiLCJtYXhUb3RhbFNpemUiLCJpbnNlcnRlZEZpbGVzIiwiaGFzRXJyb3JzIiwibGVuZ3RoIiwia2V5IiwidmFsdWUiLCJwcmV2IiwiaGFuZGxlRHJhZ0VudGVyIiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJoYW5kbGVEcmFnTGVhdmUiLCJoYW5kbGVEcmFnT3ZlciIsImhhbmRsZURyb3AiLCJkYXRhVHJhbnNmZXIiLCJzeW50aGV0aWNFdmVudCIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJpZCIsImZpbGVUb0RlbGV0ZSIsIm5ld0F0dGFjaG1lbnRzIiwiZGVsZXRlS25vd2xlZGdlIiwiaGFuZGxlRG93bmxvYWRBdHRhY2htZW50IiwiZmlsZSIsImFnZW50SWQiLCJnZW5lcmFsIiwidG9TdHJpbmciLCJrbm93bGVkZ2VJZCIsInVybCIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImJsb2IiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiaHJlZiIsImRvd25sb2FkIiwiZmlsZW5hbWUiLCJzdHlsZSIsImRpc3BsYXkiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJzZXRUaW1lb3V0IiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJoYW5kbGVBY3Rpb24iLCJfcmVmMiIsImFjdGlvbiIsImhhbmRsZUF0dGFjaG1lbnRDbGljayIsImF0dGFjaG1lbnQiLCJoYW5kbGVDbG9zZVByZXZpZXciLCJjaGlsZHJlbiIsIiRpbmRleCIsIm9uQ2xpY2siLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yIiwidGl0bGUiLCJ6SW5kZXgiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsIm1hcCIsImluZGV4IiwicG9zaXRpb25JbmRleCIsImFibUtub3dsZWRnZVNlY3Rpb24iLCJmdWxsV2lkdGgiLCJjb25jYXQiLCJuYW1lIiwicmVmIiwidHlwZSIsIm11bHRpcGxlIiwiYWNjZXB0Iiwib25DaGFuZ2UiLCJvbkNsb3NlIiwic2VjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9BYm1TZWN0aW9uL0FibUtub3dsZWRnZVNlY3Rpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGx1c3BsdXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWN5Y2xlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IE9wZW4gfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9PcGVuJ1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIERyYWdFdmVudCwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBdHRhY2htZW50Q2FyZCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRDYXJkL0F0dGFjaG1lbnRDYXJkJ1xuaW1wb3J0IHsgQXR0YWNobWVudFByZXZpZXdNb2RhbCB9IGZyb20gJy4uLy4uL2F0b21zL0F0dGFjaG1lbnRQcmV2aWV3TW9kYWwnXG5pbXBvcnQgeyBNb2RhbFZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50TW9kYWwnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7XG4gIFNDQUtTV3JhcHBlcixcbiAgU0NBS1NXcmFwcGVySGVhZGVyLFxuICBTQ0FLU1dyYXBwZXJDb250ZW50LFxuICBTQ0FLU1dyYXBwZXJIZWFkZXJUaXRsZSxcbiAgU0NBS1NXcmFwcGVySGVhZGVySW5mbyxcbiAgU0NBS1NGaWxlVXBsb2FkV3JhcHBlckNvbnRlbnQsXG4gIFNDQUtTQXR0YWNobWVudHNXcmFwcGVyLFxuICBTQ0FLU01vcmVJbmZvU3BhbixcbiAgU0NBS1NNb3JlSW5mb0ljb25XcmFwcGVyLFxuICBTQ0FLU0Ryb3Bab25lLFxuICBTQ0FLU0Ryb3Bab25lSWNvbixcbiAgU0NBS1NEcm9wWm9uZVRleHQsXG4gIFNDQUtTRHJvcFpvbmVJbmZvLFxuICBTQ0FLU0Ryb3Bab25lVGV4dFNwYW4sXG59IGZyb20gJy4vQWJtS25vd2xlZGdlU2VjdGlvbi5zdHlsZXMnXG5pbXBvcnQgeyB1c2VEb3dubG9hZEtub3dsZWRnZSB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUtub3dsZWRnZS9kb3dubG9hZEtub3dsZWRnZSdcbmltcG9ydCB7IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlT25ib2FyZGluZ05hdmlnYXRpb24nXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IGFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UsIGZpbGVUeXBlcyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHtcbiAgYXBwZW5kS25vd2xlZGdlQXR0YWNobWVudHMsXG4gIGNhblByZXZpZXdLbm93bGVkZ2VBdHRhY2htZW50LFxuICBjb21wdXRlQXR0YWNobWVudHNUb3RhbFNpemUsXG4gIGNyZWF0ZUNsb3NlZEtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUsXG4gIE1BWF9LTk9XTEVER0VfVE9UQUxfU0laRSxcbiAgcHJvY2Vzc0tub3dsZWRnZUZpbGVzLFxuICByZW1vdmVLbm93bGVkZ2VBdHRhY2htZW50QnlJbmRleCxcbiAgcmVzb2x2ZUtub3dsZWRnZUF0dGFjaG1lbnRBdEluZGV4LFxuICByZXNvbHZlS25vd2xlZGdlRmlsZUVycm9yTW9kYWxTdGF0ZSxcbiAgc2hvdWxkQmxvY2tLbm93bGVkZ2VVcGxvYWQsXG4gIHNob3VsZEVuYWJsZUtub3dsZWRnZURyYWdTdGF0ZSxcbiAgc2hvdWxkSGFuZGxlS25vd2xlZGdlQXR0YWNobWVudEFjdGlvbixcbiAgc2hvdWxkUHJvY2Vzc0tub3dsZWRnZUZpbGVJbnB1dCxcbiAgc2hvdWxkUnVuS25vd2xlZGdlRG93bmxvYWRFZmZlY3QsXG59IGZyb20gJy4vQWJtS25vd2xlZGdlU2VjdGlvbi5oZWxwZXJzJ1xuXG5jb25zdCBNQVhfVE9UQUxfU0laRSA9IE1BWF9LTk9XTEVER0VfVE9UQUxfU0laRVxuXG5leHBvcnQgY29uc3QgQWJtS25vd2xlZGdlU2VjdGlvbiA9ICh7XG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICB2YWx1ZXMsXG4gIG9uRmlsZUVycm9yQ2hhbmdlLFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHtcbiAgICBrZXksXG4gICAgdmFsdWUsXG4gICAgZGVsZXRlS25vd2xlZGdlLFxuICB9OiB7XG4gICAga2V5OiBzdHJpbmdcbiAgICB2YWx1ZTogdW5rbm93blxuICAgIGRlbGV0ZUtub3dsZWRnZT86IGJvb2xlYW5cbiAgfSkgPT4gdm9pZFxuICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gIG9uRmlsZUVycm9yQ2hhbmdlPzogKGhhc0Vycm9yczogYm9vbGVhbikgPT4gdm9pZFxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IFtsb2NhbEF0dGFjaG1lbnRzLCBzZXRMb2NhbEF0dGFjaG1lbnRzXSA9IHVzZVN0YXRlPEF0dGFjaG1lbnRGaWxlW10+KHZhbHVlcy5rbm93bGVkZ2UgfHwgW10pXG4gIGNvbnN0IFtwcmV2aWV3QXR0YWNobWVudCwgc2V0UHJldmlld0F0dGFjaG1lbnRdID0gdXNlU3RhdGU8QXR0YWNobWVudEZpbGUgfCBudWxsPihudWxsKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IFttb2RhbFByb3BzLCBzZXRNb2RhbFByb3BzXSA9IHVzZVN0YXRlKHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGV4Y2x1ZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGV4Y2VlZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGludmFsaWRFeHRlbnNpb25GaWxlczogW10gYXMgc3RyaW5nW10sXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBoYW5kbGVEb3dubG9hZEtub3dsZWRnZSxcbiAgICBzdWNjZXNzOiBpc0Rvd25sb2FkaW5nU3VjY2VzcyxcbiAgICBlcnJvcjogaXNEb3dubG9hZGluZ0Vycm9yLFxuICAgIGlzTG9hZGluZzogaXNEb3dubG9hZGluZyxcbiAgICBoYW5kbGVSZXNldFN0YXRlcyxcbiAgfSA9IHVzZURvd25sb2FkS25vd2xlZGdlKClcbiAgY29uc3QgeyBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbiB9ID0gdXNlT25ib2FyZGluZ05hdmlnYXRpb24oKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgW2lzRHJhZ2dpbmcsIHNldElzRHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgY3VycmVudFRvdGFsU2l6ZSA9IGNvbXB1dGVBdHRhY2htZW50c1RvdGFsU2l6ZShsb2NhbEF0dGFjaG1lbnRzIHx8IFtdKVxuICBjb25zdCBpc0F0U2l6ZUxpbWl0ID0gY3VycmVudFRvdGFsU2l6ZSA+PSBNQVhfVE9UQUxfU0laRVxuXG4gIGNvbnN0IGhhbmRsZUF0dGFjaENsaWNrID0gKCkgPT4ge1xuICAgIGlmIChzaG91bGRCbG9ja0tub3dsZWRnZVVwbG9hZChpc0F0U2l6ZUxpbWl0KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlU2VsZWN0ID0gKGU6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgeyBmaWxlcyB9ID0gZS50YXJnZXRcbiAgICBpZiAoIXNob3VsZFByb2Nlc3NLbm93bGVkZ2VGaWxlSW5wdXQoZmlsZXMpKSByZXR1cm5cblxuICAgIGNvbnN0IHsgaW5zZXJ0ZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgaW52YWxpZEV4dGVuc2lvbkZpbGVzLCBoYXNFcnJvcnMgfSA9IHByb2Nlc3NLbm93bGVkZ2VGaWxlcyh7XG4gICAgICBmaWxlczogQXJyYXkuZnJvbShmaWxlcyksXG4gICAgICBleGlzdGluZ0F0dGFjaG1lbnRzOiBsb2NhbEF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgYWxsb3dlZEV4dGVuc2lvbnM6IGFsbG93ZWRGaWxlVHlwZXNGb3JLbm93bGVkZ2UsXG4gICAgICBmaWxlVHlwZXMsXG4gICAgICBtYXhUb3RhbFNpemU6IE1BWF9UT1RBTF9TSVpFLFxuICAgIH0pXG5cbiAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICBzZXRNb2RhbFByb3BzKHJlc29sdmVLbm93bGVkZ2VGaWxlRXJyb3JNb2RhbFN0YXRlKHsgZXhjZWVkZWRGaWxlcywgaW52YWxpZEV4dGVuc2lvbkZpbGVzIH0pKVxuICAgICAgb25GaWxlRXJyb3JDaGFuZ2U/Lih0cnVlKVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkZpbGVFcnJvckNoYW5nZT8uKGZhbHNlKVxuICAgIH1cblxuICAgIGlmIChpbnNlcnRlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM/Lih7IGtleTogJ2tub3dsZWRnZScsIHZhbHVlOiBpbnNlcnRlZEZpbGVzIH0pXG4gICAgICBzZXRMb2NhbEF0dGFjaG1lbnRzKHByZXYgPT4gYXBwZW5kS25vd2xlZGdlQXR0YWNobWVudHMocHJldiB8fCBbXSwgaW5zZXJ0ZWRGaWxlcykpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VudGVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHNob3VsZEVuYWJsZUtub3dsZWRnZURyYWdTdGF0ZShpc0F0U2l6ZUxpbWl0KSkge1xuICAgICAgc2V0SXNEcmFnZ2luZyh0cnVlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG5cbiAgICBpZiAoc2hvdWxkQmxvY2tLbm93bGVkZ2VVcGxvYWQoaXNBdFNpemVMaW1pdCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHsgZmlsZXMgfSA9IGUuZGF0YVRyYW5zZmVyXG4gICAgaWYgKCFzaG91bGRQcm9jZXNzS25vd2xlZGdlRmlsZUlucHV0KGZpbGVzKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ3JlYXIgdW4gZXZlbnRvIHNpbnTDqXRpY28gcGFyYSByZXV0aWxpemFyIGxhIGzDs2dpY2EgZGUgaGFuZGxlRmlsZVNlbGVjdFxuICAgIGNvbnN0IHN5bnRoZXRpY0V2ZW50ID0ge1xuICAgICAgdGFyZ2V0OiB7IGZpbGVzIH0sXG4gICAgfSBhcyBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PlxuXG4gICAgaGFuZGxlRmlsZVNlbGVjdChzeW50aGV0aWNFdmVudClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoaWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGZpbGVUb0RlbGV0ZSA9IHJlc29sdmVLbm93bGVkZ2VBdHRhY2htZW50QXRJbmRleChsb2NhbEF0dGFjaG1lbnRzIHx8IFtdLCBpZClcbiAgICBpZiAoIWZpbGVUb0RlbGV0ZSkgcmV0dXJuXG5cbiAgICBjb25zdCBuZXdBdHRhY2htZW50cyA9IHJlbW92ZUtub3dsZWRnZUF0dGFjaG1lbnRCeUluZGV4KGxvY2FsQXR0YWNobWVudHMgfHwgW10sIGlkKVxuICAgIGlmICghbmV3QXR0YWNobWVudHMpIHJldHVyblxuICAgIHNldExvY2FsQXR0YWNobWVudHMobmV3QXR0YWNobWVudHMpXG5cbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcz8uKHsga2V5OiAna25vd2xlZGdlJywgdmFsdWU6IG5ld0F0dGFjaG1lbnRzLCBkZWxldGVLbm93bGVkZ2U6IHRydWUgfSlcblxuICAgIG9uRmlsZUVycm9yQ2hhbmdlPy4oZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEb3dubG9hZEF0dGFjaG1lbnQgPSAoaWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSByZXNvbHZlS25vd2xlZGdlQXR0YWNobWVudEF0SW5kZXgobG9jYWxBdHRhY2htZW50cyB8fCBbXSwgaWQpXG4gICAgaWYgKCFmaWxlKSByZXR1cm5cblxuICAgIGhhbmRsZURvd25sb2FkS25vd2xlZGdlKHsgYWdlbnRJZDogdmFsdWVzLmdlbmVyYWwuaWQhLnRvU3RyaW5nKCksIGtub3dsZWRnZUlkOiBmaWxlLmlkIH0pXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG91bGRSdW5Lbm93bGVkZ2VEb3dubG9hZEVmZmVjdChpc0Rvd25sb2FkaW5nU3VjY2VzcywgaXNEb3dubG9hZGluZ0Vycm9yLCBpc0Rvd25sb2FkaW5nKSkge1xuICAgICAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChpc0Rvd25sb2FkaW5nU3VjY2Vzcy5ibG9iKVxuICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKVxuICAgICAgbGluay5ocmVmID0gdXJsXG4gICAgICBsaW5rLmRvd25sb2FkID0gaXNEb3dubG9hZGluZ1N1Y2Nlc3MuZmlsZW5hbWVcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspXG4gICAgICBsaW5rLmNsaWNrKClcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluaylcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgICAgIGhhbmRsZVJlc2V0U3RhdGVzKClcbiAgICAgIH0sIDEwMClcbiAgICB9XG4gIH0sIFtpc0Rvd25sb2FkaW5nU3VjY2VzcywgaXNEb3dubG9hZGluZ0Vycm9yLCBpc0Rvd25sb2FkaW5nLCBoYW5kbGVSZXNldFN0YXRlc10pXG5cbiAgY29uc3QgaGFuZGxlQWN0aW9uID0gKHsgaWQsIGFjdGlvbiB9OiB7IGlkOiBudW1iZXI7IGFjdGlvbjogJ2RlbGV0ZScgfCAnZG93bmxvYWQnIH0pID0+IHtcbiAgICBpZiAoIXNob3VsZEhhbmRsZUtub3dsZWRnZUF0dGFjaG1lbnRBY3Rpb24oaXNEb3dubG9hZGluZykpIHJldHVyblxuICAgIGlmIChhY3Rpb24gPT09ICdkZWxldGUnKSB7XG4gICAgICBoYW5kbGVEZWxldGVBdHRhY2htZW50KGlkKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09ICdkb3dubG9hZCcpIHtcbiAgICAgIGhhbmRsZURvd25sb2FkQXR0YWNobWVudChpZClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVBdHRhY2htZW50Q2xpY2sgPSAoYXR0YWNobWVudDogQXR0YWNobWVudEZpbGUpID0+IHtcbiAgICBpZiAoY2FuUHJldmlld0tub3dsZWRnZUF0dGFjaG1lbnQoYXR0YWNobWVudCkpIHtcbiAgICAgIHNldFByZXZpZXdBdHRhY2htZW50KGF0dGFjaG1lbnQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VQcmV2aWV3ID0gKCkgPT4ge1xuICAgIHNldFByZXZpZXdBdHRhY2htZW50KG51bGwpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U0NBS1NXcmFwcGVyPlxuICAgICAgICA8U0NBS1NXcmFwcGVySGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgICAgPFNDQUtTV3JhcHBlckhlYWRlclRpdGxlPnt0KCdrbm93bGVkZ2VTZWN0aW9uLmtub3dsZWRnZVRhYicpfTwvU0NBS1NXcmFwcGVySGVhZGVyVGl0bGU+XG4gICAgICAgICAgPFNDQUtTV3JhcHBlckhlYWRlckluZm8+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi5pbmZvTGFiZWwnKX1cbiAgICAgICAgICAgICAgPFNDQUtTTW9yZUluZm9TcGFuIG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCdtb3JlSW5mbycpfT5cbiAgICAgICAgICAgICAgICB7dCgna25vd2xlZGdlU2VjdGlvbi5tb3JlSW5mbycpfVxuICAgICAgICAgICAgICAgIDxTQ0FLU01vcmVJbmZvSWNvbldyYXBwZXI+XG4gICAgICAgICAgICAgICAgICA8T3BlbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IGNvbG9yPVwiIzAwNkZBRlwiIC8+XG4gICAgICAgICAgICAgICAgPC9TQ0FLU01vcmVJbmZvSWNvbldyYXBwZXI+XG4gICAgICAgICAgICAgIDwvU0NBS1NNb3JlSW5mb1NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L1NDQUtTV3JhcHBlckhlYWRlckluZm8+XG4gICAgICAgIDwvU0NBS1NXcmFwcGVySGVhZGVyPlxuICAgICAgICA8U0NBS1NXcmFwcGVyQ29udGVudCAkaW5kZXg9ezF9PlxuICAgICAgICAgIDxTQ0FLU0ZpbGVVcGxvYWRXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtpc0F0U2l6ZUxpbWl0ID8gdCgna25vd2xlZGdlU2VjdGlvbi5lcnJvci5tYXhTaXplVGl0bGUnKSA6ICcnfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZVxuICAgICAgICAgICAgICAgIGlzQXRTaXplTGltaXQ9e2lzQXRTaXplTGltaXR9XG4gICAgICAgICAgICAgICAgaXNEcmFnZ2luZz17aXNEcmFnZ2luZ31cbiAgICAgICAgICAgICAgICBvbkRyYWdFbnRlcj17aGFuZGxlRHJhZ0VudGVyfVxuICAgICAgICAgICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgICAgICAgICAgb25EcmFnT3Zlcj17aGFuZGxlRHJhZ092ZXJ9XG4gICAgICAgICAgICAgICAgb25Ecm9wPXtoYW5kbGVEcm9wfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQUtTRHJvcFpvbmVJY29uPlxuICAgICAgICAgICAgICAgICAgPEZpbGVVcGxvYWQgd2lkdGg9ezMwfSBoZWlnaHQ9ezMwfSBjb2xvcj17aXNBdFNpemVMaW1pdCA/ICcjOTk5JyA6ICcjMDA2RkFGJ30gLz5cbiAgICAgICAgICAgICAgICA8L1NDQUtTRHJvcFpvbmVJY29uPlxuICAgICAgICAgICAgICAgIDxTQ0FLU0Ryb3Bab25lVGV4dD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FLU0Ryb3Bab25lVGV4dFNwYW4gaXNBdFNpemVMaW1pdD17aXNBdFNpemVMaW1pdH0gZGF0YS1kcm9wem9uZS1saW5rIG9uQ2xpY2s9e2hhbmRsZUF0dGFjaENsaWNrfT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ2tub3dsZWRnZVNlY3Rpb24uZHJvcFpvbmVUZXh0LjEnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBS1NEcm9wWm9uZVRleHRTcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3QoJ2tub3dsZWRnZVNlY3Rpb24uZHJvcFpvbmVUZXh0LjInKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9TQ0FLU0Ryb3Bab25lVGV4dD5cbiAgICAgICAgICAgICAgICA8U0NBS1NEcm9wWm9uZUluZm8+e3QoJ2tub3dsZWRnZVNlY3Rpb24uaW5mb0ZpbGVUeXBlcycpfTwvU0NBS1NEcm9wWm9uZUluZm8+XG4gICAgICAgICAgICAgIDwvU0NBS1NEcm9wWm9uZT5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICA8L1NDQUtTRmlsZVVwbG9hZFdyYXBwZXJDb250ZW50PlxuICAgICAgICAgIDxTQ0FLU0F0dGFjaG1lbnRzV3JhcHBlcj5cbiAgICAgICAgICAgIHsobG9jYWxBdHRhY2htZW50cyB8fCBbXSkubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxBdHRhY2htZW50Q2FyZFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb25JbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICBrZXk9e2BhdHRhY2htZW50LSR7YXR0YWNobWVudD8ubmFtZX0tJHthdHRhY2htZW50Py5pZH0tJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAgYXR0YWNobWVudD17YXR0YWNobWVudH1cbiAgICAgICAgICAgICAgICAgIGhhbmRsZUFjdGlvbj17aGFuZGxlQWN0aW9ufVxuICAgICAgICAgICAgICAgICAgYWJtS25vd2xlZGdlU2VjdGlvblxuICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVBdHRhY2htZW50Q2xpY2soYXR0YWNobWVudCl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0FLU0F0dGFjaG1lbnRzV3JhcHBlcj5cbiAgICAgICAgPC9TQ0FLU1dyYXBwZXJDb250ZW50PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICBhY2NlcHQ9XCIudHh0LC5tZCwuY3N2LC5kb2MsLmRvY3gsLnBwdCwucHB0eCwucGRmLC5wbmcsLmpwZywuanBlZywueGxzeCwueGxzXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZVNlbGVjdH1cbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvU0NBS1NXcmFwcGVyPlxuICAgICAge21vZGFsUHJvcHMuaXNPcGVuICYmIChcbiAgICAgICAgPE1vZGFsRmlsZUV4Y2VlZHNcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRNb2RhbFByb3BzKGNyZWF0ZUNsb3NlZEtub3dsZWRnZUZpbGVFcnJvck1vZGFsU3RhdGUoKSlcbiAgICAgICAgICAgIG9uRmlsZUVycm9yQ2hhbmdlPy4oZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGludmFsaWRFeHRlbnNpb25GaWxlcz17bW9kYWxQcm9wcy5pbnZhbGlkRXh0ZW5zaW9uRmlsZXN9XG4gICAgICAgICAgc2VjdGlvbj1cImFibV9hZ2VudFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEF0dGFjaG1lbnRQcmV2aWV3TW9kYWxcbiAgICAgICAgaXNPcGVuPXshIXByZXZpZXdBdHRhY2htZW50fVxuICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVByZXZpZXd9XG4gICAgICAgIGF0dGFjaG1lbnQ9e3ByZXZpZXdBdHRhY2htZW50fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxVQUFVLFFBQVEsNkNBQTZDO0FBQ3hFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBaUNDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUMzRSxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxjQUFjLFFBQVEsMkNBQTJDO0FBQzFFLFNBQVNDLHNCQUFzQixRQUFRLG9DQUFvQztBQUczRSxTQUNFQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsbUJBQW1CLEVBQ25CQyx1QkFBdUIsRUFDdkJDLHNCQUFzQixFQUN0QkMsNkJBQTZCLEVBQzdCQyx1QkFBdUIsRUFDdkJDLGlCQUFpQixFQUNqQkMsd0JBQXdCLEVBQ3hCQyxhQUFhLEVBQ2JDLGlCQUFpQixFQUNqQkMsaUJBQWlCLEVBQ2pCQyxpQkFBaUIsRUFDakJDLHFCQUFxQixRQUNoQiw4QkFBOEI7QUFDckMsU0FBU0Msb0JBQW9CLFFBQVEsK0NBQStDO0FBQ3BGLFNBQVNDLHVCQUF1QixRQUFRLHdDQUF3QztBQUNoRixTQUFTQyxnQkFBZ0IsUUFBUSxtREFBbUQ7QUFDcEYsU0FBU0MsNEJBQTRCLEVBQUVDLFNBQVMsUUFBUSxxQ0FBcUM7QUFDN0YsU0FDRUMsMEJBQTBCLEVBQzFCQyw2QkFBNkIsRUFDN0JDLDJCQUEyQixFQUMzQkMsd0NBQXdDLEVBQ3hDQyx3QkFBd0IsRUFDeEJDLHFCQUFxQixFQUNyQkMsZ0NBQWdDLEVBQ2hDQyxpQ0FBaUMsRUFDakNDLG1DQUFtQyxFQUNuQ0MsMEJBQTBCLEVBQzFCQyw4QkFBOEIsRUFDOUJDLHFDQUFxQyxFQUNyQ0MsK0JBQStCLEVBQy9CQyxnQ0FBZ0MsUUFDM0IsK0JBQStCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFdEMsSUFBTUMsY0FBYyxHQUFHaEIsd0JBQXdCO0FBRS9DLE9BQU8sSUFBTWlCLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUFDLElBQUEsRUFrQjFCO0VBQUEsSUFqQkpDLG9CQUFvQixHQUFBRCxJQUFBLENBQXBCQyxvQkFBb0I7SUFDcEJDLE1BQU0sR0FBQUYsSUFBQSxDQUFORSxNQUFNO0lBQ05DLGlCQUFpQixHQUFBSCxJQUFBLENBQWpCRyxpQkFBaUI7SUFDakJDLGFBQWEsR0FBQUosSUFBQSxDQUFiSSxhQUFhO0VBZWIsSUFBQUMsU0FBQSxHQUFnRGxELFFBQVEsQ0FBbUIrQyxNQUFNLENBQUNJLFNBQVMsSUFBSSxFQUFFLENBQUM7SUFBQUMsVUFBQSxHQUFBQyxjQUFBLENBQUFILFNBQUE7SUFBM0ZJLGdCQUFnQixHQUFBRixVQUFBO0lBQUVHLG1CQUFtQixHQUFBSCxVQUFBO0VBQzVDLElBQUFJLFVBQUEsR0FBa0R4RCxRQUFRLENBQXdCLElBQUksQ0FBQztJQUFBeUQsVUFBQSxHQUFBSixjQUFBLENBQUFHLFVBQUE7SUFBaEZFLGlCQUFpQixHQUFBRCxVQUFBO0lBQUVFLG9CQUFvQixHQUFBRixVQUFBO0VBQzlDLElBQUFHLGVBQUEsR0FBYzNELGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQztJQUF6QzRELENBQUMsR0FBQUQsZUFBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBQUMsVUFBQSxHQUFvQzlELFFBQVEsQ0FBQztNQUMzQytELE1BQU0sRUFBRSxLQUFLO01BQ2JDLGFBQWEsRUFBRSxFQUFjO01BQzdCQyxhQUFhLEVBQUUsRUFBYztNQUM3QkMscUJBQXFCLEVBQUU7SUFDekIsQ0FBQyxDQUFDO0lBQUFDLFVBQUEsR0FBQWQsY0FBQSxDQUFBUyxVQUFBO0lBTEtNLFVBQVUsR0FBQUQsVUFBQTtJQUFFRSxhQUFhLEdBQUFGLFVBQUE7RUFNaEMsSUFBQUcscUJBQUEsR0FNSXBELG9CQUFvQixDQUFDLENBQUM7SUFMeEJxRCx1QkFBdUIsR0FBQUQscUJBQUEsQ0FBdkJDLHVCQUF1QjtJQUNkQyxvQkFBb0IsR0FBQUYscUJBQUEsQ0FBN0JHLE9BQU87SUFDQUMsa0JBQWtCLEdBQUFKLHFCQUFBLENBQXpCSyxLQUFLO0lBQ01DLGFBQWEsR0FBQU4scUJBQUEsQ0FBeEJPLFNBQVM7SUFDVEMsaUJBQWlCLEdBQUFSLHFCQUFBLENBQWpCUSxpQkFBaUI7RUFFbkIsSUFBQUMscUJBQUEsR0FBdUM1RCx1QkFBdUIsQ0FBQyxDQUFDO0lBQXhENkQsMEJBQTBCLEdBQUFELHFCQUFBLENBQTFCQywwQkFBMEI7RUFDbEMsSUFBTUMsWUFBWSxHQUFHbEYsTUFBTSxDQUFtQixJQUFJLENBQUM7RUFDbkQsSUFBQW1GLFVBQUEsR0FBb0NsRixRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFtRixVQUFBLEdBQUE5QixjQUFBLENBQUE2QixVQUFBO0lBQTVDRSxVQUFVLEdBQUFELFVBQUE7SUFBRUUsYUFBYSxHQUFBRixVQUFBO0VBRWhDLElBQU1HLGdCQUFnQixHQUFHN0QsMkJBQTJCLENBQUM2QixnQkFBZ0IsSUFBSSxFQUFFLENBQUM7RUFDNUUsSUFBTWlDLGFBQWEsR0FBR0QsZ0JBQWdCLElBQUkzQyxjQUFjO0VBRXhELElBQU02QyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFBLEVBQVM7SUFBQSxJQUFBQyxxQkFBQTtJQUM5QixJQUFJekQsMEJBQTBCLENBQUN1RCxhQUFhLENBQUMsRUFBRTtNQUM3QztJQUNGO0lBQ0EsQ0FBQUUscUJBQUEsR0FBQVIsWUFBWSxDQUFDUyxPQUFPLGNBQUFELHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFzQkUsS0FBSyxDQUFDLENBQUM7RUFDL0IsQ0FBQztFQUVELElBQU1DLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUlDLENBQWdDLEVBQUs7SUFDN0QsSUFBUUMsS0FBSyxHQUFLRCxDQUFDLENBQUNFLE1BQU0sQ0FBbEJELEtBQUs7SUFDYixJQUFJLENBQUMzRCwrQkFBK0IsQ0FBQzJELEtBQUssQ0FBQyxFQUFFO0lBRTdDLElBQUFFLHFCQUFBLEdBQTJFcEUscUJBQXFCLENBQUM7UUFDL0ZrRSxLQUFLLEVBQUVHLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSixLQUFLLENBQUM7UUFDeEJLLG1CQUFtQixFQUFFN0MsZ0JBQWdCLElBQUksRUFBRTtRQUMzQzhDLGlCQUFpQixFQUFFL0UsNEJBQTRCO1FBQy9DQyxTQUFTLEVBQVRBLFNBQVM7UUFDVCtFLFlBQVksRUFBRTFEO01BQ2hCLENBQUMsQ0FBQztNQU5NMkQsYUFBYSxHQUFBTixxQkFBQSxDQUFiTSxhQUFhO01BQUVyQyxhQUFhLEdBQUErQixxQkFBQSxDQUFiL0IsYUFBYTtNQUFFQyxxQkFBcUIsR0FBQThCLHFCQUFBLENBQXJCOUIscUJBQXFCO01BQUVxQyxTQUFTLEdBQUFQLHFCQUFBLENBQVRPLFNBQVM7SUFRdEUsSUFBSUEsU0FBUyxFQUFFO01BQ2JsQyxhQUFhLENBQUN0QyxtQ0FBbUMsQ0FBQztRQUFFa0MsYUFBYSxFQUFiQSxhQUFhO1FBQUVDLHFCQUFxQixFQUFyQkE7TUFBc0IsQ0FBQyxDQUFDLENBQUM7TUFDNUZsQixpQkFBaUIsYUFBakJBLGlCQUFpQixlQUFqQkEsaUJBQWlCLENBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUMsTUFBTTtNQUNMQSxpQkFBaUIsYUFBakJBLGlCQUFpQixlQUFqQkEsaUJBQWlCLENBQUcsS0FBSyxDQUFDO0lBQzVCO0lBRUEsSUFBSXNELGFBQWEsQ0FBQ0UsTUFBTSxFQUFFO01BQ3hCMUQsb0JBQW9CLGFBQXBCQSxvQkFBb0IsZUFBcEJBLG9CQUFvQixDQUFHO1FBQUUyRCxHQUFHLEVBQUUsV0FBVztRQUFFQyxLQUFLLEVBQUVKO01BQWMsQ0FBQyxDQUFDO01BQ2xFL0MsbUJBQW1CLENBQUMsVUFBQW9ELElBQUk7UUFBQSxPQUFJcEYsMEJBQTBCLENBQUNvRixJQUFJLElBQUksRUFBRSxFQUFFTCxhQUFhLENBQUM7TUFBQSxFQUFDO0lBQ3BGO0VBQ0YsQ0FBQztFQUVELElBQU1NLGVBQWUsR0FBRyxTQUFsQkEsZUFBZUEsQ0FBSWYsQ0FBNEIsRUFBSztJQUN4REEsQ0FBQyxDQUFDZ0IsY0FBYyxDQUFDLENBQUM7SUFDbEJoQixDQUFDLENBQUNpQixlQUFlLENBQUMsQ0FBQztJQUNuQixJQUFJN0UsOEJBQThCLENBQUNzRCxhQUFhLENBQUMsRUFBRTtNQUNqREYsYUFBYSxDQUFDLElBQUksQ0FBQztJQUNyQjtFQUNGLENBQUM7RUFFRCxJQUFNMEIsZUFBZSxHQUFHLFNBQWxCQSxlQUFlQSxDQUFJbEIsQ0FBNEIsRUFBSztJQUN4REEsQ0FBQyxDQUFDZ0IsY0FBYyxDQUFDLENBQUM7SUFDbEJoQixDQUFDLENBQUNpQixlQUFlLENBQUMsQ0FBQztJQUNuQnpCLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDdEIsQ0FBQztFQUVELElBQU0yQixjQUFjLEdBQUcsU0FBakJBLGNBQWNBLENBQUluQixDQUE0QixFQUFLO0lBQ3ZEQSxDQUFDLENBQUNnQixjQUFjLENBQUMsQ0FBQztJQUNsQmhCLENBQUMsQ0FBQ2lCLGVBQWUsQ0FBQyxDQUFDO0VBQ3JCLENBQUM7RUFFRCxJQUFNRyxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBSXBCLENBQTRCLEVBQUs7SUFDbkRBLENBQUMsQ0FBQ2dCLGNBQWMsQ0FBQyxDQUFDO0lBQ2xCaEIsQ0FBQyxDQUFDaUIsZUFBZSxDQUFDLENBQUM7SUFDbkJ6QixhQUFhLENBQUMsS0FBSyxDQUFDO0lBRXBCLElBQUlyRCwwQkFBMEIsQ0FBQ3VELGFBQWEsQ0FBQyxFQUFFO01BQzdDO0lBQ0Y7SUFFQSxJQUFRTyxLQUFLLEdBQUtELENBQUMsQ0FBQ3FCLFlBQVksQ0FBeEJwQixLQUFLO0lBQ2IsSUFBSSxDQUFDM0QsK0JBQStCLENBQUMyRCxLQUFLLENBQUMsRUFBRTtNQUMzQztJQUNGOztJQUVBO0lBQ0EsSUFBTXFCLGNBQWMsR0FBRztNQUNyQnBCLE1BQU0sRUFBRTtRQUFFRCxLQUFLLEVBQUxBO01BQU07SUFDbEIsQ0FBa0M7SUFFbENGLGdCQUFnQixDQUFDdUIsY0FBYyxDQUFDO0VBQ2xDLENBQUM7RUFFRCxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxFQUFVLEVBQUs7SUFDN0MsSUFBTUMsWUFBWSxHQUFHeEYsaUNBQWlDLENBQUN3QixnQkFBZ0IsSUFBSSxFQUFFLEVBQUUrRCxFQUFFLENBQUM7SUFDbEYsSUFBSSxDQUFDQyxZQUFZLEVBQUU7SUFFbkIsSUFBTUMsY0FBYyxHQUFHMUYsZ0NBQWdDLENBQUN5QixnQkFBZ0IsSUFBSSxFQUFFLEVBQUUrRCxFQUFFLENBQUM7SUFDbkYsSUFBSSxDQUFDRSxjQUFjLEVBQUU7SUFDckJoRSxtQkFBbUIsQ0FBQ2dFLGNBQWMsQ0FBQztJQUVuQ3pFLG9CQUFvQixhQUFwQkEsb0JBQW9CLGVBQXBCQSxvQkFBb0IsQ0FBRztNQUFFMkQsR0FBRyxFQUFFLFdBQVc7TUFBRUMsS0FBSyxFQUFFYSxjQUFjO01BQUVDLGVBQWUsRUFBRTtJQUFLLENBQUMsQ0FBQztJQUUxRnhFLGlCQUFpQixhQUFqQkEsaUJBQWlCLGVBQWpCQSxpQkFBaUIsQ0FBRyxLQUFLLENBQUM7RUFDNUIsQ0FBQztFQUVELElBQU15RSx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJSixFQUFVLEVBQUs7SUFDL0MsSUFBTUssSUFBSSxHQUFHNUYsaUNBQWlDLENBQUN3QixnQkFBZ0IsSUFBSSxFQUFFLEVBQUUrRCxFQUFFLENBQUM7SUFDMUUsSUFBSSxDQUFDSyxJQUFJLEVBQUU7SUFFWG5ELHVCQUF1QixDQUFDO01BQUVvRCxPQUFPLEVBQUU1RSxNQUFNLENBQUM2RSxPQUFPLENBQUNQLEVBQUUsQ0FBRVEsUUFBUSxDQUFDLENBQUM7TUFBRUMsV0FBVyxFQUFFSixJQUFJLENBQUNMO0lBQUcsQ0FBQyxDQUFDO0VBQzNGLENBQUM7RUFFRHZILFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSXNDLGdDQUFnQyxDQUFDb0Msb0JBQW9CLEVBQUVFLGtCQUFrQixFQUFFRSxhQUFhLENBQUMsRUFBRTtNQUM3RixJQUFNbUQsR0FBRyxHQUFHQyxHQUFHLENBQUNDLGVBQWUsQ0FBQ3pELG9CQUFvQixDQUFDMEQsSUFBSSxDQUFDO01BQzFELElBQU1DLElBQUksR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsR0FBRyxDQUFDO01BQ3hDRixJQUFJLENBQUNHLElBQUksR0FBR1AsR0FBRztNQUNmSSxJQUFJLENBQUNJLFFBQVEsR0FBRy9ELG9CQUFvQixDQUFDZ0UsUUFBUTtNQUM3Q0wsSUFBSSxDQUFDTSxLQUFLLENBQUNDLE9BQU8sR0FBRyxNQUFNO01BRTNCTixRQUFRLENBQUNPLElBQUksQ0FBQ0MsV0FBVyxDQUFDVCxJQUFJLENBQUM7TUFDL0JBLElBQUksQ0FBQ3hDLEtBQUssQ0FBQyxDQUFDO01BRVprRCxVQUFVLENBQUMsWUFBTTtRQUNmVCxRQUFRLENBQUNPLElBQUksQ0FBQ0csV0FBVyxDQUFDWCxJQUFJLENBQUM7UUFDL0JILEdBQUcsQ0FBQ2UsZUFBZSxDQUFDaEIsR0FBRyxDQUFDO1FBQ3hCakQsaUJBQWlCLENBQUMsQ0FBQztNQUNyQixDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ1Q7RUFDRixDQUFDLEVBQUUsQ0FBQ04sb0JBQW9CLEVBQUVFLGtCQUFrQixFQUFFRSxhQUFhLEVBQUVFLGlCQUFpQixDQUFDLENBQUM7RUFFaEYsSUFBTWtFLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFBQyxLQUFBLEVBQXNFO0lBQUEsSUFBaEU1QixFQUFFLEdBQUE0QixLQUFBLENBQUY1QixFQUFFO01BQUU2QixNQUFNLEdBQUFELEtBQUEsQ0FBTkMsTUFBTTtJQUNoQyxJQUFJLENBQUNoSCxxQ0FBcUMsQ0FBQzBDLGFBQWEsQ0FBQyxFQUFFO0lBQzNELElBQUlzRSxNQUFNLEtBQUssUUFBUSxFQUFFO01BQ3ZCOUIsc0JBQXNCLENBQUNDLEVBQUUsQ0FBQztNQUMxQjtJQUNGO0lBQ0EsSUFBSTZCLE1BQU0sS0FBSyxVQUFVLEVBQUU7TUFDekJ6Qix3QkFBd0IsQ0FBQ0osRUFBRSxDQUFDO0lBQzlCO0VBQ0YsQ0FBQztFQUVELElBQU04QixxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxVQUEwQixFQUFLO0lBQzVELElBQUk1SCw2QkFBNkIsQ0FBQzRILFVBQVUsQ0FBQyxFQUFFO01BQzdDekYsb0JBQW9CLENBQUN5RixVQUFVLENBQUM7SUFDbEM7RUFDRixDQUFDO0VBRUQsSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBQSxFQUFTO0lBQy9CMUYsb0JBQW9CLENBQUMsSUFBSSxDQUFDO0VBQzVCLENBQUM7RUFFRCxvQkFDRW5CLEtBQUEsQ0FBQUUsU0FBQTtJQUFBNEcsUUFBQSxnQkFDRTlHLEtBQUEsQ0FBQ3BDLFlBQVk7TUFBQWtKLFFBQUEsZ0JBQ1g5RyxLQUFBLENBQUNuQyxrQkFBa0I7UUFBQ2tKLE1BQU0sRUFBRSxDQUFFO1FBQUFELFFBQUEsZ0JBQzVCaEgsSUFBQSxDQUFDL0IsdUJBQXVCO1VBQUErSSxRQUFBLEVBQUV6RixDQUFDLENBQUMsK0JBQStCO1FBQUMsQ0FBMEIsQ0FBQyxlQUN2RnZCLElBQUEsQ0FBQzlCLHNCQUFzQjtVQUFBOEksUUFBQSxlQUNyQjlHLEtBQUE7WUFBQThHLFFBQUEsR0FDR3pGLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxlQUNoQ3JCLEtBQUEsQ0FBQzdCLGlCQUFpQjtjQUFDNkksT0FBTyxFQUFFLFNBQVRBLE9BQU9BLENBQUE7Z0JBQUEsT0FBUXhFLDBCQUEwQixDQUFDLFVBQVUsQ0FBQztjQUFBLENBQUM7Y0FBQXNFLFFBQUEsR0FDdEV6RixDQUFDLENBQUMsMkJBQTJCLENBQUMsZUFDL0J2QixJQUFBLENBQUMxQix3QkFBd0I7Z0JBQUEwSSxRQUFBLGVBQ3ZCaEgsSUFBQSxDQUFDekMsSUFBSTtrQkFBQzRKLEtBQUssRUFBRSxFQUFHO2tCQUFDQyxNQUFNLEVBQUUsRUFBRztrQkFBQ0MsS0FBSyxFQUFDO2dCQUFTLENBQUU7Y0FBQyxDQUN2QixDQUFDO1lBQUEsQ0FDVixDQUFDO1VBQUEsQ0FDakI7UUFBQyxDQUNnQixDQUFDO01BQUEsQ0FDUCxDQUFDLGVBQ3JCbkgsS0FBQSxDQUFDbEMsbUJBQW1CO1FBQUNpSixNQUFNLEVBQUUsQ0FBRTtRQUFBRCxRQUFBLGdCQUM3QmhILElBQUEsQ0FBQzdCLDZCQUE2QjtVQUFBNkksUUFBQSxlQUM1QmhILElBQUEsQ0FBQzNDLE9BQU87WUFBQ2lLLEtBQUssRUFBRXJFLGFBQWEsR0FBRzFCLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxHQUFHLEVBQUc7WUFBQ2dHLE1BQU0sRUFBRTVHLGFBQWM7WUFBQXFHLFFBQUEsZUFDbkc5RyxLQUFBLENBQUMzQixhQUFhO2NBQ1owRSxhQUFhLEVBQUVBLGFBQWM7Y0FDN0JILFVBQVUsRUFBRUEsVUFBVztjQUN2QjBFLFdBQVcsRUFBRWxELGVBQWdCO2NBQzdCbUQsV0FBVyxFQUFFaEQsZUFBZ0I7Y0FDN0JpRCxVQUFVLEVBQUVoRCxjQUFlO2NBQzNCaUQsTUFBTSxFQUFFaEQsVUFBVztjQUFBcUMsUUFBQSxnQkFFbkJoSCxJQUFBLENBQUN4QixpQkFBaUI7Z0JBQUF3SSxRQUFBLGVBQ2hCaEgsSUFBQSxDQUFDMUMsVUFBVTtrQkFBQzZKLEtBQUssRUFBRSxFQUFHO2tCQUFDQyxNQUFNLEVBQUUsRUFBRztrQkFBQ0MsS0FBSyxFQUFFcEUsYUFBYSxHQUFHLE1BQU0sR0FBRztnQkFBVSxDQUFFO2NBQUMsQ0FDL0QsQ0FBQyxlQUNwQi9DLEtBQUEsQ0FBQ3pCLGlCQUFpQjtnQkFBQXVJLFFBQUEsZ0JBQ2hCaEgsSUFBQSxDQUFDckIscUJBQXFCO2tCQUFDc0UsYUFBYSxFQUFFQSxhQUFjO2tCQUFDLDBCQUFrQjtrQkFBQ2lFLE9BQU8sRUFBRWhFLGlCQUFrQjtrQkFBQThELFFBQUEsRUFDaEd6RixDQUFDLENBQUMsaUNBQWlDO2dCQUFDLENBQ2hCLENBQUMsZUFDeEJ2QixJQUFBO2tCQUFBZ0gsUUFBQSxFQUFPekYsQ0FBQyxDQUFDLGlDQUFpQztnQkFBQyxDQUFPLENBQUM7Y0FBQSxDQUNsQyxDQUFDLGVBQ3BCdkIsSUFBQSxDQUFDdEIsaUJBQWlCO2dCQUFBc0ksUUFBQSxFQUFFekYsQ0FBQyxDQUFDLGdDQUFnQztjQUFDLENBQW9CLENBQUM7WUFBQSxDQUMvRDtVQUFDLENBQ1Q7UUFBQyxDQUNtQixDQUFDLGVBQ2hDdkIsSUFBQSxDQUFDNUIsdUJBQXVCO1VBQUE0SSxRQUFBLEVBQ3JCLENBQUNoRyxnQkFBZ0IsSUFBSSxFQUFFLEVBQUU0RyxHQUFHLENBQUMsVUFBQ2QsVUFBVSxFQUFFZSxLQUFLLEVBQUs7WUFDbkQsb0JBQ0U3SCxJQUFBLENBQUNwQyxjQUFjO2NBQ2JrSyxhQUFhLEVBQUVELEtBQU07Y0FFckJmLFVBQVUsRUFBRUEsVUFBVztjQUN2QkosWUFBWSxFQUFFQSxZQUFhO2NBQzNCcUIsbUJBQW1CO2NBQ25CQyxTQUFTO2NBQ1RkLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO2dCQUFBLE9BQVFMLHFCQUFxQixDQUFDQyxVQUFVLENBQUM7Y0FBQTtZQUFDLGlCQUFBbUIsTUFBQSxDQUw5Qm5CLFVBQVUsYUFBVkEsVUFBVSx1QkFBVkEsVUFBVSxDQUFFb0IsSUFBSSxPQUFBRCxNQUFBLENBQUluQixVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRS9CLEVBQUUsT0FBQWtELE1BQUEsQ0FBSUosS0FBSyxDQU0vRCxDQUFDO1VBRU4sQ0FBQztRQUFDLENBQ3FCLENBQUM7TUFBQSxDQUNQLENBQUMsZUFDdEI3SCxJQUFBO1FBQ0VtSSxHQUFHLEVBQUV4RixZQUFhO1FBQ2xCeUYsSUFBSSxFQUFDLE1BQU07UUFDWEMsUUFBUTtRQUNSQyxNQUFNLEVBQUMscUVBQXFFO1FBQzVFQyxRQUFRLEVBQUVqRixnQkFBaUI7UUFDM0I2QyxLQUFLLEVBQUU7VUFBRUMsT0FBTyxFQUFFO1FBQU87TUFBRSxDQUM1QixDQUFDO0lBQUEsQ0FDVSxDQUFDLEVBQ2R0RSxVQUFVLENBQUNMLE1BQU0saUJBQ2hCekIsSUFBQSxDQUFDbEIsZ0JBQWdCO01BQ2YwSixPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQSxFQUFRO1FBQ2J6RyxhQUFhLENBQUMzQyx3Q0FBd0MsQ0FBQyxDQUFDLENBQUM7UUFDekRzQixpQkFBaUIsYUFBakJBLGlCQUFpQixlQUFqQkEsaUJBQWlCLENBQUcsS0FBSyxDQUFDO01BQzVCLENBQUU7TUFDRmdCLGFBQWEsRUFBRUksVUFBVSxDQUFDSixhQUFjO01BQ3hDQyxhQUFhLEVBQUVHLFVBQVUsQ0FBQ0gsYUFBYztNQUN4Q0MscUJBQXFCLEVBQUVFLFVBQVUsQ0FBQ0YscUJBQXNCO01BQ3hENkcsT0FBTyxFQUFDO0lBQVcsQ0FDcEIsQ0FDRixlQUNEekksSUFBQSxDQUFDbkMsc0JBQXNCO01BQ3JCNEQsTUFBTSxFQUFFLENBQUMsQ0FBQ0wsaUJBQWtCO01BQzVCb0gsT0FBTyxFQUFFekIsa0JBQW1CO01BQzVCRCxVQUFVLEVBQUUxRjtJQUFrQixDQUMvQixDQUFDO0VBQUEsQ0FDRixDQUFDO0FBRVAsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==