@kontur.candy/tools 2.184.3 → 2.185.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (599) hide show
  1. package/CHANGELOG.md +1659 -0
  2. package/candy.js +0 -0
  3. package/distr/Common/AsyncUtils.js +1 -1
  4. package/distr/Common/AutoValidationUtils.js +3 -2
  5. package/distr/Common/CandyApiClient/CandyApiClient.js +3 -2
  6. package/distr/Common/CandyApiClient/CandyApiClientContext.js +5 -4
  7. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js +1 -1
  8. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js +1 -1
  9. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js +1 -1
  10. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js +1 -1
  11. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
  12. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
  13. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js +1 -1
  14. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js +3 -2
  15. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js +1 -1
  16. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js +3 -2
  17. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js +1 -1
  18. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +5 -4
  19. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js +1 -1
  20. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js +5 -3
  21. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js +1 -1
  22. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +1 -1
  23. package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
  24. package/distr/Common/CandyApiClient/IsBuffer.js +1 -1
  25. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js +1 -1
  26. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js +1 -1
  27. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js +1 -1
  28. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js +1 -1
  29. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js +1 -1
  30. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js +5 -3
  31. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js +1 -1
  32. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
  33. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js +1 -1
  34. package/distr/Common/CandyApiClient/Types/DraftFullId.js +1 -1
  35. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js +3 -2
  36. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +5 -3
  37. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js +3 -2
  38. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js +1 -1
  39. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js +1 -1
  40. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js +3 -2
  41. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js +1 -1
  42. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js +1 -1
  43. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js +1 -1
  44. package/distr/Common/CandyApiClient/Types/Guid.js +1 -1
  45. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js +1 -1
  46. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js +1 -1
  47. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js +1 -1
  48. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js +3 -2
  49. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js +1 -1
  50. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js +1 -1
  51. package/distr/Common/CandyApiClient/Types/Print/PrintType.js +3 -2
  52. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js +1 -1
  53. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js +1 -1
  54. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js +1 -1
  55. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js +1 -1
  56. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js +1 -1
  57. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js +1 -1
  58. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js +1 -1
  59. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js +1 -1
  60. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js +1 -1
  61. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js +1 -1
  62. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js +1 -1
  63. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js +1 -1
  64. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js +1 -1
  65. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js +1 -1
  66. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js +1 -1
  67. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js +1 -1
  68. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js +1 -1
  69. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js +1 -1
  70. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js +1 -1
  71. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js +1 -1
  72. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js +1 -1
  73. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js +1 -1
  74. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js +3 -2
  75. package/distr/Common/CandyApiClient/Types/TestClassification.js +1 -1
  76. package/distr/Common/CollectionUtils.js +1 -1
  77. package/distr/Common/CommonConstants/SectionNames.js +1 -1
  78. package/distr/Common/Comparers.js +1 -1
  79. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +3 -3
  80. package/distr/Common/EndPoints.js +11 -6
  81. package/distr/Common/Enums/ButtonSettingsTypeEnum.js +3 -2
  82. package/distr/Common/Errors.js +1 -1
  83. package/distr/Common/ExtractGFVPath/ExtractGFVPath.js +1 -1
  84. package/distr/Common/FSPrinterClient/FSPrinterClient.js +2 -2
  85. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js +1 -1
  86. package/distr/Common/FSPrinterClient/IFSPrinterClient.js +11 -6
  87. package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
  88. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js +1 -1
  89. package/distr/Common/FormPathUtils.js +2 -2
  90. package/distr/Common/Funcs.js +1 -1
  91. package/distr/Common/GFV.js +1 -1
  92. package/distr/Common/Hooks/UseLocalStorage.js +3 -3
  93. package/distr/Common/HttpClient/AuthenticationMode.js +1 -1
  94. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js +3 -2
  95. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js +3 -2
  96. package/distr/Common/HttpClient/FetchImplementation/Fetch.js +1 -1
  97. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js +3 -2
  98. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js +1 -1
  99. package/distr/Common/HttpClient/HttpClient.js +2 -2
  100. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js +1 -1
  101. package/distr/Common/HttpClient/IHttpClient.js +1 -1
  102. package/distr/Common/IndentString.js +1 -1
  103. package/distr/Common/IntRangeUtils.js +1 -1
  104. package/distr/Common/IterableUtils.js +1 -1
  105. package/distr/Common/KCLangRuntimeUtils.js +1 -1
  106. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +2 -4
  107. package/distr/Common/ModelPath/BuildIterationSequence.js +1 -1
  108. package/distr/Common/ModelPath/EachCurrentCollision.js +3 -2
  109. package/distr/Common/ModelPath/IEquatable.js +1 -1
  110. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js +1 -1
  111. package/distr/Common/ModelPath/Map/Map2.js +1 -1
  112. package/distr/Common/ModelPath/Map/ModelPathMap.js +1 -1
  113. package/distr/Common/ModelPath/ModelPath.js +1 -1
  114. package/distr/Common/ModelPath/ModelPathBuilder.js +1 -1
  115. package/distr/Common/ModelPath/ModelPathHelper.js +1 -1
  116. package/distr/Common/ModelPath/PathMatcher.js +3 -2
  117. package/distr/Common/ModelPath/PathSplitHelper.js +1 -1
  118. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js +1 -1
  119. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js +1 -1
  120. package/distr/Common/ModelPath/Set/ModelPathSet.js +1 -1
  121. package/distr/Common/ModelPath/Set/Set2.js +1 -1
  122. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js +1 -1
  123. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js +1 -1
  124. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js +1 -1
  125. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js +1 -1
  126. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js +1 -1
  127. package/distr/Common/NidusClient/INidusClient.js +1 -1
  128. package/distr/Common/NidusClient/NidusClientContext.js +3 -3
  129. package/distr/Common/NidusClient/NidusClientImpl.js +3 -3
  130. package/distr/Common/PathConstants.js +7 -4
  131. package/distr/Common/PicklistApiClient/IPicklistApiClient.js +1 -1
  132. package/distr/Common/PicklistApiClient/PicklistApiClient.js +1 -1
  133. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js +1 -1
  134. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js +1 -1
  135. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js +1 -1
  136. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js +1 -1
  137. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js +1 -1
  138. package/distr/Common/RngSchemeTypes/types.js +1 -1
  139. package/distr/Common/StringArrayKey.js +1 -1
  140. package/distr/Common/TextExtractor/TextExtractorTypes.js +1 -1
  141. package/distr/Common/TypingUtils.js +1 -1
  142. package/distr/Common/UUID.js +1 -1
  143. package/distr/Common/UseAsyncEffect.js +3 -3
  144. package/distr/Common/UseShowOnce.js +1 -1
  145. package/distr/Common/UseTypedSelector.js +3 -2
  146. package/distr/Common/WellKnownDirectories.js +1 -1
  147. package/distr/Common/getRngSchemaFilename.js +1 -1
  148. package/distr/Common/hashUtils.js +1 -1
  149. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +4 -9
  150. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +12 -6
  151. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js +1 -1
  152. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +3 -3
  153. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +3 -4
  154. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js +1 -1
  155. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +1 -1
  156. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js +1 -1
  157. package/distr/Tools/src/BuildTasks/FSTask.js +1 -1
  158. package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
  159. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -3
  160. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js +1 -1
  161. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +1 -1
  162. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +3 -3
  163. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
  164. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +3 -3
  165. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +3 -4
  166. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +1 -1
  167. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +4 -4
  168. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js +1 -1
  169. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js +1 -1
  170. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
  171. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js +1 -1
  172. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js +1 -1
  173. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js +5 -5
  174. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +3 -3
  175. package/distr/Tools/src/BuildTasks/ReadFormSource.js +1 -1
  176. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +3 -2
  177. package/distr/Tools/src/BuildTasks/Version.js +3 -3
  178. package/distr/Tools/src/BuildTasks/WriteFormMeta.js +1 -1
  179. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +3 -2
  180. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +3 -2
  181. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +1 -1
  182. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js +3 -3
  183. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +5 -3
  184. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +5 -4
  185. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +6 -5
  186. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +5 -4
  187. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js +3 -2
  188. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +5 -4
  189. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +5 -4
  190. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js +3 -2
  191. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +5 -4
  192. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +5 -4
  193. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +4 -4
  194. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js +1 -1
  195. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js +1 -1
  196. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js +1 -1
  197. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +1 -1
  198. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +1 -1
  199. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js +1 -1
  200. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js +1 -1
  201. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js +1 -1
  202. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +3 -3
  203. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -1
  204. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js +1 -1
  205. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js +1 -1
  206. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +1 -1
  207. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js +1 -1
  208. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +3 -2
  209. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js +5 -3
  210. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js +1 -1
  211. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js +3 -2
  212. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +1 -1
  213. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js +3 -2
  214. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js +2 -2
  215. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +5 -4
  216. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js +1 -1
  217. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js +3 -2
  218. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js +3 -2
  219. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js +3 -2
  220. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +3 -3
  221. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js +3 -2
  222. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js +1 -1
  223. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js +3 -2
  224. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +3 -3
  225. package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js +3 -2
  226. package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js +1 -1
  227. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +3 -3
  228. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js +3 -2
  229. package/distr/Tools/src/CandyCLI.js +1 -1
  230. package/distr/Tools/src/CheckNodeJsVersion.js +3 -2
  231. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js +1 -1
  232. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +3 -3
  233. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js +1 -1
  234. package/distr/Tools/src/Commons/ErrorUntyped.js +1 -1
  235. package/distr/Tools/src/Commons/EventObject.js +1 -1
  236. package/distr/Tools/src/Commons/ExecUtils.js +1 -1
  237. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js +1 -1
  238. package/distr/Tools/src/Commons/FormGlobsUtils.js +1 -1
  239. package/distr/Tools/src/Commons/FormLocationInfo.js +1 -1
  240. package/distr/Tools/src/Commons/FsUtils.js +7 -5
  241. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +1 -1
  242. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js +1 -1
  243. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js +1 -1
  244. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js +1 -1
  245. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js +1 -1
  246. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js +1 -1
  247. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js +1 -1
  248. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js +1 -1
  249. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js +1 -1
  250. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +3 -2
  251. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js +1 -1
  252. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js +1 -1
  253. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js +1 -1
  254. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js +1 -1
  255. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js +1 -1
  256. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js +1 -1
  257. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js +1 -1
  258. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -3
  259. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js +3 -2
  260. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js +6 -6
  261. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js +1 -1
  262. package/distr/Tools/src/Commons/Locks/Lock.js +1 -1
  263. package/distr/Tools/src/Commons/Locks/LockHandle.js +1 -1
  264. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js +1 -1
  265. package/distr/Tools/src/Commons/Logging/ELKLogger.js +3 -2
  266. package/distr/Tools/src/Commons/Logging/ILogger.js +1 -1
  267. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
  268. package/distr/Tools/src/Commons/Logging/Logger.js +1 -1
  269. package/distr/Tools/src/Commons/Logging/StaticLogger.js +1 -1
  270. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js +1 -1
  271. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +3 -3
  272. package/distr/Tools/src/Commons/PathPattern.js +1 -1
  273. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js +1 -1
  274. package/distr/Tools/src/Commons/TasksCore/BuildTask.js +1 -1
  275. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +5 -5
  276. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js +3 -3
  277. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js +1 -1
  278. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js +1 -1
  279. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js +1 -1
  280. package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js +1 -1
  281. package/distr/Tools/src/Commons/TasksCore/Observe.js +1 -1
  282. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js +1 -1
  283. package/distr/Tools/src/Commons/TimingUtils.js +1 -1
  284. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -3
  285. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +1 -1
  286. package/distr/Tools/src/GenerateReadMe.js +1 -1
  287. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
  288. package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.LICENSE.txt +3 -5
  289. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  290. package/distr/Tools/src/LocalServerFrontEndDist/index.js.LICENSE.txt +3 -5
  291. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  292. package/distr/Tools/src/Options/CandyToolOptions.js +3 -2
  293. package/distr/Tools/src/ReadFarmConfig.js +1 -1
  294. package/distr/Tools/src/SelfUpdate.js +3 -3
  295. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +686 -681
  296. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  297. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +866 -581
  298. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.LICENSE.txt +1 -1
  299. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  300. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js +1 -1
  301. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js +1 -1
  302. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js +1 -1
  303. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js +1 -1
  304. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js +1 -1
  305. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js +1 -1
  306. package/package.json +24 -24
  307. package/distr/Common/AsyncUtils.js.map +0 -1
  308. package/distr/Common/AutoValidationUtils.js.map +0 -1
  309. package/distr/Common/CandyApiClient/CandyApiClient.js.map +0 -1
  310. package/distr/Common/CandyApiClient/CandyApiClientContext.js.map +0 -1
  311. package/distr/Common/CandyApiClient/ClientDraftInfo/ClientDraftInfoResponse.js.map +0 -1
  312. package/distr/Common/CandyApiClient/ClientDraftInfo/FnsFormInfo.js.map +0 -1
  313. package/distr/Common/CandyApiClient/ClientDraftInfo/GetClientDraftInfoUrl.js.map +0 -1
  314. package/distr/Common/CandyApiClient/ClientDraftInfo/PrintInfo.js.map +0 -1
  315. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js.map +0 -1
  316. package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js.map +0 -1
  317. package/distr/Common/CandyApiClient/DigestApiClient/DigestApiClient.js.map +0 -1
  318. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/Data/TaxRebate1152026.js.map +0 -1
  319. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakeDigestApiClient.js.map +0 -1
  320. package/distr/Common/CandyApiClient/DigestApiClient/Fakes/FakePicklists.js.map +0 -1
  321. package/distr/Common/CandyApiClient/DigestApiClient/IDigestApiClient.js.map +0 -1
  322. package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js.map +0 -1
  323. package/distr/Common/CandyApiClient/DigestApiClient/TestDigestApiClient.js.map +0 -1
  324. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestQueryFilter.js.map +0 -1
  325. package/distr/Common/CandyApiClient/DigestApiClient/Types/DigestRequest.js.map +0 -1
  326. package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +0 -1
  327. package/distr/Common/CandyApiClient/ICandyApiClient.js.map +0 -1
  328. package/distr/Common/CandyApiClient/IsBuffer.js.map +0 -1
  329. package/distr/Common/CandyApiClient/Types/Attachments/Attacments.js.map +0 -1
  330. package/distr/Common/CandyApiClient/Types/Attachments/GetAttachmentsResponse.js.map +0 -1
  331. package/distr/Common/CandyApiClient/Types/ChangeSet/ServerChangeSet.js.map +0 -1
  332. package/distr/Common/CandyApiClient/Types/CreateDraft/CreateDraftResponse.js.map +0 -1
  333. package/distr/Common/CandyApiClient/Types/DiagResourcesResponse.js.map +0 -1
  334. package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +0 -1
  335. package/distr/Common/CandyApiClient/Types/DraftActions/ConvertDraftRequest.js.map +0 -1
  336. package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +0 -1
  337. package/distr/Common/CandyApiClient/Types/DraftActions/FufSizeTooLargeError.js.map +0 -1
  338. package/distr/Common/CandyApiClient/Types/DraftFullId.js.map +0 -1
  339. package/distr/Common/CandyApiClient/Types/ErrorLog/CandyPopdProtocol.js.map +0 -1
  340. package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +0 -1
  341. package/distr/Common/CandyApiClient/Types/ExplanatoryNote/CreateExplanatoryNoteResponse.js.map +0 -1
  342. package/distr/Common/CandyApiClient/Types/FeatureFlags/FeatureFlagsResponse.js.map +0 -1
  343. package/distr/Common/CandyApiClient/Types/Focus/FocusServerResponse.js.map +0 -1
  344. package/distr/Common/CandyApiClient/Types/Focus/FocusTypes.js.map +0 -1
  345. package/distr/Common/CandyApiClient/Types/GetInner/ServerInnerResponse.js.map +0 -1
  346. package/distr/Common/CandyApiClient/Types/GetInner/ServerRawResponse.js.map +0 -1
  347. package/distr/Common/CandyApiClient/Types/GetInner/ServerRequisitesResponse.js.map +0 -1
  348. package/distr/Common/CandyApiClient/Types/Guid.js.map +0 -1
  349. package/distr/Common/CandyApiClient/Types/InstancesDeleting/InstancesDeletingRule.js.map +0 -1
  350. package/distr/Common/CandyApiClient/Types/MassActions/MassActionParameters.js.map +0 -1
  351. package/distr/Common/CandyApiClient/Types/MassActions/ValueForInstancesSettingRule.js.map +0 -1
  352. package/distr/Common/CandyApiClient/Types/Presentations/DraftPresentationType.js.map +0 -1
  353. package/distr/Common/CandyApiClient/Types/Presentations/PresentationContent.js.map +0 -1
  354. package/distr/Common/CandyApiClient/Types/Print/PrintResponse.js.map +0 -1
  355. package/distr/Common/CandyApiClient/Types/Print/PrintType.js.map +0 -1
  356. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/AndExpression.js.map +0 -1
  357. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CompareExpression.js.map +0 -1
  358. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/CountCallExpression.js.map +0 -1
  359. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/DecimalConstantExpression.js.map +0 -1
  360. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/InstanceIdCallExpression.js.map +0 -1
  361. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/NotExpression.js.map +0 -1
  362. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/OrExpression.js.map +0 -1
  363. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringConstantExpression.js.map +0 -1
  364. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/StringMatchExpression.js.map +0 -1
  365. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/SumCallExpression.js.map +0 -1
  366. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/TernaryExpression.js.map +0 -1
  367. package/distr/Common/CandyApiClient/Types/QueryCollecton/Expressions/ValueReferenceExpression.js.map +0 -1
  368. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryExpression.js.map +0 -1
  369. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryRequest.js.map +0 -1
  370. package/distr/Common/CandyApiClient/Types/QueryCollecton/InnerQueryResponse.js.map +0 -1
  371. package/distr/Common/CandyApiClient/Types/QueryCollecton/SelectClause.js.map +0 -1
  372. package/distr/Common/CandyApiClient/Types/QueryCollecton/SortingRule.js.map +0 -1
  373. package/distr/Common/CandyApiClient/Types/Staff/EmployeeInfo.js.map +0 -1
  374. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesOptions.js.map +0 -1
  375. package/distr/Common/CandyApiClient/Types/Staff/ImportEmployeesRequest.js.map +0 -1
  376. package/distr/Common/CandyApiClient/Types/Staff/StaffInfo.js.map +0 -1
  377. package/distr/Common/CandyApiClient/Types/Tasks/GetTasksServerResponse.js.map +0 -1
  378. package/distr/Common/CandyApiClient/Types/Tasks/Tasks.js.map +0 -1
  379. package/distr/Common/CandyApiClient/Types/TestClassification.js.map +0 -1
  380. package/distr/Common/CollectionUtils.js.map +0 -1
  381. package/distr/Common/CommonConstants/SectionNames.js.map +0 -1
  382. package/distr/Common/Comparers.js.map +0 -1
  383. package/distr/Common/EmotionStorybookWorkaroundViaAliases.js.map +0 -1
  384. package/distr/Common/EndPoints.js.map +0 -1
  385. package/distr/Common/Enums/ButtonSettingsTypeEnum.js.map +0 -1
  386. package/distr/Common/Errors.js.map +0 -1
  387. package/distr/Common/ExtractGFVPath/ExtractGFVPath.js.map +0 -1
  388. package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +0 -1
  389. package/distr/Common/FSPrinterClient/FakeFSPrinterClient.js.map +0 -1
  390. package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +0 -1
  391. package/distr/Common/FormActionHandlers/ContextualActionNames.js.map +0 -1
  392. package/distr/Common/FormActionHandlers/ControlNamedContextualAction.js.map +0 -1
  393. package/distr/Common/FormPathUtils.js.map +0 -1
  394. package/distr/Common/Funcs.js.map +0 -1
  395. package/distr/Common/GFV.js.map +0 -1
  396. package/distr/Common/Hooks/UseLocalStorage.js.map +0 -1
  397. package/distr/Common/HttpClient/AuthenticationMode.js.map +0 -1
  398. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithOptionalPolyfill.js.map +0 -1
  399. package/distr/Common/HttpClient/FetchImplementation/BrowserFetchWithPolyfill.js.map +0 -1
  400. package/distr/Common/HttpClient/FetchImplementation/Fetch.js.map +0 -1
  401. package/distr/Common/HttpClient/FetchImplementation/NativeBrowserFetch.js.map +0 -1
  402. package/distr/Common/HttpClient/FetchImplementation/NodeFetch.js.map +0 -1
  403. package/distr/Common/HttpClient/HttpClient.js.map +0 -1
  404. package/distr/Common/HttpClient/HttpClientAuthenticationProvider.js.map +0 -1
  405. package/distr/Common/HttpClient/IHttpClient.js.map +0 -1
  406. package/distr/Common/IndentString.js.map +0 -1
  407. package/distr/Common/IntRangeUtils.js.map +0 -1
  408. package/distr/Common/IterableUtils.js.map +0 -1
  409. package/distr/Common/KCLangRuntimeUtils.js.map +0 -1
  410. package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +0 -1
  411. package/distr/Common/ModelPath/BuildIterationSequence.js.map +0 -1
  412. package/distr/Common/ModelPath/EachCurrentCollision.js.map +0 -1
  413. package/distr/Common/ModelPath/IEquatable.js.map +0 -1
  414. package/distr/Common/ModelPath/Map/AbsoluteModelPathMap.js.map +0 -1
  415. package/distr/Common/ModelPath/Map/Map2.js.map +0 -1
  416. package/distr/Common/ModelPath/Map/ModelPathMap.js.map +0 -1
  417. package/distr/Common/ModelPath/ModelPath.js.map +0 -1
  418. package/distr/Common/ModelPath/ModelPathBuilder.js.map +0 -1
  419. package/distr/Common/ModelPath/ModelPathHelper.js.map +0 -1
  420. package/distr/Common/ModelPath/PathMatcher.js.map +0 -1
  421. package/distr/Common/ModelPath/PathSplitHelper.js.map +0 -1
  422. package/distr/Common/ModelPath/Set/AbsoluteModelPathSet.js.map +0 -1
  423. package/distr/Common/ModelPath/Set/AbsoluteResolvedModelPathSet.js.map +0 -1
  424. package/distr/Common/ModelPath/Set/ModelPathSet.js.map +0 -1
  425. package/distr/Common/ModelPath/Set/Set2.js.map +0 -1
  426. package/distr/Common/NidusClient/ContextualNidusClient/ContextualNidusClient.js.map +0 -1
  427. package/distr/Common/NidusClient/ContextualNidusClient/IContextualNidusClient.js.map +0 -1
  428. package/distr/Common/NidusClient/Fakes/CreateUniqueNidusEntryId.js.map +0 -1
  429. package/distr/Common/NidusClient/Fakes/FakeNidusClient.js.map +0 -1
  430. package/distr/Common/NidusClient/Fakes/LocalStorageBasedNidusClient.js.map +0 -1
  431. package/distr/Common/NidusClient/INidusClient.js.map +0 -1
  432. package/distr/Common/NidusClient/NidusClientContext.js.map +0 -1
  433. package/distr/Common/NidusClient/NidusClientImpl.js.map +0 -1
  434. package/distr/Common/PathConstants.js.map +0 -1
  435. package/distr/Common/PicklistApiClient/IPicklistApiClient.js.map +0 -1
  436. package/distr/Common/PicklistApiClient/PicklistApiClient.js.map +0 -1
  437. package/distr/Common/PicklistApiClient/PicklistRequestV2Builder.js.map +0 -1
  438. package/distr/Common/PicklistApiClient/Serializers/DigestFilterColumnSerializer.js.map +0 -1
  439. package/distr/Common/PicklistApiClient/Serializers/DigestLogicalFilterSerializer.js.map +0 -1
  440. package/distr/Common/PicklistApiClient/Types/PicklistRequestV2.js.map +0 -1
  441. package/distr/Common/PicklistApiClient/Types/PicklistResultV2.js.map +0 -1
  442. package/distr/Common/RngSchemeTypes/types.js.map +0 -1
  443. package/distr/Common/StringArrayKey.js.map +0 -1
  444. package/distr/Common/TextExtractor/TextExtractorTypes.js.map +0 -1
  445. package/distr/Common/TypingUtils.js.map +0 -1
  446. package/distr/Common/UUID.js.map +0 -1
  447. package/distr/Common/UseAsyncEffect.js.map +0 -1
  448. package/distr/Common/UseShowOnce.js.map +0 -1
  449. package/distr/Common/UseTypedSelector.js.map +0 -1
  450. package/distr/Common/WellKnownDirectories.js.map +0 -1
  451. package/distr/Common/getRngSchemaFilename.js.map +0 -1
  452. package/distr/Common/hashUtils.js.map +0 -1
  453. package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js.map +0 -1
  454. package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js.map +0 -1
  455. package/distr/Tools/src/BuildTasks/Engine/AcquireFormEngine.js.map +0 -1
  456. package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js.map +0 -1
  457. package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js.map +0 -1
  458. package/distr/Tools/src/BuildTasks/Engine/EngineSource.js.map +0 -1
  459. package/distr/Tools/src/BuildTasks/EngineStructureUtils.js.map +0 -1
  460. package/distr/Tools/src/BuildTasks/EngineVersionUtils.js.map +0 -1
  461. package/distr/Tools/src/BuildTasks/FSTask.js.map +0 -1
  462. package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +0 -1
  463. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js.map +0 -1
  464. package/distr/Tools/src/BuildTasks/Form/NullFormGenerator.js.map +0 -1
  465. package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js.map +0 -1
  466. package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js.map +0 -1
  467. package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js.map +0 -1
  468. package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js.map +0 -1
  469. package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js.map +0 -1
  470. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js.map +0 -1
  471. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js.map +0 -1
  472. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ProcessSugarWorker.js.map +0 -1
  473. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/ReadSourcesAndProcessSugarWorker.js.map +0 -1
  474. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js.map +0 -1
  475. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/TypedProcessWorker.js.map +0 -1
  476. package/distr/Tools/src/BuildTasks/ProcessUtils/ProcessUtils.js.map +0 -1
  477. package/distr/Tools/src/BuildTasks/ProcessUtils/ShellProcessHandle.js.map +0 -1
  478. package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js.map +0 -1
  479. package/distr/Tools/src/BuildTasks/ReadFormSource.js.map +0 -1
  480. package/distr/Tools/src/BuildTasks/ResolveFormInfo.js.map +0 -1
  481. package/distr/Tools/src/BuildTasks/Version.js.map +0 -1
  482. package/distr/Tools/src/BuildTasks/WriteFormMeta.js.map +0 -1
  483. package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js.map +0 -1
  484. package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +0 -1
  485. package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +0 -1
  486. package/distr/Tools/src/CLICommands/BuildServer/BuildLogsWebsocketController.js.map +0 -1
  487. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js.map +0 -1
  488. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +0 -1
  489. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +0 -1
  490. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js.map +0 -1
  491. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsController.js.map +0 -1
  492. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js.map +0 -1
  493. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js.map +0 -1
  494. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerLocalSourcesEngineController.js.map +0 -1
  495. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js.map +0 -1
  496. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js.map +0 -1
  497. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js.map +0 -1
  498. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ClientJsDevServer.js.map +0 -1
  499. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/EngineDevServer.js.map +0 -1
  500. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/ReportGeneratorErrorToPageBody.js.map +0 -1
  501. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js.map +0 -1
  502. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js.map +0 -1
  503. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorkerFactory.js.map +0 -1
  504. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IInputFileSystem.js.map +0 -1
  505. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/IWatchFileSystem.js.map +0 -1
  506. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js.map +0 -1
  507. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +0 -1
  508. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/GlobToRegexp.js.map +0 -1
  509. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/IGeneratedServerSideSourcesProvider.js.map +0 -1
  510. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js.map +0 -1
  511. package/distr/Tools/src/CLICommands/BuildServer/StdStreamsIntercepter.js.map +0 -1
  512. package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js.map +0 -1
  513. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptionDefintions.js.map +0 -1
  514. package/distr/Tools/src/CLICommands/CommonOptions/CommonOptions.js.map +0 -1
  515. package/distr/Tools/src/CLICommands/DevBuild/DevBuildOptions.js.map +0 -1
  516. package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +0 -1
  517. package/distr/Tools/src/CLICommands/FormStats/FormStatsOptions.js.map +0 -1
  518. package/distr/Tools/src/CLICommands/FormStats/RunFormStats.js.map +0 -1
  519. package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js.map +0 -1
  520. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/fetchfunctions/{gfv}.fetchfunctions.js.map +0 -1
  521. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/browser/Smoke.test.js.map +0 -1
  522. package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/test/ui/DemoTest.test.js.map +0 -1
  523. package/distr/Tools/src/CLICommands/InitForm/InitFormOptions.js.map +0 -1
  524. package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +0 -1
  525. package/distr/Tools/src/CLICommands/Localization/LocalizationOptions.js.map +0 -1
  526. package/distr/Tools/src/CLICommands/Localization/RunLocalization.js.map +0 -1
  527. package/distr/Tools/src/CLICommands/RenameFiles/RenameFilesOptions.js.map +0 -1
  528. package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +0 -1
  529. package/distr/Tools/src/CLICommands/SugarExtractor/ExtractTextsFromSugarController.js.map +0 -1
  530. package/distr/Tools/src/CLICommands/SugarExtractor/Utils.js.map +0 -1
  531. package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js.map +0 -1
  532. package/distr/Tools/src/CLICommands/UpgradeForm/UpgradeFormOptions.js.map +0 -1
  533. package/distr/Tools/src/CandyCLI.js.map +0 -1
  534. package/distr/Tools/src/CheckNodeJsVersion.js.map +0 -1
  535. package/distr/Tools/src/Commons/ApiClient/ToolsApiClient.js.map +0 -1
  536. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js.map +0 -1
  537. package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplicationContext.js.map +0 -1
  538. package/distr/Tools/src/Commons/ErrorUntyped.js.map +0 -1
  539. package/distr/Tools/src/Commons/EventObject.js.map +0 -1
  540. package/distr/Tools/src/Commons/ExecUtils.js.map +0 -1
  541. package/distr/Tools/src/Commons/ExtractGfvsFromFileName.js.map +0 -1
  542. package/distr/Tools/src/Commons/FormGlobsUtils.js.map +0 -1
  543. package/distr/Tools/src/Commons/FormLocationInfo.js.map +0 -1
  544. package/distr/Tools/src/Commons/FsUtils.js.map +0 -1
  545. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js.map +0 -1
  546. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Methods.js.map +0 -1
  547. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/NotFoundWebError.js.map +0 -1
  548. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/CookieParamParamBinder.js.map +0 -1
  549. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/IParamBinder.js.map +0 -1
  550. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/JsonBodyParamBinder.js.map +0 -1
  551. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/StringBodyParamBinder.js.map +0 -1
  552. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlParamBinder.js.map +0 -1
  553. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/ParamBinders/UrlQueryParamBinder.js.map +0 -1
  554. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js.map +0 -1
  555. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomActionResultHandler.js.map +0 -1
  556. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/CustomContentResultHandler.js.map +0 -1
  557. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/EmptyResultHandler.js.map +0 -1
  558. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/HtmlResultHandler.js.map +0 -1
  559. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/IResultHandler.js.map +0 -1
  560. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/JsonResultHandler.js.map +0 -1
  561. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/PlainTextResultHandler.js.map +0 -1
  562. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js.map +0 -1
  563. package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results.js.map +0 -1
  564. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/ExpressServerWrapper.js.map +0 -1
  565. package/distr/Tools/src/Commons/HttpServer/ExpressWrapper/SingletonController.js.map +0 -1
  566. package/distr/Tools/src/Commons/Locks/Lock.js.map +0 -1
  567. package/distr/Tools/src/Commons/Locks/LockHandle.js.map +0 -1
  568. package/distr/Tools/src/Commons/Locks/ReadWriteLockCollection.js.map +0 -1
  569. package/distr/Tools/src/Commons/Logging/ELKLogger.js.map +0 -1
  570. package/distr/Tools/src/Commons/Logging/ILogger.js.map +0 -1
  571. package/distr/Tools/src/Commons/Logging/InMemoryLogger.js.map +0 -1
  572. package/distr/Tools/src/Commons/Logging/Logger.js.map +0 -1
  573. package/distr/Tools/src/Commons/Logging/StaticLogger.js.map +0 -1
  574. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.d.js.map +0 -1
  575. package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js.map +0 -1
  576. package/distr/Tools/src/Commons/PathPattern.js.map +0 -1
  577. package/distr/Tools/src/Commons/TasksCore/AggregatedError.js.map +0 -1
  578. package/distr/Tools/src/Commons/TasksCore/BuildTask.js.map +0 -1
  579. package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js.map +0 -1
  580. package/distr/Tools/src/Commons/TasksCore/DirectoryEntriesProducer.js.map +0 -1
  581. package/distr/Tools/src/Commons/TasksCore/EmptyProducer.js.map +0 -1
  582. package/distr/Tools/src/Commons/TasksCore/FileSystemEntriesProducer.js.map +0 -1
  583. package/distr/Tools/src/Commons/TasksCore/FileValueProducer.js.map +0 -1
  584. package/distr/Tools/src/Commons/TasksCore/FixedDirectoryEntriesProducer.js.map +0 -1
  585. package/distr/Tools/src/Commons/TasksCore/Observe.js.map +0 -1
  586. package/distr/Tools/src/Commons/TasksCore/SingleValueProducer.js.map +0 -1
  587. package/distr/Tools/src/Commons/TimingUtils.js.map +0 -1
  588. package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js.map +0 -1
  589. package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +0 -1
  590. package/distr/Tools/src/GenerateReadMe.js.map +0 -1
  591. package/distr/Tools/src/Options/CandyToolOptions.js.map +0 -1
  592. package/distr/Tools/src/ReadFarmConfig.js.map +0 -1
  593. package/distr/Tools/src/SelfUpdate.js.map +0 -1
  594. package/distr/Tools/src/StaticFilesForProductionResourcesDir/jquery-1.11.3.min.js.map +0 -1
  595. package/distr/Tools/src/StaticFilesForProductionResourcesDir/polyfill.min.js.map +0 -1
  596. package/distr/Tools/src/StaticFilesForProductionResourcesDir/testing.min.js.map +0 -1
  597. package/distr/Tools/src/StaticFilesForResourcesDir/jquery-1.11.3.min.js.map +0 -1
  598. package/distr/Tools/src/StaticFilesForResourcesDir/polyfill.min.js.map +0 -1
  599. package/distr/Tools/src/StaticFilesForResourcesDir/testing.min.js.map +0 -1
@@ -156,7 +156,7 @@ class HttpClient {
156
156
  return response;
157
157
  } catch (e) {
158
158
  var _this$exceptionLogger;
159
- (_this$exceptionLogger = this.exceptionLogger) === null || _this$exceptionLogger === void 0 || _this$exceptionLogger.call(this, e, {
159
+ (_this$exceptionLogger = this.exceptionLogger) === null || _this$exceptionLogger === void 0 ? void 0 : _this$exceptionLogger.call(this, e, {
160
160
  fetchUrl: fetchUrl
161
161
  });
162
162
  return (0, _TypingUtils.reject)(e);
@@ -306,4 +306,4 @@ class HttpError extends Error {
306
306
  }
307
307
  }
308
308
  exports.HttpError = HttpError;
309
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3JzIiwicmVxdWlyZSIsIl9UeXBpbmdVdGlscyIsInRyaW1UcmFpbGluZ1NsYXNoIiwidXJsIiwic2xpY2UiLCJ0cmltTGVhZGluZ1NsYXNoIiwiSHR0cENsaWVudFJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJmZXRjaFJlc3BvbnNlIiwic3RhdHVzIiwianNvbiIsInJlc3BvbnNlRGF0YSIsImV4cG9ydHMiLCJIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIiLCJleGVjdXRlIiwiZXhlY3V0ZVJlcXVlc3QiLCJhY2NlcHRDb2RlcyIsInF1ZXJ5UGFyYW1zIiwic2lnbmFsIiwiYm9keUZhY3RvcnkiLCJjb250ZW50VHlwZSIsInRoZW4iLCJhcmdzIiwicmVzdWx0UHJvbWlzZSIsInJlc3VsdCIsImNyZWF0ZUNvbmZpZyIsIndpdGhBYm9ydFNpZ25hbCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsImJvZHkiLCJ1bmRlZmluZWQiLCJ3aXRoSnNvbkJvZHkiLCJzZXJpYWxpemFibGVCb2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhSYXdCb2R5IiwiYWNjZXB0Q29kZSIsImNvZGUiLCJwdXNoIiwiY3JlYXRlIiwiZm4iLCJIdHRwQ2xpZW50IiwiZmV0Y2hJbXBsIiwiYmFzZVVybCIsImF1dGhlbnRpY2F0aW9uUHJvdmlkZXIiLCJkZWZhdWx0UXVlcnlQYXJhbXMiLCJleGNlcHRpb25Mb2dnZXIiLCJkZWZhdWx0UGFyYW1zIiwiZ2V0IiwibWV0aG9kIiwicG9zdCIsInB1dCIsInBhdGNoIiwiZGVsZXRlIiwiY29uZmlnIiwiZmV0Y2hVcmwiLCJyZXF1ZXN0IiwiYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJyZXNwb25zZSIsImNoZWNrU3RhdHVzIiwiZSIsIl90aGlzJGV4Y2VwdGlvbkxvZ2dlciIsImNhbGwiLCJyZWplY3QiLCJvcHRpb25zIiwiX29wdGlvbnMkaGVhZGVycyIsImhlYWRlcnMiLCJwYXRoIiwicGFyYW1zIiwicmVzdWx0UGFyYW1zIiwiaW5jbHVkZXMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTm90U3VwcG9ydGVkRXJyb3IiLCJjcmVhdGVRdWVyeVN0cmluZyIsImlzU3VjY2Vzc1Jlc3BvbnNlU3RhdHVzIiwiaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMiLCJlcnJvclRleHQiLCJ0ZXh0Iiwic2VydmVyUmVzcG9uc2UiLCJwYXJzZSIsIl9yZWYiLCJfc2VydmVyUmVzcG9uc2UkTWVzc2EiLCJlcnJvciIsIkh0dHBFcnJvciIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwiRXJyb3IiLCJwb3N0U3luYyIsImRhdGEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInJlc3BvbnNlVGV4dCIsIm1ha2VQYXJhbVZhbHVlU3RyaW5nIiwicGFyYW0iLCJ2YWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInBhcmFtczIiLCJtYXAiLCJrZXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJmaWx0ZXIiLCJ4Iiwiam9pbiIsImNyZWF0ZUZldGNoSW1wbCIsImZldGNoV2l0aE9wdGlvbnMiLCJpbnB1dCIsImluaXQiLCJfaW5pdCIsIl9pbml0JGhlYWRlcnMiLCJyZXF1ZXN0SW5pdCIsImNhY2hlIiwiY3JlZGVudGlhbHMiLCJpbnRlZ3JpdHkiLCJrZWVwYWxpdmUiLCJtb2RlIiwicmVkaXJlY3QiLCJyZWZlcnJlciIsInJlZmVycmVyUG9saWN5Iiwic3RhdHVzQ29kZSIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vSHR0cENsaWVudC9IdHRwQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBOb3RTdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9FcnJvcnNcIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7XG4gICAgSHR0cFN0YXR1c0NvZGUsXG4gICAgSUh0dHBDbGllbnQsXG4gICAgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlcixcbiAgICBJSHR0cENsaWVudFJlc3BvbnNlLFxuICAgIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jLFxuICAgIFF1ZXJ5UGFyYW1zT2JqZWN0LFxufSBmcm9tIFwiLi9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi9IdHRwQ2xpZW50QXV0aGVudGljYXRpb25Qcm92aWRlclwiO1xuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZnVuY3Rpb24gdHJpbUxlYWRpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFswXSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMSkgOiB1cmw7XG59XG5cbnR5cGUgQm9keUZhY3RvcnkgPSAoKSA9PiBCb2R5SW5pdCB8IG51bGw7XG5cbmludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RDb25maWcge1xuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW107XG4gICAgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0O1xuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFeGNlcHRpb25Mb2dnZXJQYXJhbXMge1xuICAgIGZldGNoVXJsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgRXhjZXB0aW9uTG9nZ2VyID0gKGVycm9yOiB1bmtub3duLCBwYXJhbXM/OiBJRXhjZXB0aW9uTG9nZ2VyUGFyYW1zKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlc3BvbnNlIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXNwb25zZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZXRjaFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmZXRjaFJlc3BvbnNlOiBSZXNwb25zZSkge1xuICAgICAgICB0aGlzLmZldGNoUmVzcG9uc2UgPSBmZXRjaFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdHVzKCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGpzb248VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hSZXNwb25zZS5qc29uKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhO1xuICAgIH1cbn1cblxudHlwZSBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24gPSAoY29uZmlnOiBJSHR0cENsaWVudFJlcXVlc3RDb25maWcpID0+IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlIHwgUmVzcG9uc2U+O1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRlUmVxdWVzdDogUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW10gPSBbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdCA9IHt9O1xuICAgIHByaXZhdGUgc2lnbmFsOiB1bmRlZmluZWQgfCBBYm9ydFNpZ25hbDtcbiAgICBwcml2YXRlIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgcHJpdmF0ZSBjb250ZW50VHlwZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihleGVjdXRlOiBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCA9IGV4ZWN1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBYm9ydFNpZ25hbChzaWduYWw6IHVuZGVmaW5lZCB8IEFib3J0U2lnbmFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuc2lnbmFsID0gc2lnbmFsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IGZhbHNlIHwgQnVmZmVyIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChib2R5ID09PSBmYWxzZSB8fCBib2R5ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IGJvZHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSnNvbkJvZHkoc2VyaWFsaXphYmxlQm9keTogdW5rbm93biB8IHt9IHwgdW5rbm93bltdIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChzZXJpYWxpemFibGVCb2R5ICE9PSBmYWxzZSAmJiBzZXJpYWxpemFibGVCb2R5ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6YWJsZUJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmF3Qm9keShib2R5OiBCdWZmZXIgfCBzdHJpbmcgfCBmYWxzZSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoYm9keSAhPT0gZmFsc2UgJiYgYm9keSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBqc29uPFQ+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmpzb248VD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWNjZXB0Q29kZShjb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjY2VwdENvZGVzLnB1c2goY29kZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSB0aGVuOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZT5bXCJ0aGVuXCJdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0KHRoaXMuY3JlYXRlQ29uZmlnKCkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEh0dHBDbGllbnRSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlc3BvbnNlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlLnRoZW4oLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY3JlYXRlQ29uZmlnKCk6IElIdHRwQ2xpZW50UmVxdWVzdENvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYWw6IHRoaXMuc2lnbmFsLFxuICAgICAgICAgICAgYm9keUZhY3Rvcnk6IHRoaXMuYm9keUZhY3RvcnksXG4gICAgICAgICAgICBhY2NlcHRDb2RlczogdGhpcy5hY2NlcHRDb2RlcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZm46IFJlcXVlc3RFeGVjdXRpb25GdW5jdGlvbik6IEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyKGZuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSUh0dHBDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hJbXBsOiBGZXRjaDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb25Qcm92aWRlcjogSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXG4gICAgICAgIGRlZmF1bHRRdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0LFxuICAgICAgICBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5mZXRjaEltcGwgPSBmZXRjaEltcGw7XG4gICAgICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmwgPT0gdW5kZWZpbmVkID8gYmFzZVVybCA6IHRyaW1UcmFpbGluZ1NsYXNoKGJhc2VVcmwpO1xuICAgICAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBkZWZhdWx0UXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlciA9IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyID0gZXhjZXB0aW9uTG9nZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiR0VUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUE9TVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUFVUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoKHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBBVENIXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QoXCJERUxFVEVcIikodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ldGhvZChtZXRob2Q6IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiKTogKHVybDogc3RyaW5nKSA9PiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuICh1cmw6IHN0cmluZykgPT5cbiAgICAgICAgICAgIEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlci5jcmVhdGUoYXN5bmMgY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKHVybCwgY29uZmlnLnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzKHsgbWV0aG9kOiBtZXRob2QgfSwgY29uZmlnLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdGhpcy5hdXRoZW50aWNhdGlvblByb3ZpZGVyKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsID0gY29uZmlnLnNpZ25hbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5ib2R5RmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtZXRob2RcIiwgXCJCb2R5IGlzIG5vdCBhbGxvd2VkIGZvciBHRVQgcmVxdWVzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5ib2R5ID0gY29uZmlnLmJvZHlGYWN0b3J5KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoSW1wbChmZXRjaFVybCwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0dXMocmVzcG9uc2UsIGNvbmZpZy5hY2NlcHRDb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyPy4oZSwgeyBmZXRjaFVybDogZmV0Y2hVcmwgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZSBhcyBFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmREZWZhdWx0UmVxdWVzdEhlYWRlcnMob3B0aW9uczogUmVxdWVzdEluaXQsIGNvbnRlbnRUeXBlPzogdW5kZWZpbmVkIHwgc3RyaW5nKTogUmVxdWVzdEluaXQge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IGNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiUHJhZ21hXCJdID0gXCJuby1jYWNoZVwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJFeHBpcmVzXCJdID0gXCIwXCI7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHBhdGg7XG4gICAgICAgIGlmICh0aGlzLmJhc2VVcmwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmJhc2VVcmwgKyBcIi9cIiArIHRyaW1MZWFkaW5nU2xhc2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRQYXJhbXMgPSB7IC4uLnRoaXMuZGVmYXVsdFBhcmFtcywgLi4ucGFyYW1zIH07XG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiP1wiKSAmJiBwYXJhbXMgIT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHJlc3VsdFBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKGBQYXNzaW5nIHNlYXJjaCBwYXJhbXMgaW4gdXJsIGFuZCB2aWEgcGFyYW1zIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5jcmVhdGVRdWVyeVN0cmluZyhyZXN1bHRQYXJhbXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlLCBhY2NlcHRDb2Rlcz86IEh0dHBTdGF0dXNDb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMDtcbiAgICAgICAgY29uc3QgaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMgPSAoYWNjZXB0Q29kZXMgPz8gW10pLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgJiYgIWlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBsZXQgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gSlNPTi5wYXJzZShlcnJvclRleHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlcnZlclJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gc2VydmVyUmVzcG9uc2UgJiYgdHlwZW9mIHNlcnZlclJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2VydmVyUmVzcG9uc2UuZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLk1lc3NhZ2UgPz8gc2VydmVyUmVzcG9uc2UubWVzc2FnZSA/PyBzZXJ2ZXJSZXNwb25zZS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoZXJyb3JUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3RTeW5jKHVybDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0LCBkYXRhOiB7fSk6IElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXF1ZXN0Lm9wZW4oXCJQT1NUXCIsIHRoaXMudXJsKHVybCwgcGFyYW1zKSwgZmFsc2UpO1xuICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgIHJlcXVlc3Quc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICAgICAganNvbjogPFQ+KCkgPT4gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCkgYXMgVCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYXJhbVZhbHVlU3RyaW5nKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVRdWVyeVN0cmluZyhwYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMyID0gcGFyYW1zO1xuICAgICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmtleXMocGFyYW1zKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zMltrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCBpdGVtLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA/IFwiP1wiICsgcmVzdWx0IDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoIHtcbiAgICAgICAgY29uc3QgZmV0Y2hXaXRoT3B0aW9ucyA9IChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKGlucHV0LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGluaXQgPSBpbml0ID8/IHt9O1xuICAgICAgICAgICAgICAgIGluaXQuaGVhZGVycyA9IGluaXQuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJQcmFnbWFcIl0gPSBcIm5vLWNhY2hlXCI7XG4gICAgICAgICAgICAgICAgaW5pdC5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoaW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCBpbml0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybChpbnB1dC51cmwsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FjaGUtQ29udHJvbFwiXTogXCJuby1jYWNoZSwgbm8tc3RvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByYWdtYVwiXTogXCJuby1jYWNoZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiRXhwaXJlc1wiXTogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaWduYWw6IGlucHV0LnNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGlucHV0LmNhY2hlLFxuICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogaW5wdXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogaW5wdXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IGlucHV0LmtlZXBhbGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IGlucHV0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBpbnB1dC5yZWRpcmVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6IGlucHV0LnJlZmVycmVyLFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogaW5wdXQucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SW5pdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmZXRjaFdpdGhPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkh0dHBFcnJvclwiO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIubWVzc2FnZSArIGAuIFN0YXR1c0NvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFhQSxTQUFTRSxpQkFBaUJBLENBQUNDLEdBQVcsRUFBVTtFQUM1QyxPQUFPQSxHQUFHLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBR0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUdELEdBQUc7QUFDekQ7QUFFQSxTQUFTRSxnQkFBZ0JBLENBQUNGLEdBQVcsRUFBVTtFQUMzQyxPQUFPQSxHQUFHLENBQUMsQ0FBQyxDQUFD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
309
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfRXJyb3JzIiwicmVxdWlyZSIsIl9UeXBpbmdVdGlscyIsInRyaW1UcmFpbGluZ1NsYXNoIiwidXJsIiwic2xpY2UiLCJ0cmltTGVhZGluZ1NsYXNoIiwiSHR0cENsaWVudFJlc3BvbnNlIiwiY29uc3RydWN0b3IiLCJmZXRjaFJlc3BvbnNlIiwic3RhdHVzIiwianNvbiIsInJlc3BvbnNlRGF0YSIsImV4cG9ydHMiLCJIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIiLCJleGVjdXRlIiwiZXhlY3V0ZVJlcXVlc3QiLCJhY2NlcHRDb2RlcyIsInF1ZXJ5UGFyYW1zIiwic2lnbmFsIiwiYm9keUZhY3RvcnkiLCJjb250ZW50VHlwZSIsInRoZW4iLCJhcmdzIiwicmVzdWx0UHJvbWlzZSIsInJlc3VsdCIsImNyZWF0ZUNvbmZpZyIsIndpdGhBYm9ydFNpZ25hbCIsIndpdGhDb250ZW50VHlwZSIsIndpdGhCb2R5RnJvbUJ1ZmZlciIsImJvZHkiLCJ1bmRlZmluZWQiLCJ3aXRoSnNvbkJvZHkiLCJzZXJpYWxpemFibGVCb2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsIndpdGhRdWVyeVBhcmFtcyIsIndpdGhSYXdCb2R5IiwiYWNjZXB0Q29kZSIsImNvZGUiLCJwdXNoIiwiY3JlYXRlIiwiZm4iLCJIdHRwQ2xpZW50IiwiZmV0Y2hJbXBsIiwiYmFzZVVybCIsImF1dGhlbnRpY2F0aW9uUHJvdmlkZXIiLCJkZWZhdWx0UXVlcnlQYXJhbXMiLCJleGNlcHRpb25Mb2dnZXIiLCJkZWZhdWx0UGFyYW1zIiwiZ2V0IiwibWV0aG9kIiwicG9zdCIsInB1dCIsInBhdGNoIiwiZGVsZXRlIiwiY29uZmlnIiwiZmV0Y2hVcmwiLCJyZXF1ZXN0IiwiYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJyZXNwb25zZSIsImNoZWNrU3RhdHVzIiwiZSIsIl90aGlzJGV4Y2VwdGlvbkxvZ2dlciIsImNhbGwiLCJyZWplY3QiLCJvcHRpb25zIiwiX29wdGlvbnMkaGVhZGVycyIsImhlYWRlcnMiLCJwYXRoIiwicGFyYW1zIiwicmVzdWx0UGFyYW1zIiwiaW5jbHVkZXMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiTm90U3VwcG9ydGVkRXJyb3IiLCJjcmVhdGVRdWVyeVN0cmluZyIsImlzU3VjY2Vzc1Jlc3BvbnNlU3RhdHVzIiwiaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMiLCJlcnJvclRleHQiLCJ0ZXh0Iiwic2VydmVyUmVzcG9uc2UiLCJwYXJzZSIsIl9yZWYiLCJfc2VydmVyUmVzcG9uc2UkTWVzc2EiLCJlcnJvciIsIkh0dHBFcnJvciIsIk1lc3NhZ2UiLCJtZXNzYWdlIiwiRXJyb3IiLCJwb3N0U3luYyIsImRhdGEiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJ3aXRoQ3JlZGVudGlhbHMiLCJzZXRSZXF1ZXN0SGVhZGVyIiwic2VuZCIsInJlc3BvbnNlVGV4dCIsIm1ha2VQYXJhbVZhbHVlU3RyaW5nIiwicGFyYW0iLCJ2YWx1ZSIsImVuY29kZVVSSUNvbXBvbmVudCIsInBhcmFtczIiLCJtYXAiLCJrZXkiLCJ0b1N0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsIml0ZW0iLCJmaWx0ZXIiLCJ4Iiwiam9pbiIsImNyZWF0ZUZldGNoSW1wbCIsImZldGNoV2l0aE9wdGlvbnMiLCJpbnB1dCIsImluaXQiLCJfaW5pdCIsIl9pbml0JGhlYWRlcnMiLCJyZXF1ZXN0SW5pdCIsImNhY2hlIiwiY3JlZGVudGlhbHMiLCJpbnRlZ3JpdHkiLCJrZWVwYWxpdmUiLCJtb2RlIiwicmVkaXJlY3QiLCJyZWZlcnJlciIsInJlZmVycmVyUG9saWN5Iiwic3RhdHVzQ29kZSIsIm5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vSHR0cENsaWVudC9IdHRwQ2xpZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yLCBOb3RTdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuLi9FcnJvcnNcIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBGZXRjaCB9IGZyb20gXCIuL0ZldGNoSW1wbGVtZW50YXRpb24vRmV0Y2hcIjtcbmltcG9ydCB7XG4gICAgSHR0cFN0YXR1c0NvZGUsXG4gICAgSUh0dHBDbGllbnQsXG4gICAgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlcixcbiAgICBJSHR0cENsaWVudFJlc3BvbnNlLFxuICAgIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jLFxuICAgIFF1ZXJ5UGFyYW1zT2JqZWN0LFxufSBmcm9tIFwiLi9JSHR0cENsaWVudFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgfSBmcm9tIFwiLi9IdHRwQ2xpZW50QXV0aGVudGljYXRpb25Qcm92aWRlclwiO1xuXG5mdW5jdGlvbiB0cmltVHJhaWxpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZnVuY3Rpb24gdHJpbUxlYWRpbmdTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybFswXSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMSkgOiB1cmw7XG59XG5cbnR5cGUgQm9keUZhY3RvcnkgPSAoKSA9PiBCb2R5SW5pdCB8IG51bGw7XG5cbmludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RDb25maWcge1xuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAgIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW107XG4gICAgcXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0O1xuICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElFeGNlcHRpb25Mb2dnZXJQYXJhbXMge1xuICAgIGZldGNoVXJsPzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgRXhjZXB0aW9uTG9nZ2VyID0gKGVycm9yOiB1bmtub3duLCBwYXJhbXM/OiBJRXhjZXB0aW9uTG9nZ2VyUGFyYW1zKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlc3BvbnNlIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXNwb25zZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmZXRjaFJlc3BvbnNlOiBSZXNwb25zZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmZXRjaFJlc3BvbnNlOiBSZXNwb25zZSkge1xuICAgICAgICB0aGlzLmZldGNoUmVzcG9uc2UgPSBmZXRjaFJlc3BvbnNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RhdHVzKCk6IEh0dHBTdGF0dXNDb2RlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZXNwb25zZS5zdGF0dXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGpzb248VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hSZXNwb25zZS5qc29uKCk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhO1xuICAgIH1cbn1cblxudHlwZSBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24gPSAoY29uZmlnOiBJSHR0cENsaWVudFJlcXVlc3RDb25maWcpID0+IFByb21pc2U8SHR0cENsaWVudFJlc3BvbnNlIHwgUmVzcG9uc2U+O1xuXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGltcGxlbWVudHMgSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGVjdXRlUmVxdWVzdDogUmVxdWVzdEV4ZWN1dGlvbkZ1bmN0aW9uO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXB0Q29kZXM6IEh0dHBTdGF0dXNDb2RlW10gPSBbXTtcbiAgICBwcml2YXRlIHF1ZXJ5UGFyYW1zOiBRdWVyeVBhcmFtc09iamVjdCA9IHt9O1xuICAgIHByaXZhdGUgc2lnbmFsOiB1bmRlZmluZWQgfCBBYm9ydFNpZ25hbDtcbiAgICBwcml2YXRlIGJvZHlGYWN0b3J5PzogQm9keUZhY3Rvcnk7XG4gICAgcHJpdmF0ZSBjb250ZW50VHlwZT86IHN0cmluZztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihleGVjdXRlOiBSZXF1ZXN0RXhlY3V0aW9uRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5leGVjdXRlUmVxdWVzdCA9IGV4ZWN1dGU7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBYm9ydFNpZ25hbChzaWduYWw6IHVuZGVmaW5lZCB8IEFib3J0U2lnbmFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuc2lnbmFsID0gc2lnbmFsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IGZhbHNlIHwgQnVmZmVyIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChib2R5ID09PSBmYWxzZSB8fCBib2R5ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IGJvZHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSnNvbkJvZHkoc2VyaWFsaXphYmxlQm9keTogdW5rbm93biB8IHt9IHwgdW5rbm93bltdIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgICAgIGlmIChzZXJpYWxpemFibGVCb2R5ICE9PSBmYWxzZSAmJiBzZXJpYWxpemFibGVCb2R5ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5ib2R5RmFjdG9yeSA9ICgpID0+IEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6YWJsZUJvZHkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICAgICAgLi4ucXVlcnlQYXJhbXMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmF3Qm9keShib2R5OiBCdWZmZXIgfCBzdHJpbmcgfCBmYWxzZSB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgICAgICBpZiAoYm9keSAhPT0gZmFsc2UgJiYgYm9keSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYm9keUZhY3RvcnkgPSAoKSA9PiBib2R5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBqc29uPFQ+KCk6IFByb21pc2U8VD4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzO1xuICAgICAgICByZXR1cm4gcmVzdWx0Lmpzb248VD4oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWNjZXB0Q29kZShjb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHRoaXMge1xuICAgICAgICB0aGlzLmFjY2VwdENvZGVzLnB1c2goY29kZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSB0aGVuOiBQcm9taXNlPEh0dHBDbGllbnRSZXNwb25zZT5bXCJ0aGVuXCJdID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0KHRoaXMuY3JlYXRlQ29uZmlnKCkpO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEh0dHBDbGllbnRSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlc3BvbnNlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG4gICAgICAgIHJldHVybiByZXN1bHRQcm9taXNlLnRoZW4oLi4uYXJncyk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY3JlYXRlQ29uZmlnKCk6IElIdHRwQ2xpZW50UmVxdWVzdENvbmZpZyB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYWw6IHRoaXMuc2lnbmFsLFxuICAgICAgICAgICAgYm9keUZhY3Rvcnk6IHRoaXMuYm9keUZhY3RvcnksXG4gICAgICAgICAgICBhY2NlcHRDb2RlczogdGhpcy5hY2NlcHRDb2RlcyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB0aGlzLnF1ZXJ5UGFyYW1zLFxuICAgICAgICAgICAgY29udGVudFR5cGU6IHRoaXMuY29udGVudFR5cGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZm46IFJlcXVlc3RFeGVjdXRpb25GdW5jdGlvbik6IEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiBuZXcgSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyKGZuKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IGltcGxlbWVudHMgSUh0dHBDbGllbnQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmV0Y2hJbXBsOiBGZXRjaDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI6IEh0dHBDbGllbnRBdXRoZW50aWNhdGlvblByb3ZpZGVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdFBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGZldGNoSW1wbDogRmV0Y2gsXG4gICAgICAgIGJhc2VVcmw6IHVuZGVmaW5lZCB8IHN0cmluZyxcbiAgICAgICAgYXV0aGVudGljYXRpb25Qcm92aWRlcjogSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIsXG4gICAgICAgIGRlZmF1bHRRdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zT2JqZWN0LFxuICAgICAgICBleGNlcHRpb25Mb2dnZXI/OiBFeGNlcHRpb25Mb2dnZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5mZXRjaEltcGwgPSBmZXRjaEltcGw7XG4gICAgICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmwgPT0gdW5kZWZpbmVkID8gYmFzZVVybCA6IHRyaW1UcmFpbGluZ1NsYXNoKGJhc2VVcmwpO1xuICAgICAgICB0aGlzLmRlZmF1bHRQYXJhbXMgPSBkZWZhdWx0UXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlciA9IGF1dGhlbnRpY2F0aW9uUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyID0gZXhjZXB0aW9uTG9nZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiR0VUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUE9TVFwiKSh1cmwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwdXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kKFwiUFVUXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoKHVybDogc3RyaW5nKTogSUh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZChcIlBBVENIXCIpKHVybCk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRob2QoXCJERUxFVEVcIikodXJsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ldGhvZChtZXRob2Q6IFwiR0VUXCIgfCBcIlBPU1RcIiB8IFwiUFVUXCIgfCBcIlBBVENIXCIgfCBcIkRFTEVURVwiKTogKHVybDogc3RyaW5nKSA9PiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIHtcbiAgICAgICAgcmV0dXJuICh1cmw6IHN0cmluZykgPT5cbiAgICAgICAgICAgIEh0dHBDbGllbnRSZXF1ZXN0V3JhcHBlci5jcmVhdGUoYXN5bmMgY29uZmlnID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKHVybCwgY29uZmlnLnF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgcmVxdWVzdCA9IHRoaXMuYXBwZW5kRGVmYXVsdFJlcXVlc3RIZWFkZXJzKHsgbWV0aG9kOiBtZXRob2QgfSwgY29uZmlnLmNvbnRlbnRUeXBlKTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0ID0gdGhpcy5hdXRoZW50aWNhdGlvblByb3ZpZGVyKHJlcXVlc3QpO1xuICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2lnbmFsID0gY29uZmlnLnNpZ25hbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5ib2R5RmFjdG9yeSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJtZXRob2RcIiwgXCJCb2R5IGlzIG5vdCBhbGxvd2VkIGZvciBHRVQgcmVxdWVzdHNcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5ib2R5ID0gY29uZmlnLmJvZHlGYWN0b3J5KCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoSW1wbChmZXRjaFVybCwgcmVxdWVzdCk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tTdGF0dXMocmVzcG9uc2UsIGNvbmZpZy5hY2NlcHRDb2Rlcyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXhjZXB0aW9uTG9nZ2VyPy4oZSwgeyBmZXRjaFVybDogZmV0Y2hVcmwgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZSBhcyBFcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmREZWZhdWx0UmVxdWVzdEhlYWRlcnMob3B0aW9uczogUmVxdWVzdEluaXQsIGNvbnRlbnRUeXBlPzogdW5kZWZpbmVkIHwgc3RyaW5nKTogUmVxdWVzdEluaXQge1xuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIG9wdGlvbnMuaGVhZGVyc1tcIkNvbnRlbnQtVHlwZVwiXSA9IGNvbnRlbnRUeXBlID8/IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzW1wiUHJhZ21hXCJdID0gXCJuby1jYWNoZVwiO1xuICAgICAgICBvcHRpb25zLmhlYWRlcnNbXCJFeHBpcmVzXCJdID0gXCIwXCI7XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cmwocGF0aDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IHBhdGg7XG4gICAgICAgIGlmICh0aGlzLmJhc2VVcmwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXN1bHQgPSB0aGlzLmJhc2VVcmwgKyBcIi9cIiArIHRyaW1MZWFkaW5nU2xhc2gocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHRQYXJhbXMgPSB7IC4uLnRoaXMuZGVmYXVsdFBhcmFtcywgLi4ucGFyYW1zIH07XG4gICAgICAgIGlmIChwYXRoLmluY2x1ZGVzKFwiP1wiKSAmJiBwYXJhbXMgIT0gdW5kZWZpbmVkICYmIE9iamVjdC5rZXlzKHJlc3VsdFBhcmFtcykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZEVycm9yKGBQYXNzaW5nIHNlYXJjaCBwYXJhbXMgaW4gdXJsIGFuZCB2aWEgcGFyYW1zIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5jcmVhdGVRdWVyeVN0cmluZyhyZXN1bHRQYXJhbXMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgY2hlY2tTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlLCBhY2NlcHRDb2Rlcz86IEh0dHBTdGF0dXNDb2RlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgPj0gMjAwICYmIHJlc3BvbnNlLnN0YXR1cyA8IDMwMDtcbiAgICAgICAgY29uc3QgaXNBY2NlcHRDb2Rlc0luY2x1ZGVzUmVzcG9uc2VTdGF0dXMgPSAoYWNjZXB0Q29kZXMgPz8gW10pLmluY2x1ZGVzKHJlc3BvbnNlLnN0YXR1cyk7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2VTdGF0dXMgJiYgIWlzQWNjZXB0Q29kZXNJbmNsdWRlc1Jlc3BvbnNlU3RhdHVzKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgICAgICAgICBsZXQgc2VydmVyUmVzcG9uc2U7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gSlNPTi5wYXJzZShlcnJvclRleHQpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlcnZlclJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGlmIChcImVycm9yXCIgaW4gc2VydmVyUmVzcG9uc2UgJiYgdHlwZW9mIHNlcnZlclJlc3BvbnNlLmVycm9yID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoc2VydmVyUmVzcG9uc2UuZXJyb3IpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50XG4gICAgICAgICAgICAgICAgICAgIHNlcnZlclJlc3BvbnNlLk1lc3NhZ2UgPz8gc2VydmVyUmVzcG9uc2UubWVzc2FnZSA/PyBzZXJ2ZXJSZXNwb25zZS5FcnJvcixcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uuc3RhdHVzXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IG5ldyBIdHRwRXJyb3IoZXJyb3JUZXh0LCByZXNwb25zZS5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHBvc3RTeW5jKHVybDogc3RyaW5nLCBwYXJhbXM6IHVuZGVmaW5lZCB8IFF1ZXJ5UGFyYW1zT2JqZWN0LCBkYXRhOiB7fSk6IElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgICByZXF1ZXN0Lm9wZW4oXCJQT1NUXCIsIHRoaXMudXJsKHVybCwgcGFyYW1zKSwgZmFsc2UpO1xuICAgICAgICByZXF1ZXN0LndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcihcIkNvbnRlbnQtVHlwZVwiLCBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIik7XG4gICAgICAgIHJlcXVlc3Quc2VuZChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXM6IHJlcXVlc3Quc3RhdHVzLFxuICAgICAgICAgICAganNvbjogPFQ+KCkgPT4gSlNPTi5wYXJzZShyZXF1ZXN0LnJlc3BvbnNlVGV4dCkgYXMgVCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG1ha2VQYXJhbVZhbHVlU3RyaW5nKHBhcmFtOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtKX09JHtlbmNvZGVVUklDb21wb25lbnQodmFsdWUpfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVRdWVyeVN0cmluZyhwYXJhbXM/OiBRdWVyeVBhcmFtc09iamVjdCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChwYXJhbXMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwYXJhbXMyID0gcGFyYW1zO1xuICAgICAgICBsZXQgcmVzdWx0ID0gT2JqZWN0LmtleXMocGFyYW1zKVxuICAgICAgICAgICAgLm1hcChrZXkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1zMltrZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgfHwgdHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5tYWtlUGFyYW1WYWx1ZVN0cmluZyhrZXksIGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFrZVBhcmFtVmFsdWVTdHJpbmcoa2V5LCBpdGVtLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiB4ICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKFwiJlwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuZmlsdGVyKHggPT4geCAhPSB1bmRlZmluZWQpXG4gICAgICAgICAgICAuam9pbihcIiZcIik7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCA/IFwiP1wiICsgcmVzdWx0IDogXCJcIjtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoIHtcbiAgICAgICAgY29uc3QgZmV0Y2hXaXRoT3B0aW9ucyA9IChpbnB1dDogUmVxdWVzdEluZm8sIGluaXQ/OiBSZXF1ZXN0SW5pdCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgaW5wdXQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmZXRjaFVybCA9IHRoaXMudXJsKGlucHV0LCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIGluaXQgPSBpbml0ID8/IHt9O1xuICAgICAgICAgICAgICAgIGluaXQuaGVhZGVycyA9IGluaXQuaGVhZGVycyA/PyB7fTtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJDYWNoZS1Db250cm9sXCJdID0gXCJuby1jYWNoZSwgbm8tc3RvcmVcIjtcbiAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbXCJQcmFnbWFcIl0gPSBcIm5vLWNhY2hlXCI7XG4gICAgICAgICAgICAgICAgaW5pdC5oZWFkZXJzW1wiRXhwaXJlc1wiXSA9IFwiMFwiO1xuICAgICAgICAgICAgICAgIGluaXQgPSB0aGlzLmF1dGhlbnRpY2F0aW9uUHJvdmlkZXIoaW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCBpbml0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmV0Y2hVcmwgPSB0aGlzLnVybChpbnB1dC51cmwsIHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVlc3RJbml0OiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgW1wiQ2FjaGUtQ29udHJvbFwiXTogXCJuby1jYWNoZSwgbm8tc3RvcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcIlByYWdtYVwiXTogXCJuby1jYWNoZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1wiRXhwaXJlc1wiXTogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pbnB1dC5oZWFkZXJzLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzaWduYWw6IGlucHV0LnNpZ25hbCxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGlucHV0LmNhY2hlLFxuICAgICAgICAgICAgICAgICAgICBjcmVkZW50aWFsczogaW5wdXQuY3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgICAgIGludGVncml0eTogaW5wdXQuaW50ZWdyaXR5LFxuICAgICAgICAgICAgICAgICAgICBrZWVwYWxpdmU6IGlucHV0LmtlZXBhbGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBpbnB1dC5tZXRob2QsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IGlucHV0Lm1vZGUsXG4gICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBpbnB1dC5yZWRpcmVjdCxcbiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXI6IGlucHV0LnJlZmVycmVyLFxuICAgICAgICAgICAgICAgICAgICByZWZlcnJlclBvbGljeTogaW5wdXQucmVmZXJyZXJQb2xpY3ksXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXF1ZXN0SW5pdCA9IHRoaXMuYXV0aGVudGljYXRpb25Qcm92aWRlcihyZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hJbXBsKGZldGNoVXJsLCByZXF1ZXN0SW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBmZXRjaFdpdGhPcHRpb25zO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh0dHBFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZTogbnVtYmVyO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzQ29kZTogbnVtYmVyKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSBcIkh0dHBFcnJvclwiO1xuICAgICAgICB0aGlzLnN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgbWVzc2FnZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VwZXIubWVzc2FnZSArIGAuIFN0YXR1c0NvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFhQSxTQUFTRSxpQkFBaUJBLENBQUNDLEdBQVcsRUFBVTtFQUM1QyxPQUFPQSxHQUFHLENBQUNDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBR0QsR0FBRyxDQUFDQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUdELEdBQUc7QUFDekQ7QUFFQSxTQUFTRSxnQkFBZ0JBLENBQUNGLEdBQVcsRUFBVTtFQUMzQyxPQUFPQSxHQUFHLENBQUMsQ0FBQyxDQUFD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
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgPSAocmVxdWVzdDogUmVxdWVzdEluaXQpID0+IFJlcXVlc3RJbml0O1xuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSHR0cENsaWVudEF1dGhlbnRpY2F0aW9uUHJvdmlkZXIgPSAocmVxdWVzdDogUmVxdWVzdEluaXQpID0+IFJlcXVlc3RJbml0O1xuIl0sIm1hcHBpbmdzIjoiIn0=
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSUh0dHBDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5cbmV4cG9ydCB0eXBlIEh0dHBTdGF0dXNDb2RlID0gbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2Uge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICBqc29uPFQ+KCk6IFQ7XG4gICAgc3RhdHVzOiBIdHRwU3RhdHVzQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGV4dGVuZHMgUHJvbWlzZUxpa2U8SUh0dHBDbGllbnRSZXNwb25zZT4ge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzO1xuICAgIHdpdGhKc29uQm9keShzZXJpYWxpemFibGVCb2R5OiB1bmtub3duIHwgdW5kZWZpbmVkIHwge30gfCB1bmtub3duW10pOiB0aGlzO1xuICAgIHdpdGhSYXdCb2R5KGJvZHk6IEJ1ZmZlciB8IHN0cmluZyB8IGZhbHNlIHwgdW5kZWZpbmVkKTogdGhpcztcbiAgICB3aXRoQ29udGVudFR5cGUoY29udGVudFR5cGU6IHN0cmluZyk6IHRoaXM7XG4gICAgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IHVuZGVmaW5lZCB8IGZhbHNlIHwgQnVmZmVyKTogdGhpcztcbiAgICB3aXRoQWJvcnRTaWduYWwoc2lnbmFsPzogQWJvcnRTaWduYWwpOiB0aGlzO1xuICAgIGFjY2VwdENvZGUoY29kZTogSHR0cFN0YXR1c0NvZGUpOiB0aGlzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50IHtcbiAgICBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHB1dCh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgcGF0Y2godXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgdXJsKHBhdGg6IHN0cmluZywgcGFyYW1zPzogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QpOiBzdHJpbmc7XG4gICAgcG9zdFN5bmModXJsOiBzdHJpbmcsIHBhcmFtczogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QsIGRhdGE6IHt9KTogSUh0dHBDbGllbnRSZXNwb25zZVN5bmM7XG4gICAgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UGFyYW1zT2JqZWN0IHtcbiAgICBba2V5OiBzdHJpbmddOiBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vQ29tbW9uL0h0dHBDbGllbnQvSUh0dHBDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmV0Y2ggfSBmcm9tIFwiLi9GZXRjaEltcGxlbWVudGF0aW9uL0ZldGNoXCI7XG5cbmV4cG9ydCB0eXBlIEh0dHBTdGF0dXNDb2RlID0gbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2Uge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50UmVzcG9uc2VTeW5jIHtcbiAgICBqc29uPFQ+KCk6IFQ7XG4gICAgc3RhdHVzOiBIdHRwU3RhdHVzQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyIGV4dGVuZHMgUHJvbWlzZUxpa2U8SUh0dHBDbGllbnRSZXNwb25zZT4ge1xuICAgIGpzb248VD4oKTogUHJvbWlzZTxUPjtcbiAgICB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFF1ZXJ5UGFyYW1zT2JqZWN0IHwgZmFsc2UgfCB1bmRlZmluZWQpOiB0aGlzO1xuICAgIHdpdGhKc29uQm9keShzZXJpYWxpemFibGVCb2R5OiB1bmtub3duIHwgdW5kZWZpbmVkIHwge30gfCB1bmtub3duW10pOiB0aGlzO1xuICAgIHdpdGhSYXdCb2R5KGJvZHk6IEJ1ZmZlciB8IHN0cmluZyB8IGZhbHNlIHwgdW5kZWZpbmVkKTogdGhpcztcbiAgICB3aXRoQ29udGVudFR5cGUoY29udGVudFR5cGU6IHN0cmluZyk6IHRoaXM7XG4gICAgd2l0aEJvZHlGcm9tQnVmZmVyKGJvZHk6IHVuZGVmaW5lZCB8IGZhbHNlIHwgQnVmZmVyKTogdGhpcztcbiAgICB3aXRoQWJvcnRTaWduYWwoc2lnbmFsPzogQWJvcnRTaWduYWwpOiB0aGlzO1xuICAgIGFjY2VwdENvZGUoY29kZTogSHR0cFN0YXR1c0NvZGUpOiB0aGlzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElIdHRwQ2xpZW50IHtcbiAgICBnZXQodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHBvc3QodXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIHB1dCh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgcGF0Y2godXJsOiBzdHJpbmcpOiBJSHR0cENsaWVudFJlcXVlc3RXcmFwcGVyO1xuICAgIGRlbGV0ZSh1cmw6IHN0cmluZyk6IElIdHRwQ2xpZW50UmVxdWVzdFdyYXBwZXI7XG4gICAgdXJsKHBhdGg6IHN0cmluZywgcGFyYW1zPzogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QpOiBzdHJpbmc7XG4gICAgcG9zdFN5bmModXJsOiBzdHJpbmcsIHBhcmFtczogdW5kZWZpbmVkIHwgUXVlcnlQYXJhbXNPYmplY3QsIGRhdGE6IHt9KTogSUh0dHBDbGllbnRSZXNwb25zZVN5bmM7XG4gICAgY3JlYXRlRmV0Y2hJbXBsKCk6IEZldGNoO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UGFyYW1zT2JqZWN0IHtcbiAgICBba2V5OiBzdHJpbmddOiBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IEFycmF5PHN0cmluZyB8IG51bWJlcj47XG59XG4iXSwibWFwcGluZ3MiOiIifQ==
@@ -13,4 +13,4 @@ function indent(str, count) {
13
13
  return indentStr + x;
14
14
  }).join("\n");
15
15
  }
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRlbnQiLCJzdHIiLCJjb3VudCIsImluZGVudFN0ciIsIkFycmF5IiwiZmlsbCIsImpvaW4iLCJzcGxpdCIsIm1hcCIsIngiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vSW5kZW50U3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc3RyOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGVudFN0ciA9IG5ldyBBcnJheShjb3VudCAqIDIpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gICAgcmV0dXJuIHN0clxuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4ID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5kZW50U3RyICsgeDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLFNBQVNBLE1BQU1BLENBQUNDLEdBQVcsRUFBRUMsS0FBYSxFQUFVO0VBQ3ZELE1BQU1DLFNBQVMsR0FBRyxJQUFJQyxLQUFLLENBQUNGLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDO0VBQ3pELE9BQU9MLEdBQUcsQ0FDTE0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNYQyxHQUFHLENBQUNDLENBQUMsSUFBSTtJQUNOLElBQUlBLENBQUMsS0FBSyxFQUFFLEVBQUU7TUFDVixPQUFPQSxDQUFDO0lBQ1o7SUFDQSxPQUFPTixTQUFTLEdBQUdNLENBQUM7RUFDeEIsQ0FBQyxDQUFDLENBQ0RILElBQUksQ0FBQyxJQUFJLENBQUM7QUFDbkIiLCJpZ25vcmVMaXN0IjpbXX0=
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmRlbnQiLCJzdHIiLCJjb3VudCIsImluZGVudFN0ciIsIkFycmF5IiwiZmlsbCIsImpvaW4iLCJzcGxpdCIsIm1hcCIsIngiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vSW5kZW50U3RyaW5nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBpbmRlbnQoc3RyOiBzdHJpbmcsIGNvdW50OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGluZGVudFN0ciA9IG5ldyBBcnJheShjb3VudCAqIDIpLmZpbGwoXCIgXCIpLmpvaW4oXCJcIik7XG4gICAgcmV0dXJuIHN0clxuICAgICAgICAuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgLm1hcCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh4ID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5kZW50U3RyICsgeDtcbiAgICAgICAgfSlcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFPLFNBQVNBLE1BQU1BLENBQUNDLEdBQVcsRUFBRUMsS0FBYSxFQUFVO0VBQ3ZELE1BQU1DLFNBQVMsR0FBRyxJQUFJQyxLQUFLLENBQUNGLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQ0csSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsRUFBRSxDQUFDO0VBQ3pELE9BQU9MLEdBQUcsQ0FDTE0sS0FBSyxDQUFDLElBQUksQ0FBQyxDQUNYQyxHQUFHLENBQUNDLENBQUMsSUFBSTtJQUNOLElBQUlBLENBQUMsS0FBSyxFQUFFLEVBQUU7TUFDVixPQUFPQSxDQUFDO0lBQ1o7SUFDQSxPQUFPTixTQUFTLEdBQUdNLENBQUM7RUFDeEIsQ0FBQyxDQUFDLENBQ0RILElBQUksQ0FBQyxJQUFJLENBQUM7QUFDbkIifQ==
@@ -29,4 +29,4 @@ function sign(value) {
29
29
  }
30
30
  return 0;
31
31
  }
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGFtcCIsInZhbHVlIiwibWluIiwibWF4IiwiY2xhbXBVSW50IiwicmVzdWx0Iiwic2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JbnRSYW5nZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgTGVuZ3RoPFQgZXh0ZW5kcyB1bmtub3duW10+ID0gVCBleHRlbmRzIHsgbGVuZ3RoOiBpbmZlciBMIH0gPyAoTCBleHRlbmRzIG51bWJlciA/IEwgOiBuZXZlcikgOiBuZXZlcjtcblxudHlwZSBCdWlsZFR1cGxlPEwgZXh0ZW5kcyBudW1iZXIsIFQgZXh0ZW5kcyB1bmtub3duW10gPSBbXT4gPSBUIGV4dGVuZHMgeyBsZW5ndGg6IEwgfVxuICAgID8gVFxuICAgIDogQnVpbGRUdXBsZTxMLCBbLi4uVCwgdW5rbm93bl0+O1xuXG50eXBlIEFkZDxBIGV4dGVuZHMgbnVtYmVyLCBCIGV4dGVuZHMgbnVtYmVyPiA9IExlbmd0aDxbLi4uQnVpbGRUdXBsZTxBPiwgLi4uQnVpbGRUdXBsZTxCPl0+O1xuXG5leHBvcnQgdHlwZSBJbnRSYW5nZTxUTWluIGV4dGVuZHMgbnVtYmVyLCBUTWF4IGV4dGVuZHMgbnVtYmVyPiA9IFRNaW4gZXh0ZW5kcyBUTWF4XG4gICAgPyBUTWluXG4gICAgOiBUTWluIHwgSW50UmFuZ2U8QWRkPFRNaW4sIDE+LCBUTWF4PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID4gbWF4KSB7XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA8IG1pbikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFVJbnQ8VExlZnQgZXh0ZW5kcyBudW1iZXIsIFRSaWdodCBleHRlbmRzIG51bWJlcj4oXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBtaW46IFRMZWZ0LFxuICAgIG1heDogVFJpZ2h0XG4pOiBJbnRSYW5nZTxUTGVmdCwgVFJpZ2h0PiB7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBjbGFtcCh2YWx1ZSwgbWluLCBtYXgpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbih2YWx1ZTogbnVtYmVyKTogLTEgfCAwIHwgMSB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVlPLFNBQVNBLEtBQUtBLENBQUNDLEtBQWEsRUFBRUMsR0FBVyxFQUFFQyxHQUFXLEVBQVU7RUFDbkUsSUFBSUYsS0FBSyxHQUFHRSxHQUFHLEVBQUU7SUFDYixPQUFPQSxHQUFHO0VBQ2Q7RUFDQSxJQUFJRixLQUFLLEdBQUdDLEdBQUcsRUFBRTtJQUNiLE9BQU9BLEdBQUc7RUFDZDtFQUNBLE9BQU9ELEtBQUs7QUFDaEI7QUFFTyxTQUFTRyxTQUFTQSxDQUNyQkgsS0FBYSxFQUNiQyxHQUFVLEVBQ1ZDLEdBQVcsRUFDWTtFQUN2QixNQUFNRSxNQUFjLEdBQUdMLEtBQUssQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUM3QztFQUNBLE9BQU9FLE1BQU07QUFDakI7QUFFTyxTQUFTQyxJQUFJQSxDQUFDTCxLQUFhLEVBQWM7RUFDNUMsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtJQUNYLE9BQU8sQ0FBQyxDQUFDO0VBQ2I7RUFDQSxJQUFJQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0lBQ1gsT0FBTyxDQUFDO0VBQ1o7RUFDQSxPQUFPLENBQUM7QUFDWiIsImlnbm9yZUxpc3QiOltdfQ==
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbGFtcCIsInZhbHVlIiwibWluIiwibWF4IiwiY2xhbXBVSW50IiwicmVzdWx0Iiwic2lnbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JbnRSYW5nZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgTGVuZ3RoPFQgZXh0ZW5kcyB1bmtub3duW10+ID0gVCBleHRlbmRzIHsgbGVuZ3RoOiBpbmZlciBMIH0gPyAoTCBleHRlbmRzIG51bWJlciA/IEwgOiBuZXZlcikgOiBuZXZlcjtcblxudHlwZSBCdWlsZFR1cGxlPEwgZXh0ZW5kcyBudW1iZXIsIFQgZXh0ZW5kcyB1bmtub3duW10gPSBbXT4gPSBUIGV4dGVuZHMgeyBsZW5ndGg6IEwgfVxuICAgID8gVFxuICAgIDogQnVpbGRUdXBsZTxMLCBbLi4uVCwgdW5rbm93bl0+O1xuXG50eXBlIEFkZDxBIGV4dGVuZHMgbnVtYmVyLCBCIGV4dGVuZHMgbnVtYmVyPiA9IExlbmd0aDxbLi4uQnVpbGRUdXBsZTxBPiwgLi4uQnVpbGRUdXBsZTxCPl0+O1xuXG5leHBvcnQgdHlwZSBJbnRSYW5nZTxUTWluIGV4dGVuZHMgbnVtYmVyLCBUTWF4IGV4dGVuZHMgbnVtYmVyPiA9IFRNaW4gZXh0ZW5kcyBUTWF4XG4gICAgPyBUTWluXG4gICAgOiBUTWluIHwgSW50UmFuZ2U8QWRkPFRNaW4sIDE+LCBUTWF4PjtcblxuZXhwb3J0IGZ1bmN0aW9uIGNsYW1wKHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKHZhbHVlID4gbWF4KSB7XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA8IG1pbikge1xuICAgICAgICByZXR1cm4gbWluO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcFVJbnQ8VExlZnQgZXh0ZW5kcyBudW1iZXIsIFRSaWdodCBleHRlbmRzIG51bWJlcj4oXG4gICAgdmFsdWU6IG51bWJlcixcbiAgICBtaW46IFRMZWZ0LFxuICAgIG1heDogVFJpZ2h0XG4pOiBJbnRSYW5nZTxUTGVmdCwgVFJpZ2h0PiB7XG4gICAgY29uc3QgcmVzdWx0OiBudW1iZXIgPSBjbGFtcCh2YWx1ZSwgbWluLCBtYXgpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2lnbih2YWx1ZTogbnVtYmVyKTogLTEgfCAwIHwgMSB7XG4gICAgaWYgKHZhbHVlIDwgMCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA+IDApIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVlPLFNBQVNBLEtBQUtBLENBQUNDLEtBQWEsRUFBRUMsR0FBVyxFQUFFQyxHQUFXLEVBQVU7RUFDbkUsSUFBSUYsS0FBSyxHQUFHRSxHQUFHLEVBQUU7SUFDYixPQUFPQSxHQUFHO0VBQ2Q7RUFDQSxJQUFJRixLQUFLLEdBQUdDLEdBQUcsRUFBRTtJQUNiLE9BQU9BLEdBQUc7RUFDZDtFQUNBLE9BQU9ELEtBQUs7QUFDaEI7QUFFTyxTQUFTRyxTQUFTQSxDQUNyQkgsS0FBYSxFQUNiQyxHQUFVLEVBQ1ZDLEdBQVcsRUFDWTtFQUN2QixNQUFNRSxNQUFjLEdBQUdMLEtBQUssQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEVBQUVDLEdBQUcsQ0FBQztFQUM3QztFQUNBLE9BQU9FLE1BQU07QUFDakI7QUFFTyxTQUFTQyxJQUFJQSxDQUFDTCxLQUFhLEVBQWM7RUFDNUMsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtJQUNYLE9BQU8sQ0FBQyxDQUFDO0VBQ2I7RUFDQSxJQUFJQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO0lBQ1gsT0FBTyxDQUFDO0VBQ1o7RUFDQSxPQUFPLENBQUM7QUFDWiJ9
@@ -285,4 +285,4 @@ class IterUtils {
285
285
  exports.IterUtils = IterUtils;
286
286
  IterUtils.count = count;
287
287
  IterUtils.concat = concat;
288
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0Vycm9ycyIsInJldmVyc2VBcnJheSIsImFycmF5IiwiaSIsImxlbmd0aCIsInRvQXN5bmNJdGVyYXRvciIsImdlbmVyYXRvciIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmluZExhc3QiLCJpdGVtcyIsImNvbmRpdGlvbiIsInJlc3VsdCIsIml0ZW0iLCJjb25jYXQiLCJpdGVyYWJsZXMiLCJpdGVyYWJsZUl0ZW0iLCJpdGVyYXRlVmFsdWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlRW50cmllcyIsImNvdW50IiwiX2l0ZW0iLCJFbXB0eVNpbmdsZUVsZW1lbnQiLCJTeW1ib2wiLCJmb3IiLCJOb1ZhbHVlTWFya2VyIiwiSXRlclV0aWxzIiwiaXNFbXB0eSIsIml0ZXJhYmxlIiwiZ3JvdXBCeSIsInNlbGVjdEtleSIsIk1hcCIsImtleUxpc3QiLCJnZXQiLCJ1bmRlZmluZWQiLCJzZXQiLCJwdXNoIiwic29ydEJ5Iiwic2VsZWN0b3IiLCJzb3J0IiwiYUl0ZW0iLCJiSXRlbSIsImxlZnRWYWx1ZSIsInJpZ2h0VmFsdWUiLCJsYXN0IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdEl0ZW0iLCJmaXJzdCIsImZpcnN0SXRlbSIsInNpbmdsZSIsInNpbmdsZUFzc2VydE1lc3NhZ2UiLCJfaXRlbXMkIiwiRXJyb3IiLCJyZWplY3QiLCJzaW5nbGVFbGVtZW50IiwiaW5kZXgiLCJza2lwTGFzdCIsInNraXBDb3VudCIsInByZXZJdGVtcyIsImZpbGwiLCJyZXN1bHRJdGVtIiwiY3VycmVudEluZGV4IiwibWluQnkiLCJjb21wYXJlRnVuYyIsIm1pblZhbHVlIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtaW5CeU9yVW5kZWZpbmVkIiwicmFuZ2UiLCJpblN0YXJ0T3JDb3VudCIsImluSXRlbUNvdW50Iiwic3RhcnQiLCJpdGVtQ291bnQiLCJpbnRlcnNwZXJzZSIsImludGVyc3BlcnNlRm4iLCJmbGF0TWFwIiwieCIsInppcCIsIml0ZXJhdG9ycyIsIm1hcCIsIml0IiwiSXRlcmF0b3IiLCJoYXNVbmRvbmVJdGVyYXRvcnMiLCJyZXN1bHRFbnRyeSIsIml0ZXJhdG9yIiwicmVzdWx0VmFsdWUiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiZGlzdGluY3RCeSIsImlkU2VsZWN0b3IiLCJTZXQiLCJpZCIsImhhcyIsImFkZCIsInJlZHVjZSIsInJlZHVjZXIiLCJpbml0aWFsVmFsdWUiLCJhY2MiLCJiYXRjaCIsImJhdGNoU2l6ZSIsInNhZmVCYXRjaFNpemUiLCJjdXJyZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JdGVyYWJsZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbkxlbmd0aEFycmF5LCByZWplY3QgfSBmcm9tIFwiLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgQ29tcGFyZUZ1bmMgfSBmcm9tIFwiLi9Db21wYXJlcnNcIjtcbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gZnJvbSBcIi4vRXJyb3JzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiogcmV2ZXJzZUFycmF5PFQ+KGFycmF5OiByZWFkb25seSBUW10pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgeWllbGQgYXJyYXlbaV0hO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQXN5bmNJdGVyYXRvcjxUPihnZW5lcmF0b3I6ICgpID0+IEFzeW5jR2VuZXJhdG9yPFQ+KTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICByZXR1cm4gQXN5bmNJdGVyYXRvci5mcm9tKGdlbmVyYXRvcigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgY29uZGl0aW9uOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IFQgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24oaXRlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjb25jYXQ8VD4oLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTxUPj4pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGNvbnN0IGl0ZXJhYmxlSXRlbSBvZiBpdGVyYWJsZXMpIHtcbiAgICAgICAgeWllbGQqIGl0ZXJhYmxlSXRlbTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZVZhbHVlczxUSyBleHRlbmRzIHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgVFY+KG9iajogeyBba2V5IGluIFRLXTogVFYgfSk6IEl0ZXJhYmxlPFRWPiB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB5aWVsZCBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPEV4dHJhY3Q8a2V5b2YgVE8sIHN0cmluZz4+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRWPihvYmo6IFJlYWRvbmx5PHsgW2tleTogc3RyaW5nXTogVFYgfT4pOiBJdGVyYWJsZTxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzKG9iajogUmVhZG9ubHk8e30+KTogSXRlcmFibGU8c3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUtleXM8VEsgZXh0ZW5kcyBzdHJpbmcgfCBzeW1ib2wgfCBudW1iZXI+KG9iajogeyBba2V5IGluIFRLXTogdW5rbm93biB9KTogSXRlcmFibGU8VEs+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHlpZWxkIGtleTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPFtFeHRyYWN0PGtleW9mIFRPLCBzdHJpbmc+LCBUT1trZXlvZiBUT11dPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllczxUVj4ob2JqOiBSZWFkb25seTx7IFtrZXk6IHN0cmluZ106IFRWIH0+KTogSXRlcmFibGU8W3N0cmluZywgVFZdPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllcyhvYmo6IFJlYWRvbmx5PHt9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIHVua25vd25dPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUVudHJpZXM8VFY+KG9iajogUmVhZG9ubHk8eyBba2V5OiBzdHJpbmddOiBUViB9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIFRWXT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgIHlpZWxkIFtrZXksIG9ialtrZXldIV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihpdGVtczogSXRlcmFibGU8VD4pOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGZvciAoY29uc3QgX2l0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgcmVzdWx0Kys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbnN0IEVtcHR5U2luZ2xlRWxlbWVudCA9IFN5bWJvbC5mb3IoXCJFbXB0eVNpbmdsZUVsZW1lbnRcIik7XG5jb25zdCBOb1ZhbHVlTWFya2VyID0gU3ltYm9sLmZvcihcIk5vVmFsdWVNYXJrZXJcIik7XG5cbmV4cG9ydCBjbGFzcyBJdGVyVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgY291bnQgPSBjb3VudDtcbiAgICBwdWJsaWMgc3RhdGljIGNvbmNhdCA9IGNvbmNhdDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaXNFbXB0eTxUPihpdGVyYWJsZTogSXRlcmFibGU8VD4pOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBfaXRlbSBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3JvdXBCeTxULCBUS2V5PihpdGVyYWJsZTogSXRlcmFibGU8VD4sIHNlbGVjdEtleTogKGl0ZW06IFQpID0+IFRLZXkpOiBNYXA8VEtleSwgVFtdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8VEtleSwgVFtdPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHNlbGVjdEtleShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGtleUxpc3QgPSByZXN1bHQuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoa2V5TGlzdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0Qnk8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBzZWxlY3RvcjogKGl0ZW06IFQpID0+IHN0cmluZyB8IG51bWJlcik6IFRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5pdGVtc107XG4gICAgICAgIHJlc3VsdC5zb3J0KChhSXRlbSwgYkl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYWx1ZSA9IHNlbGVjdG9yKGFJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSBzZWxlY3RvcihiSXRlbSk7XG4gICAgICAgICAgICBpZiAobGVmdFZhbHVlID09PSByaWdodFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnRWYWx1ZSA8IHJpZ2h0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IE1pbkxlbmd0aEFycmF5PFQsIDE+KTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXN0SXRlbTogVCB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBsYXN0SXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IFtULCAuLi51bmtub3duW11dKTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGZpcnN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBmaXJzdDxUPihpdGVtczogSXRlcmFibGU8VD4gfCByZWFkb25seSBUW10pOiB1bmRlZmluZWQgfCBUO1xuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaXJzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgZmlyc3RJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaW5nbGU8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IEl0ZXJhYmxlPFQ+LCBzaW5nbGVBc3NlcnRNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlQXNzZXJ0TWVzc2FnZSA/PyBgU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgJHtpdGVtcy5sZW5ndGh9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNbMF0gPz8gcmVqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2luZ2xlRWxlbWVudDogVCB8IHR5cGVvZiBFbXB0eVNpbmdsZUVsZW1lbnQgPSBFbXB0eVNpbmdsZUVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRWxlbWVudCAhPT0gRW1wdHlTaW5nbGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZUFzc2VydE1lc3NhZ2UgPz8gYFNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHNpbmdsZSBlbGVtZW50LCBidXQgZ290IGF0IGxlYXN0IDJgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbmdsZUVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNpbmdsZUVsZW1lbnQgPT09IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzaW5nbGVBc3NlcnRNZXNzYWdlID8/IFwiU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqaXRlcmF0ZUVudHJpZXM8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IFRbXSB8IEl0ZXJhYmxlPFQ+KTogSXRlcmFibGU8W251bWJlciwgVF0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICB5aWVsZCBbaW5kZXgsIGl0ZW1dO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnNraXBMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgc2tpcENvdW50OiBudW1iZXIpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGlmIChza2lwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkKiBpdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2SXRlbXM6IEFycmF5PFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50PiA9IG5ldyBBcnJheShza2lwQ291bnQpLmZpbGwoRW1wdHlTaW5nbGVFbGVtZW50KTtcbiAgICAgICAgbGV0IHJlc3VsdEl0ZW06IFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50ID0gRW1wdHlTaW5nbGVFbGVtZW50O1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCSINC+0LHRidC10LwsINGB0YLRgNC+0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCINC00LvQuNC90YMg0LzQsNGB0YHQuNCy0LBcbiAgICAgICAgICAgIHJlc3VsdEl0ZW0gPSBwcmV2SXRlbXNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIHByZXZJdGVtc1tjdXJyZW50SW5kZXhdID0gaXRlbTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHNraXBDb3VudDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRJdGVtICE9IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkJ5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10gfCBUW10gfCBJdGVyYWJsZTxUPiwgY29tcGFyZUZ1bmM6IENvbXBhcmVGdW5jPFQ+KTogVCB7XG4gICAgICAgIGxldCBtaW5WYWx1ZTogdHlwZW9mIE5vVmFsdWVNYXJrZXIgfCBUID0gTm9WYWx1ZU1hcmtlcjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPT09IE5vVmFsdWVNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVGdW5jKGl0ZW0sIG1pblZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJpdGVtc1wiLCBcIkl0ZW1zIHNob3VsZCBiZSBub3QgZW1wdHkgbGlzdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtaW5CeU9yVW5kZWZpbmVkPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdIHwgVFtdIHwgSXRlcmFibGU8VD4sXG4gICAgICAgIGNvbXBhcmVGdW5jOiBDb21wYXJlRnVuYzxUPlxuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgbWluVmFsdWU6IHR5cGVvZiBOb1ZhbHVlTWFya2VyIHwgVCA9IE5vVmFsdWVNYXJrZXI7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlRnVuYyhpdGVtLCBtaW5WYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5WYWx1ZSA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyAqcmFuZ2UoaW5TdGFydE9yQ291bnQ6IG51bWJlciwgaW5JdGVtQ291bnQ/OiBudW1iZXIpOiBJdGVyYWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gMCA6IGluU3RhcnRPckNvdW50O1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gaW5TdGFydE9yQ291bnQgOiBpbkl0ZW1Db3VudDtcbiAgICAgICAgaWYgKGl0ZW1Db3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIml0ZW1Db3VudFwiLCBcIml0ZW1Db3VudCBtdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGl0ZW1Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0JLRgdGC0LDQstC70Y/QtdGCINC80LXQttC00YMg0Y3Qu9C10LzQtdC90YLQsNC80Lgg0LzQsNGB0YHQuNCy0LAg0LfQsNC00LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LLRi9C5INC80LDRgdGB0LjQslxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzcGVyc2U8VEksIFRTPihpdGVtczogVElbXSwgaXRlbTogVFMpOiBBcnJheTxUSSB8IFRTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc3BlcnNlRm4oaXRlbXMsICgpID0+IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCS0YHRgtCw0LLQu9GP0LXRgiDQvNC10LbQtNGDINGN0LvQtdC80LXQvdGC0LDQvNC4INC80LDRgdGB0LjQstCwINGN0LvQtdC80LXQvdGCLCDRgdC+0LfQtNCw0LLQsNC10LzRi9C5INGE0YPQvdC60YbQuNC10LksINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90L7QstGL0Lkg0LzQsNGB0YHQuNCyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpbnRlcnNwZXJzZUZuPFRJLCBUUz4oaXRlbXM6IFRJW10sIGl0ZW06IChuZXh0SXRlbTogVEksIGluZGV4OiBudW1iZXIpID0+IFRTKTogQXJyYXk8VEkgfCBUUz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmxhdE1hcCgoeCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IFt4XSA6IFtpdGVtKHgsIGluZGV4KSwgeF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHppcDxUMSwgVDI+KGl0ZW1zMTogSXRlcmFibGU8VDE+LCBpdGVtczI6IEl0ZXJhYmxlPFQyPik6IEl0ZXJhYmxlPFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWRdPjtcbiAgICBwdWJsaWMgc3RhdGljICp6aXAoLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTx1bmtub3duPj4pOiBJdGVyYWJsZTx1bmtub3duW10+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3JzOiBBcnJheTxJdGVyYXRvcjx1bmtub3duPiB8IHR5cGVvZiBOb1ZhbHVlTWFya2VyPiA9IGl0ZXJhYmxlcy5tYXAoaXQgPT4gSXRlcmF0b3IuZnJvbShpdCkpO1xuICAgICAgICBsZXQgaGFzVW5kb25lSXRlcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0RW50cnkgPSBbXTtcbiAgICAgICAgICAgIGhhc1VuZG9uZUl0ZXJhdG9ycyA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgaXRlcmF0b3JdIG9mIHRoaXMuaXRlcmF0ZUVudHJpZXMoaXRlcmF0b3JzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0VmFsdWUgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRWYWx1ZS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcnNbaV0gPSBOb1ZhbHVlTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW50cnkucHVzaChyZXN1bHRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNVbmRvbmVJdGVyYXRvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqZGlzdGluY3RCeTxUPihpdGVtczogSXRlcmFibGU8VD4sIGlkU2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRTZWxlY3RvcihpdGVtKTtcbiAgICAgICAgICAgIGlmICghc2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZWR1Y2U8VCwgVT4oXG4gICAgICAgIGl0ZW1zOiBJdGVyYWJsZTxUPixcbiAgICAgICAgcmVkdWNlcjogKGFjY3VtdWxhdG9yOiBVLCBpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBVLFxuICAgICAgICBpbml0aWFsVmFsdWU6IFVcbiAgICApOiBVIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20oaXRlbXMpLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiByZWR1Y2VyKGFjYywgaXRlbSwgaW5kZXgrKyksIGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqYmF0Y2g8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBiYXRjaFNpemU6IG51bWJlcik6IEl0ZXJhYmxlPEl0ZXJhYmxlPFQ+PiB7XG4gICAgICAgIGNvbnN0IGl0ZXJhdG9yID0gSXRlcmF0b3IuZnJvbShpdGVtcyk7XG4gICAgICAgIGNvbnN0IHNhZmVCYXRjaFNpemUgPSBiYXRjaFNpemUgPiAwID8gYmF0Y2hTaXplIDogMTtcbiAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICBjb25zdCBiYXRjaDogVFtdID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmF0Y2gubGVuZ3RoIDwgc2FmZUJhdGNoU2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaChjdXJyZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGJhdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxu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
288
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfVHlwaW5nVXRpbHMiLCJyZXF1aXJlIiwiX0Vycm9ycyIsInJldmVyc2VBcnJheSIsImFycmF5IiwiaSIsImxlbmd0aCIsInRvQXN5bmNJdGVyYXRvciIsImdlbmVyYXRvciIsIkFzeW5jSXRlcmF0b3IiLCJmcm9tIiwiZmluZExhc3QiLCJpdGVtcyIsImNvbmRpdGlvbiIsInJlc3VsdCIsIml0ZW0iLCJjb25jYXQiLCJpdGVyYWJsZXMiLCJpdGVyYWJsZUl0ZW0iLCJpdGVyYXRlVmFsdWVzIiwib2JqIiwia2V5IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaXRlcmF0ZUtleXMiLCJpdGVyYXRlRW50cmllcyIsImNvdW50IiwiX2l0ZW0iLCJFbXB0eVNpbmdsZUVsZW1lbnQiLCJTeW1ib2wiLCJmb3IiLCJOb1ZhbHVlTWFya2VyIiwiSXRlclV0aWxzIiwiaXNFbXB0eSIsIml0ZXJhYmxlIiwiZ3JvdXBCeSIsInNlbGVjdEtleSIsIk1hcCIsImtleUxpc3QiLCJnZXQiLCJ1bmRlZmluZWQiLCJzZXQiLCJwdXNoIiwic29ydEJ5Iiwic2VsZWN0b3IiLCJzb3J0IiwiYUl0ZW0iLCJiSXRlbSIsImxlZnRWYWx1ZSIsInJpZ2h0VmFsdWUiLCJsYXN0IiwiQXJyYXkiLCJpc0FycmF5IiwibGFzdEl0ZW0iLCJmaXJzdCIsImZpcnN0SXRlbSIsInNpbmdsZSIsInNpbmdsZUFzc2VydE1lc3NhZ2UiLCJfaXRlbXMkIiwiRXJyb3IiLCJyZWplY3QiLCJzaW5nbGVFbGVtZW50IiwiaW5kZXgiLCJza2lwTGFzdCIsInNraXBDb3VudCIsInByZXZJdGVtcyIsImZpbGwiLCJyZXN1bHRJdGVtIiwiY3VycmVudEluZGV4IiwibWluQnkiLCJjb21wYXJlRnVuYyIsIm1pblZhbHVlIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtaW5CeU9yVW5kZWZpbmVkIiwicmFuZ2UiLCJpblN0YXJ0T3JDb3VudCIsImluSXRlbUNvdW50Iiwic3RhcnQiLCJpdGVtQ291bnQiLCJpbnRlcnNwZXJzZSIsImludGVyc3BlcnNlRm4iLCJmbGF0TWFwIiwieCIsInppcCIsIml0ZXJhdG9ycyIsIm1hcCIsIml0IiwiSXRlcmF0b3IiLCJoYXNVbmRvbmVJdGVyYXRvcnMiLCJyZXN1bHRFbnRyeSIsIml0ZXJhdG9yIiwicmVzdWx0VmFsdWUiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwiZGlzdGluY3RCeSIsImlkU2VsZWN0b3IiLCJTZXQiLCJpZCIsImhhcyIsImFkZCIsInJlZHVjZSIsInJlZHVjZXIiLCJpbml0aWFsVmFsdWUiLCJhY2MiLCJiYXRjaCIsImJhdGNoU2l6ZSIsInNhZmVCYXRjaFNpemUiLCJjdXJyZW50IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL0NvbW1vbi9JdGVyYWJsZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbkxlbmd0aEFycmF5LCByZWplY3QgfSBmcm9tIFwiLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgQ29tcGFyZUZ1bmMgfSBmcm9tIFwiLi9Db21wYXJlcnNcIjtcbmltcG9ydCB7IEludmFsaWRBcmd1bWVudEVycm9yIH0gZnJvbSBcIi4vRXJyb3JzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiogcmV2ZXJzZUFycmF5PFQ+KGFycmF5OiByZWFkb25seSBUW10pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgeWllbGQgYXJyYXlbaV0hO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvQXN5bmNJdGVyYXRvcjxUPihnZW5lcmF0b3I6ICgpID0+IEFzeW5jR2VuZXJhdG9yPFQ+KTogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICByZXR1cm4gQXN5bmNJdGVyYXRvci5mcm9tKGdlbmVyYXRvcigpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgY29uZGl0aW9uOiAoaXRlbTogVCkgPT4gYm9vbGVhbik6IFQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IFQgfCB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgIGlmIChjb25kaXRpb24oaXRlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBjb25jYXQ8VD4oLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTxUPj4pOiBJdGVyYWJsZUl0ZXJhdG9yPFQ+IHtcbiAgICBmb3IgKGNvbnN0IGl0ZXJhYmxlSXRlbSBvZiBpdGVyYWJsZXMpIHtcbiAgICAgICAgeWllbGQqIGl0ZXJhYmxlSXRlbTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZVZhbHVlczxUSyBleHRlbmRzIHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgVFY+KG9iajogeyBba2V5IGluIFRLXTogVFYgfSk6IEl0ZXJhYmxlPFRWPiB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB5aWVsZCBvYmpba2V5XTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPEV4dHJhY3Q8a2V5b2YgVE8sIHN0cmluZz4+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzPFRWPihvYmo6IFJlYWRvbmx5PHsgW2tleTogc3RyaW5nXTogVFYgfT4pOiBJdGVyYWJsZTxzdHJpbmc+O1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVLZXlzKG9iajogUmVhZG9ubHk8e30+KTogSXRlcmFibGU8c3RyaW5nPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUtleXM8VEsgZXh0ZW5kcyBzdHJpbmcgfCBzeW1ib2wgfCBudW1iZXI+KG9iajogeyBba2V5IGluIFRLXTogdW5rbm93biB9KTogSXRlcmFibGU8VEs+IHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIHtcbiAgICAgICAgICAgIHlpZWxkIGtleTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGl0ZXJhdGVFbnRyaWVzPFRPPihvYmo6IFJlYWRvbmx5PFRPPik6IEl0ZXJhYmxlPFtFeHRyYWN0PGtleW9mIFRPLCBzdHJpbmc+LCBUT1trZXlvZiBUT11dPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllczxUVj4ob2JqOiBSZWFkb25seTx7IFtrZXk6IHN0cmluZ106IFRWIH0+KTogSXRlcmFibGU8W3N0cmluZywgVFZdPjtcbmV4cG9ydCBmdW5jdGlvbiBpdGVyYXRlRW50cmllcyhvYmo6IFJlYWRvbmx5PHt9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIHVua25vd25dPjtcbmV4cG9ydCBmdW5jdGlvbiogaXRlcmF0ZUVudHJpZXM8VFY+KG9iajogUmVhZG9ubHk8eyBba2V5OiBzdHJpbmddOiBUViB9Pik6IEl0ZXJhYmxlPFtzdHJpbmcsIFRWXT4ge1xuICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgICAgICAgIHlpZWxkIFtrZXksIG9ialtrZXldIV07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudDxUPihpdGVtczogSXRlcmFibGU8VD4pOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGZvciAoY29uc3QgX2l0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgcmVzdWx0Kys7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmNvbnN0IEVtcHR5U2luZ2xlRWxlbWVudCA9IFN5bWJvbC5mb3IoXCJFbXB0eVNpbmdsZUVsZW1lbnRcIik7XG5jb25zdCBOb1ZhbHVlTWFya2VyID0gU3ltYm9sLmZvcihcIk5vVmFsdWVNYXJrZXJcIik7XG5cbmV4cG9ydCBjbGFzcyBJdGVyVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgY291bnQgPSBjb3VudDtcbiAgICBwdWJsaWMgc3RhdGljIGNvbmNhdCA9IGNvbmNhdDtcblxuICAgIHB1YmxpYyBzdGF0aWMgaXNFbXB0eTxUPihpdGVyYWJsZTogSXRlcmFibGU8VD4pOiBib29sZWFuIHtcbiAgICAgICAgZm9yIChjb25zdCBfaXRlbSBvZiBpdGVyYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ3JvdXBCeTxULCBUS2V5PihpdGVyYWJsZTogSXRlcmFibGU8VD4sIHNlbGVjdEtleTogKGl0ZW06IFQpID0+IFRLZXkpOiBNYXA8VEtleSwgVFtdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8VEtleSwgVFtdPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlcmFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHNlbGVjdEtleShpdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IGtleUxpc3QgPSByZXN1bHQuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoa2V5TGlzdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAga2V5TGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0Qnk8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBzZWxlY3RvcjogKGl0ZW06IFQpID0+IHN0cmluZyB8IG51bWJlcik6IFRbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFsuLi5pdGVtc107XG4gICAgICAgIHJlc3VsdC5zb3J0KChhSXRlbSwgYkl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxlZnRWYWx1ZSA9IHNlbGVjdG9yKGFJdGVtKTtcbiAgICAgICAgICAgIGNvbnN0IHJpZ2h0VmFsdWUgPSBzZWxlY3RvcihiSXRlbSk7XG4gICAgICAgICAgICBpZiAobGVmdFZhbHVlID09PSByaWdodFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnRWYWx1ZSA8IHJpZ2h0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IE1pbkxlbmd0aEFycmF5PFQsIDE+KTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVDtcbiAgICBwdWJsaWMgc3RhdGljIGxhc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zW2l0ZW1zLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBsYXN0SXRlbTogVCB8IHVuZGVmaW5lZDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBsYXN0SXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxhc3RJdGVtO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IFtULCAuLi51bmtub3duW11dKTogVDtcbiAgICBwdWJsaWMgc3RhdGljIGZpcnN0PFQ+KGl0ZW1zOiBNaW5MZW5ndGhBcnJheTxULCAxPik6IFQ7XG4gICAgcHVibGljIHN0YXRpYyBmaXJzdDxUPihpdGVtczogSXRlcmFibGU8VD4gfCByZWFkb25seSBUW10pOiB1bmRlZmluZWQgfCBUO1xuICAgIHB1YmxpYyBzdGF0aWMgZmlyc3Q8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+IHwgcmVhZG9ubHkgVFtdKTogdW5kZWZpbmVkIHwgVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zWzBdO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmaXJzdEl0ZW06IFQgfCB1bmRlZmluZWQ7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgZmlyc3RJdGVtID0gaXRlbTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaXJzdEl0ZW07XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzaW5nbGU8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IEl0ZXJhYmxlPFQ+LCBzaW5nbGVBc3NlcnRNZXNzYWdlPzogc3RyaW5nKTogVCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgc2luZ2xlQXNzZXJ0TWVzc2FnZSA/PyBgU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgJHtpdGVtcy5sZW5ndGh9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbXNbMF0gPz8gcmVqZWN0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgc2luZ2xlRWxlbWVudDogVCB8IHR5cGVvZiBFbXB0eVNpbmdsZUVsZW1lbnQgPSBFbXB0eVNpbmdsZUVsZW1lbnQ7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2luZ2xlRWxlbWVudCAhPT0gRW1wdHlTaW5nbGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbmdsZUFzc2VydE1lc3NhZ2UgPz8gYFNlcXVlbmNlIG11c3QgY29udGFpbiBleGFjdGx5IHNpbmdsZSBlbGVtZW50LCBidXQgZ290IGF0IGxlYXN0IDJgXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNpbmdsZUVsZW1lbnQgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNpbmdsZUVsZW1lbnQgPT09IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihzaW5nbGVBc3NlcnRNZXNzYWdlID8/IFwiU2VxdWVuY2UgbXVzdCBjb250YWluIGV4YWN0bHkgc2luZ2xlIGVsZW1lbnQsIGJ1dCBnb3QgMFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaW5nbGVFbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqaXRlcmF0ZUVudHJpZXM8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSB8IFRbXSB8IEl0ZXJhYmxlPFQ+KTogSXRlcmFibGU8W251bWJlciwgVF0+IHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICB5aWVsZCBbaW5kZXgsIGl0ZW1dO1xuICAgICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgKnNraXBMYXN0PFQ+KGl0ZW1zOiBJdGVyYWJsZTxUPiwgc2tpcENvdW50OiBudW1iZXIpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGlmIChza2lwQ291bnQgPT09IDApIHtcbiAgICAgICAgICAgIHlpZWxkKiBpdGVtcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2SXRlbXM6IEFycmF5PFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50PiA9IG5ldyBBcnJheShza2lwQ291bnQpLmZpbGwoRW1wdHlTaW5nbGVFbGVtZW50KTtcbiAgICAgICAgbGV0IHJlc3VsdEl0ZW06IFQgfCB0eXBlb2YgRW1wdHlTaW5nbGVFbGVtZW50ID0gRW1wdHlTaW5nbGVFbGVtZW50O1xuICAgICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yINCSINC+0LHRidC10LwsINGB0YLRgNC+0LrQsCDQstGL0YjQtSDQs9Cw0YDQsNC90YLQuNGA0YPQtdGCINC00LvQuNC90YMg0LzQsNGB0YHQuNCy0LBcbiAgICAgICAgICAgIHJlc3VsdEl0ZW0gPSBwcmV2SXRlbXNbY3VycmVudEluZGV4XTtcbiAgICAgICAgICAgIHByZXZJdGVtc1tjdXJyZW50SW5kZXhdID0gaXRlbTtcbiAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IChjdXJyZW50SW5kZXggKyAxKSAlIHNraXBDb3VudDtcbiAgICAgICAgICAgIGlmIChyZXN1bHRJdGVtICE9IEVtcHR5U2luZ2xlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG1pbkJ5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10gfCBUW10gfCBJdGVyYWJsZTxUPiwgY29tcGFyZUZ1bmM6IENvbXBhcmVGdW5jPFQ+KTogVCB7XG4gICAgICAgIGxldCBtaW5WYWx1ZTogdHlwZW9mIE5vVmFsdWVNYXJrZXIgfCBUID0gTm9WYWx1ZU1hcmtlcjtcbiAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgICAgICAgICBpZiAobWluVmFsdWUgPT09IE5vVmFsdWVNYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbXBhcmVGdW5jKGl0ZW0sIG1pblZhbHVlKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBtaW5WYWx1ZSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXCJpdGVtc1wiLCBcIkl0ZW1zIHNob3VsZCBiZSBub3QgZW1wdHkgbGlzdFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBtaW5CeU9yVW5kZWZpbmVkPFQ+KFxuICAgICAgICBpdGVtczogcmVhZG9ubHkgVFtdIHwgVFtdIHwgSXRlcmFibGU8VD4sXG4gICAgICAgIGNvbXBhcmVGdW5jOiBDb21wYXJlRnVuYzxUPlxuICAgICk6IFQgfCB1bmRlZmluZWQge1xuICAgICAgICBsZXQgbWluVmFsdWU6IHR5cGVvZiBOb1ZhbHVlTWFya2VyIHwgVCA9IE5vVmFsdWVNYXJrZXI7XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgICAgICAgaWYgKG1pblZhbHVlID09PSBOb1ZhbHVlTWFya2VyKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wYXJlRnVuYyhpdGVtLCBtaW5WYWx1ZSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbWluVmFsdWUgPSBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChtaW5WYWx1ZSA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByYW5nZShpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyByYW5nZShzdGFydDogbnVtYmVyLCBpdGVtQ291bnQ6IG51bWJlcik6IEl0ZXJhYmxlPG51bWJlcj47XG4gICAgcHVibGljIHN0YXRpYyAqcmFuZ2UoaW5TdGFydE9yQ291bnQ6IG51bWJlciwgaW5JdGVtQ291bnQ/OiBudW1iZXIpOiBJdGVyYWJsZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gMCA6IGluU3RhcnRPckNvdW50O1xuICAgICAgICBjb25zdCBpdGVtQ291bnQgPSBpbkl0ZW1Db3VudCA9PT0gdW5kZWZpbmVkID8gaW5TdGFydE9yQ291bnQgOiBpbkl0ZW1Db3VudDtcbiAgICAgICAgaWYgKGl0ZW1Db3VudCA8IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcIml0ZW1Db3VudFwiLCBcIml0ZW1Db3VudCBtdXN0IGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlclwiKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBzdGFydCArIGl0ZW1Db3VudDsgaSsrKSB7XG4gICAgICAgICAgICB5aWVsZCBpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkg0JLRgdGC0LDQstC70Y/QtdGCINC80LXQttC00YMg0Y3Qu9C10LzQtdC90YLQsNC80Lgg0LzQsNGB0YHQuNCy0LAg0LfQsNC00LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiDQuCDQstC+0LfQstGA0LDRidCw0LXRgiDQvdC+0LLRi9C5INC80LDRgdGB0LjQslxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzcGVyc2U8VEksIFRTPihpdGVtczogVElbXSwgaXRlbTogVFMpOiBBcnJheTxUSSB8IFRTPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmludGVyc3BlcnNlRm4oaXRlbXMsICgpID0+IGl0ZW0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5INCS0YHRgtCw0LLQu9GP0LXRgiDQvNC10LbQtNGDINGN0LvQtdC80LXQvdGC0LDQvNC4INC80LDRgdGB0LjQstCwINGN0LvQtdC80LXQvdGCLCDRgdC+0LfQtNCw0LLQsNC10LzRi9C5INGE0YPQvdC60YbQuNC10LksINC4INCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90L7QstGL0Lkg0LzQsNGB0YHQuNCyXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBpbnRlcnNwZXJzZUZuPFRJLCBUUz4oaXRlbXM6IFRJW10sIGl0ZW06IChuZXh0SXRlbTogVEksIGluZGV4OiBudW1iZXIpID0+IFRTKTogQXJyYXk8VEkgfCBUUz4ge1xuICAgICAgICByZXR1cm4gaXRlbXMuZmxhdE1hcCgoeCwgaW5kZXgpID0+IChpbmRleCA9PT0gMCA/IFt4XSA6IFtpdGVtKHgsIGluZGV4KSwgeF0pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHppcDxUMSwgVDI+KGl0ZW1zMTogSXRlcmFibGU8VDE+LCBpdGVtczI6IEl0ZXJhYmxlPFQyPik6IEl0ZXJhYmxlPFtUMSB8IHVuZGVmaW5lZCwgVDIgfCB1bmRlZmluZWRdPjtcbiAgICBwdWJsaWMgc3RhdGljICp6aXAoLi4uaXRlcmFibGVzOiBBcnJheTxJdGVyYWJsZTx1bmtub3duPj4pOiBJdGVyYWJsZTx1bmtub3duW10+IHtcbiAgICAgICAgY29uc3QgaXRlcmF0b3JzOiBBcnJheTxJdGVyYXRvcjx1bmtub3duPiB8IHR5cGVvZiBOb1ZhbHVlTWFya2VyPiA9IGl0ZXJhYmxlcy5tYXAoaXQgPT4gSXRlcmF0b3IuZnJvbShpdCkpO1xuICAgICAgICBsZXQgaGFzVW5kb25lSXRlcmF0b3JzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0RW50cnkgPSBbXTtcbiAgICAgICAgICAgIGhhc1VuZG9uZUl0ZXJhdG9ycyA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yIChjb25zdCBbaSwgaXRlcmF0b3JdIG9mIHRoaXMuaXRlcmF0ZUVudHJpZXMoaXRlcmF0b3JzKSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVyYXRvciA9PT0gTm9WYWx1ZU1hcmtlcikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0VmFsdWUgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRWYWx1ZS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRFbnRyeS5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcnNbaV0gPSBOb1ZhbHVlTWFya2VyO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RW50cnkucHVzaChyZXN1bHRWYWx1ZS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNVbmRvbmVJdGVyYXRvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc1VuZG9uZUl0ZXJhdG9ycykge1xuICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqZGlzdGluY3RCeTxUPihpdGVtczogSXRlcmFibGU8VD4sIGlkU2VsZWN0b3I6IChpdGVtOiBUKSA9PiBzdHJpbmcpOiBJdGVyYWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IHNldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkID0gaWRTZWxlY3RvcihpdGVtKTtcbiAgICAgICAgICAgIGlmICghc2V0LmhhcyhpZCkpIHtcbiAgICAgICAgICAgICAgICBzZXQuYWRkKGlkKTtcbiAgICAgICAgICAgICAgICB5aWVsZCBpdGVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyByZWR1Y2U8VCwgVT4oXG4gICAgICAgIGl0ZW1zOiBJdGVyYWJsZTxUPixcbiAgICAgICAgcmVkdWNlcjogKGFjY3VtdWxhdG9yOiBVLCBpdGVtOiBULCBpbmRleDogbnVtYmVyKSA9PiBVLFxuICAgICAgICBpbml0aWFsVmFsdWU6IFVcbiAgICApOiBVIHtcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcbiAgICAgICAgcmV0dXJuIEl0ZXJhdG9yLmZyb20oaXRlbXMpLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiByZWR1Y2VyKGFjYywgaXRlbSwgaW5kZXgrKyksIGluaXRpYWxWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyAqYmF0Y2g8VD4oaXRlbXM6IEl0ZXJhYmxlPFQ+LCBiYXRjaFNpemU6IG51bWJlcik6IEl0ZXJhYmxlPEl0ZXJhYmxlPFQ+PiB7XG4gICAgICAgIGNvbnN0IGl0ZXJhdG9yID0gSXRlcmF0b3IuZnJvbShpdGVtcyk7XG4gICAgICAgIGNvbnN0IHNhZmVCYXRjaFNpemUgPSBiYXRjaFNpemUgPiAwID8gYmF0Y2hTaXplIDogMTtcbiAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICBjb25zdCBiYXRjaDogVFtdID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmF0Y2gubGVuZ3RoIDwgc2FmZUJhdGNoU2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQuZG9uZSkge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYmF0Y2gucHVzaChjdXJyZW50LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmF0Y2gubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHlpZWxkIGJhdGNoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxu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
@@ -263,4 +263,4 @@ class KCLangRuntimeUtils {
263
263
  }
264
264
  exports.KCLangRuntimeUtils = KCLangRuntimeUtils;
265
265
  KCLangRuntimeUtils.kcLangUtilsName = "kcLangUtils";
266
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmlnIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfVmFsaWRhdGlvbkhlbHBlciIsIl9BdXRvY2FsY0NvbW1vbkZ1bmN0aW9ucyIsIl9EYXRlSGVscGVycyIsIl9UeXBpbmdVdGlscyIsImlzQmlnU291cmNlIiwidmFsdWUiLCJCaWciLCJpc0JpZ09yTnVtYmVyIiwiS0NMYW5nUnVudGltZVV0aWxzIiwiYW5kIiwibGVmdCIsInJpZ2h0IiwidW5kZWZpbmVkIiwiZGl2aXNpb24iLCJ3cmFwRGVjaW1hbE9wZXJhbmQiLCJkaXYiLCJlcSIsImNtcCIsImdlIiwiZ3RlIiwiZ3QiLCJsZSIsImx0ZSIsImx0IiwibWludXMiLCJhcmd1bWVudCIsIm11bCIsIm11bHRpcGx5Iiwibm90Iiwibm90ZXEiLCJvciIsInJvdW5kIiwiZnJhY3Rpb25EaWdpdHMiLCJmbG9vciIsImdldFllYXIiLCJfRGF0ZSIsIkRhdGUiLCJnZXRGdWxsWWVhciIsImRhdGVUaW1lIiwiZGF0ZSIsImlzTm90TnVsbE9yRW1wdHkiLCJjb252ZXJ0RGF0ZSIsInN1bSIsImFkZCIsImFicyIsInhhYnMiLCJsZW5ndGgiLCJleGlzdHMiLCJ2YWx1ZVNlbGVjdG9yIiwicGF0aCIsImlzU25pbHMiLCJub3JtYWxpemVkU25pbHMiLCJyZXBsYWNlIiwiaXNOdWxsT3JXaGl0ZVNwYWNlIiwicmVzdWx0IiwiVmFsaWRhdGlvbkhlbHBlciIsImlzUmVnTnVtU2ZyIiwibm9ybWFsaXplZFJlZ051bSIsImlzSW5uIiwiaXNWYWxpZEFjY291bnROdW1iZXIiLCJiaWsiLCJhY2NvdW50IiwiYmlrVmFsdWUiLCJhY2NvdW50VmFsdWUiLCJpc1ZhbGlkTWlyQ2FyZE51bWJlciIsImNvbnZlcnRUb0RlY2ltYWwiLCJjb252ZXJ0VG9TdHJpbmciLCJ0b1N0cmluZyIsInJlZ2V4TWF0Y2giLCJwYXR0ZXJuIiwiUmVnRXhwIiwidGVzdCIsIm9uZW9mIiwidmFsdWVzIiwiaW5kZXhPZiIsInZhbHVlQXNCaWciLCJzb21lIiwiaXRlbSIsInN1YnN0cmluZyIsInN0ciIsInN0YXJ0IiwiZW5kIiwiZGF0ZU5vdyIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImV4cG9ydHMiLCJrY0xhbmdVdGlsc05hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vS0NMYW5nUnVudGltZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWcsIHsgQmlnU291cmNlIH0gZnJvbSBcImJpZy5qc1wiO1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uSGVscGVyIH0gZnJvbSBcIi4uL0VuZ2luZS9zcmMvRW5naW5lL1ZhbGlkYXRpb25IZWxwZXJcIjtcbmltcG9ydCB7IHdyYXBEZWNpbWFsT3BlcmFuZCB9IGZyb20gXCIuLi9FbmdpbmUvc3JjL0hlbHBlcnMvQXV0b2NhbGNDb21tb25GdW5jdGlvbnNcIjtcbmltcG9ydCB7IGNvbnZlcnREYXRlIH0gZnJvbSBcIi4uL0VuZ2luZS9zcmMvSGVscGVycy9EYXRlSGVscGVyc1wiO1xuXG5pbXBvcnQgeyBpc05vdE51bGxPckVtcHR5LCBpc051bGxPcldoaXRlU3BhY2UgfSBmcm9tIFwiLi9UeXBpbmdVdGlsc1wiO1xuXG5jb25zdCBpc0JpZ1NvdXJjZSA9ICh2YWx1ZTogQmlnU291cmNlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBCaWcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGlzQmlnT3JOdW1iZXIgPSAodmFsdWU6IEJpZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwgfCB1bmtub3duKSA9PlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJpZztcblxuZXhwb3J0IGNsYXNzIEtDTGFuZ1J1bnRpbWVVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyBrY0xhbmdVdGlsc05hbWUgPSBcImtjTGFuZ1V0aWxzXCI7XG5cbiAgICBwdWJsaWMgYW5kKGxlZnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsIHJpZ2h0OiBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChsZWZ0ID09IHVuZGVmaW5lZCB8fCByaWdodCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlZnQgJiYgcmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGRpdmlzaW9uKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuZGl2KHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiByaWdodCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuY21wKHJpZ2h0KSA9PT0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdlKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmd0ZShyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBndChsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5ndChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5sdGUocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbHQobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkubHQocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWludXMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IHVua25vd24ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KS5tdWwoLTEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG11bHRpcGx5KGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IHVua25vd24ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLm11bChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90KGxlZnQ/OiBib29sZWFuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBsZWZ0ICE9IHVuZGVmaW5lZCA/ICFsZWZ0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RlcShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGxlZnQsIHJpZ2h0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3IobGVmdDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgcmlnaHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09IFwiYm9vbGVhblwiIHx8IHR5cGVvZiByaWdodCA9PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnQgfHwgcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcm91bmQodmFsdWU6IEJpZ1NvdXJjZSwgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXIpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKHZhbHVlKS5yb3VuZChmcmFjdGlvbkRpZ2l0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmxvb3IodmFsdWU6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQod3JhcERlY2ltYWxPcGVyYW5kKHZhbHVlKS5yb3VuZCh1bmRlZmluZWQsIDApKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRZZWFyKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpPy5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkYXRlVGltZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBpc05vdE51bGxPckVtcHR5KHZhbHVlKSA/IGNvbnZlcnREYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN1bShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWlzQmlnT3JOdW1iZXIobGVmdCkgJiYgIWlzQmlnT3JOdW1iZXIocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5hZGQocmlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChyaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHhhYnMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sdCgwKSA/IG5ldyBCaWcoMCkgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZW5ndGgoYXJndW1lbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGV4aXN0cyh2YWx1ZVNlbGVjdG9yOiAocGF0aDogc3RyaW5nKSA9PiB1bmtub3duLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlU2VsZWN0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVTZWxlY3RvcihwYXRoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NuaWxzKHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZVNlbGVjdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlU2VsZWN0b3IocGF0aCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTbmlscyA9IHZhbHVlPy5yZXBsYWNlKC9bXjAtOV0vZywgXCJcIik7XG4gICAgICAgIGlmIChpc051bGxPcldoaXRlU3BhY2Uobm9ybWFsaXplZFNuaWxzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFZhbGlkYXRpb25IZWxwZXIuaXNTbmlscyhub3JtYWxpemVkU25pbHMpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUmVnTnVtU2ZyKHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZVNlbGVjdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlU2VsZWN0b3IocGF0aCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZWdOdW0gPSB2YWx1ZT8ucmVwbGFjZSgvW14wLTldL2csIFwiXCIpO1xuICAgICAgICBpZiAoaXNOdWxsT3JXaGl0ZVNwYWNlKG5vcm1hbGl6ZWRSZWdOdW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gVmFsaWRhdGlvbkhlbHBlci5pc1JlZ051bVNmcihub3JtYWxpemVkUmVnTnVtKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0lubih2YWx1ZVNlbGVjdG9yOiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWVTZWxlY3RvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZVNlbGVjdG9yKHBhdGgpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkU25pbHMgPSB2YWx1ZT8ucmVwbGFjZSgvW14wLTldL2csIFwiXCIpO1xuICAgICAgICBpZiAoaXNOdWxsT3JXaGl0ZVNwYWNlKG5vcm1hbGl6ZWRTbmlscykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBWYWxpZGF0aW9uSGVscGVyLmlzSW5uKG5vcm1hbGl6ZWRTbmlscyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZEFjY291bnROdW1iZXIoXG4gICAgICAgIHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgICAgICAgYmlrOiBzdHJpbmcsXG4gICAgICAgIGFjY291bnQ6IHN0cmluZ1xuICAgICk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWVTZWxlY3RvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmlrVmFsdWUgPSB2YWx1ZVNlbGVjdG9yKGJpayk7XG4gICAgICAgIGNvbnN0IGFjY291bnRWYWx1ZSA9IHZhbHVlU2VsZWN0b3IoYWNjb3VudCk7XG4gICAgICAgIGlmIChpc051bGxPcldoaXRlU3BhY2UoYmlrVmFsdWUpIHx8IGlzTnVsbE9yV2hpdGVTcGFjZShhY2NvdW50VmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gVmFsaWRhdGlvbkhlbHBlci5pc1ZhbGlkQWNjb3VudE51bWJlcihiaWtWYWx1ZSwgYWNjb3VudFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZE1pckNhcmROdW1iZXIodmFsdWVTZWxlY3RvcjogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlU2VsZWN0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVTZWxlY3RvcihwYXRoKTtcbiAgICAgICAgaWYgKGlzTnVsbE9yV2hpdGVTcGFjZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBWYWxpZGF0aW9uSGVscGVyLmlzVmFsaWRNaXJDYXJkTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBjb252ZXJ0VG9EZWNpbWFsKGFyZ3VtZW50OiBCaWdTb3VyY2UgfCBzdHJpbmcgfCB1bmRlZmluZWQpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydFRvU3RyaW5nKGFyZ3VtZW50OiBCaWdTb3VyY2UgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBCaWcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnZXhNYXRjaChwYXR0ZXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHBhdHRlcm4gPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuKS50ZXN0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbmVvZih2YWx1ZXM6IEFycmF5PHN0cmluZyB8IG51bWJlciB8IEJpZz4sIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBCaWcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5pbmRleE9mKHZhbHVlKSAhPT0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNCaWdPck51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXNCaWcgPSBuZXcgQmlnKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuc29tZShpdGVtID0+IGlzQmlnT3JOdW1iZXIoaXRlbSkgJiYgdmFsdWVBc0JpZy5lcShpdGVtKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnN0cmluZyhcbiAgICAgICAgc3RyOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgICAgIGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHN0ciA9PSB1bmRlZmluZWQgfHwgc3RhcnQgPT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIGxlbmd0aDtcblxuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGF0ZU5vdygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoXCJydS1SVVwiKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsd0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUVBLE1BQU1LLFdBQVcsR0FBSUMsS0FBZ0IsSUFBYztFQUMvQyxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxZQUFZQyxZQUFHLEVBQUU7SUFDaEYsT0FBTyxJQUFJO0VBQ2Y7RUFDQSxPQUFPLEtBQUs7QUFDaEIsQ0FBQztBQUVELE1BQU1DLGFBQWEsR0FBSUYsS0FBZ0QsSUFDbkUsT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxZQUFZQyxZQUFHO0FBRTlDLE1BQU1FLGtCQUFrQixDQUFDO0VBR3JCQyxHQUFHQSxDQUFDQyxJQUF5QixFQUFFQyxLQUEwQixFQUF1QjtJQUNuRixJQUFJRCxJQUFJLElBQUlFLFNBQVMsSUFBSUQsS0FBSyxJQUFJQyxTQUFTLEVBQUU7TUFDekMsT0FBT0Es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T0EsU0FBUztJQUNwQjtJQUNBLElBQUksT0FBT1AsS0FBSyxLQUFLLFFBQVEsRUFBRTtNQUMzQixPQUFPLElBQUlpRSxNQUFNLENBQUNELE9BQU8sQ0FBQyxDQUFDRSxJQUFJLENBQUNsRSxLQUFLLENBQUM7SUFDMUM7SUFDQSxPQUFPTyxTQUFTO0VBQ3BCO0VBRU80RCxLQUFLQSxDQUFDQyxNQUFvQyxFQUFFcEUsS0FBNEIsRUFBdUI7SUFDbEcsSUFBSW9FLE1BQU0sSUFBSTdELFNBQVMsRUFBRTtNQUNyQixPQUFPQSxTQUFTO0lBQ3BCO0lBQ0EsSUFBSSxPQUFPUCxLQUFLLEtBQUssUUFBUSxFQUFFO01BQzNCLE9BQU9vRSxNQUFNLENBQUNDLE9BQU8sQ0FBQ3JFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QztJQUVBLElBQUlFLGFBQWEsQ0FBQ0YsS0FBSyxDQUFDLEVBQUU7TUFDdEIsTUFBTXNFLFVBQVUsR0FBRyxJQUFJckUsWUFBRyxDQUFDRCxLQUFLLENBQUM7TUFDakMsT0FBT29FLE1BQU0sQ0FBQ0csSUFBSSxDQUFDQyxJQUFJLElBQUl0RSxhQUFhLENBQUNzRSxJQUFJLENBQUMsSUFBSUYsVUFBVSxDQUFDM0QsRUFBRSxDQUFDNkQsSUFBSSxDQUFDLENBQUM7SUFDMUU7SUFFQSxPQUFPLEtBQUs7RUFDaEI7RUFFT0MsU0FBU0EsQ0FDWkMsR0FBdUIsRUFDdkJDLEtBQXlCLEVBQ3pCbEMsTUFBMEIsRUFDUjtJQUNsQixJQUFJaUMsR0FBRyxJQUFJbkUsU0FBUyxJQUFJb0UsS0FBSyxJQUFJcEUsU0FBUyxJQUFJa0MsTUFBTSxJQUFJbEMsU0FBUyxFQUFFO01BQy9ELE9BQU9BLFNBQVM7SUFDcEI7SUFDQSxJQUFJa0MsTUFBTSxJQUFJLENBQUMsRUFBRTtNQUNiLE9BQU8sRUFBRTtJQUNiO0lBQ0EsTUFBTW1DLEdBQUcsR0FBR0QsS0FBSyxHQUFHbEMsTUFBTTtJQUUxQixPQUFPaUMsR0FBRyxDQUFDRCxTQUFTLENBQUNFLEtBQUssRUFBRUMsR0FBRyxDQUFDO0VBQ3BDO0VBRU9DLE9BQU9BLENBQUEsRUFBdUI7SUFDakMsT0FBTyxJQUFJOUMsSUFBSSxDQUFDLENBQUMsQ0FBQytDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztFQUNqRDtBQUNKO0FBQUNDLE9BQUEsQ0FBQTVFLGtCQUFBLEdBQUFBLGtCQUFBO0FBMVNZQSxrQkFBa0IsQ0FDYjZFLGVBQWUsR0FBRyxhQUFhIiwiaWdub3JlTGlzdCI6W119
266
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmlnIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfVmFsaWRhdGlvbkhlbHBlciIsIl9BdXRvY2FsY0NvbW1vbkZ1bmN0aW9ucyIsIl9EYXRlSGVscGVycyIsIl9UeXBpbmdVdGlscyIsImlzQmlnU291cmNlIiwidmFsdWUiLCJCaWciLCJpc0JpZ09yTnVtYmVyIiwiS0NMYW5nUnVudGltZVV0aWxzIiwiYW5kIiwibGVmdCIsInJpZ2h0IiwidW5kZWZpbmVkIiwiZGl2aXNpb24iLCJ3cmFwRGVjaW1hbE9wZXJhbmQiLCJkaXYiLCJlcSIsImNtcCIsImdlIiwiZ3RlIiwiZ3QiLCJsZSIsImx0ZSIsImx0IiwibWludXMiLCJhcmd1bWVudCIsIm11bCIsIm11bHRpcGx5Iiwibm90Iiwibm90ZXEiLCJvciIsInJvdW5kIiwiZnJhY3Rpb25EaWdpdHMiLCJmbG9vciIsImdldFllYXIiLCJfRGF0ZSIsIkRhdGUiLCJnZXRGdWxsWWVhciIsImRhdGVUaW1lIiwiZGF0ZSIsImlzTm90TnVsbE9yRW1wdHkiLCJjb252ZXJ0RGF0ZSIsInN1bSIsImFkZCIsImFicyIsInhhYnMiLCJsZW5ndGgiLCJleGlzdHMiLCJ2YWx1ZVNlbGVjdG9yIiwicGF0aCIsImlzU25pbHMiLCJub3JtYWxpemVkU25pbHMiLCJyZXBsYWNlIiwiaXNOdWxsT3JXaGl0ZVNwYWNlIiwicmVzdWx0IiwiVmFsaWRhdGlvbkhlbHBlciIsImlzUmVnTnVtU2ZyIiwibm9ybWFsaXplZFJlZ051bSIsImlzSW5uIiwiaXNWYWxpZEFjY291bnROdW1iZXIiLCJiaWsiLCJhY2NvdW50IiwiYmlrVmFsdWUiLCJhY2NvdW50VmFsdWUiLCJpc1ZhbGlkTWlyQ2FyZE51bWJlciIsImNvbnZlcnRUb0RlY2ltYWwiLCJjb252ZXJ0VG9TdHJpbmciLCJ0b1N0cmluZyIsInJlZ2V4TWF0Y2giLCJwYXR0ZXJuIiwiUmVnRXhwIiwidGVzdCIsIm9uZW9mIiwidmFsdWVzIiwiaW5kZXhPZiIsInZhbHVlQXNCaWciLCJzb21lIiwiaXRlbSIsInN1YnN0cmluZyIsInN0ciIsInN0YXJ0IiwiZW5kIiwiZGF0ZU5vdyIsInRvTG9jYWxlRGF0ZVN0cmluZyIsImV4cG9ydHMiLCJrY0xhbmdVdGlsc05hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9Db21tb24vS0NMYW5nUnVudGltZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaWcsIHsgQmlnU291cmNlIH0gZnJvbSBcImJpZy5qc1wiO1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uSGVscGVyIH0gZnJvbSBcIi4uL0VuZ2luZS9zcmMvRW5naW5lL1ZhbGlkYXRpb25IZWxwZXJcIjtcbmltcG9ydCB7IHdyYXBEZWNpbWFsT3BlcmFuZCB9IGZyb20gXCIuLi9FbmdpbmUvc3JjL0hlbHBlcnMvQXV0b2NhbGNDb21tb25GdW5jdGlvbnNcIjtcbmltcG9ydCB7IGNvbnZlcnREYXRlIH0gZnJvbSBcIi4uL0VuZ2luZS9zcmMvSGVscGVycy9EYXRlSGVscGVyc1wiO1xuXG5pbXBvcnQgeyBpc05vdE51bGxPckVtcHR5LCBpc051bGxPcldoaXRlU3BhY2UgfSBmcm9tIFwiLi9UeXBpbmdVdGlsc1wiO1xuXG5jb25zdCBpc0JpZ1NvdXJjZSA9ICh2YWx1ZTogQmlnU291cmNlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgfHwgdmFsdWUgaW5zdGFuY2VvZiBCaWcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGlzQmlnT3JOdW1iZXIgPSAodmFsdWU6IEJpZyB8IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwgfCB1bmtub3duKSA9PlxuICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJpZztcblxuZXhwb3J0IGNsYXNzIEtDTGFuZ1J1bnRpbWVVdGlscyB7XG4gICAgcHVibGljIHN0YXRpYyBrY0xhbmdVdGlsc05hbWUgPSBcImtjTGFuZ1V0aWxzXCI7XG5cbiAgICBwdWJsaWMgYW5kKGxlZnQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsIHJpZ2h0OiBib29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChsZWZ0ID09IHVuZGVmaW5lZCB8fCByaWdodCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlZnQgJiYgcmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGRpdmlzaW9uKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuZGl2KHJpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09PSBcInN0cmluZ1wiICYmIHR5cGVvZiByaWdodCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkuY21wKHJpZ2h0KSA9PT0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdlKGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLmd0ZShyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBndChsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5ndChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5sdGUocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbHQobGVmdDogQmlnU291cmNlLCByaWdodDogQmlnU291cmNlKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShsZWZ0KSAmJiBpc0JpZ1NvdXJjZShyaWdodCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQobGVmdCkubHQocmlnaHQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWludXMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IHVua25vd24ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UoYXJndW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KS5tdWwoLTEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG11bHRpcGx5KGxlZnQ6IEJpZ1NvdXJjZSwgcmlnaHQ6IEJpZ1NvdXJjZSk6IHVua25vd24ge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UobGVmdCkgJiYgaXNCaWdTb3VyY2UocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpLm11bChyaWdodCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgbm90KGxlZnQ/OiBib29sZWFuKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBsZWZ0ICE9IHVuZGVmaW5lZCA/ICFsZWZ0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBub3RlcShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGxlZnQsIHJpZ2h0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3IobGVmdDogYm9vbGVhbiB8IHVuZGVmaW5lZCwgcmlnaHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsZWZ0ID09IFwiYm9vbGVhblwiIHx8IHR5cGVvZiByaWdodCA9PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmV0dXJuIGxlZnQgfHwgcmlnaHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcm91bmQodmFsdWU6IEJpZ1NvdXJjZSwgZnJhY3Rpb25EaWdpdHM/OiBudW1iZXIpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoaXNCaWdTb3VyY2UodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKHZhbHVlKS5yb3VuZChmcmFjdGlvbkRpZ2l0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZmxvb3IodmFsdWU6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQod3JhcERlY2ltYWxPcGVyYW5kKHZhbHVlKS5yb3VuZCh1bmRlZmluZWQsIDApKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRZZWFyKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUpPy5nZXRGdWxsWWVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkYXRlVGltZSh2YWx1ZTogc3RyaW5nKTogRGF0ZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBpc05vdE51bGxPckVtcHR5KHZhbHVlKSA/IGNvbnZlcnREYXRlKHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFkYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIHN1bShsZWZ0OiBCaWdTb3VyY2UsIHJpZ2h0OiBCaWdTb3VyY2UpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWlzQmlnT3JOdW1iZXIobGVmdCkgJiYgIWlzQmlnT3JOdW1iZXIocmlnaHQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpICYmIGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChsZWZ0KS5hZGQocmlnaHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKGxlZnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGxlZnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzQmlnU291cmNlKHJpZ2h0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBEZWNpbWFsT3BlcmFuZChyaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwRGVjaW1hbE9wZXJhbmQoYXJndW1lbnQpLmFicygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHhhYnMoYXJndW1lbnQ6IEJpZ1NvdXJjZSk6IEJpZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChpc0JpZ1NvdXJjZShhcmd1bWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5sdCgwKSA/IG5ldyBCaWcoMCkgOiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBsZW5ndGgoYXJndW1lbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJndW1lbnQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGV4aXN0cyh2YWx1ZVNlbGVjdG9yOiAocGF0aDogc3RyaW5nKSA9PiB1bmtub3duLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlU2VsZWN0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVTZWxlY3RvcihwYXRoKTtcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPSBcIlwiO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1NuaWxzKHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZVNlbGVjdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlU2VsZWN0b3IocGF0aCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTbmlscyA9IHZhbHVlPy5yZXBsYWNlKC9bXjAtOV0vZywgXCJcIik7XG4gICAgICAgIGlmIChpc051bGxPcldoaXRlU3BhY2Uobm9ybWFsaXplZFNuaWxzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFZhbGlkYXRpb25IZWxwZXIuaXNTbmlscyhub3JtYWxpemVkU25pbHMpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUmVnTnVtU2ZyKHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZywgcGF0aDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh2YWx1ZVNlbGVjdG9yID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlU2VsZWN0b3IocGF0aCk7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZWdOdW0gPSB2YWx1ZT8ucmVwbGFjZSgvW14wLTldL2csIFwiXCIpO1xuICAgICAgICBpZiAoaXNOdWxsT3JXaGl0ZVNwYWNlKG5vcm1hbGl6ZWRSZWdOdW0pKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gVmFsaWRhdGlvbkhlbHBlci5pc1JlZ051bVNmcihub3JtYWxpemVkUmVnTnVtKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0lubih2YWx1ZVNlbGVjdG9yOiAocGF0aDogc3RyaW5nKSA9PiBzdHJpbmcsIHBhdGg6IHN0cmluZyk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWVTZWxlY3RvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFsdWUgPSB2YWx1ZVNlbGVjdG9yKHBhdGgpO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkU25pbHMgPSB2YWx1ZT8ucmVwbGFjZSgvW14wLTldL2csIFwiXCIpO1xuICAgICAgICBpZiAoaXNOdWxsT3JXaGl0ZVNwYWNlKG5vcm1hbGl6ZWRTbmlscykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBWYWxpZGF0aW9uSGVscGVyLmlzSW5uKG5vcm1hbGl6ZWRTbmlscyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZEFjY291bnROdW1iZXIoXG4gICAgICAgIHZhbHVlU2VsZWN0b3I6IChwYXRoOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgICAgICAgYmlrOiBzdHJpbmcsXG4gICAgICAgIGFjY291bnQ6IHN0cmluZ1xuICAgICk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodmFsdWVTZWxlY3RvciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYmlrVmFsdWUgPSB2YWx1ZVNlbGVjdG9yKGJpayk7XG4gICAgICAgIGNvbnN0IGFjY291bnRWYWx1ZSA9IHZhbHVlU2VsZWN0b3IoYWNjb3VudCk7XG4gICAgICAgIGlmIChpc051bGxPcldoaXRlU3BhY2UoYmlrVmFsdWUpIHx8IGlzTnVsbE9yV2hpdGVTcGFjZShhY2NvdW50VmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gVmFsaWRhdGlvbkhlbHBlci5pc1ZhbGlkQWNjb3VudE51bWJlcihiaWtWYWx1ZSwgYWNjb3VudFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZE1pckNhcmROdW1iZXIodmFsdWVTZWxlY3RvcjogKHBhdGg6IHN0cmluZykgPT4gc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlU2VsZWN0b3IgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdmFsdWVTZWxlY3RvcihwYXRoKTtcbiAgICAgICAgaWYgKGlzTnVsbE9yV2hpdGVTcGFjZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBWYWxpZGF0aW9uSGVscGVyLmlzVmFsaWRNaXJDYXJkTnVtYmVyKHZhbHVlKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBjb252ZXJ0VG9EZWNpbWFsKGFyZ3VtZW50OiBCaWdTb3VyY2UgfCBzdHJpbmcgfCB1bmRlZmluZWQpOiBCaWcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gd3JhcERlY2ltYWxPcGVyYW5kKGFyZ3VtZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydFRvU3RyaW5nKGFyZ3VtZW50OiBCaWdTb3VyY2UgfCB1bmRlZmluZWQgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudCA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBCaWcpIHtcbiAgICAgICAgICAgIHJldHVybiBhcmd1bWVudC50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnZXhNYXRjaChwYXR0ZXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHBhdHRlcm4gPT0gdW5kZWZpbmVkIHx8IHZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChwYXR0ZXJuKS50ZXN0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbmVvZih2YWx1ZXM6IEFycmF5PHN0cmluZyB8IG51bWJlciB8IEJpZz4sIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBCaWcpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHZhbHVlcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlcy5pbmRleE9mKHZhbHVlKSAhPT0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNCaWdPck51bWJlcih2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXNCaWcgPSBuZXcgQmlnKHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZXMuc29tZShpdGVtID0+IGlzQmlnT3JOdW1iZXIoaXRlbSkgJiYgdmFsdWVBc0JpZy5lcShpdGVtKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN1YnN0cmluZyhcbiAgICAgICAgc3RyOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgIHN0YXJ0OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gICAgICAgIGxlbmd0aDogbnVtYmVyIHwgdW5kZWZpbmVkXG4gICAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHN0ciA9PSB1bmRlZmluZWQgfHwgc3RhcnQgPT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbmd0aCA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIGxlbmd0aDtcblxuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cmluZyhzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGF0ZU5vdygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoXCJydS1SVVwiKTtcbiAgICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxJQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsd0JBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLFlBQUEsR0FBQUosT0FBQTtBQUVBLE1BQU1LLFdBQVcsR0FBSUMsS0FBZ0IsSUFBYztFQUMvQyxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxZQUFZQyxZQUFHLEVBQUU7SUFDaEYsT0FBTyxJQUFJO0VBQ2Y7RUFDQSxPQUFPLEtBQUs7QUFDaEIsQ0FBQztBQUVELE1BQU1DLGFBQWEsR0FBSUYsS0FBZ0QsSUFDbkUsT0FBT0EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxZQUFZQyxZQUFHO0FBRTlDLE1BQU1FLGtCQUFrQixDQUFDO0VBR3JCQyxHQUFHQSxDQUFDQyxJQUF5QixFQUFFQyxLQUEwQixFQUF1QjtJQUNuRixJQUFJRCxJQUFJLElBQUlFLFNBQVMsSUFBSUQsS0FBSyxJQUFJQyxTQUFTLEVBQUU7TUFDekMsT0FBT0Es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
@@ -10,7 +10,6 @@ var _TypingUtils = require("../TypingUtils");
10
10
  var _IterableUtils = require("../IterableUtils");
11
11
  var _EachCurrentCollision = require("./EachCurrentCollision");
12
12
  var _ModelPath = require("./ModelPath");
13
- var _AbsoluteModelFieldPath;
14
13
  class AbsoluteModelFieldPath {
15
14
  constructor(path, fieldName) {
16
15
  this.path = void 0;
@@ -49,7 +48,6 @@ class AbsoluteModelFieldPath {
49
48
  }
50
49
  }
51
50
  exports.AbsoluteModelFieldPath = AbsoluteModelFieldPath;
52
- _AbsoluteModelFieldPath = AbsoluteModelFieldPath;
53
51
  AbsoluteModelFieldPath.extraFieldNames = ["\\$errorCount", "\\$warningCount"];
54
- AbsoluteModelFieldPath.fieldExtractRegex = new RegExp(`^(.*)\\.(${_AbsoluteModelFieldPath.extraFieldNames.concat((0, _CoreTypes.getKnownViewModelFieldNames)()).join("|")})$`);
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ29yZVR5cGVzIiwicmVxdWlyZSIsIl9oYXNoVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfSXRlcmFibGVVdGlscyIsIl9FYWNoQ3VycmVudENvbGxpc2lvbiIsIl9Nb2RlbFBhdGgiLCJfQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCIsIkFic29sdXRlTW9kZWxGaWVsZFBhdGgiLCJjb25zdHJ1Y3RvciIsInBhdGgiLCJmaWVsZE5hbWUiLCJmaWVsZCIsImdldEhhc2giLCJnZXRTaW1wbGVIYXNoQnlTdHJpbmciLCJpc0VxdWFscyIsIm1vZGVsUGF0aCIsImVhY2hDdXJyZW50Q29sbGlzaW9uIiwiRWFjaEN1cnJlbnRDb2xsaXNpb24iLCJBcmVTYW1lIiwiY3JlYXRlRnJvbVN0cmluZyIsInBhdGhXaXRoRmllbGROYW1lIiwiZGVmYXVsdEZpZWxkTmFtZSIsImNyZWF0ZUZyb20iLCJjcmVhdGVBYnNvbHV0ZSIsImNyZWF0ZUZyb21NYXNrIiwibXVsdGlwbGljaXR5U3ltYm9sIiwiY3JlYXRlQWJzb2x1dGVGcm9tTWFzayIsIm1vZGVsUGF0aEZhY3RvcnkiLCJfbWF0Y2gkIiwiX3JlZiIsIm1hdGNoIiwiZmllbGRFeHRyYWN0UmVnZXgiLCJleGVjIiwidW5kZWZpbmVkIiwicmVqZWN0IiwidG9TdHJpbmciLCJ0b0xlZ2FjeVBhdGgiLCJsYXN0VG9rZW4iLCJJdGVyVXRpbHMiLCJsYXN0IiwiZ2V0UGF0aFBhcnRzIiwiaXNMYXN0VG9rZW5Bbkluc3RhbmNlT3JNdWx0aXBsaWNpdHkiLCJQYXRoVG9rZW5zIiwiaXNJbnN0YW5jZVRva2VuT3JJbnN0YW5jZXNTcGVjIiwiaXNNdWx0aVRva2VuIiwic2xhc2hJZlJlcXVpcmVkIiwiaXNOb3ROdWxsT3JFbXB0eSIsImRvdElmUmVxdWlyZWQiLCJleHBvcnRzIiwiZXh0cmFGaWVsZE5hbWVzIiwiUmVnRXhwIiwiY29uY2F0IiwiZ2V0S25vd25WaWV3TW9kZWxGaWVsZE5hbWVzIiwiam9pbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvQWJzb2x1dGVNb2RlbEZpZWxkUGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRLbm93blZpZXdNb2RlbEZpZWxkTmFtZXMsIFZpZXdNb2RlbEZpZWxkTmFtZSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvc3JjL0VuZ2luZS9Db3JlL0NvcmVUeXBlc1wiO1xuaW1wb3J0IHsgZ2V0U2ltcGxlSGFzaEJ5U3RyaW5nIH0gZnJvbSBcIi4uL2hhc2hVdGlsc1wiO1xuaW1wb3J0IHsgaXNOb3ROdWxsT3JFbXB0eSwgcmVqZWN0IH0gZnJvbSBcIi4uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgeyBJdGVyVXRpbHMgfSBmcm9tIFwiLi4vSXRlcmFibGVVdGlsc1wiO1xuXG5pbXBvcnQgeyBFYWNoQ3VycmVudENvbGxpc2lvbiB9IGZyb20gXCIuL0VhY2hDdXJyZW50Q29sbGlzaW9uXCI7XG5pbXBvcnQgeyBJRXF1YXRhYmxlIH0gZnJvbSBcIi4vSUVxdWF0YWJsZVwiO1xuaW1wb3J0IHtcbiAgICBBYnNvbHV0ZU1vZGVsUGF0aCxcbiAgICBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoLFxuICAgIGNyZWF0ZUFic29sdXRlLFxuICAgIGNyZWF0ZUFic29sdXRlRnJvbU1hc2ssXG4gICAgUGF0aFRva2VuLFxuICAgIFBhdGhUb2tlbnMsXG59IGZyb20gXCIuL01vZGVsUGF0aFwiO1xuXG5leHBvcnQgdHlwZSBWaWV3TW9kZWxGaWVsZE5hbWVXaXRoQ3VzdG9tRmllbGRzID0gVmlld01vZGVsRmllbGROYW1lIHwgXCIkZXJyb3JDb3VudFwiIHwgXCIkd2FybmluZ0NvdW50XCIgfCBcIlwiO1xuXG5leHBvcnQgY2xhc3MgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCBpbXBsZW1lbnRzIElFcXVhdGFibGU8QWJzb2x1dGVNb2RlbEZpZWxkUGF0aD4ge1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGV4dHJhRmllbGROYW1lcyA9IFtcIlxcXFwkZXJyb3JDb3VudFwiLCBcIlxcXFwkd2FybmluZ0NvdW50XCJdO1xuICAgIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IGZpZWxkRXh0cmFjdFJlZ2V4ID0gbmV3IFJlZ0V4cChcbiAgICAgICAgYF4oLiopXFxcXC4oJHtBYnNvbHV0ZU1vZGVsRmllbGRQYXRoLmV4dHJhRmllbGROYW1lcy5jb25jYXQoZ2V0S25vd25WaWV3TW9kZWxGaWVsZE5hbWVzKCkpLmpvaW4oXCJ8XCIpfSkkYFxuICAgICk7XG4gICAgcHVibGljIHJlYWRvbmx5IHBhdGg6IEFic29sdXRlTW9kZWxQYXRoO1xuICAgIHB1YmxpYyByZWFkb25seSBmaWVsZDogVmlld01vZGVsRmllbGROYW1lV2l0aEN1c3RvbUZpZWxkcztcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXRoOiBBYnNvbHV0ZU1vZGVsUGF0aCwgZmllbGROYW1lOiBWaWV3TW9kZWxGaWVsZE5hbWVXaXRoQ3VzdG9tRmllbGRzKSB7XG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZE5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEhhc2goKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aC5nZXRIYXNoKCkgKyBnZXRTaW1wbGVIYXNoQnlTdHJpbmcodGhpcy5maWVsZCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRXF1YWxzKFxuICAgICAgICBtb2RlbFBhdGg6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgsXG4gICAgICAgIGVhY2hDdXJyZW50Q29sbGlzaW9uOiBFYWNoQ3VycmVudENvbGxpc2lvbiA9IEVhY2hDdXJyZW50Q29sbGlzaW9uLkFyZVNhbWVcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aC5pc0VxdWFscyhtb2RlbFBhdGgucGF0aCwgZWFjaEN1cnJlbnRDb2xsaXNpb24pICYmIHRoaXMuZmllbGQgPT09IG1vZGVsUGF0aC5maWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdHJpbmcoXG4gICAgICAgIHBhdGhXaXRoRmllbGROYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRGaWVsZE5hbWU/OiBWaWV3TW9kZWxGaWVsZE5hbWVXaXRoQ3VzdG9tRmllbGRzXG4gICAgKTogQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZyb20ocGF0aFdpdGhGaWVsZE5hbWUsIHBhdGggPT4gY3JlYXRlQWJzb2x1dGUocGF0aCksIGRlZmF1bHRGaWVsZE5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbU1hc2soXG4gICAgICAgIHBhdGhXaXRoRmllbGROYW1lOiBzdHJpbmcsXG4gICAgICAgIG11bHRpcGxpY2l0eVN5bWJvbDogUGF0aFRva2VuLFxuICAgICAgICBkZWZhdWx0RmllbGROYW1lPzogVmlld01vZGVsRmllbGROYW1lV2l0aEN1c3RvbUZpZWxkc1xuICAgICk6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tKFxuICAgICAgICAgICAgcGF0aFdpdGhGaWVsZE5hbWUsXG4gICAgICAgICAgICBwYXRoID0+IGNyZWF0ZUFic29sdXRlRnJvbU1hc2socGF0aCwgbXVsdGlwbGljaXR5U3ltYm9sKSxcbiAgICAgICAgICAgIGRlZmF1bHRGaWVsZE5hbWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVGcm9tPFRNb2RlbFBhdGggZXh0ZW5kcyBBYnNvbHV0ZU1vZGVsUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGg+KFxuICAgICAgICBwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nLFxuICAgICAgICBtb2RlbFBhdGhGYWN0b3J5OiAocGF0aDogc3RyaW5nKSA9PiBUTW9kZWxQYXRoLFxuICAgICAgICBkZWZhdWx0RmllbGROYW1lOiBWaWV3TW9kZWxGaWVsZE5hbWVXaXRoQ3VzdG9tRmllbGRzID0gXCJ2YWx1ZVwiXG4gICAgKTogQWJzb2x1dGVNb2RlbEZpZWxkUGF0aCB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gQWJzb2x1dGVNb2RlbEZpZWxkUGF0aC5maWVsZEV4dHJhY3RSZWdleC5leGVjKHBhdGhXaXRoRmllbGROYW1lKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IG1hdGNoICE9IHVuZGVmaW5lZCA/IG1hdGNoWzFdID8/IHJlamVjdCgpIDogcGF0aFdpdGhGaWVsZE5hbWU7XG4gICAgICAgIGNvbnN0IGZpZWxkID0gbWF0Y2ggIT0gdW5kZWZpbmVkID8gKG1hdGNoWzJdIGFzIFZpZXdNb2RlbEZpZWxkTmFtZSB8IHVuZGVmaW5lZCkgPz8gcmVqZWN0KCkgOiBkZWZhdWx0RmllbGROYW1lO1xuXG4gICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVNb2RlbEZpZWxkUGF0aChtb2RlbFBhdGhGYWN0b3J5KHBhdGgpLCBmaWVsZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnBhdGgudG9MZWdhY3lQYXRoKCl9LiR7dGhpcy5maWVsZH1gO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0xlZ2FjeVBhdGgoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbGFzdFRva2VuID0gSXRlclV0aWxzLmxhc3QodGhpcy5wYXRoLmdldFBhdGhQYXJ0cygpKTtcbiAgICAgICAgY29uc3QgaXNMYXN0VG9rZW5Bbkluc3RhbmNlT3JNdWx0aXBsaWNpdHkgPVxuICAgICAgICAgICAgUGF0aFRva2Vucy5pc0luc3RhbmNlVG9rZW5Pckluc3RhbmNlc1NwZWMobGFzdFRva2VuKSB8fCBQYXRoVG9rZW5zLmlzTXVsdGlUb2tlbihsYXN0VG9rZW4pO1xuICAgICAgICBjb25zdCBzbGFzaElmUmVxdWlyZWQgPSBpc0xhc3RUb2tlbkFuSW5zdGFuY2VPck11bHRpcGxpY2l0eSAmJiBpc05vdE51bGxPckVtcHR5KHRoaXMuZmllbGQpID8gXCIvXCIgOiBcIlwiO1xuICAgICAgICBjb25zdCBkb3RJZlJlcXVpcmVkID0gaXNOb3ROdWxsT3JFbXB0eSh0aGlzLmZpZWxkKSA/IFwiLlwiIDogXCJcIjtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMucGF0aC50b0xlZ2FjeVBhdGgoKX0ke3NsYXNoSWZSZXF1aXJlZH0ke2RvdElmUmVxdWlyZWR9JHt0aGlzLmZpZWxkfWA7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxVQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxjQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxxQkFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBT3FCLElBQUFNLHVCQUFBO0FBSWQsTUFBTUMsc0JBQXNCLENBQStDO0VBUXZFQyxXQUFXQSxDQUFDQyxJQUF1QixFQUFFQyxTQUE2QyxFQUFFO0lBQUEsS0FIM0VELElBQUk7SUFBQSxLQUNKRSxLQUFLO0lBR2pCLElBQUksQ0FBQ0YsSUFBSSxHQUFHQSxJQUFJO0lBQ2hCLElBQUksQ0FBQ0UsS0FBSyxHQUFHRCxTQUFTO0VBQzFCO0VBRU9FLE9BQU9BLENBQUEsRUFBVztJQUNyQixPQUFPLElBQUksQ0FBQ0gsSUFBSSxDQUFDRyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUFDLGdDQUFxQixFQUFDLElBQUksQ0FBQ0YsS0FBSyxDQUFDO0VBQ2xFO0VBRU9HLFFBQVFBLENBQ1hDLFNBQWlDLEVBQ2pDQyxvQkFBMEMsR0FBR0MsMENBQW9CLENBQUNDLE9BQU8sRUFDbEU7SUFDUCxPQUFPLElBQUksQ0FBQ1QsSUFBSSxDQUFDSyxRQUFRLENBQUNDLFNBQVMsQ0FBQ04sSUFBSSxFQUFFTyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksQ0FBQ0wsS0FBSyxLQUFLSSxTQUFTLENBQUNKLEtBQUs7RUFDckc7RUFF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
52
+ AbsoluteModelFieldPath.fieldExtractRegex = new RegExp(`^(.*)\\.(${AbsoluteModelFieldPath.extraFieldNames.concat((0, _CoreTypes.getKnownViewModelFieldNames)()).join("|")})$`);
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQ29yZVR5cGVzIiwicmVxdWlyZSIsIl9oYXNoVXRpbHMiLCJfVHlwaW5nVXRpbHMiLCJfSXRlcmFibGVVdGlscyIsIl9FYWNoQ3VycmVudENvbGxpc2lvbiIsIl9Nb2RlbFBhdGgiLCJBYnNvbHV0ZU1vZGVsRmllbGRQYXRoIiwiY29uc3RydWN0b3IiLCJwYXRoIiwiZmllbGROYW1lIiwiZmllbGQiLCJnZXRIYXNoIiwiZ2V0U2ltcGxlSGFzaEJ5U3RyaW5nIiwiaXNFcXVhbHMiLCJtb2RlbFBhdGgiLCJlYWNoQ3VycmVudENvbGxpc2lvbiIsIkVhY2hDdXJyZW50Q29sbGlzaW9uIiwiQXJlU2FtZSIsImNyZWF0ZUZyb21TdHJpbmciLCJwYXRoV2l0aEZpZWxkTmFtZSIsImRlZmF1bHRGaWVsZE5hbWUiLCJjcmVhdGVGcm9tIiwiY3JlYXRlQWJzb2x1dGUiLCJjcmVhdGVGcm9tTWFzayIsIm11bHRpcGxpY2l0eVN5bWJvbCIsImNyZWF0ZUFic29sdXRlRnJvbU1hc2siLCJtb2RlbFBhdGhGYWN0b3J5IiwiX21hdGNoJCIsIl9yZWYiLCJtYXRjaCIsImZpZWxkRXh0cmFjdFJlZ2V4IiwiZXhlYyIsInVuZGVmaW5lZCIsInJlamVjdCIsInRvU3RyaW5nIiwidG9MZWdhY3lQYXRoIiwibGFzdFRva2VuIiwiSXRlclV0aWxzIiwibGFzdCIsImdldFBhdGhQYXJ0cyIsImlzTGFzdFRva2VuQW5JbnN0YW5jZU9yTXVsdGlwbGljaXR5IiwiUGF0aFRva2VucyIsImlzSW5zdGFuY2VUb2tlbk9ySW5zdGFuY2VzU3BlYyIsImlzTXVsdGlUb2tlbiIsInNsYXNoSWZSZXF1aXJlZCIsImlzTm90TnVsbE9yRW1wdHkiLCJkb3RJZlJlcXVpcmVkIiwiZXhwb3J0cyIsImV4dHJhRmllbGROYW1lcyIsIlJlZ0V4cCIsImNvbmNhdCIsImdldEtub3duVmlld01vZGVsRmllbGROYW1lcyIsImpvaW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL0Fic29sdXRlTW9kZWxGaWVsZFBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0S25vd25WaWV3TW9kZWxGaWVsZE5hbWVzLCBWaWV3TW9kZWxGaWVsZE5hbWUgfSBmcm9tIFwiLi4vLi4vRW5naW5lL3NyYy9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB7IGdldFNpbXBsZUhhc2hCeVN0cmluZyB9IGZyb20gXCIuLi9oYXNoVXRpbHNcIjtcbmltcG9ydCB7IGlzTm90TnVsbE9yRW1wdHksIHJlamVjdCB9IGZyb20gXCIuLi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgSXRlclV0aWxzIH0gZnJvbSBcIi4uL0l0ZXJhYmxlVXRpbHNcIjtcblxuaW1wb3J0IHsgRWFjaEN1cnJlbnRDb2xsaXNpb24gfSBmcm9tIFwiLi9FYWNoQ3VycmVudENvbGxpc2lvblwiO1xuaW1wb3J0IHsgSUVxdWF0YWJsZSB9IGZyb20gXCIuL0lFcXVhdGFibGVcIjtcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVNb2RlbFBhdGgsXG4gICAgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICBjcmVhdGVBYnNvbHV0ZSxcbiAgICBjcmVhdGVBYnNvbHV0ZUZyb21NYXNrLFxuICAgIFBhdGhUb2tlbixcbiAgICBQYXRoVG9rZW5zLFxufSBmcm9tIFwiLi9Nb2RlbFBhdGhcIjtcblxuZXhwb3J0IHR5cGUgVmlld01vZGVsRmllbGROYW1lV2l0aEN1c3RvbUZpZWxkcyA9IFZpZXdNb2RlbEZpZWxkTmFtZSB8IFwiJGVycm9yQ291bnRcIiB8IFwiJHdhcm5pbmdDb3VudFwiIHwgXCJcIjtcblxuZXhwb3J0IGNsYXNzIEFic29sdXRlTW9kZWxGaWVsZFBhdGggaW1wbGVtZW50cyBJRXF1YXRhYmxlPEFic29sdXRlTW9kZWxGaWVsZFBhdGg+IHtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBleHRyYUZpZWxkTmFtZXMgPSBbXCJcXFxcJGVycm9yQ291bnRcIiwgXCJcXFxcJHdhcm5pbmdDb3VudFwiXTtcbiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBmaWVsZEV4dHJhY3RSZWdleCA9IG5ldyBSZWdFeHAoXG4gICAgICAgIGBeKC4qKVxcXFwuKCR7QWJzb2x1dGVNb2RlbEZpZWxkUGF0aC5leHRyYUZpZWxkTmFtZXMuY29uY2F0KGdldEtub3duVmlld01vZGVsRmllbGROYW1lcygpKS5qb2luKFwifFwiKX0pJGBcbiAgICApO1xuICAgIHB1YmxpYyByZWFkb25seSBwYXRoOiBBYnNvbHV0ZU1vZGVsUGF0aDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGQ6IFZpZXdNb2RlbEZpZWxkTmFtZVdpdGhDdXN0b21GaWVsZHM7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocGF0aDogQWJzb2x1dGVNb2RlbFBhdGgsIGZpZWxkTmFtZTogVmlld01vZGVsRmllbGROYW1lV2l0aEN1c3RvbUZpZWxkcykge1xuICAgICAgICB0aGlzLnBhdGggPSBwYXRoO1xuICAgICAgICB0aGlzLmZpZWxkID0gZmllbGROYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIYXNoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGguZ2V0SGFzaCgpICsgZ2V0U2ltcGxlSGFzaEJ5U3RyaW5nKHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0VxdWFscyhcbiAgICAgICAgbW9kZWxQYXRoOiBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoLFxuICAgICAgICBlYWNoQ3VycmVudENvbGxpc2lvbjogRWFjaEN1cnJlbnRDb2xsaXNpb24gPSBFYWNoQ3VycmVudENvbGxpc2lvbi5BcmVTYW1lXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGguaXNFcXVhbHMobW9kZWxQYXRoLnBhdGgsIGVhY2hDdXJyZW50Q29sbGlzaW9uKSAmJiB0aGlzLmZpZWxkID09PSBtb2RlbFBhdGguZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVGcm9tU3RyaW5nKFxuICAgICAgICBwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nLFxuICAgICAgICBkZWZhdWx0RmllbGROYW1lPzogVmlld01vZGVsRmllbGROYW1lV2l0aEN1c3RvbUZpZWxkc1xuICAgICk6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tKHBhdGhXaXRoRmllbGROYW1lLCBwYXRoID0+IGNyZWF0ZUFic29sdXRlKHBhdGgpLCBkZWZhdWx0RmllbGROYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21NYXNrKFxuICAgICAgICBwYXRoV2l0aEZpZWxkTmFtZTogc3RyaW5nLFxuICAgICAgICBtdWx0aXBsaWNpdHlTeW1ib2w6IFBhdGhUb2tlbixcbiAgICAgICAgZGVmYXVsdEZpZWxkTmFtZT86IFZpZXdNb2RlbEZpZWxkTmFtZVdpdGhDdXN0b21GaWVsZHNcbiAgICApOiBBYnNvbHV0ZU1vZGVsRmllbGRQYXRoIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbShcbiAgICAgICAgICAgIHBhdGhXaXRoRmllbGROYW1lLFxuICAgICAgICAgICAgcGF0aCA9PiBjcmVhdGVBYnNvbHV0ZUZyb21NYXNrKHBhdGgsIG11bHRpcGxpY2l0eVN5bWJvbCksXG4gICAgICAgICAgICBkZWZhdWx0RmllbGROYW1lXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlRnJvbTxUTW9kZWxQYXRoIGV4dGVuZHMgQWJzb2x1dGVNb2RlbFBhdGggfCBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoPihcbiAgICAgICAgcGF0aFdpdGhGaWVsZE5hbWU6IHN0cmluZyxcbiAgICAgICAgbW9kZWxQYXRoRmFjdG9yeTogKHBhdGg6IHN0cmluZykgPT4gVE1vZGVsUGF0aCxcbiAgICAgICAgZGVmYXVsdEZpZWxkTmFtZTogVmlld01vZGVsRmllbGROYW1lV2l0aEN1c3RvbUZpZWxkcyA9IFwidmFsdWVcIlxuICAgICk6IEFic29sdXRlTW9kZWxGaWVsZFBhdGgge1xuICAgICAgICBjb25zdCBtYXRjaCA9IEFic29sdXRlTW9kZWxGaWVsZFBhdGguZmllbGRFeHRyYWN0UmVnZXguZXhlYyhwYXRoV2l0aEZpZWxkTmFtZSk7XG4gICAgICAgIGNvbnN0IHBhdGggPSBtYXRjaCAhPSB1bmRlZmluZWQgPyBtYXRjaFsxXSA/PyByZWplY3QoKSA6IHBhdGhXaXRoRmllbGROYW1lO1xuICAgICAgICBjb25zdCBmaWVsZCA9IG1hdGNoICE9IHVuZGVmaW5lZCA/IChtYXRjaFsyXSBhcyBWaWV3TW9kZWxGaWVsZE5hbWUgfCB1bmRlZmluZWQpID8/IHJlamVjdCgpIDogZGVmYXVsdEZpZWxkTmFtZTtcblxuICAgICAgICByZXR1cm4gbmV3IEFic29sdXRlTW9kZWxGaWVsZFBhdGgobW9kZWxQYXRoRmFjdG9yeShwYXRoKSwgZmllbGQpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5wYXRoLnRvTGVnYWN5UGF0aCgpfS4ke3RoaXMuZmllbGR9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9MZWdhY3lQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGxhc3RUb2tlbiA9IEl0ZXJVdGlscy5sYXN0KHRoaXMucGF0aC5nZXRQYXRoUGFydHMoKSk7XG4gICAgICAgIGNvbnN0IGlzTGFzdFRva2VuQW5JbnN0YW5jZU9yTXVsdGlwbGljaXR5ID1cbiAgICAgICAgICAgIFBhdGhUb2tlbnMuaXNJbnN0YW5jZVRva2VuT3JJbnN0YW5jZXNTcGVjKGxhc3RUb2tlbikgfHwgUGF0aFRva2Vucy5pc011bHRpVG9rZW4obGFzdFRva2VuKTtcbiAgICAgICAgY29uc3Qgc2xhc2hJZlJlcXVpcmVkID0gaXNMYXN0VG9rZW5Bbkluc3RhbmNlT3JNdWx0aXBsaWNpdHkgJiYgaXNOb3ROdWxsT3JFbXB0eSh0aGlzLmZpZWxkKSA/IFwiL1wiIDogXCJcIjtcbiAgICAgICAgY29uc3QgZG90SWZSZXF1aXJlZCA9IGlzTm90TnVsbE9yRW1wdHkodGhpcy5maWVsZCkgPyBcIi5cIiA6IFwiXCI7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLnBhdGgudG9MZWdhY3lQYXRoKCl9JHtzbGFzaElmUmVxdWlyZWR9JHtkb3RJZlJlcXVpcmVkfSR7dGhpcy5maWVsZH1gO1xuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsY0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQVdPLE1BQU1NLHNCQUFzQixDQUErQztFQVF2RUMsV0FBV0EsQ0FBQ0MsSUFBdUIsRUFBRUMsU0FBNkMsRUFBRTtJQUFBLEtBSDNFRCxJQUFJO0lBQUEsS0FDSkUsS0FBSztJQUdqQixJQUFJLENBQUNGLElBQUksR0FBR0EsSUFBSTtJQUNoQixJQUFJLENBQUNFLEtBQUssR0FBR0QsU0FBUztFQUMxQjtFQUVPRSxPQUFPQSxDQUFBLEVBQVc7SUFDckIsT0FBTyxJQUFJLENBQUNILElBQUksQ0FBQ0csT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFBQyxnQ0FBcUIsRUFBQyxJQUFJLENBQUNGLEtBQUssQ0FBQztFQUNsRTtFQUVPRyxRQUFRQSxDQUNYQyxTQUFpQyxFQUNqQ0Msb0JBQTBDLEdBQUdDLDBDQUFvQixDQUFDQyxPQUFPLEVBQ2xFO0lBQ1AsT0FBTyxJQUFJLENBQUNULElBQUksQ0FBQ0ssUUFBUSxDQUFDQyxTQUFTLENBQUNOLElBQUksRUFBRU8sb0JBQW9CLENBQUMsSUFBSSxJQUFJLENBQUNMLEtBQUssS0FBS0ksU0FBUyxDQUFDSixLQUFLO0VBQ3JHO0VBRUEsT0FBY1EsZ0JBQWdCQSxDQUMxQkMsaUJBQXlCLEVBQ3pCQyxnQkFBcUQs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
@@ -38,4 +38,4 @@ function buildIterationSequenceWithInstances(modelPath) {
38
38
  }
39
39
  return result;
40
40
  }
41
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTW9kZWxQYXRoIiwicmVxdWlyZSIsImJ1aWxkSXRlcmF0aW9uU2VxdWVuY2UiLCJtb2RlbFBhdGgiLCJyZXN1bHQiLCJ0b2tlbnMiLCJnZXRQYXRoUGFydHNBc0FycmF5IiwiY3JlYXRlUGF0aEZ1bmMiLCJpc0Fic29sdXRlIiwiY3JlYXRlQWJzb2x1dGVGcm9tVG9rZW5zIiwiY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zIiwiaSIsImxlbmd0aCIsIlBhdGhUb2tlbnMiLCJlYWNoIiwicHVzaCIsIml0ZXJhYmxlIiwic2xpY2UiLCJzdWZmaXgiLCJidWlsZEl0ZXJhdGlvblNlcXVlbmNlV2l0aEluc3RhbmNlcyIsImN1cnJlbnRJbnN0YW5jZXMiLCJ0b2tlbiIsImlzSW5zdGFuY2VUb2tlbiIsImNvbmNhdCIsIm1hcCIsIngiLCJpbnN0YW5jZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL0J1aWxkSXRlcmF0aW9uU2VxdWVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBjcmVhdGVBYnNvbHV0ZUZyb21Ub2tlbnMsXG4gICAgY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zLFxuICAgIE1vZGVsUGF0aCxcbiAgICBQYXRoVG9rZW4sXG4gICAgUGF0aFRva2VucyxcbiAgICBSZWxhdGl2ZU1vZGVsUGF0aCxcbn0gZnJvbSBcIi4vTW9kZWxQYXRoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0aW9uRW50cnk8VE1vZGVsUGF0aCBleHRlbmRzIE1vZGVsUGF0aD4ge1xuICAgIGl0ZXJhYmxlOiBUTW9kZWxQYXRoO1xuICAgIHN1ZmZpeDogUmVsYXRpdmVNb2RlbFBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEl0ZXJhdGlvblNlcXVlbmNlPFRNb2RlbFBhdGggZXh0ZW5kcyBNb2RlbFBhdGg+KFxuICAgIG1vZGVsUGF0aDogVE1vZGVsUGF0aFxuKTogQXJyYXk8SXRlcmF0aW9uRW50cnk8VE1vZGVsUGF0aD4+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PEl0ZXJhdGlvbkVudHJ5PFRNb2RlbFBhdGg+PiA9IFtdO1xuICAgIGNvbnN0IHRva2VucyA9IG1vZGVsUGF0aC5nZXRQYXRoUGFydHNBc0FycmF5KCk7XG4gICAgY29uc3QgY3JlYXRlUGF0aEZ1bmMgPSBtb2RlbFBhdGguaXNBYnNvbHV0ZSgpID8gY3JlYXRlQWJzb2x1dGVGcm9tVG9rZW5zIDogY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbnNbaV0gPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBjcmVhdGVQYXRoRnVuYyh0b2tlbnMuc2xpY2UoMCwgaSkpIGFzIFRNb2RlbFBhdGgsXG4gICAgICAgICAgICAgICAgc3VmZml4OiBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnModG9rZW5zLnNsaWNlKGkgKyAxKSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkVudHJ5V2l0aEluc3RhbmNlczxUTW9kZWxQYXRoIGV4dGVuZHMgTW9kZWxQYXRoPiB7XG4gICAgaXRlcmFibGU6IFRNb2RlbFBhdGg7XG4gICAgc3VmZml4OiBSZWxhdGl2ZU1vZGVsUGF0aDtcbiAgICBpbnN0YW5jZXM6IFBhdGhUb2tlbltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJdGVyYXRpb25TZXF1ZW5jZVdpdGhJbnN0YW5jZXM8VE1vZGVsUGF0aCBleHRlbmRzIE1vZGVsUGF0aD4oXG4gICAgbW9kZWxQYXRoOiBUTW9kZWxQYXRoXG4pOiBBcnJheTxJdGVyYXRpb25FbnRyeVdpdGhJbnN0YW5jZXM8VE1vZGVsUGF0aD4+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PEl0ZXJhdGlvbkVudHJ5V2l0aEluc3RhbmNlczxUTW9kZWxQYXRoPj4gPSBbXTtcbiAgICBjb25zdCB0b2tlbnMgPSBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzQXNBcnJheSgpO1xuICAgIGNvbnN0IGNyZWF0ZVBhdGhGdW5jID0gbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSA/IGNyZWF0ZUFic29sdXRlRnJvbVRva2VucyA6IGNyZWF0ZVJlbGF0aXZlRnJvbVRva2VucztcbiAgICBsZXQgY3VycmVudEluc3RhbmNlczogUGF0aFRva2VuW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgICAgaWYgKHRva2VuID09PSBQYXRoVG9rZW5zLmVhY2ggfHwgUGF0aFRva2Vucy5pc0luc3RhbmNlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICBjdXJyZW50SW5zdGFuY2VzID0gY3VycmVudEluc3RhbmNlcy5jb25jYXQodG9rZW4pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBjcmVhdGVQYXRoRnVuYyhcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNsaWNlKDAsIGkpLm1hcCh4ID0+IChQYXRoVG9rZW5zLmlzSW5zdGFuY2VUb2tlbih4KSA/IFBhdGhUb2tlbnMuZWFjaCA6IHgpKVxuICAgICAgICAgICAgICAgICkgYXMgVE1vZGVsUGF0aCxcbiAgICAgICAgICAgICAgICBzdWZmaXg6IGNyZWF0ZVJlbGF0aXZlRnJvbVRva2Vucyh0b2tlbnMuc2xpY2UoaSArIDEpKSxcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXM6IGN1cnJlbnRJbnN0YW5jZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBY08sU0FBU0Msc0JBQXNCQSxDQUNsQ0MsU0FBcUIsRUFDWTtFQUNqQyxNQUFNQyxNQUF5QyxHQUFHLEVBQUU7RUFDcEQsTUFBTUMsTUFBTSxHQUFHRixTQUFTLENBQUNHLG1CQUFtQixDQUFDLENBQUM7RUFDOUMsTUFBTUMsY0FBYyxHQUFHSixTQUFTLENBQUNLLFVBQVUsQ0FBQyxDQUFDLEdBQUdDLG1DQUF3QixHQUFHQyxtQ0FBd0I7RUFDbkcsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdOLE1BQU0sQ0FBQ08sTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwQyxJQUFJTixNQUFNLENBQUNNLENBQUMsQ0FBQyxLQUFLRSxxQkFBVSxDQUFDQyxJQUFJLEVBQUU7TUFDL0JWLE1BQU0sQ0FBQ1csSUFBSSxDQUFDO1FBQ1JDLFFBQVEsRUFBRVQsY0FBYyxDQUFDRixNQUFNLENBQUNZLEtBQUssQ0FBQyxDQUFDLEVBQUVOLENBQUMsQ0FBQyxDQUFlO1FBQzFETyxNQUFNLEVBQUUsSUFBQVIsbUNBQXdCLEVBQUNMLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDTixDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ3hELENBQUMsQ0FBQztJQUNOO0VBQ0o7RUFDQSxPQUFPUCxNQUFNO0FBQ2pCO0FBUU8sU0FBU2UsbUNBQW1DQSxDQUMvQ2hCLFNBQXFCLEVBQ3lCO0VBQzlDLE1BQU1DLE1BQXNELEdBQUcsRUFBRTtFQUNqRSxNQUFNQyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ0csbUJBQW1CLENBQUMsQ0FBQztFQUM5QyxNQUFNQyxjQUFjLEdBQUdKLFNBQVMsQ0FBQ0ssVUFBVSxDQUFDLENBQUMsR0FBR0MsbUNBQXdCLEdBQUdDLG1DQUF3QjtFQUNuRyxJQUFJVSxnQkFBNkIsR0FBRyxFQUFFO0VBQ3RDLEtBQUssSUFBSVQsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHTixNQUFNLENBQUNPLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsTUFBTVUsS0FBSyxHQUFHaEIsTUFBTSxDQUFDTSxDQUFDLENBQUM7SUFDdkIsSUFBSVUsS0FBSyxLQUFLUixxQkFBVSxDQUFDQyxJQUFJLElBQUlELHFCQUFVLENBQUNTLGVBQWUsQ0FBQ0QsS0FBSyxDQUFDLEVBQUU7TUFDaEVELGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0csTUFBTSxDQUFDRixLQUFLLENBQUM7TUFDakRqQixNQUFNLENBQUNXLElBQUksQ0FBQztRQUNSQyxRQUFRLEVBQUVULGNBQWMsQ0FDcEJGLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDLENBQUMsRUFBRU4sQ0FBQyxDQUFDLENBQUNhLEdBQUcsQ0FBQ0MsQ0FBQyxJQUFLWixxQkFBVSxDQUFDUyxlQUFlLENBQUNHLENBQUMsQ0FBQyxHQUFHWixxQkFBVSxDQUFDQyxJQUFJLEdBQUdXLENBQUUsQ0FDckYsQ0FBZTtRQUNmUCxNQUFNLEVBQUUsSUFBQVIsbUNBQXdCLEVBQUNMLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDTixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckRlLFNBQVMsRUFBRU47TUFDZixDQUFDLENBQUM7SUFDTjtFQUNKO0VBQ0EsT0FBT2hCLE1BQU07QUFDakIiLCJpZ25vcmVMaXN0IjpbXX0=
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfTW9kZWxQYXRoIiwicmVxdWlyZSIsImJ1aWxkSXRlcmF0aW9uU2VxdWVuY2UiLCJtb2RlbFBhdGgiLCJyZXN1bHQiLCJ0b2tlbnMiLCJnZXRQYXRoUGFydHNBc0FycmF5IiwiY3JlYXRlUGF0aEZ1bmMiLCJpc0Fic29sdXRlIiwiY3JlYXRlQWJzb2x1dGVGcm9tVG9rZW5zIiwiY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zIiwiaSIsImxlbmd0aCIsIlBhdGhUb2tlbnMiLCJlYWNoIiwicHVzaCIsIml0ZXJhYmxlIiwic2xpY2UiLCJzdWZmaXgiLCJidWlsZEl0ZXJhdGlvblNlcXVlbmNlV2l0aEluc3RhbmNlcyIsImN1cnJlbnRJbnN0YW5jZXMiLCJ0b2tlbiIsImlzSW5zdGFuY2VUb2tlbiIsImNvbmNhdCIsIm1hcCIsIngiLCJpbnN0YW5jZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL0J1aWxkSXRlcmF0aW9uU2VxdWVuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBjcmVhdGVBYnNvbHV0ZUZyb21Ub2tlbnMsXG4gICAgY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zLFxuICAgIE1vZGVsUGF0aCxcbiAgICBQYXRoVG9rZW4sXG4gICAgUGF0aFRva2VucyxcbiAgICBSZWxhdGl2ZU1vZGVsUGF0aCxcbn0gZnJvbSBcIi4vTW9kZWxQYXRoXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSXRlcmF0aW9uRW50cnk8VE1vZGVsUGF0aCBleHRlbmRzIE1vZGVsUGF0aD4ge1xuICAgIGl0ZXJhYmxlOiBUTW9kZWxQYXRoO1xuICAgIHN1ZmZpeDogUmVsYXRpdmVNb2RlbFBhdGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZEl0ZXJhdGlvblNlcXVlbmNlPFRNb2RlbFBhdGggZXh0ZW5kcyBNb2RlbFBhdGg+KFxuICAgIG1vZGVsUGF0aDogVE1vZGVsUGF0aFxuKTogQXJyYXk8SXRlcmF0aW9uRW50cnk8VE1vZGVsUGF0aD4+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PEl0ZXJhdGlvbkVudHJ5PFRNb2RlbFBhdGg+PiA9IFtdO1xuICAgIGNvbnN0IHRva2VucyA9IG1vZGVsUGF0aC5nZXRQYXRoUGFydHNBc0FycmF5KCk7XG4gICAgY29uc3QgY3JlYXRlUGF0aEZ1bmMgPSBtb2RlbFBhdGguaXNBYnNvbHV0ZSgpID8gY3JlYXRlQWJzb2x1dGVGcm9tVG9rZW5zIDogY3JlYXRlUmVsYXRpdmVGcm9tVG9rZW5zO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0b2tlbnNbaV0gPT09IFBhdGhUb2tlbnMuZWFjaCkge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBjcmVhdGVQYXRoRnVuYyh0b2tlbnMuc2xpY2UoMCwgaSkpIGFzIFRNb2RlbFBhdGgsXG4gICAgICAgICAgICAgICAgc3VmZml4OiBjcmVhdGVSZWxhdGl2ZUZyb21Ub2tlbnModG9rZW5zLnNsaWNlKGkgKyAxKSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZXJhdGlvbkVudHJ5V2l0aEluc3RhbmNlczxUTW9kZWxQYXRoIGV4dGVuZHMgTW9kZWxQYXRoPiB7XG4gICAgaXRlcmFibGU6IFRNb2RlbFBhdGg7XG4gICAgc3VmZml4OiBSZWxhdGl2ZU1vZGVsUGF0aDtcbiAgICBpbnN0YW5jZXM6IFBhdGhUb2tlbltdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRJdGVyYXRpb25TZXF1ZW5jZVdpdGhJbnN0YW5jZXM8VE1vZGVsUGF0aCBleHRlbmRzIE1vZGVsUGF0aD4oXG4gICAgbW9kZWxQYXRoOiBUTW9kZWxQYXRoXG4pOiBBcnJheTxJdGVyYXRpb25FbnRyeVdpdGhJbnN0YW5jZXM8VE1vZGVsUGF0aD4+IHtcbiAgICBjb25zdCByZXN1bHQ6IEFycmF5PEl0ZXJhdGlvbkVudHJ5V2l0aEluc3RhbmNlczxUTW9kZWxQYXRoPj4gPSBbXTtcbiAgICBjb25zdCB0b2tlbnMgPSBtb2RlbFBhdGguZ2V0UGF0aFBhcnRzQXNBcnJheSgpO1xuICAgIGNvbnN0IGNyZWF0ZVBhdGhGdW5jID0gbW9kZWxQYXRoLmlzQWJzb2x1dGUoKSA/IGNyZWF0ZUFic29sdXRlRnJvbVRva2VucyA6IGNyZWF0ZVJlbGF0aXZlRnJvbVRva2VucztcbiAgICBsZXQgY3VycmVudEluc3RhbmNlczogUGF0aFRva2VuW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpXTtcbiAgICAgICAgaWYgKHRva2VuID09PSBQYXRoVG9rZW5zLmVhY2ggfHwgUGF0aFRva2Vucy5pc0luc3RhbmNlVG9rZW4odG9rZW4pKSB7XG4gICAgICAgICAgICBjdXJyZW50SW5zdGFuY2VzID0gY3VycmVudEluc3RhbmNlcy5jb25jYXQodG9rZW4pO1xuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIGl0ZXJhYmxlOiBjcmVhdGVQYXRoRnVuYyhcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNsaWNlKDAsIGkpLm1hcCh4ID0+IChQYXRoVG9rZW5zLmlzSW5zdGFuY2VUb2tlbih4KSA/IFBhdGhUb2tlbnMuZWFjaCA6IHgpKVxuICAgICAgICAgICAgICAgICkgYXMgVE1vZGVsUGF0aCxcbiAgICAgICAgICAgICAgICBzdWZmaXg6IGNyZWF0ZVJlbGF0aXZlRnJvbVRva2Vucyh0b2tlbnMuc2xpY2UoaSArIDEpKSxcbiAgICAgICAgICAgICAgICBpbnN0YW5jZXM6IGN1cnJlbnRJbnN0YW5jZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBY08sU0FBU0Msc0JBQXNCQSxDQUNsQ0MsU0FBcUIsRUFDWTtFQUNqQyxNQUFNQyxNQUF5QyxHQUFHLEVBQUU7RUFDcEQsTUFBTUMsTUFBTSxHQUFHRixTQUFTLENBQUNHLG1CQUFtQixDQUFDLENBQUM7RUFDOUMsTUFBTUMsY0FBYyxHQUFHSixTQUFTLENBQUNLLFVBQVUsQ0FBQyxDQUFDLEdBQUdDLG1DQUF3QixHQUFHQyxtQ0FBd0I7RUFDbkcsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdOLE1BQU0sQ0FBQ08sTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwQyxJQUFJTixNQUFNLENBQUNNLENBQUMsQ0FBQyxLQUFLRSxxQkFBVSxDQUFDQyxJQUFJLEVBQUU7TUFDL0JWLE1BQU0sQ0FBQ1csSUFBSSxDQUFDO1FBQ1JDLFFBQVEsRUFBRVQsY0FBYyxDQUFDRixNQUFNLENBQUNZLEtBQUssQ0FBQyxDQUFDLEVBQUVOLENBQUMsQ0FBQyxDQUFlO1FBQzFETyxNQUFNLEVBQUUsSUFBQVIsbUNBQXdCLEVBQUNMLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDTixDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ3hELENBQUMsQ0FBQztJQUNOO0VBQ0o7RUFDQSxPQUFPUCxNQUFNO0FBQ2pCO0FBUU8sU0FBU2UsbUNBQW1DQSxDQUMvQ2hCLFNBQXFCLEVBQ3lCO0VBQzlDLE1BQU1DLE1BQXNELEdBQUcsRUFBRTtFQUNqRSxNQUFNQyxNQUFNLEdBQUdGLFNBQVMsQ0FBQ0csbUJBQW1CLENBQUMsQ0FBQztFQUM5QyxNQUFNQyxjQUFjLEdBQUdKLFNBQVMsQ0FBQ0ssVUFBVSxDQUFDLENBQUMsR0FBR0MsbUNBQXdCLEdBQUdDLG1DQUF3QjtFQUNuRyxJQUFJVSxnQkFBNkIsR0FBRyxFQUFFO0VBQ3RDLEtBQUssSUFBSVQsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHTixNQUFNLENBQUNPLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsTUFBTVUsS0FBSyxHQUFHaEIsTUFBTSxDQUFDTSxDQUFDLENBQUM7SUFDdkIsSUFBSVUsS0FBSyxLQUFLUixxQkFBVSxDQUFDQyxJQUFJLElBQUlELHFCQUFVLENBQUNTLGVBQWUsQ0FBQ0QsS0FBSyxDQUFDLEVBQUU7TUFDaEVELGdCQUFnQixHQUFHQSxnQkFBZ0IsQ0FBQ0csTUFBTSxDQUFDRixLQUFLLENBQUM7TUFDakRqQixNQUFNLENBQUNXLElBQUksQ0FBQztRQUNSQyxRQUFRLEVBQUVULGNBQWMsQ0FDcEJGLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDLENBQUMsRUFBRU4sQ0FBQyxDQUFDLENBQUNhLEdBQUcsQ0FBQ0MsQ0FBQyxJQUFLWixxQkFBVSxDQUFDUyxlQUFlLENBQUNHLENBQUMsQ0FBQyxHQUFHWixxQkFBVSxDQUFDQyxJQUFJLEdBQUdXLENBQUUsQ0FDckYsQ0FBZTtRQUNmUCxNQUFNLEVBQUUsSUFBQVIsbUNBQXdCLEVBQUNMLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDTixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDckRlLFNBQVMsRUFBRU47TUFDZixDQUFDLENBQUM7SUFDTjtFQUNKO0VBQ0EsT0FBT2hCLE1BQU07QUFDakIifQ==