@magic-xpa/engine 4.1100.0-dev4110.253 → 4.1100.0-dev4110.256

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. package/esm2022/src/ClientManager.mjs +1 -1
  2. package/esm2022/src/CommandsProcessorBase.mjs +1 -1
  3. package/esm2022/src/CommandsProcessorManager.mjs +1 -1
  4. package/esm2022/src/CommandsTable.mjs +1 -1
  5. package/esm2022/src/CurrentClientVersion.mjs +2 -2
  6. package/esm2022/src/GUIManager.mjs +1 -1
  7. package/esm2022/src/GuiEventsProcessor.mjs +1 -1
  8. package/esm2022/src/ServerConfig.mjs +1 -1
  9. package/esm2022/src/commands/ClientToServer/ClientOriginatedCommandSerializer.mjs +1 -1
  10. package/esm2022/src/commands/ClientToServer/CommandFactory.mjs +1 -1
  11. package/esm2022/src/commands/ClientToServer/CommandSerializationHelper.mjs +1 -1
  12. package/esm2022/src/commands/ClientToServer/EvaluateCommand.mjs +1 -1
  13. package/esm2022/src/commands/ClientToServer/ExecOperCommand.mjs +1 -1
  14. package/esm2022/src/commands/ClientToServer/RollbackEventCommand.mjs +1 -1
  15. package/esm2022/src/commands/ServerToClient/AbortCommand.mjs +1 -1
  16. package/esm2022/src/commands/ServerToClient/AddRangeCommand.mjs +1 -1
  17. package/esm2022/src/commands/ServerToClient/AddSortCommand.mjs +1 -1
  18. package/esm2022/src/commands/ServerToClient/ClientRefreshCommand.mjs +1 -1
  19. package/esm2022/src/commands/ServerToClient/ClientTargetedCommandBase.mjs +1 -1
  20. package/esm2022/src/commands/ServerToClient/EnhancedVerifyCommand.mjs +1 -1
  21. package/esm2022/src/commands/ServerToClient/OpenURLCommand.mjs +1 -1
  22. package/esm2022/src/commands/ServerToClient/ResultCommand.mjs +1 -1
  23. package/esm2022/src/commands/ServerToClient/VerifyCommand.mjs +1 -1
  24. package/esm2022/src/commands/ServerToClient/XMLBasedCommandBuilder.mjs +1 -1
  25. package/esm2022/src/data/DataView.mjs +1 -1
  26. package/esm2022/src/data/DvCache.mjs +1 -1
  27. package/esm2022/src/data/Field.mjs +1 -1
  28. package/esm2022/src/data/FieldsTable.mjs +1 -1
  29. package/esm2022/src/data/Key.mjs +1 -1
  30. package/esm2022/src/data/Record.mjs +2 -2
  31. package/esm2022/src/data/RecordsTable.mjs +1 -1
  32. package/esm2022/src/data/TaskTransactionManager.mjs +1 -1
  33. package/esm2022/src/data/XMLBasedDcValuesBuilder.mjs +1 -1
  34. package/esm2022/src/env/EnvVariablesTable.mjs +1 -1
  35. package/esm2022/src/env/Environment.mjs +1 -1
  36. package/esm2022/src/env/LanguageData.mjs +1 -1
  37. package/esm2022/src/env/MirrorString.mjs +1 -1
  38. package/esm2022/src/event/ActionManager.mjs +1 -1
  39. package/esm2022/src/event/Event.mjs +1 -1
  40. package/esm2022/src/event/EventHandler.mjs +1 -1
  41. package/esm2022/src/event/EventHandlerPosition.mjs +1 -1
  42. package/esm2022/src/event/EventsManager.mjs +1 -1
  43. package/esm2022/src/event/RunTimeEvent.mjs +1 -1
  44. package/esm2022/src/event/UserEventsTable.mjs +1 -1
  45. package/esm2022/src/exp/ExpTable.mjs +1 -1
  46. package/esm2022/src/exp/Expression.mjs +1 -1
  47. package/esm2022/src/exp/ExpressionEvaluator.mjs +1 -1
  48. package/esm2022/src/exp/ExpressionLocalJpn.mjs +1 -1
  49. package/esm2022/src/exp/GlobalParamsTable.mjs +1 -1
  50. package/esm2022/src/exp/YesNoExp.mjs +1 -1
  51. package/esm2022/src/gui/FormsTable.mjs +1 -1
  52. package/esm2022/src/gui/MgControl.mjs +1 -1
  53. package/esm2022/src/gui/MgForm.mjs +1 -1
  54. package/esm2022/src/http/HttpManager.mjs +1 -1
  55. package/esm2022/src/http/client/HttpClientAsync.mjs +1 -1
  56. package/esm2022/src/http/client/HttpClientBase.mjs +1 -1
  57. package/esm2022/src/http/client/HttpClientEvents.mjs +1 -1
  58. package/esm2022/src/http/client/HttpClientSync.mjs +1 -1
  59. package/esm2022/src/http/client/HttpUtility.mjs +1 -1
  60. package/esm2022/src/remote/AddUserLocateRemoteDataViewCommand.mjs +1 -1
  61. package/esm2022/src/remote/AddUserRangeRemoteDataViewCommand.mjs +1 -1
  62. package/esm2022/src/remote/AddUserSortRemoteDataViewCommand.mjs +1 -1
  63. package/esm2022/src/remote/RemoteCommandsProcessor.mjs +1 -1
  64. package/esm2022/src/remote/RemoteControlItemsRefreshCommand.mjs +1 -1
  65. package/esm2022/src/remote/RemoteDataViewCommandBase.mjs +1 -1
  66. package/esm2022/src/remote/RemoteDataViewCommandFactory.mjs +1 -1
  67. package/esm2022/src/remote/ResetUserLocateRemoteDataviewCommand.mjs +1 -1
  68. package/esm2022/src/remote/ResetUserSortRemoteDataviewCommand.mjs +1 -1
  69. package/esm2022/src/remote/ServerError.mjs +1 -1
  70. package/esm2022/src/remote/SetTransactionStateRemoteDataViewCommand.mjs +1 -1
  71. package/esm2022/src/rt/Argument.mjs +1 -1
  72. package/esm2022/src/rt/ArgumentsList.mjs +1 -1
  73. package/esm2022/src/rt/Boundary.mjs +1 -1
  74. package/esm2022/src/rt/CompMainPrgTable.mjs +1 -1
  75. package/esm2022/src/rt/DataviewHeaderBase.mjs +1 -1
  76. package/esm2022/src/rt/DataviewHeaders.mjs +1 -1
  77. package/esm2022/src/rt/DataviewHeadersSaxHandler.mjs +1 -1
  78. package/esm2022/src/rt/ExecutionStack.mjs +1 -1
  79. package/esm2022/src/rt/HandlersTable.mjs +1 -1
  80. package/esm2022/src/rt/LastFocusedManager.mjs +1 -1
  81. package/esm2022/src/rt/Operation.mjs +1 -1
  82. package/esm2022/src/rt/OperationTable.mjs +1 -1
  83. package/esm2022/src/rt/Recompute.mjs +1 -1
  84. package/esm2022/src/rt/RecomputeTable.mjs +1 -1
  85. package/esm2022/src/rt/RemoteDataviewHeader.mjs +1 -1
  86. package/esm2022/src/rt/TableCache.mjs +1 -1
  87. package/esm2022/src/rt/TableCacheManager.mjs +1 -1
  88. package/esm2022/src/rt/Transaction.mjs +1 -1
  89. package/esm2022/src/security/UserDetails.mjs +1 -1
  90. package/esm2022/src/tasks/MGData.mjs +1 -1
  91. package/esm2022/src/tasks/MGDataCollection.mjs +1 -1
  92. package/esm2022/src/tasks/RCTimer.mjs +1 -1
  93. package/esm2022/src/tasks/RemoteTaskService.mjs +1 -1
  94. package/esm2022/src/tasks/Task.mjs +1 -1
  95. package/esm2022/src/tasks/TaskBase.mjs +1 -1
  96. package/esm2022/src/tasks/TaskServiceBase.mjs +1 -1
  97. package/esm2022/src/tasks/TasksTable.mjs +1 -1
  98. package/esm2022/src/tasks/sort/SortCollection.mjs +1 -1
  99. package/esm2022/src/util/ConstUtils.mjs +1 -1
  100. package/esm2022/src/util/FlowMonitorQueue.mjs +1 -1
  101. package/esm2022/src/util/HeapSort.mjs +1 -1
  102. package/esm2022/src/util/MgPriorityBlockingQueue.mjs +1 -1
  103. package/esm2022/src/util/MgPriorityQueue.mjs +1 -1
  104. package/esm2022/src/util/PrmMap.mjs +1 -1
  105. package/esm2022/src/util/Scrambler.mjs +1 -1
  106. package/esm2022/src/util/UniqueIDUtils.mjs +1 -1
  107. package/esm2022/src/util/cookie.service.mjs +1 -1
  108. package/fesm2022/magic-xpa-engine.mjs +2 -2
  109. package/fesm2022/magic-xpa-engine.mjs.map +1 -1
  110. package/package.json +4 -4
@@ -352,4 +352,4 @@ export class Recompute {
352
352
  return this.RcmpMode !== Recompute_RcmpBy.CLIENT;
353
353
  }
354
354
  }
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21wdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ydC9SZWNvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTFDLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSTFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDMUIsZ0NBQVksQ0FBQTtJQUNaLDBDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBRUQsTUFBTSxPQUFPLFNBQVM7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SSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQztJQUM3RCxDQUFDO0lBR0QsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7SUFDbkQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQcm9wSW50ZXJmYWNlLCBQcm9wVGFibGV9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0ZpZWxkQmFzZX0gZnJvbSBcIi4uL2RhdGEvRmllbGRCYXNlXCI7XHJcbmltcG9ydCB7TGlzdH0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7VGFza30gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tcIjtcclxuaW1wb3J0IHtDb21tYW5kc1Byb2Nlc3NvckJhc2VfU2VuZGluZ0luc3RydWN0aW9ufSBmcm9tIFwiLi4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlXCI7XHJcbmltcG9ydCB7Q29uc3RhbnRzLCBJbnRlcm5hbEludGVyZmFjZSwgTG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtSZWNvcmR9IGZyb20gXCIuLi9kYXRhL1JlY29yZFwiO1xyXG5pbXBvcnQge0NvbW1hbmRzVGFibGV9IGZyb20gXCIuLi9Db21tYW5kc1RhYmxlXCI7XHJcbmltcG9ydCB7SUNsaWVudENvbW1hbmR9IGZyb20gXCIuLi9jb21tYW5kcy9JQ2xpZW50Q29tbWFuZFwiO1xyXG5pbXBvcnQge0NvbW1hbmRGYWN0b3J5fSBmcm9tIFwiLi4vY29tbWFuZHMvQ2xpZW50VG9TZXJ2ZXIvQ29tbWFuZEZhY3RvcnlcIjtcclxuaW1wb3J0IHtSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvcn0gZnJvbSBcIi4uL3JlbW90ZS9SZW1vdGVDb21tYW5kc1Byb2Nlc3NvclwiO1xyXG5pbXBvcnQge0RhdGF2aWV3SGVhZGVyQmFzZX0gZnJvbSBcIi4vRGF0YXZpZXdIZWFkZXJCYXNlXCI7XHJcbmltcG9ydCB7Rmxvd01vbml0b3JRdWV1ZX0gZnJvbSBcIi4uL3V0aWwvRmxvd01vbml0b3JRdWV1ZVwiO1xyXG5pbXBvcnQge0ZpZWxkc1RhYmxlRXh0IGFzIEZpZWxkc1RhYmxlIH0gZnJvbSBcIi4uL2RhdGEvRmllbGRzVGFibGVcIjtcclxuaW1wb3J0IHtUYXNrc1RhYmxlfSBmcm9tIFwiLi4vdGFza3MvVGFza3NUYWJsZVwiO1xyXG5pbXBvcnQge01nQ29udHJvbH0gZnJvbSBcIi4uL2d1aS9NZ0NvbnRyb2xcIjtcclxuaW1wb3J0IHtDb25zdEludGVyZmFjZX0gZnJvbSBcIi4uL0NvbnN0SW50ZXJmYWNlXCI7XHJcbmltcG9ydCB7RGF0YVZpZXd9IGZyb20gXCIuLi9kYXRhL0RhdGFWaWV3XCI7XHJcbmltcG9ydCB7IEVudmlyb25tZW50IH0gZnJvbSBcIi4uL2Vudi9FbnZpcm9ubWVudFwiO1xyXG5pbXBvcnQgeyBBY2Nlc3NIZWxwZXIgfSBmcm9tIFwiLi4vQWNjZXNzSGVscGVyXCI7XHJcblxyXG5leHBvcnQgZW51bSBSZWNvbXB1dGVfUmNtcEJ5IHtcclxuICBDTElFTlQgPSAnQycsXHJcbiAgU0VSVkVSX09OX0NIQU5HRSA9ICdPJ1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmVjb21wdXRlIHtcclxuICBwcml2YXRlIF9jdHJsUHJvcHM6IFByb3BUYWJsZSA9IG51bGw7IC8vIGFmZmVjdGVkIGNvbnRyb2wgcHJvcGVydGllc1xyXG4gIHByaXZhdGUgX2Zvcm1Qcm9wczogUHJvcFRhYmxlID0gbnVsbDsgLy8gYWZmZWN0ZWQgZm9ybSBwcm9wZXJ0aWVzXHJcbiAgcHJpdmF0ZSBfaXNPd25lckZsZDogYm9vbGVhbiA9IHRydWU7IC8vIGRlbm90ZXMgaWYgdGhlIGN1cnJlbnQgcGFyc2VkIGZpZWxkIHRhZyBpcyB0aGUgb3duZXIgZmllbGRcclxuICBPd25lckZsZDogRmllbGRCYXNlID0gbnVsbDsgLy8gdGhlIGZpZWxkIHRoYXQgb3ducyB0aGlzIHJlY29tcHV0ZSBzdHJ1Y3R1cmVcclxuXHJcbiAgcHJpdmF0ZSBfcmNtcE9yZGVyOiBMaXN0PEZpZWxkQmFzZSB8IERhdGF2aWV3SGVhZGVyQmFzZT4gPSBudWxsOyAvLyBhZmZlY3RlZCBmaWVsZHMgYW5kIGxpbmtzLiBDYW4ndCB1c2UgTGlzdDxUPiAtIGhvbGRzIGJvdGggZmllbGRzIGFuZCBsaW5rc1xyXG4gIHByaXZhdGUgX3N1YkZvcm1zOiBMaXN0PFRhc2s+ID0gbnVsbDsgLy8gc3ViZm9ybXMgKHRhc2tzKSBhZmZlY3RlZCBieSB0aGlzIHJlY29tcHV0ZVxyXG4gIHByaXZhdGUgX3N1YkZvcm1zT25seVJlY29tcDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2hhc1NlcnZlckxpbmtzUmVjb21wdXRlczogYm9vbGVhbiA9IGZhbHNlOyAvLyB0cnVlLCBpZiB0aGUgZmllbGQgaGFzIGFueSBsaW5rIHJlY29tcHV0ZXMgYW5kIGl0IGlzIGEgc2VydmVyIHJlY29tcHV0ZVxyXG4gIFJjbXBNb2RlOiBSZWNvbXB1dGVfUmNtcEJ5ID0gbnVsbDsgIC8vIFdobyAoYW5kIHdoZW4pIHBlcmZvcm1zIHJjbXAgKGJ5IGNsaWVudCxcclxuXHJcbiAgVGFzazogVGFzayA9IG51bGw7IC8vIGEgcmVmZXJlbmNlIHRvIHRoZSB0YXNrIG9mIHRoaXMgUmVjb21wdXRlXHJcblxyXG4gIGNvbnN0cnVjdG9yKCl7XHJcbiAgfVxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0byBmaWxsIGFsbCByZWxldmFudCBkYXRhIGZvciA8ZmxkIC4uLj4gLi4uPC9mbGQ+IHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkYXRhVmlld1wiPnJlZmVyZW5jZSB0byBhbGwgRGF0YVZpZXcgb2JqZWN0LCB3aGljaCBjb25zaXN0IHJlbGV2YW50IGZpZWxkcyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1JlZlwiPnRvIHBhcmVudCB0YXNrLCB3aGljaCBuZWVkIGJlIGluaXRpYWxpemVkIGluIENvbnRyb2xUYWJsZS5Db250cm9sLnRhc2sgPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGluZGV4IG9mIHRoZSBlbmQgb2YgY3VycmVudCA8ZmxkIC4uLj49PiA8L2ZsZD4gPC9yZXR1cm5zPlxyXG4gIGZpbGxEYXRhKGRhdGFWaWV3OiBEYXRhVmlldywgdGFza1JlZjogVGFzaywgcGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLlRhc2sgPSB0YXNrUmVmO1xyXG4gICAgdGhpcy5faXNPd25lckZsZCA9IHRydWU7IC8vIHN0YXJ0IG9mIG5ldyA8ZmxkPiB0YWdcclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLCBwYXJzZXIuZ2V0TmV4dFRhZygpLCBkYXRhVmlldykpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIGlubmVyIG1lbWJlcnMgYW5kIG5lZWRlZCBsaW5rcyBmb3IgdGhlIGN1cnJlbnQgJ2ZsZCdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiKChEYXRhVmlldylkYXRhVmlldylcIj5yZWZlcmVuY2UgdG8gYWxsIERhdGFWaWV3IG9iamVjdCwgd2hpY2ggY29uc2lzdCByZWxldmFudCBmaWVsZHMgPC9wYXJhbT5cclxuICBwcml2YXRlIGluaXRJbm5lck9iamVjdHMocGFyc2VyOiBYbWxQYXJzZXIsIGZvdW5kVGFnTmFtZTogc3RyaW5nLCBkYXRhVmlldzogRGF0YVZpZXcpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAoZm91bmRUYWdOYW1lKSB7XHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX1RBR19GTEQ6XHJcbiAgICAgICAgLy8gaW5pdCA8ZmxkIGlkID0gcmVjb21wdXRlX2J5PT4gZmlyc3QgdGltZSwgaW5pdCByZWZlcmVuY2UgYnkgaWRcclxuICAgICAgICBpZiAodGhpcy5faXNPd25lckZsZCkge1xyXG4gICAgICAgICAgdGhpcy5maWxsRmxkRmllbGQocGFyc2VyLCBkYXRhVmlldyk7XHJcbiAgICAgICAgICB0aGlzLl9pc093bmVyRmxkID0gZmFsc2U7IC8vIG11c3QgdG8gYmUgYWZ0ZXIgRmlsbEZsZEZpZWxkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRoaXMuZmlsbEZsZEZpZWxkKHBhcnNlciwgZGF0YVZpZXcpOyAvLyBpdCdzIG5vdCBuZWVkICgoRGF0YVZpZXcpZGF0YVZpZXcpLCBpdCdzIG5vdCBmaXJzdCA8ZmxkID5cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0xJTks6XHJcbiAgICAgICAgdGhpcy5maWxsTGluayhwYXJzZXIsIGRhdGFWaWV3KTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX1RBR19DT05UUk9MOlxyXG4gICAgICAgIGlmICh0aGlzLl9jdHJsUHJvcHMgPT0gbnVsbClcclxuICAgICAgICAgIHRoaXMuX2N0cmxQcm9wcyA9IG5ldyBQcm9wVGFibGUoKTtcclxuXHJcbiAgICAgICAgLy8gZmlsbCB0aGUgcHJvcCB0YWJsZSB1c2luZyB0aGUgZXhpc3RpbmcgcHJvcGVydGllc1xyXG4gICAgICAgIHRoaXMuX2N0cmxQcm9wcy5maWxsRGF0YUJ5RXhpc3RzKHRoaXMuVGFzaywgcGFyc2VyKTtcclxuXHJcbiAgICAgICAgLy8gaWYgdmlydHVhbCBmaWVsZCBjYXVzZXMgcmVjb21wdXRlIG9mIHJlcGVhdGFibGUgY29udHJvbFxyXG4gICAgICAgIGlmICh0aGlzLl9jdHJsUHJvcHMuZ2V0Q3RybFJlZigpICE9IG51bGwgJiYgdGhpcy5fY3RybFByb3BzLmdldEN0cmxSZWYoKS5Jc1JlcGVhdGFibGUgJiYgdGhpcy5Pd25lckZsZC5Jc1ZpcnR1YWwgJiZcclxuICAgICAgICAgICEodGhpcy5Pd25lckZsZC5oYXNJbml0RXhwKCkpKVxyXG4gICAgICAgICAgdGhpcy5Pd25lckZsZC5jYXVzZVRhYmxlSW52YWxpZGF0aW9uKHRydWUpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfVEFHX0ZPUk1fUFJPUEVSVElFUzpcclxuICAgICAgICBpZiAodGhpcy5fZm9ybVByb3BzID09IG51bGwpXHJcbiAgICAgICAgICB0aGlzLl9mb3JtUHJvcHMgPSBuZXcgUHJvcFRhYmxlKCk7XHJcblxyXG4gICAgICAgIC8vIGZpbGwgdGhlIHByb3AgdGFibGUgdXNpbmcgdGhlIGV4aXN0aW5nIHByb3BlcnRpZXNcclxuICAgICAgICB0aGlzLl9mb3JtUHJvcHMuZmlsbERhdGFCeUV4aXN0cyh0aGlzLlRhc2ssIHBhcnNlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19GTERfRU5EOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIFJlY29tcHV0ZS4gSW5zZXJ0IGVsc2UgaWYgdG8gUmVjb21wdXRlLmluaXRJbm5lck9iamVjdHMgZm9yIFwiICsgZm91bmRUYWdOYW1lKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgQWRkUmVjb21wdXRlSXRlbShpdGVtOiBGaWVsZEJhc2UgfCBEYXRhdmlld0hlYWRlckJhc2UpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9yY21wT3JkZXIgPT09IG51bGwpXHJcbiAgICAgIHRoaXMuX3JjbXBPcmRlciA9IG5ldyBMaXN0KCk7XHJcbiAgICB0aGlzLl9yY21wT3JkZXIucHVzaChpdGVtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmaWxsIHRoZSByZWNvbXB1dGVkIGxpbmsgZGF0YSAob25seSBpZClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZmlsbExpbmsocGFyc2VyOiBYbWxQYXJzZXIsIGRhdGFWaWV3OiBEYXRhVmlldyk6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX1RFUk0sIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEgJiYgZW5kQ29udGV4dCA8IHBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcbiAgICAgIC8vIGxhc3QgcG9zaXRpb24gb2YgaXRzIHRhZ1xyXG4gICAgICBsZXQgdGFnOiBTdHJpbmcgPSBwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpO1xyXG4gICAgICBwYXJzZXIuYWRkMkN1cnJJbmRleCh0YWcuaW5kZXhPZihDb25zdEludGVyZmFjZS5NR19UQUdfTElOSykgKyBDb25zdEludGVyZmFjZS5NR19UQUdfTElOSy5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG5cclxuICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgICBpZiAoYXR0cmlidXRlID09PSBYTUxDb25zdGFudHMuTUdfQVRUUl9JRClcclxuICAgICAgICAgIHRoaXMuQWRkUmVjb21wdXRlSXRlbSgoPFRhc2s+ZGF0YVZpZXcuZ2V0VGFzaygpKS5nZXREYXRhdmlld0hlYWRlcnMoKS5nZXREYXRhdmlld0hlYWRlckJ5SWQoWG1sUGFyc2VyLmdldEludCh2YWx1ZVN0cikpKTtcclxuXHJcbiAgICAgICAgZWxzZSBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBSZWNvbXB1dGUgY2xhc3MuIEluc2VydCBjYXNlIHRvIFJlY29tcHV0ZS5maWxsTGluayBmb3IgXCIgKyBhdHRyaWJ1dGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpOyAvLyB0byBkZWxldGUgXCIvPlwiIHRvb1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFJlY29tcHV0ZS5maWxsTGluaygpIG91dCBvZiBib3VuZHNcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSW5pdCBSZWNvbXB1dGVCeSBtZW1iZXIgYW5kIGluaXQgcmVmZXJlbmNlIGZyb20gdGhlIEZpZWxkUm9vdCB0byB0aGUgUmVjb21wdXRlIG9iamVjdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ4bWxQYXJzZXIuZ2V0WE1MZGF0YSgpXCI+LCBpbnB1dCBzdHJpbmcgZnVsbCBYTUwuaW5uZXJUZXh0IDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ4bWxQYXJzZXIuZ2V0Q3VyckluZGV4KClcIj4sIGluZGV4IG9mIHN0YXJ0IGZpcnN0IDxmbGQgLi4uPiB0YWcgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIigoRGF0YVZpZXcpZGF0YVZpZXcpXCI+cmVmZXJlbmNlIHRvIGFsbCBEYXRhVmlldyBvYmplY3QsIHdoaWNoIGNvbnNpc3QgcmVsZXZhbnQgZmllbGRzIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBpbmRleCBvZiBlbmQgb2YgPGZsZCAuLi4+IHRhZyA8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBmaWxsRmxkRmllbGQocGFyc2VyOiBYbWxQYXJzZXIsIGRhdGFWaWV3OiBEYXRhVmlldyk6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZih0aGlzLl9pc093bmVyRmxkXHJcbiAgICAgID8gWE1MQ29uc3RhbnRzLlRBR19DTE9TRVxyXG4gICAgICA6IFhNTENvbnN0YW50cy5UQUdfVEVSTSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuXHJcbiAgICBpZiAoZW5kQ29udGV4dCAhPT0gLTEgJiYgZW5kQ29udGV4dCA8IHBhcnNlci5nZXRYTUxkYXRhKCkubGVuZ3RoKSB7XHJcblxyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogU3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoWE1MQ29uc3RhbnRzLk1HX1RBR19GTEQpICsgWE1MQ29uc3RhbnRzLk1HX1RBR19GTEQubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSxcclxuICAgICAgICBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG4gICAgICB0aGlzLmluaXRFbGVtZW50cyh0b2tlbnNWZWN0b3IsIGRhdGFWaWV3KTtcclxuICAgICAgaWYgKHRoaXMuX2lzT3duZXJGbGQpIHtcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KCsrZW5kQ29udGV4dCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoZW5kQ29udGV4dCArIFhNTENvbnN0YW50cy5UQUdfVEVSTS5sZW5ndGgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBDb21tYW5kLkZpbGxEYXRhKCkgb3V0IG9mIGJvdW5kc1wiKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBNYWtlIGluaXRpYWxpemF0aW9uIG9mIHByaXZhdGUgZWxlbWVudHMgYnkgZm91bmQgdG9rZW5zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRva2Vuc1ZlY3RvclwiPmZvdW5kIHRva2Vucywgd2hpY2ggY29uc2lzdCBhdHRyaWJ1dGUvdmFsdWUgb2YgZXZlcnkgZm91bmQgZWxlbWVudCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiKChEYXRhVmlldylkYXRhVmlldylcIj5yZWZlcmVuY2UgdG8gZmllbGQgb2JqZWN0cywgZm9yIDxmbGQgaWQgPSAuLi4+XHJcbiAgLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChEYXRhVmlldylkYXRhVmlldyk9PW51bGw9PiBpdCdzIGZpcnN0IGZvdW5kIGZpZWxkLCBuZWVkIHRvIGluaXQgcmVmZXJlbmNlXHJcbiAgLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgRmllbGRSb290XHJcbiAgLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChEYXRhVmlldylkYXRhVmlldykhPW51bGw9PiBhZGQgdGhlIGRhdGEgdG8gY3VycmllbnQgUmVjb3JkLCBpdCdzIG5vdCBmaXJzdCA8ZmxkPlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIHByaXZhdGUgaW5pdEVsZW1lbnRzKHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+LCBkYXRhVmlldzogRGF0YVZpZXcpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuICAgICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19BVFRSX0lEOiB7XHJcbiAgICAgICAgICBsZXQgZmxkSWQ6IG51bWJlciA9IFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpO1xyXG4gICAgICAgICAgbGV0IGZsZCA9IDxGaWVsZEJhc2U+ZGF0YVZpZXcuZ2V0RmllbGQoZmxkSWQpO1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2lzT3duZXJGbGQpIHtcclxuICAgICAgICAgICAgdGhpcy5Pd25lckZsZCA9IGZsZDtcclxuICAgICAgICAgICAgdGhpcy5Pd25lckZsZC5zZXRSZWNvbXB1dGUodGhpcyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgZmxkLnNldFJlY29tcHV0ZWQoKTtcclxuICAgICAgICAgICAgdGhpcy5BZGRSZWNvbXB1dGVJdGVtKGZsZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1JFQ09NUFVURUJZOlxyXG4gICAgICAgICAgdGhpcy5SY21wTW9kZSA9IDxSZWNvbXB1dGVfUmNtcEJ5PnZhbHVlU3RyWzBdO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9TVUJfRk9STV9SQ01QOlxyXG4gICAgICAgICAgdGhpcy5fc3ViRm9ybXNPbmx5UmVjb21wID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSEFTX0xJTktfUkVDT01QVVRFUzpcclxuICAgICAgICAgIHRoaXMuX2hhc1NlcnZlckxpbmtzUmVjb21wdXRlcyA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FOlxyXG4gICAgICAgICAgLyogaWdub3JlIHRoZSBuYW1lICovXHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIFJlY29tcHV0ZSBjbGFzcy4gSW5zZXJ0IGNhc2UgdG8gUmVjb21wdXRlLmluaXRFbGVtZW50cyBmb3IgXCIgKyBhdHRyaWJ1dGUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIHJlY29tcHV0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJyZWNcIj50aGUgcmVjb3JkIG9uIHdoaWNoIHRoZSByZWNvbXB1dGUgaXMgZXhlY3V0ZWQ8L3BhcmFtPlxyXG4gIHB1YmxpYyBhc3luYyBleGVjdXRlKHJlYzogUmVjb3JkKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgbGV0IGZsZDogRmllbGRCYXNlO1xyXG4gICAgbGV0IGNtZHNUb1NlcnZlcjogQ29tbWFuZHNUYWJsZSA9IDxDb21tYW5kc1RhYmxlPnRoaXMuVGFzay5nZXRNR0RhdGEoKS5DbWRzVG9TZXJ2ZXI7XHJcbiAgICBsZXQgY21kOiBJQ2xpZW50Q29tbWFuZDtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICByZWMuc2V0SW5SZWNvbXB1dGUodHJ1ZSk7XHJcbiAgICAgIHRoaXMuVGFzay5TZXRJblJlY29tcHV0ZSAodHJ1ZSk7XHJcbiAgICAgIHRoaXMuU2V0U3ViZm9ybXNJblJlY29tcHV0ZSh0cnVlKTtcclxuICAgICAgbGV0IGFsbG93U2VydmVyUmVjb21wdXRlOiBib29sZWFuID0gdGhpcy5faGFzU2VydmVyTGlua3NSZWNvbXB1dGVzIHx8XHJcbiAgICAgICAgICAodGhpcy5UYXNrLmdldEZvcm0oKS5BbGxvd2VkU3ViZm9ybVJlY29tcHV0ZSAmJiBhd2FpdCB0aGlzLmNoZWNrUmVmcmVzaFN1YkZvcm1zKCkpO1xyXG5cclxuICAgICAgLy8gU0VSVkVSXHJcbiAgICAgIGlmICh0aGlzLlJjbXBNb2RlICE9PSBSZWNvbXB1dGVfUmNtcEJ5LkNMSUVOVCAmJiBhbGxvd1NlcnZlclJlY29tcHV0ZSkge1xyXG4gICAgICAgIGxldCBpbkNsaWVudDogYm9vbGVhbiA9IHRoaXMuX3N1YkZvcm1zT25seVJlY29tcDtcclxuICAgICAgICB0aGlzLlRhc2suRXhlY3V0ZUNsaWVudFN1YmZvcm1SZWZyZXNoID0gZmFsc2U7XHJcblxyXG4gICAgICAgIC8vIGlmIHRoZSByZWNvbXB1dGUgaXMgbm90IG9ubHkgZHVlIHRvIHN1Yi1mb3JtcyBnbyB0byBzZXJ2ZXJcclxuICAgICAgICBpZiAoaW5DbGllbnQpIHtcclxuICAgICAgICAgIGluQ2xpZW50ID0gYXdhaXQgdGhpcy5UYXNrLnByZXBhcmVDYWNoZSh0cnVlKTtcclxuICAgICAgICAgIC8vIGlmIGFsbCBzdWItZm9ybSBhcmUgbm90IHVwZGF0ZVxyXG4gICAgICAgICAgaWYgKGluQ2xpZW50KVxyXG4gICAgICAgICAgICBpbkNsaWVudCA9IGF3YWl0IHRoaXMuVGFzay50ZXN0QW5kU2V0KHRydWUpOyAvLyB0cnkgdG8gdGFrZSBkYXRhdmlld3MgZnJvbSBjYWNoZVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWluQ2xpZW50KSB7XHJcbiAgICAgICAgICAoPEZpZWxkc1RhYmxlPnRoaXMuVGFzay5EYXRhVmlldy5HZXRGaWVsZHNUYWIoKSkuc2V0U2VydmVyUmNtcCh0cnVlKTtcclxuICAgICAgICAgIGNtZCA9IENvbW1hbmRGYWN0b3J5LkNyZWF0ZVJlY29tcHV0ZUNvbW1hbmQodGhpcy5UYXNrLmdldFRhc2tUYWcoKSwgdGhpcy5Pd25lckZsZC5nZXRJZCgpLCAhdGhpcy5UYXNrLmdldEZvcm0oKS5BbGxvd2VkU3ViZm9ybVJlY29tcHV0ZSk7XHJcbiAgICAgICAgICBjbWRzVG9TZXJ2ZXIuQWRkKGNtZCk7XHJcbiAgICAgICAgICBhd2FpdCBSZW1vdGVDb21tYW5kc1Byb2Nlc3Nvci5HZXRJbnN0YW5jZSgpLkV4ZWN1dGUoQ29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbi5UQVNLU19BTkRfQ09NTUFORFMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5UYXNrLkV4ZWN1dGVDbGllbnRTdWJmb3JtUmVmcmVzaClcclxuICAgICAgICAgIGF3YWl0IHRoaXMuUmVmcmVzaFN1YmZvcm1zKCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAoYXdhaXQgdGhpcy5yZWNQcmVmaXhTdWJGb3JtcygpKVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnJlY1N1ZmZpeFN1YkZvcm1zKCk7XHJcbiAgICAgICAgICB0aGlzLlRhc2suQ2xlYW5Eb1N1YmZvcm1QcmVmaXhTdWZmaXgoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gQ0xJRU5UXHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBGbG93TW9uaXRvclF1ZXVlLkluc3RhbmNlLmFkZFJlY29tcHV0ZSh0aGlzLk93bmVyRmxkLmdldFZhck5hbWUoKSwgdGhpcy5UYXNrLkdldFRhc2tEZXRhaWxzKCkpO1xyXG5cclxuICAgICAgICAgIC8vIEZPUk0gUFJPUEVSVElFU1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2Zvcm1Qcm9wcyAhPSBudWxsKVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9mb3JtUHJvcHMuUmVmcmVzaERpc3BsYXkoZmFsc2UsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAvLyBDVFJMIFBST1BFUlRJRVNcclxuICAgICAgICAgIGlmICh0aGlzLl9jdHJsUHJvcHMgIT0gbnVsbClcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fY3RybFByb3BzLlJlZnJlc2hEaXNwbGF5KGZhbHNlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgLy8gcmUtY3VtcHV0ZSBjbGllbnQgc2lkZSBmaWVsZHMgYW5kIGxpbmtzXHJcbiAgICAgICAgICBpZiAodGhpcy5fcmNtcE9yZGVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMuX3JjbXBPcmRlci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9yY21wT3JkZXIuZ2V0X0l0ZW0oaSkgaW5zdGFuY2VvZiBGaWVsZEJhc2UpIHtcclxuICAgICAgICAgICAgICAgIGZsZCA9IDxGaWVsZEJhc2U+dGhpcy5fcmNtcE9yZGVyLmdldF9JdGVtKGkpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mbGRSY21wKGZsZCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3JjbXBPcmRlci5nZXRfSXRlbShpKSBpbnN0YW5jZW9mIERhdGF2aWV3SGVhZGVyQmFzZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGN1ckxuayA9IDxEYXRhdmlld0hlYWRlckJhc2U+dGhpcy5fcmNtcE9yZGVyLmdldF9JdGVtKGkpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgY3VyTG5rLmdldExpbmtlZFJlY29yZChyZWMpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgcmVjb21wdXRlZCBhIGxpbmsgd2Ugc2hvdWxkIGFsc28gc3RhcnQgdGhlIHJlY29tcHV0ZSBwcm9jZXNzIG9uIGFsbCBvZiBpdHMgZmllbGRzXHJcbiAgICAgICAgICAgICAgICBsZXQgbGlua0ZpZWxkczogTGlzdDxGaWVsZEJhc2U+ID0gKDxGaWVsZHNUYWJsZT50aGlzLlRhc2suRGF0YVZpZXcuR2V0RmllbGRzVGFiKCkpLmdldExpbmtGaWVsZHMoY3VyTG5rLklkKTtcclxuICAgICAgICAgICAgICAgIHJlYy5zZXRJbkNvbXB1dGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc2F2ZUluRm9yY2VVcGRhdGU6IGJvb2xlYW4gPSByZWMuSW5Gb3JjZVVwZGF0ZTtcclxuICAgICAgICAgICAgICAgIHJlYy5JbkZvcmNlVXBkYXRlID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IGxpbmtGaWVsZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mbGRSY21wKGxpbmtGaWVsZHMuZ2V0X0l0ZW0oaiksIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgcmVjLmNsZWFyRmxhZygobGlua0ZpZWxkcy5nZXRfSXRlbShqKSkuZ2V0SWQoKSwgUmVjb3JkLkZMQUdfVVBEQVRFRCk7XHJcbiAgICAgICAgICAgICAgICAgIHJlYy5jbGVhckZsYWcoKGxpbmtGaWVsZHMuZ2V0X0l0ZW0oaikpLmdldElkKCksIFJlY29yZC5GTEFHX01PRElGSUVEKTtcclxuICAgICAgICAgICAgICAgICAgcmVjLmNsZWFyRmxhZygobGlua0ZpZWxkcy5nZXRfSXRlbShqKSkuZ2V0SWQoKSwgUmVjb3JkLkZMQUdfQ1JTUl9NT0RJRklFRCk7XHJcbiAgICAgICAgICAgICAgICAgIHJlYy5jbGVhckhpc3RvcnlGbGFnKChsaW5rRmllbGRzLmdldF9JdGVtKGopKS5nZXRJZCgpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlYy5JbkZvcmNlVXBkYXRlID0gc2F2ZUluRm9yY2VVcGRhdGU7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gc3RhcnQgcmVjb21wdXRlIHByb2Nlc3Mgb24gdGhlIHJldCB2YWwgb2YgdGhlIGxpbmtcclxuICAgICAgICAgICAgICAgIGxldCByZXRGbGQ6IEZpZWxkQmFzZSA9IGN1ckxuay5SZXR1cm5GaWVsZDtcclxuICAgICAgICAgICAgICAgIGlmIChyZXRGbGQgIT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5mbGRSY21wKHJldEZsZCwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgICAgIHJlYy5zZXRJbkNvbXB1dGUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmVjLnNldEZvcmNlU2F2ZU9yZyh0cnVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGF3YWl0IHRoaXMuUmVmcmVzaFN1YmZvcm1zKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBSZWNvbXB1dGUuZXhlY3V0ZSgpOiBcIiArIGUuTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSAgLy8gRU5EIENMSUVOVCBCTE9DS1xyXG4gICAgICB0aGlzLlRhc2suU2V0SW5SZWNvbXB1dGUgKGZhbHNlKTtcclxuICAgICAgdGhpcy5TZXRTdWJmb3Jtc0luUmVjb21wdXRlKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgcmVjLmJ1aWxkTGlua3NQb3NTdHIoKTtcclxuICAgICAgcmVjLnNldEluUmVjb21wdXRlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLyBTdWJmb3JtcyByZWNvbXB1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgYXN5bmMgUmVmcmVzaFN1YmZvcm1zKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHRoaXMuVGFzay5nZXRGb3JtKCkuQWxsb3dlZFN1YmZvcm1SZWNvbXB1dGUpIHtcclxuICAgICAgbGV0IHN1YmZvcm1zVG9SZWZyZXNoOiBMaXN0PFRhc2s+ID0gYXdhaXQgdGhpcy5HZXRTdWJmb3Jtc1RvUmVmcmVzaCgpO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3ViZm9ybXNUb1JlZnJlc2gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc3ViZm9ybVRhc2s6IFRhc2sgPSBzdWJmb3Jtc1RvUmVmcmVzaC5nZXRfSXRlbShpKTtcclxuICAgICAgICBhd2FpdCB0aGlzLlRhc2suU3ViZm9ybVJlZnJlc2goc3ViZm9ybVRhc2ssIHRydWUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBTZXRTdWJmb3Jtc0luUmVjb21wdXRlKGluUmVjb21wdXRlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcblxyXG4gICAgICBsZXQgc3ViZm9ybXNUb1JlZnJlc2g6IExpc3Q8VGFzaz4gPSBhd2FpdCB0aGlzLkdldFN1YmZvcm1zVG9SZWZyZXNoKCk7XHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBzdWJmb3Jtc1RvUmVmcmVzaC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBzdWJmb3JtVGFzazogVGFzayA9IHN1YmZvcm1zVG9SZWZyZXNoLmdldF9JdGVtKGkpO1xyXG4gICAgICAgICAgc3ViZm9ybVRhc2suU2V0SW5SZWNvbXB1dGUoaW5SZWNvbXB1dGUpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYSBoZWxwZXIgZnVuY3Rpb24gdG8gcmVjb21wdXRlIGZpZWxkc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJmbGRcIj4tIHRoZSBmaWVkbCB0byByZWNvbXB1dGU8L3BhcmFtPlxyXG4gIHByaXZhdGUgYXN5bmMgZmxkUmNtcChmbGQ6IEZpZWxkQmFzZSwgY29tcHV0ZUZpZWxkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoZmxkLklzVmlydHVhbFxyXG4gICAgICB8fCAoKHRoaXMuVGFzay5nZXRNb2RlKCkgIT09IENvbnN0YW50cy5UQVNLX01PREVfUVVFUlkgfHxcclxuICAgICAgICBFbnZpcm9ubWVudC5JbnN0YW5jZS5hbGxvd1VwZGF0ZUluUXVlcnlNb2RlKHRoaXMuVGFzay5nZXRDb21wSWR4KCkpKSkpIHtcclxuICAgICAgaWYgKCFmbGQuaXNJbkV2YWxQcm9jZXNzKCkpIHtcclxuICAgICAgICBpZiAoY29tcHV0ZUZpZWxkKVxyXG4gICAgICAgICAgYXdhaXQgZmxkLmNvbXB1dGUodHJ1ZSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYXdhaXQgZmxkLnNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUoZmxkLmdldFZhbHVlKGZhbHNlKSwgZmxkLmlzTnVsbCgpLCB0cnVlLCBmYWxzZSwgZmFsc2UpO1xyXG4gICAgICAgIGF3YWl0IGZsZC51cGRhdGVEaXNwbGF5KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgYnVpbGRTdWJGb3JtTGlzdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9zdWJGb3JtcyA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9zdWJGb3JtcyA9IG5ldyBMaXN0PFRhc2s+KCk7XHJcbiAgICAgIGxldCBzdWJUYXNrc1RhYjogVGFza3NUYWJsZSA9IHRoaXMuVGFzay5nZXRTdWJUYXNrcygpO1xyXG5cclxuICAgICAgaWYgKHN1YlRhc2tzVGFiICE9PSBudWxsKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN1YlRhc2tzVGFiLmdldFNpemUoKTsgaSA9IGkgKyAxKSB7XHJcbiAgICAgICAgICBsZXQgc3ViRm9ybTogVGFzayA9IDxUYXNrPnN1YlRhc2tzVGFiLmdldFRhc2soaSk7XHJcbiAgICAgICAgICAvLyBRQ1IgIzI5OTE1My4gQWRkIG9ubHkgc3ViZm9ybXMgKG5vdCBzdWJ0YXNrcykuXHJcbiAgICAgICAgICBpZiAoc3ViRm9ybS5nZXRGb3JtKCkuZ2V0U3ViRm9ybUN0cmwoKSAhPT0gbnVsbCAmJiBzdWJGb3JtLnJlZnJlc2hlc09uKHRoaXMuT3duZXJGbGQuZ2V0SWQoKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5fc3ViRm9ybXMucHVzaChzdWJGb3JtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmVtb3ZlcyB0aGUgc3BlY2lmaWMgdGFzayBmcm9tIHN1YmZvcm1zIGxpc3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN1YmZvcm1UYXNrXCI+PC9wYXJhbT5cclxuICBSZW1vdmVTdWJmb3JtKHN1YmZvcm1UYXNrOiBUYXNrKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zdWJGb3Jtcy5SZW1vdmUoc3ViZm9ybVRhc2spO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBJbnNlcnRzIHRoZSBzcGVjaWZpYyBzdWJmb3JtIHRhc2sgaW50byB0aGUgc3ViZm9ybSBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWJmb3JtVGFza1wiPjwvcGFyYW0+XHJcbiAgQWRkU3ViZm9ybShzdWJmb3JtVGFzazogVGFzayk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX3N1YkZvcm1zID09PSBudWxsKVxyXG4gICAgICB0aGlzLl9zdWJGb3JtcyA9IG5ldyBMaXN0PFRhc2s+KCk7XHJcbiAgICBpZiAoIXRoaXMuX3N1YkZvcm1zLkNvbnRhaW5zKHN1YmZvcm1UYXNrKSlcclxuICAgICAgdGhpcy5fc3ViRm9ybXMucHVzaChzdWJmb3JtVGFzayk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZXhlY3V0ZSByZWNvcmQgc3VmZml4IGZvciB0aGUgYWZmZWN0ZWQgc3ViZm9ybXMgaWYgUmVmcmVzaCBpcyBuZWVkZWRcclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IGFuZCBpdCBpcyBuZWVkZWQgdG8gcmVmcmVzaFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyByZWNTdWZmaXhTdWJGb3JtcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICBsZXQgc3ViRm9ybTogVGFzaztcclxuICAgIGxldCBzdWNjZXNzZnVsOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBzdWJmb3JtQ3RybDogTWdDb250cm9sO1xyXG5cclxuICAgIC8vIGJ1aWxkIHRoZSBzdWJmb3JtcyBsaXN0IGFuZCBzYXZlIGl0IGZvciBmdXR1cmUgdXNlXHJcbiAgICB0aGlzLmJ1aWxkU3ViRm9ybUxpc3QoKTtcclxuXHJcbiAgICAvLyBleGVjdXRlIFwicmVjb3JkIHN1ZmZpeFwiIGZvciB0aGUgc3ViZm9ybXNcclxuICAgIGZvciAoaSA9IDA7IHN1Y2Nlc3NmdWwgJiYgaSA8IHRoaXMuX3N1YkZvcm1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHN1YkZvcm0gPSB0aGlzLl9zdWJGb3Jtcy5nZXRfSXRlbShpKTtcclxuICAgICAgc3ViZm9ybUN0cmwgPSA8TWdDb250cm9sPnN1YkZvcm0uZ2V0Rm9ybSgpLmdldFN1YkZvcm1DdHJsKCk7XHJcbiAgICAgIGlmIChzdWJGb3JtLmlzU3RhcnRlZCgpICYmICFzdWJmb3JtQ3RybC5SZWZyZXNoT25WaXNpYmxlICYmXHJcbiAgICAgICAgYXdhaXQgc3ViZm9ybUN0cmwuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FVVE9fUkVGUkVTSCwgdHJ1ZSkgJiYgIXN1YkZvcm0uSW5TZWxlY3RcclxuICAgICAgICAmJiBzdWJGb3JtLkRvU3ViZm9ybVByZWZpeFN1ZmZpeCkge1xyXG4gICAgICAgIGF3YWl0IEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLmhhbmRsZUludGVybmFsRXZlbnRXaXRoVGFzayhzdWJGb3JtLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1NVRkZJWCk7XHJcbiAgICAgICAgc3VjY2Vzc2Z1bCA9ICFBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5HZXRTdG9wRXhlY3V0aW9uRmxhZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAoPERhdGFWaWV3PnRoaXMuVGFzay5EYXRhVmlldykuc2V0UHJldkN1cnJSZWMoKTtcclxuICAgIHJldHVybiAoc3VjY2Vzc2Z1bCk7XHJcbiAgfVxyXG5cclxuICAvLyBjaGVjayBpZiBkbyByZWZyZXNoIGZvciBhbnkgc3ViZm9ybSB0aGF0IHRoZSBmaWVsZCBhZmZlY3RzXHJcbiAgcHJpdmF0ZSBhc3luYyBjaGVja1JlZnJlc2hTdWJGb3JtcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZWZyZXNoOiBib29sZWFuID0gIXRoaXMuX3N1YkZvcm1zT25seVJlY29tcDtcclxuICAgIGxldCBzdWJmb3Jtc1RvUmVmcmVzaDogTGlzdDxUYXNrPiA9IGF3YWl0IHRoaXMuR2V0U3ViZm9ybXNUb1JlZnJlc2goKTtcclxuICAgIGlmIChzdWJmb3Jtc1RvUmVmcmVzaC5sZW5ndGggPiAwKVxyXG4gICAgICByZWZyZXNoID0gdHJ1ZTtcclxuICAgIHJldHVybiByZWZyZXNoO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIGEgbGlzdCBvZiB0aG9zZSBzdWJmb3JtcyB0aGF0IG11c3QgYmUgcmVmcmVzaGVkLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPmxpc3Qgb2Ygc3ViZm9ybXMgdG8gcmVmcmVzaDwvcmV0dXJucz5cclxuICBwcml2YXRlIGFzeW5jIEdldFN1YmZvcm1zVG9SZWZyZXNoKCk6IFByb21pc2U8TGlzdDxUYXNrPj4ge1xyXG5cclxuICAgIGxldCBzdWJUYXNrczogTGlzdDxUYXNrPiA9IG5ldyBMaXN0PFRhc2s+KCk7XHJcbiAgICBsZXQgc3ViZm9ybUN0cmw6IE1nQ29udHJvbDtcclxuICAgIC8vIGJ1aWxkIHRoZSBzdWJmb3JtcyBsaXN0IGFuZCBzYXZlIGl0IGZvciBmdXR1cmUgdXNlXHJcbiAgICB0aGlzLmJ1aWxkU3ViRm9ybUxpc3QoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaTx0aGlzLl9zdWJGb3Jtcy5sZW5ndGg7IGkrKylcclxuICAgIHtcclxuICAgICAgbGV0IHN1YlRhc2sgPSB0aGlzLl9zdWJGb3Jtc1tpXTtcclxuICAgICAgc3ViZm9ybUN0cmwgPSA8TWdDb250cm9sPnN1YlRhc2suZ2V0Rm9ybSgpLmdldFN1YkZvcm1DdHJsKCk7XHJcbiAgICAgIGlmIChzdWJUYXNrLmlzU3RhcnRlZCgpICYmIGF3YWl0ICBzdWJmb3JtQ3RybC5jaGVja1Byb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfQVVUT19SRUZSRVNILCB0cnVlKSAmJlxyXG4gICAgICAgICFzdWJUYXNrLkluU2VsZWN0ICYmICFzdWJUYXNrLkluRW5kVGFzaykge1xyXG5cclxuICAgICAgICAvLyBjb21wdXRlIHRoZSB2aXNpYmlsaXR5IHByb3BlcnR5IGZvciB0aGUgc3ViZm9ybSBjb250cm9sIGJlZm9yZSB1c2UgaXQgaW4gaXNWaXNpYmxlKCkgbWV0aG9kXHJcbiAgICAgICAgYXdhaXQgc3ViZm9ybUN0cmwuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1ZJU0lCTEUsIHRydWUpO1xyXG4gICAgICAgIGlmICghc3ViZm9ybUN0cmwuaXNWaXNpYmxlKCkgJiYgIWF3YWl0IHN1YmZvcm1DdHJsLmNoZWNrUHJvcChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9SRUZSRVNIX1dIRU5fSElEREVOLCBmYWxzZSkpXHJcbiAgICAgICAgICBzdWJmb3JtQ3RybC5SZWZyZXNoT25WaXNpYmxlID0gdHJ1ZTtcclxuICAgICAgICBlbHNlIHN1YlRhc2tzLnB1c2goc3ViVGFzayk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWJUYXNrcztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlIHJlY29yZCBwcmVmaXggZm9yIHRoZSBhZmZlY3RlZCBzdWJmb3JtcyBpZiBSZWZyZXNoIGlzIG5lZWRlZFxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiBmaW5pc2hlZCBzdWNjZXNzZnVsbHkgYW5kIGl0IGlzIG5lZWRlZCB0byByZWZyZXNoXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFzeW5jIHJlY1ByZWZpeFN1YkZvcm1zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuICAgIGxldCBzdWJGb3JtOiBUYXNrO1xyXG4gICAgbGV0IHN1Y2Nlc3NmdWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgbGV0IHN1YmZvcm1DdHJsOiBNZ0NvbnRyb2w7XHJcblxyXG4gICAgLy8gYnVpbGQgdGhlIHN1YmZvcm1zIGxpc3QgYW5kIHNhdmUgaXQgZm9yIGZ1dHVyZSB1c2VcclxuICAgIHRoaXMuYnVpbGRTdWJGb3JtTGlzdCgpO1xyXG5cclxuICAgIC8vIGV4ZWN1dGUgXCJyZWNvcmQgcHJlZml4XCIgZm9yIHRoZSBzdWJmb3Jtc1xyXG4gICAgZm9yIChpID0gMDsgc3VjY2Vzc2Z1bCAmJiBpIDwgdGhpcy5fc3ViRm9ybXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgc3ViRm9ybSA9IHRoaXMuX3N1YkZvcm1zLmdldF9JdGVtKGkpO1xyXG4gICAgICBzdWJmb3JtQ3RybCA9IDxNZ0NvbnRyb2w+c3ViRm9ybS5nZXRGb3JtKCkuZ2V0U3ViRm9ybUN0cmwoKTtcclxuICAgICAgaWYgKHN1YkZvcm0uaXNTdGFydGVkKCkgJiYgIXN1YmZvcm1DdHJsLlJlZnJlc2hPblZpc2libGVcclxuICAgICAgICAmJiBhd2FpdCAgc3ViZm9ybUN0cmwuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FVVE9fUkVGUkVTSCwgdHJ1ZSlcclxuICAgICAgICAmJiAhc3ViRm9ybS5JblNlbGVjdCAmJiBzdWJGb3JtLkRvU3ViZm9ybVByZWZpeFN1ZmZpeCkge1xyXG4gICAgICAgIGF3YWl0IEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLmhhbmRsZUludGVybmFsRXZlbnRXaXRoVGFza0FuZFN1YmZvcm1SZWZyZXNoKHN1YkZvcm0sIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9SRUNfUFJFRklYLCB0cnVlKTtcclxuICAgICAgICBzdWNjZXNzZnVsID0gIUFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLkdldFN0b3BFeGVjdXRpb25GbGFnKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBzdWNjZXNzZnVsO1xyXG4gIH1cclxuXHJcbiAgbm90aWZ5U2VydmVyT25DaGFuZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5SY21wTW9kZSA9PT0gUmVjb21wdXRlX1JjbXBCeS5TRVJWRVJfT05fQ0hBTkdFO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIHRoZSBjbGllbnQgZG9lc24ndCBrbm93IHRvIHJlY29tcHV0ZSB0aGlzIGZpZWxkPC9yZXR1cm5zPlxyXG4gIGlzU2VydmVyUmNtcCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLlJjbXBNb2RlICE9PSBSZWNvbXB1dGVfUmNtcEJ5LkNMSUVOVDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
355
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21wdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ydC9SZWNvbXB1dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDNUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTFDLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUMvRixPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBSTFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDMUIsZ0NBQVksQ0FBQTtJQUNaLDBDQUFzQixDQUFBO0FBQ3hCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFDWixVQUFVLEdBQWMsSUFBSSxDQUFDO0lBQzdCLFVBQVUsR0FBYyxJQUFJLENBQUM7SUFDN0IsV0FBVyxHQUFZLElBQUksQ0FBQztJQUNwQyxRQUFRLEdBQWMsSUFBSSxDQUFDO0lBRW5CLFVBQVUsR0FBeUMsSUFBSSxDQUFDO0lBQ3hELFNBQVMsR0FBZSxJQUFJLENBQUM7SUFDN0IsbUJBQW1CLEdBQVksS0FBSyxDQUFDO0lBQ3JDLHlCQUF5QixHQUFZLEtBQUssQ0FBQztJQUNuRCxRQUFRLEdBQXFCLElBQUksQ0FBQztJQUVsQyxJQUFJLEdBQVMsSUFBSSxDQUFDO0lBRWxCO0lBQ0EsQ0FBQztJQU9ELFFBQVEsQ0FBQyxRQUFrQixFQUFFLE9BQWEsRUFBRSxNQUFpQjtRQUUzRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1NBQ3BFO0lBQ0gsQ0FBQztJQU1PLGdCQUFnQixDQUFDLE1BQWlCLEVBQUUsWUFBb0IsRUFBRSxRQUFrQjtRQUNsRixRQUFRLFlBQVksRUFBRTtZQUNwQixLQUFLLFlBQVksQ0FBQyxVQUFVO2dCQUUxQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztpQkFDMUI7O29CQUVDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QyxNQUFNO1lBRVIsS0FBSyxjQUFjLENBQUMsV0FBVztnQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU07WUFFUixLQUFLLFlBQVksQ0FBQyxjQUFjO2dCQUM5QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSTtvQkFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUdwQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBR3BELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTO29CQUM5RyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0MsTUFBTTtZQUVSLEtBQUssWUFBWSxDQUFDLHNCQUFzQjtnQkFDdEMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUk7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFHcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNwRCxNQUFNO1lBRVIsS0FBSyxjQUFjLENBQUMsY0FBYztnQkFDaEMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQy9CLE9BQU8sS0FBSyxDQUFDO1lBRWY7Z0JBQ0UsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxzRkFBc0YsR0FBRyxZQUFZLENBQUMsQ0FBQztnQkFDbEosT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxJQUFvQztRQUMzRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSTtZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUtPLFFBQVEsQ0FBQyxNQUFpQixFQUFFLFFBQWtCO1FBQ3BELElBQUksVUFBVSxHQUFXLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNuRyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRTtZQUVoRSxJQUFJLEdBQUcsR0FBVyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEdBQUcsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVsRyxJQUFJLFlBQVksR0FBaUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUV0SCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN2RCxJQUFJLFNBQVMsR0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxRQUFRLEdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV0RCxJQUFJLFNBQVMsS0FBSyxZQUFZLENBQUMsVUFBVTtvQkFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFRLFFBQVEsQ0FBQyxPQUFPLEVBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDOztvQkFFdEgsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxpRkFBaUYsR0FBRyxTQUFTLENBQUMsQ0FBQzthQUNoSjtZQUNELE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0QsT0FBTztTQUNSOztZQUVDLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsdUNBQXVDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBU08sWUFBWSxDQUFDLE1BQWlCLEVBQUUsUUFBa0I7UUFDeEQsSUFBSSxVQUFVLEdBQVcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVztZQUNuRSxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVM7WUFDeEIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFbEQsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUU7WUFHaEUsSUFBSSxHQUFHLEdBQVcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFNUYsSUFBSSxZQUFZLEdBQWlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFDckYsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNsQyxPQUFPO2FBQ1I7WUFDRCxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9ELE9BQU87U0FDUjtRQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBV08sWUFBWSxDQUFDLFlBQTBCLEVBQUUsUUFBa0I7UUFDakUsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RCxJQUFJLFNBQVMsR0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuRCxJQUFJLFFBQVEsR0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEQsUUFBUSxTQUFTLEVBQUU7Z0JBQ2pCLEtBQUssWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM1QixJQUFJLEtBQUssR0FBVyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLEdBQUcsR0FBYyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM5QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO3dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDbEM7eUJBQ0k7d0JBQ0gsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNwQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQzVCO29CQUNELE1BQU07aUJBQ1A7Z0JBQ0QsS0FBSyxjQUFjLENBQUMsbUJBQW1CO29CQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFxQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlDLE1BQU07Z0JBRVIsS0FBSyxjQUFjLENBQUMscUJBQXFCO29CQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO29CQUNoQyxNQUFNO2dCQUVSLEtBQUssY0FBYyxDQUFDLDJCQUEyQjtvQkFDN0MsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztvQkFDdEMsTUFBTTtnQkFFUixLQUFLLFlBQVksQ0FBQyxZQUFZO29CQUU1QixNQUFNO2dCQUVSO29CQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMscUZBQXFGLEdBQUcsU0FBUyxDQUFDLENBQUM7b0JBQzlJLE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQU1NLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVztRQUM5QixJQUFJLENBQVMsQ0FBQztRQUNkLElBQUksR0FBYyxDQUFDO1FBQ25CLElBQUksWUFBWSxHQUFpQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQztRQUNwRixJQUFJLEdBQW1CLENBQUM7UUFFeEIsSUFBSTtZQUNGLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLElBQUksb0JBQW9CLEdBQVksSUFBSSxDQUFDLHlCQUF5QjtnQkFDOUQsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixJQUFJLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztZQUd2RixJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxJQUFJLG9CQUFvQixFQUFFO2dCQUNyRSxJQUFJLFFBQVEsR0FBWSxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEdBQUcsS0FBSyxDQUFDO2dCQUc5QyxJQUFJLFFBQVEsRUFBRTtvQkFDWixRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFFOUMsSUFBSSxRQUFRO3dCQUNWLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDckUsR0FBRyxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUM7b0JBQ3pJLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3RCLE1BQU0sdUJBQXVCLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQ2xIO2dCQUNELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQywyQkFBMkI7b0JBQ3ZDLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO3FCQUMxQjtvQkFDSCxJQUFJLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFO3dCQUNoQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7aUJBQ3hDO2FBQ0Y7aUJBRUk7Z0JBQ0gsSUFBSTtvQkFDRixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO29CQUcvRixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSTt3QkFDekIsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBR3JELElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJO3dCQUN6QixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFHckQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTt3QkFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs0QkFDM0MsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxTQUFTLEVBQUU7Z0NBQ3BELEdBQUcsR0FBYyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDN0MsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzs2QkFDL0I7aUNBQ0ksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxrQkFBa0IsRUFBRTtnQ0FDbEUsSUFBSSxNQUFNLEdBQXVCLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUM3RCxNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7Z0NBR2xDLElBQUksVUFBVSxHQUFrQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dDQUM1RyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUN2QixJQUFJLGlCQUFpQixHQUFZLEdBQUcsQ0FBQyxhQUFhLENBQUM7Z0NBQ25ELEdBQUcsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO2dDQUUxQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQ0FDbEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7b0NBQ2xELEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO29DQUNyRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQ0FDdEUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQ0FDM0UsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7aUNBQ3hEO2dDQUNELEdBQUcsQ0FBQyxhQUFhLEdBQUcsaUJBQWlCLENBQUM7Z0NBR3RDLElBQUksTUFBTSxHQUFjLE1BQU0sQ0FBQyxXQUFXLENBQUM7Z0NBQzNDLElBQUksTUFBTSxJQUFJLElBQUk7b0NBQ2hCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0NBRXBDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7Z0NBQ3hCLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7NkJBQzNCO3lCQUNGO3FCQUNGO29CQUNELE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2lCQUM5QjtnQkFDRCxPQUFPLENBQUMsRUFBRTtvQkFDUixNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLDBCQUEwQixHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDcEY7YUFFRjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztnQkFFTztZQUNOLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBS08sS0FBSyxDQUFDLGVBQWU7UUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixFQUFFO1lBQy9DLElBQUksaUJBQWlCLEdBQWUsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN0RSxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN6RCxJQUFJLFdBQVcsR0FBUyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ25EO1NBRUY7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLHNCQUFzQixDQUFDLFdBQW9CO1FBRXJELElBQUksaUJBQWlCLEdBQWUsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN0RSxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3pELElBQUksV0FBVyxHQUFTLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxXQUFXLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQU1PLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBYyxFQUFFLFlBQXFCO1FBQ3pELElBQUksR0FBRyxDQUFDLFNBQVM7ZUFDWixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxTQUFTLENBQUMsZUFBZTtnQkFDcEQsV0FBVyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pFLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUU7Z0JBQzFCLElBQUksWUFBWTtvQkFDZCxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O29CQUV4QixNQUFNLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUM3RixNQUFNLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUMzQjtTQUNGO0lBQ0gsQ0FBQztJQUlPLGdCQUFnQjtRQUN0QixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQVEsQ0FBQztZQUNsQyxJQUFJLFdBQVcsR0FBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRXRELElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtnQkFDeEIsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDNUQsSUFBSSxPQUFPLEdBQWUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFFakQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFO3dCQUM3RixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDOUI7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQU1ELGFBQWEsQ0FBQyxXQUFpQjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBTUQsVUFBVSxDQUFDLFdBQWlCO1FBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLEVBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFNTyxLQUFLLENBQUMsaUJBQWlCO1FBQzdCLElBQUksQ0FBUyxDQUFDO1FBQ2QsSUFBSSxPQUFhLENBQUM7UUFDbEIsSUFBSSxVQUFVLEdBQVksSUFBSSxDQUFDO1FBQy9CLElBQUksV0FBc0IsQ0FBQztRQUczQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUd4QixLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsVUFBVSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4RCxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsV0FBVyxHQUFjLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1RCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0I7Z0JBQ3RELE1BQU0sV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTttQkFDekYsT0FBTyxDQUFDLHFCQUFxQixFQUFFO2dCQUNsQyxNQUFNLFlBQVksQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzNHLFVBQVUsR0FBRyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUNqRTtTQUNGO1FBQ1UsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFHTyxLQUFLLENBQUMsb0JBQW9CO1FBQ2hDLElBQUksT0FBTyxHQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2pELElBQUksaUJBQWlCLEdBQWUsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUN0RSxJQUFJLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDakIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQU1PLEtBQUssQ0FBQyxvQkFBb0I7UUFFaEMsSUFBSSxRQUFRLEdBQWUsSUFBSSxJQUFJLEVBQVEsQ0FBQztRQUM1QyxJQUFJLFdBQXNCLENBQUM7UUFFM0IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUM1QztZQUNFLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsV0FBVyxHQUFjLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUM1RCxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxNQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQztnQkFDakcsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFHekMsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sV0FBVyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxDQUFDO29CQUM5RyxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDOztvQkFDakMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM3QjtTQUNGO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQU1PLEtBQUssQ0FBQyxpQkFBaUI7UUFDN0IsSUFBSSxDQUFTLENBQUM7UUFDZCxJQUFJLE9BQWEsQ0FBQztRQUNsQixJQUFJLFVBQVUsR0FBWSxJQUFJLENBQUM7UUFDL0IsSUFBSSxXQUFzQixDQUFDO1FBRzNCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBR3hCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3hELE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxXQUFXLEdBQWMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVELElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQjttQkFDbkQsTUFBTyxXQUFXLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUM7bUJBQ3hFLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3ZELE1BQU0sWUFBWSxDQUFDLGFBQWEsQ0FBQyw0Q0FBNEMsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ2xJLFVBQVUsR0FBRyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUNqRTtTQUNGO1FBQ0QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7SUFDN0QsQ0FBQztJQUdELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ25ELENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UHJvcEludGVyZmFjZSwgUHJvcFRhYmxlfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtGaWVsZEJhc2V9IGZyb20gXCIuLi9kYXRhL0ZpZWxkQmFzZVwiO1xyXG5pbXBvcnQge0xpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7Q29tbWFuZHNQcm9jZXNzb3JCYXNlX1NlbmRpbmdJbnN0cnVjdGlvbn0gZnJvbSBcIi4uL0NvbW1hbmRzUHJvY2Vzc29yQmFzZVwiO1xyXG5pbXBvcnQge0NvbnN0YW50cywgSW50ZXJuYWxJbnRlcmZhY2UsIExvZ2dlciwgWE1MQ29uc3RhbnRzLCBYbWxQYXJzZXJ9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7UmVjb3JkfSBmcm9tIFwiLi4vZGF0YS9SZWNvcmRcIjtcclxuaW1wb3J0IHtDb21tYW5kc1RhYmxlfSBmcm9tIFwiLi4vQ29tbWFuZHNUYWJsZVwiO1xyXG5pbXBvcnQge0lDbGllbnRDb21tYW5kfSBmcm9tIFwiLi4vY29tbWFuZHMvSUNsaWVudENvbW1hbmRcIjtcclxuaW1wb3J0IHtDb21tYW5kRmFjdG9yeX0gZnJvbSBcIi4uL2NvbW1hbmRzL0NsaWVudFRvU2VydmVyL0NvbW1hbmRGYWN0b3J5XCI7XHJcbmltcG9ydCB7UmVtb3RlQ29tbWFuZHNQcm9jZXNzb3J9IGZyb20gXCIuLi9yZW1vdGUvUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3JcIjtcclxuaW1wb3J0IHtEYXRhdmlld0hlYWRlckJhc2V9IGZyb20gXCIuL0RhdGF2aWV3SGVhZGVyQmFzZVwiO1xyXG5pbXBvcnQge0Zsb3dNb25pdG9yUXVldWV9IGZyb20gXCIuLi91dGlsL0Zsb3dNb25pdG9yUXVldWVcIjtcclxuaW1wb3J0IHtGaWVsZHNUYWJsZUV4dCBhcyBGaWVsZHNUYWJsZSB9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7VGFza3NUYWJsZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tzVGFibGVcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2x9IGZyb20gXCIuLi9ndWkvTWdDb250cm9sXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tIFwiLi4vZGF0YS9EYXRhVmlld1wiO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gXCIuLi9lbnYvRW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuZXhwb3J0IGVudW0gUmVjb21wdXRlX1JjbXBCeSB7XHJcbiAgQ0xJRU5UID0gJ0MnLFxyXG4gIFNFUlZFUl9PTl9DSEFOR0UgPSAnTydcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJlY29tcHV0ZSB7XHJcbiAgcHJpdmF0ZSBfY3RybFByb3BzOiBQcm9wVGFibGUgPSBudWxsOyAvLyBhZmZlY3RlZCBjb250cm9sIHByb3BlcnRpZXNcclxuICBwcml2YXRlIF9mb3JtUHJvcHM6IFByb3BUYWJsZSA9IG51bGw7IC8vIGFmZmVjdGVkIGZvcm0gcHJvcGVydGllc1xyXG4gIHByaXZhdGUgX2lzT3duZXJGbGQ6IGJvb2xlYW4gPSB0cnVlOyAvLyBkZW5vdGVzIGlmIHRoZSBjdXJyZW50IHBhcnNlZCBmaWVsZCB0YWcgaXMgdGhlIG93bmVyIGZpZWxkXHJcbiAgT3duZXJGbGQ6IEZpZWxkQmFzZSA9IG51bGw7IC8vIHRoZSBmaWVsZCB0aGF0IG93bnMgdGhpcyByZWNvbXB1dGUgc3RydWN0dXJlXHJcblxyXG4gIHByaXZhdGUgX3JjbXBPcmRlcjogTGlzdDxGaWVsZEJhc2UgfCBEYXRhdmlld0hlYWRlckJhc2U+ID0gbnVsbDsgLy8gYWZmZWN0ZWQgZmllbGRzIGFuZCBsaW5rcy4gQ2FuJ3QgdXNlIExpc3Q8VD4gLSBob2xkcyBib3RoIGZpZWxkcyBhbmQgbGlua3NcclxuICBwcml2YXRlIF9zdWJGb3JtczogTGlzdDxUYXNrPiA9IG51bGw7IC8vIHN1YmZvcm1zICh0YXNrcykgYWZmZWN0ZWQgYnkgdGhpcyByZWNvbXB1dGVcclxuICBwcml2YXRlIF9zdWJGb3Jtc09ubHlSZWNvbXA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9oYXNTZXJ2ZXJMaW5rc1JlY29tcHV0ZXM6IGJvb2xlYW4gPSBmYWxzZTsgLy8gdHJ1ZSwgaWYgdGhlIGZpZWxkIGhhcyBhbnkgbGluayByZWNvbXB1dGVzIGFuZCBpdCBpcyBhIHNlcnZlciByZWNvbXB1dGVcclxuICBSY21wTW9kZTogUmVjb21wdXRlX1JjbXBCeSA9IG51bGw7ICAvLyBXaG8gKGFuZCB3aGVuKSBwZXJmb3JtcyByY21wIChieSBjbGllbnQsXHJcblxyXG4gIFRhc2s6IFRhc2sgPSBudWxsOyAvLyBhIHJlZmVyZW5jZSB0byB0aGUgdGFzayBvZiB0aGlzIFJlY29tcHV0ZVxyXG5cclxuICBjb25zdHJ1Y3Rvcigpe1xyXG4gIH1cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgdG8gZmlsbCBhbGwgcmVsZXZhbnQgZGF0YSBmb3IgPGZsZCAuLi4+IC4uLjwvZmxkPiB0YWdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZGF0YVZpZXdcIj5yZWZlcmVuY2UgdG8gYWxsIERhdGFWaWV3IG9iamVjdCwgd2hpY2ggY29uc2lzdCByZWxldmFudCBmaWVsZHMgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tSZWZcIj50byBwYXJlbnQgdGFzaywgd2hpY2ggbmVlZCBiZSBpbml0aWFsaXplZCBpbiBDb250cm9sVGFibGUuQ29udHJvbC50YXNrIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBpbmRleCBvZiB0aGUgZW5kIG9mIGN1cnJlbnQgPGZsZCAuLi4+PT4gPC9mbGQ+IDwvcmV0dXJucz5cclxuICBmaWxsRGF0YShkYXRhVmlldzogRGF0YVZpZXcsIHRhc2tSZWY6IFRhc2ssIHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcblxyXG4gICAgdGhpcy5UYXNrID0gdGFza1JlZjtcclxuICAgIHRoaXMuX2lzT3duZXJGbGQgPSB0cnVlOyAvLyBzdGFydCBvZiBuZXcgPGZsZD4gdGFnXHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlciwgcGFyc2VyLmdldE5leHRUYWcoKSwgZGF0YVZpZXcpKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgRmlsbCBpbm5lciBtZW1iZXJzIGFuZCBuZWVkZWQgbGlua3MgZm9yIHRoZSBjdXJyZW50ICdmbGQnXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIigoRGF0YVZpZXcpZGF0YVZpZXcpXCI+cmVmZXJlbmNlIHRvIGFsbCBEYXRhVmlldyBvYmplY3QsIHdoaWNoIGNvbnNpc3QgcmVsZXZhbnQgZmllbGRzIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBpbml0SW5uZXJPYmplY3RzKHBhcnNlcjogWG1sUGFyc2VyLCBmb3VuZFRhZ05hbWU6IHN0cmluZywgZGF0YVZpZXc6IERhdGFWaWV3KTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKGZvdW5kVGFnTmFtZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19UQUdfRkxEOlxyXG4gICAgICAgIC8vIGluaXQgPGZsZCBpZCA9IHJlY29tcHV0ZV9ieT0+IGZpcnN0IHRpbWUsIGluaXQgcmVmZXJlbmNlIGJ5IGlkXHJcbiAgICAgICAgaWYgKHRoaXMuX2lzT3duZXJGbGQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsbEZsZEZpZWxkKHBhcnNlciwgZGF0YVZpZXcpO1xyXG4gICAgICAgICAgdGhpcy5faXNPd25lckZsZCA9IGZhbHNlOyAvLyBtdXN0IHRvIGJlIGFmdGVyIEZpbGxGbGRGaWVsZFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmZpbGxGbGRGaWVsZChwYXJzZXIsIGRhdGFWaWV3KTsgLy8gaXQncyBub3QgbmVlZCAoKERhdGFWaWV3KWRhdGFWaWV3KSwgaXQncyBub3QgZmlyc3QgPGZsZCA+XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19MSU5LOlxyXG4gICAgICAgIHRoaXMuZmlsbExpbmsocGFyc2VyLCBkYXRhVmlldyk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19UQUdfQ09OVFJPTDpcclxuICAgICAgICBpZiAodGhpcy5fY3RybFByb3BzID09IG51bGwpXHJcbiAgICAgICAgICB0aGlzLl9jdHJsUHJvcHMgPSBuZXcgUHJvcFRhYmxlKCk7XHJcblxyXG4gICAgICAgIC8vIGZpbGwgdGhlIHByb3AgdGFibGUgdXNpbmcgdGhlIGV4aXN0aW5nIHByb3BlcnRpZXNcclxuICAgICAgICB0aGlzLl9jdHJsUHJvcHMuZmlsbERhdGFCeUV4aXN0cyh0aGlzLlRhc2ssIHBhcnNlcik7XHJcblxyXG4gICAgICAgIC8vIGlmIHZpcnR1YWwgZmllbGQgY2F1c2VzIHJlY29tcHV0ZSBvZiByZXBlYXRhYmxlIGNvbnRyb2xcclxuICAgICAgICBpZiAodGhpcy5fY3RybFByb3BzLmdldEN0cmxSZWYoKSAhPSBudWxsICYmIHRoaXMuX2N0cmxQcm9wcy5nZXRDdHJsUmVmKCkuSXNSZXBlYXRhYmxlICYmIHRoaXMuT3duZXJGbGQuSXNWaXJ0dWFsICYmXHJcbiAgICAgICAgICAhKHRoaXMuT3duZXJGbGQuaGFzSW5pdEV4cCgpKSlcclxuICAgICAgICAgIHRoaXMuT3duZXJGbGQuY2F1c2VUYWJsZUludmFsaWRhdGlvbih0cnVlKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX1RBR19GT1JNX1BST1BFUlRJRVM6XHJcbiAgICAgICAgaWYgKHRoaXMuX2Zvcm1Qcm9wcyA9PSBudWxsKVxyXG4gICAgICAgICAgdGhpcy5fZm9ybVByb3BzID0gbmV3IFByb3BUYWJsZSgpO1xyXG5cclxuICAgICAgICAvLyBmaWxsIHRoZSBwcm9wIHRhYmxlIHVzaW5nIHRoZSBleGlzdGluZyBwcm9wZXJ0aWVzXHJcbiAgICAgICAgdGhpcy5fZm9ybVByb3BzLmZpbGxEYXRhQnlFeGlzdHModGhpcy5UYXNrLCBwYXJzZXIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfRkxEX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBSZWNvbXB1dGUuIEluc2VydCBlbHNlIGlmIHRvIFJlY29tcHV0ZS5pbml0SW5uZXJPYmplY3RzIGZvciBcIiArIGZvdW5kVGFnTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEFkZFJlY29tcHV0ZUl0ZW0oaXRlbTogRmllbGRCYXNlIHwgRGF0YXZpZXdIZWFkZXJCYXNlKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fcmNtcE9yZGVyID09PSBudWxsKVxyXG4gICAgICB0aGlzLl9yY21wT3JkZXIgPSBuZXcgTGlzdCgpO1xyXG4gICAgdGhpcy5fcmNtcE9yZGVyLnB1c2goaXRlbSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZmlsbCB0aGUgcmVjb21wdXRlZCBsaW5rIGRhdGEgKG9ubHkgaWQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGZpbGxMaW5rKHBhcnNlcjogWG1sUGFyc2VyLCBkYXRhVmlldzogRGF0YVZpZXcpOiB2b2lkIHtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19URVJNLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG4gICAgICAvLyBsYXN0IHBvc2l0aW9uIG9mIGl0cyB0YWdcclxuICAgICAgbGV0IHRhZzogU3RyaW5nID0gcGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KTtcclxuICAgICAgcGFyc2VyLmFkZDJDdXJySW5kZXgodGFnLmluZGV4T2YoQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0xJTkspICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0xJTksubGVuZ3RoKTtcclxuXHJcbiAgICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTHN1YnN0cmluZyhlbmRDb250ZXh0KSwgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuXHJcbiAgICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgICBsZXQgYXR0cmlidXRlOiBzdHJpbmcgPSAodG9rZW5zVmVjdG9yLmdldF9JdGVtKGopKTtcclxuICAgICAgICBsZXQgdmFsdWVTdHI6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpKTtcclxuXHJcbiAgICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfSUQpXHJcbiAgICAgICAgICB0aGlzLkFkZFJlY29tcHV0ZUl0ZW0oKDxUYXNrPmRhdGFWaWV3LmdldFRhc2soKSkuZ2V0RGF0YXZpZXdIZWFkZXJzKCkuZ2V0RGF0YXZpZXdIZWFkZXJCeUlkKFhtbFBhcnNlci5nZXRJbnQodmFsdWVTdHIpKSk7XHJcblxyXG4gICAgICAgIGVsc2UgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiVGhlcmUgaXMgbm8gc3VjaCB0YWcgaW4gUmVjb21wdXRlIGNsYXNzLiBJbnNlcnQgY2FzZSB0byBSZWNvbXB1dGUuZmlsbExpbmsgZm9yIFwiICsgYXR0cmlidXRlKTtcclxuICAgICAgfVxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTsgLy8gdG8gZGVsZXRlIFwiLz5cIiB0b29cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZVxyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBSZWNvbXB1dGUuZmlsbExpbmsoKSBvdXQgb2YgYm91bmRzXCIpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEluaXQgUmVjb21wdXRlQnkgbWVtYmVyIGFuZCBpbml0IHJlZmVyZW5jZSBmcm9tIHRoZSBGaWVsZFJvb3QgdG8gdGhlIFJlY29tcHV0ZSBvYmplY3RcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwieG1sUGFyc2VyLmdldFhNTGRhdGEoKVwiPiwgaW5wdXQgc3RyaW5nIGZ1bGwgWE1MLmlubmVyVGV4dCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwieG1sUGFyc2VyLmdldEN1cnJJbmRleCgpXCI+LCBpbmRleCBvZiBzdGFydCBmaXJzdCA8ZmxkIC4uLj4gdGFnIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCIoKERhdGFWaWV3KWRhdGFWaWV3KVwiPnJlZmVyZW5jZSB0byBhbGwgRGF0YVZpZXcgb2JqZWN0LCB3aGljaCBjb25zaXN0IHJlbGV2YW50IGZpZWxkcyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gaW5kZXggb2YgZW5kIG9mIDxmbGQgLi4uPiB0YWcgPC9yZXR1cm5zPlxyXG4gIHByaXZhdGUgZmlsbEZsZEZpZWxkKHBhcnNlcjogWG1sUGFyc2VyLCBkYXRhVmlldzogRGF0YVZpZXcpOiB2b2lkIHtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YodGhpcy5faXNPd25lckZsZFxyXG4gICAgICA/IFhNTENvbnN0YW50cy5UQUdfQ0xPU0VcclxuICAgICAgOiBYTUxDb25zdGFudHMuVEFHX1RFUk0sIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcblxyXG4gICAgaWYgKGVuZENvbnRleHQgIT09IC0xICYmIGVuZENvbnRleHQgPCBwYXJzZXIuZ2V0WE1MZGF0YSgpLmxlbmd0aCkge1xyXG5cclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IFN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKFhNTENvbnN0YW50cy5NR19UQUdfRkxEKSArIFhNTENvbnN0YW50cy5NR19UQUdfRkxELmxlbmd0aCk7XHJcblxyXG4gICAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCksXHJcbiAgICAgICAgWE1MQ29uc3RhbnRzLlhNTF9BVFRSX0RFTElNKTtcclxuICAgICAgdGhpcy5pbml0RWxlbWVudHModG9rZW5zVmVjdG9yLCBkYXRhVmlldyk7XHJcbiAgICAgIGlmICh0aGlzLl9pc093bmVyRmxkKSB7XHJcbiAgICAgICAgcGFyc2VyLnNldEN1cnJJbmRleCgrK2VuZENvbnRleHQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGVuZENvbnRleHQgKyBYTUxDb25zdGFudHMuVEFHX1RFUk0ubGVuZ3RoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gQ29tbWFuZC5GaWxsRGF0YSgpIG91dCBvZiBib3VuZHNcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgTWFrZSBpbml0aWFsaXphdGlvbiBvZiBwcml2YXRlIGVsZW1lbnRzIGJ5IGZvdW5kIHRva2Vuc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0b2tlbnNWZWN0b3JcIj5mb3VuZCB0b2tlbnMsIHdoaWNoIGNvbnNpc3QgYXR0cmlidXRlL3ZhbHVlIG9mIGV2ZXJ5IGZvdW5kIGVsZW1lbnQgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIigoRGF0YVZpZXcpZGF0YVZpZXcpXCI+cmVmZXJlbmNlIHRvIGZpZWxkIG9iamVjdHMsIGZvciA8ZmxkIGlkID0gLi4uPlxyXG4gIC8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoRGF0YVZpZXcpZGF0YVZpZXcpPT1udWxsPT4gaXQncyBmaXJzdCBmb3VuZCBmaWVsZCwgbmVlZCB0byBpbml0IHJlZmVyZW5jZVxyXG4gIC8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gdGhlIEZpZWxkUm9vdFxyXG4gIC8vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoRGF0YVZpZXcpZGF0YVZpZXcpIT1udWxsPT4gYWRkIHRoZSBkYXRhIHRvIGN1cnJpZW50IFJlY29yZCwgaXQncyBub3QgZmlyc3QgPGZsZD5cclxuICAvLy8gPC9wYXJhbT5cclxuICBwcml2YXRlIGluaXRFbGVtZW50cyh0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiwgZGF0YVZpZXc6IERhdGFWaWV3KTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBqOiBudW1iZXIgPSAwOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiArPSAyKSB7XHJcbiAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICBsZXQgdmFsdWVTdHI6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpKTtcclxuXHJcbiAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JRDoge1xyXG4gICAgICAgICAgbGV0IGZsZElkOiBudW1iZXIgPSBYbWxQYXJzZXIuZ2V0SW50KHZhbHVlU3RyKTtcclxuICAgICAgICAgIGxldCBmbGQgPSA8RmllbGRCYXNlPmRhdGFWaWV3LmdldEZpZWxkKGZsZElkKTtcclxuICAgICAgICAgIGlmICh0aGlzLl9pc093bmVyRmxkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuT3duZXJGbGQgPSBmbGQ7XHJcbiAgICAgICAgICAgIHRoaXMuT3duZXJGbGQuc2V0UmVjb21wdXRlKHRoaXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGZsZC5zZXRSZWNvbXB1dGVkKCk7XHJcbiAgICAgICAgICAgIHRoaXMuQWRkUmVjb21wdXRlSXRlbShmbGQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SRUNPTVBVVEVCWTpcclxuICAgICAgICAgIHRoaXMuUmNtcE1vZGUgPSA8UmVjb21wdXRlX1JjbXBCeT52YWx1ZVN0clswXTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfU1VCX0ZPUk1fUkNNUDpcclxuICAgICAgICAgIHRoaXMuX3N1YkZvcm1zT25seVJlY29tcCA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX0hBU19MSU5LX1JFQ09NUFVURVM6XHJcbiAgICAgICAgICB0aGlzLl9oYXNTZXJ2ZXJMaW5rc1JlY29tcHV0ZXMgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGNhc2UgWE1MQ29uc3RhbnRzLk1HX0FUVFJfTkFNRTpcclxuICAgICAgICAgIC8qIGlnbm9yZSB0aGUgbmFtZSAqL1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiBSZWNvbXB1dGUgY2xhc3MuIEluc2VydCBjYXNlIHRvIFJlY29tcHV0ZS5pbml0RWxlbWVudHMgZm9yIFwiICsgYXR0cmlidXRlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZXhlY3V0ZSByZWNvbXB1dGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmVjXCI+dGhlIHJlY29yZCBvbiB3aGljaCB0aGUgcmVjb21wdXRlIGlzIGV4ZWN1dGVkPC9wYXJhbT5cclxuICBwdWJsaWMgYXN5bmMgZXhlY3V0ZShyZWM6IFJlY29yZCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IGk6IG51bWJlcjtcclxuICAgIGxldCBmbGQ6IEZpZWxkQmFzZTtcclxuICAgIGxldCBjbWRzVG9TZXJ2ZXI6IENvbW1hbmRzVGFibGUgPSA8Q29tbWFuZHNUYWJsZT50aGlzLlRhc2suZ2V0TUdEYXRhKCkuQ21kc1RvU2VydmVyO1xyXG4gICAgbGV0IGNtZDogSUNsaWVudENvbW1hbmQ7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcmVjLnNldEluUmVjb21wdXRlKHRydWUpO1xyXG4gICAgICB0aGlzLlRhc2suU2V0SW5SZWNvbXB1dGUgKHRydWUpO1xyXG4gICAgICB0aGlzLlNldFN1YmZvcm1zSW5SZWNvbXB1dGUodHJ1ZSk7XHJcbiAgICAgIGxldCBhbGxvd1NlcnZlclJlY29tcHV0ZTogYm9vbGVhbiA9IHRoaXMuX2hhc1NlcnZlckxpbmtzUmVjb21wdXRlcyB8fFxyXG4gICAgICAgICAgKHRoaXMuVGFzay5nZXRGb3JtKCkuQWxsb3dlZFN1YmZvcm1SZWNvbXB1dGUgJiYgYXdhaXQgdGhpcy5jaGVja1JlZnJlc2hTdWJGb3JtcygpKTtcclxuXHJcbiAgICAgIC8vIFNFUlZFUlxyXG4gICAgICBpZiAodGhpcy5SY21wTW9kZSAhPT0gUmVjb21wdXRlX1JjbXBCeS5DTElFTlQgJiYgYWxsb3dTZXJ2ZXJSZWNvbXB1dGUpIHtcclxuICAgICAgICBsZXQgaW5DbGllbnQ6IGJvb2xlYW4gPSB0aGlzLl9zdWJGb3Jtc09ubHlSZWNvbXA7XHJcbiAgICAgICAgdGhpcy5UYXNrLkV4ZWN1dGVDbGllbnRTdWJmb3JtUmVmcmVzaCA9IGZhbHNlO1xyXG5cclxuICAgICAgICAvLyBpZiB0aGUgcmVjb21wdXRlIGlzIG5vdCBvbmx5IGR1ZSB0byBzdWItZm9ybXMgZ28gdG8gc2VydmVyXHJcbiAgICAgICAgaWYgKGluQ2xpZW50KSB7XHJcbiAgICAgICAgICBpbkNsaWVudCA9IGF3YWl0IHRoaXMuVGFzay5wcmVwYXJlQ2FjaGUodHJ1ZSk7XHJcbiAgICAgICAgICAvLyBpZiBhbGwgc3ViLWZvcm0gYXJlIG5vdCB1cGRhdGVcclxuICAgICAgICAgIGlmIChpbkNsaWVudClcclxuICAgICAgICAgICAgaW5DbGllbnQgPSBhd2FpdCB0aGlzLlRhc2sudGVzdEFuZFNldCh0cnVlKTsgLy8gdHJ5IHRvIHRha2UgZGF0YXZpZXdzIGZyb20gY2FjaGVcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFpbkNsaWVudCkge1xyXG4gICAgICAgICAgKDxGaWVsZHNUYWJsZT50aGlzLlRhc2suRGF0YVZpZXcuR2V0RmllbGRzVGFiKCkpLnNldFNlcnZlclJjbXAodHJ1ZSk7XHJcbiAgICAgICAgICBjbWQgPSBDb21tYW5kRmFjdG9yeS5DcmVhdGVSZWNvbXB1dGVDb21tYW5kKHRoaXMuVGFzay5nZXRUYXNrVGFnKCksIHRoaXMuT3duZXJGbGQuZ2V0SWQoKSwgIXRoaXMuVGFzay5nZXRGb3JtKCkuQWxsb3dlZFN1YmZvcm1SZWNvbXB1dGUpO1xyXG4gICAgICAgICAgY21kc1RvU2VydmVyLkFkZChjbWQpO1xyXG4gICAgICAgICAgYXdhaXQgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKS5FeGVjdXRlKENvbW1hbmRzUHJvY2Vzc29yQmFzZV9TZW5kaW5nSW5zdHJ1Y3Rpb24uVEFTS1NfQU5EX0NPTU1BTkRTKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuVGFzay5FeGVjdXRlQ2xpZW50U3ViZm9ybVJlZnJlc2gpXHJcbiAgICAgICAgICBhd2FpdCB0aGlzLlJlZnJlc2hTdWJmb3JtcygpO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGF3YWl0IHRoaXMucmVjUHJlZml4U3ViRm9ybXMoKSlcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWNTdWZmaXhTdWJGb3JtcygpO1xyXG4gICAgICAgICAgdGhpcy5UYXNrLkNsZWFuRG9TdWJmb3JtUHJlZml4U3VmZml4KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIENMSUVOVFxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgRmxvd01vbml0b3JRdWV1ZS5JbnN0YW5jZS5hZGRSZWNvbXB1dGUodGhpcy5Pd25lckZsZC5nZXRWYXJOYW1lKCksIHRoaXMuVGFzay5HZXRUYXNrRGV0YWlscygpKTtcclxuXHJcbiAgICAgICAgICAvLyBGT1JNIFBST1BFUlRJRVNcclxuICAgICAgICAgIGlmICh0aGlzLl9mb3JtUHJvcHMgIT0gbnVsbClcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZm9ybVByb3BzLlJlZnJlc2hEaXNwbGF5KGZhbHNlLCBmYWxzZSk7XHJcblxyXG4gICAgICAgICAgLy8gQ1RSTCBQUk9QRVJUSUVTXHJcbiAgICAgICAgICBpZiAodGhpcy5fY3RybFByb3BzICE9IG51bGwpXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2N0cmxQcm9wcy5SZWZyZXNoRGlzcGxheShmYWxzZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAgIC8vIHJlLWN1bXB1dGUgY2xpZW50IHNpZGUgZmllbGRzIGFuZCBsaW5rc1xyXG4gICAgICAgICAgaWYgKHRoaXMuX3JjbXBPcmRlciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLl9yY21wT3JkZXIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5fcmNtcE9yZGVyLmdldF9JdGVtKGkpIGluc3RhbmNlb2YgRmllbGRCYXNlKSB7XHJcbiAgICAgICAgICAgICAgICBmbGQgPSA8RmllbGRCYXNlPnRoaXMuX3JjbXBPcmRlci5nZXRfSXRlbShpKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmxkUmNtcChmbGQsIHRydWUpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9yY21wT3JkZXIuZ2V0X0l0ZW0oaSkgaW5zdGFuY2VvZiBEYXRhdmlld0hlYWRlckJhc2UpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjdXJMbmsgPSA8RGF0YXZpZXdIZWFkZXJCYXNlPnRoaXMuX3JjbXBPcmRlci5nZXRfSXRlbShpKTtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGN1ckxuay5nZXRMaW5rZWRSZWNvcmQocmVjKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSBoYXZlIHJlY29tcHV0ZWQgYSBsaW5rIHdlIHNob3VsZCBhbHNvIHN0YXJ0IHRoZSByZWNvbXB1dGUgcHJvY2VzcyBvbiBhbGwgb2YgaXRzIGZpZWxkc1xyXG4gICAgICAgICAgICAgICAgbGV0IGxpbmtGaWVsZHM6IExpc3Q8RmllbGRCYXNlPiA9ICg8RmllbGRzVGFibGU+dGhpcy5UYXNrLkRhdGFWaWV3LkdldEZpZWxkc1RhYigpKS5nZXRMaW5rRmllbGRzKGN1ckxuay5JZCk7XHJcbiAgICAgICAgICAgICAgICByZWMuc2V0SW5Db21wdXRlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNhdmVJbkZvcmNlVXBkYXRlOiBib29sZWFuID0gcmVjLkluRm9yY2VVcGRhdGU7XHJcbiAgICAgICAgICAgICAgICByZWMuSW5Gb3JjZVVwZGF0ZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCBsaW5rRmllbGRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmxkUmNtcChsaW5rRmllbGRzLmdldF9JdGVtKGopLCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlYy5jbGVhckZsYWcoKGxpbmtGaWVsZHMuZ2V0X0l0ZW0oaikpLmdldElkKCksIFJlY29yZC5GTEFHX1VQREFURUQpO1xyXG4gICAgICAgICAgICAgICAgICByZWMuY2xlYXJGbGFnKChsaW5rRmllbGRzLmdldF9JdGVtKGopKS5nZXRJZCgpLCBSZWNvcmQuRkxBR19NT0RJRklFRCk7XHJcbiAgICAgICAgICAgICAgICAgIHJlYy5jbGVhckZsYWcoKGxpbmtGaWVsZHMuZ2V0X0l0ZW0oaikpLmdldElkKCksIFJlY29yZC5GTEFHX0NSU1JfTU9ESUZJRUQpO1xyXG4gICAgICAgICAgICAgICAgICByZWMuY2xlYXJIaXN0b3J5RmxhZygobGlua0ZpZWxkcy5nZXRfSXRlbShqKSkuZ2V0SWQoKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZWMuSW5Gb3JjZVVwZGF0ZSA9IHNhdmVJbkZvcmNlVXBkYXRlO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHN0YXJ0IHJlY29tcHV0ZSBwcm9jZXNzIG9uIHRoZSByZXQgdmFsIG9mIHRoZSBsaW5rXHJcbiAgICAgICAgICAgICAgICBsZXQgcmV0RmxkOiBGaWVsZEJhc2UgPSBjdXJMbmsuUmV0dXJuRmllbGQ7XHJcbiAgICAgICAgICAgICAgICBpZiAocmV0RmxkICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZmxkUmNtcChyZXRGbGQsIGZhbHNlKTtcclxuXHJcbiAgICAgICAgICAgICAgICByZWMuc2V0SW5Db21wdXRlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJlYy5zZXRGb3JjZVNhdmVPcmcodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLlJlZnJlc2hTdWJmb3JtcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKFwiaW4gUmVjb21wdXRlLmV4ZWN1dGUoKTogXCIgKyBlLk1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gIC8vIEVORCBDTElFTlQgQkxPQ0tcclxuICAgICAgdGhpcy5UYXNrLlNldEluUmVjb21wdXRlIChmYWxzZSk7XHJcbiAgICAgIHRoaXMuU2V0U3ViZm9ybXNJblJlY29tcHV0ZShmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgIHJlYy5idWlsZExpbmtzUG9zU3RyKCk7XHJcbiAgICAgIHJlYy5zZXRJblJlY29tcHV0ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8gU3ViZm9ybXMgcmVjb21wdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFzeW5jIFJlZnJlc2hTdWJmb3JtcygpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLlRhc2suZ2V0Rm9ybSgpLkFsbG93ZWRTdWJmb3JtUmVjb21wdXRlKSB7XHJcbiAgICAgIGxldCBzdWJmb3Jtc1RvUmVmcmVzaDogTGlzdDxUYXNrPiA9IGF3YWl0IHRoaXMuR2V0U3ViZm9ybXNUb1JlZnJlc2goKTtcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN1YmZvcm1zVG9SZWZyZXNoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHN1YmZvcm1UYXNrOiBUYXNrID0gc3ViZm9ybXNUb1JlZnJlc2guZ2V0X0l0ZW0oaSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5UYXNrLlN1YmZvcm1SZWZyZXNoKHN1YmZvcm1UYXNrLCB0cnVlKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgU2V0U3ViZm9ybXNJblJlY29tcHV0ZShpblJlY29tcHV0ZTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG5cclxuICAgICAgbGV0IHN1YmZvcm1zVG9SZWZyZXNoOiBMaXN0PFRhc2s+ID0gYXdhaXQgdGhpcy5HZXRTdWJmb3Jtc1RvUmVmcmVzaCgpO1xyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3ViZm9ybXNUb1JlZnJlc2gubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgc3ViZm9ybVRhc2s6IFRhc2sgPSBzdWJmb3Jtc1RvUmVmcmVzaC5nZXRfSXRlbShpKTtcclxuICAgICAgICAgIHN1YmZvcm1UYXNrLlNldEluUmVjb21wdXRlKGluUmVjb21wdXRlKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHJlY29tcHV0ZSBmaWVsZHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZmxkXCI+LSB0aGUgZmllZGwgdG8gcmVjb21wdXRlPC9wYXJhbT5cclxuICBwcml2YXRlIGFzeW5jIGZsZFJjbXAoZmxkOiBGaWVsZEJhc2UsIGNvbXB1dGVGaWVsZDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKGZsZC5Jc1ZpcnR1YWxcclxuICAgICAgfHwgKCh0aGlzLlRhc2suZ2V0TW9kZSgpICE9PSBDb25zdGFudHMuVEFTS19NT0RFX1FVRVJZIHx8XHJcbiAgICAgICAgRW52aXJvbm1lbnQuSW5zdGFuY2UuYWxsb3dVcGRhdGVJblF1ZXJ5TW9kZSh0aGlzLlRhc2suZ2V0Q29tcElkeCgpKSkpKSB7XHJcbiAgICAgIGlmICghZmxkLmlzSW5FdmFsUHJvY2VzcygpKSB7XHJcbiAgICAgICAgaWYgKGNvbXB1dGVGaWVsZClcclxuICAgICAgICAgIGF3YWl0IGZsZC5jb21wdXRlKHRydWUpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIGF3YWl0IGZsZC5zZXRWYWx1ZUFuZFN0YXJ0UmVjb21wdXRlKGZsZC5nZXRWYWx1ZShmYWxzZSksIGZsZC5pc051bGwoKSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTtcclxuICAgICAgICBhd2FpdCBmbGQudXBkYXRlRGlzcGxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pjwvc3VtbWFyeT5cclxuICBwcml2YXRlIGJ1aWxkU3ViRm9ybUxpc3QoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fc3ViRm9ybXMgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fc3ViRm9ybXMgPSBuZXcgTGlzdDxUYXNrPigpO1xyXG4gICAgICBsZXQgc3ViVGFza3NUYWI6IFRhc2tzVGFibGUgPSB0aGlzLlRhc2suZ2V0U3ViVGFza3MoKTtcclxuXHJcbiAgICAgIGlmIChzdWJUYXNrc1RhYiAhPT0gbnVsbCkge1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBzdWJUYXNrc1RhYi5nZXRTaXplKCk7IGkgPSBpICsgMSkge1xyXG4gICAgICAgICAgbGV0IHN1YkZvcm06IFRhc2sgPSA8VGFzaz5zdWJUYXNrc1RhYi5nZXRUYXNrKGkpO1xyXG4gICAgICAgICAgLy8gUUNSICMyOTkxNTMuIEFkZCBvbmx5IHN1YmZvcm1zIChub3Qgc3VidGFza3MpLlxyXG4gICAgICAgICAgaWYgKHN1YkZvcm0uZ2V0Rm9ybSgpLmdldFN1YkZvcm1DdHJsKCkgIT09IG51bGwgJiYgc3ViRm9ybS5yZWZyZXNoZXNPbih0aGlzLk93bmVyRmxkLmdldElkKCkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3N1YkZvcm1zLnB1c2goc3ViRm9ybSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFJlbW92ZXMgdGhlIHNwZWNpZmljIHRhc2sgZnJvbSBzdWJmb3JtcyBsaXN0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWJmb3JtVGFza1wiPjwvcGFyYW0+XHJcbiAgUmVtb3ZlU3ViZm9ybShzdWJmb3JtVGFzazogVGFzayk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3ViRm9ybXMuUmVtb3ZlKHN1YmZvcm1UYXNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSW5zZXJ0cyB0aGUgc3BlY2lmaWMgc3ViZm9ybSB0YXNrIGludG8gdGhlIHN1YmZvcm0gbGlzdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3ViZm9ybVRhc2tcIj48L3BhcmFtPlxyXG4gIEFkZFN1YmZvcm0oc3ViZm9ybVRhc2s6IFRhc2spOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9zdWJGb3JtcyA9PT0gbnVsbClcclxuICAgICAgdGhpcy5fc3ViRm9ybXMgPSBuZXcgTGlzdDxUYXNrPigpO1xyXG4gICAgaWYgKCF0aGlzLl9zdWJGb3Jtcy5Db250YWlucyhzdWJmb3JtVGFzaykpXHJcbiAgICAgIHRoaXMuX3N1YkZvcm1zLnB1c2goc3ViZm9ybVRhc2spO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGUgcmVjb3JkIHN1ZmZpeCBmb3IgdGhlIGFmZmVjdGVkIHN1YmZvcm1zIGlmIFJlZnJlc2ggaXMgbmVlZGVkXHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSBhbmQgaXQgaXMgbmVlZGVkIHRvIHJlZnJlc2hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgYXN5bmMgcmVjU3VmZml4U3ViRm9ybXMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgbGV0IHN1YkZvcm06IFRhc2s7XHJcbiAgICBsZXQgc3VjY2Vzc2Z1bDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgc3ViZm9ybUN0cmw6IE1nQ29udHJvbDtcclxuXHJcbiAgICAvLyBidWlsZCB0aGUgc3ViZm9ybXMgbGlzdCBhbmQgc2F2ZSBpdCBmb3IgZnV0dXJlIHVzZVxyXG4gICAgdGhpcy5idWlsZFN1YkZvcm1MaXN0KCk7XHJcblxyXG4gICAgLy8gZXhlY3V0ZSBcInJlY29yZCBzdWZmaXhcIiBmb3IgdGhlIHN1YmZvcm1zXHJcbiAgICBmb3IgKGkgPSAwOyBzdWNjZXNzZnVsICYmIGkgPCB0aGlzLl9zdWJGb3Jtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBzdWJGb3JtID0gdGhpcy5fc3ViRm9ybXMuZ2V0X0l0ZW0oaSk7XHJcbiAgICAgIHN1YmZvcm1DdHJsID0gPE1nQ29udHJvbD5zdWJGb3JtLmdldEZvcm0oKS5nZXRTdWJGb3JtQ3RybCgpO1xyXG4gICAgICBpZiAoc3ViRm9ybS5pc1N0YXJ0ZWQoKSAmJiAhc3ViZm9ybUN0cmwuUmVmcmVzaE9uVmlzaWJsZSAmJlxyXG4gICAgICAgIGF3YWl0IHN1YmZvcm1DdHJsLmNoZWNrUHJvcChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BVVRPX1JFRlJFU0gsIHRydWUpICYmICFzdWJGb3JtLkluU2VsZWN0XHJcbiAgICAgICAgJiYgc3ViRm9ybS5Eb1N1YmZvcm1QcmVmaXhTdWZmaXgpIHtcclxuICAgICAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5oYW5kbGVJbnRlcm5hbEV2ZW50V2l0aFRhc2soc3ViRm9ybSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1JFQ19TVUZGSVgpO1xyXG4gICAgICAgIHN1Y2Nlc3NmdWwgPSAhQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuR2V0U3RvcEV4ZWN1dGlvbkZsYWcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgKDxEYXRhVmlldz50aGlzLlRhc2suRGF0YVZpZXcpLnNldFByZXZDdXJyUmVjKCk7XHJcbiAgICByZXR1cm4gKHN1Y2Nlc3NmdWwpO1xyXG4gIH1cclxuXHJcbiAgLy8gY2hlY2sgaWYgZG8gcmVmcmVzaCBmb3IgYW55IHN1YmZvcm0gdGhhdCB0aGUgZmllbGQgYWZmZWN0c1xyXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tSZWZyZXNoU3ViRm9ybXMoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgcmVmcmVzaDogYm9vbGVhbiA9ICF0aGlzLl9zdWJGb3Jtc09ubHlSZWNvbXA7XHJcbiAgICBsZXQgc3ViZm9ybXNUb1JlZnJlc2g6IExpc3Q8VGFzaz4gPSBhd2FpdCB0aGlzLkdldFN1YmZvcm1zVG9SZWZyZXNoKCk7XHJcbiAgICBpZiAoc3ViZm9ybXNUb1JlZnJlc2gubGVuZ3RoID4gMClcclxuICAgICAgcmVmcmVzaCA9IHRydWU7XHJcbiAgICByZXR1cm4gcmVmcmVzaDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyBhIGxpc3Qgb2YgdGhvc2Ugc3ViZm9ybXMgdGhhdCBtdXN0IGJlIHJlZnJlc2hlZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz5saXN0IG9mIHN1YmZvcm1zIHRvIHJlZnJlc2g8L3JldHVybnM+XHJcbiAgcHJpdmF0ZSBhc3luYyBHZXRTdWJmb3Jtc1RvUmVmcmVzaCgpOiBQcm9taXNlPExpc3Q8VGFzaz4+IHtcclxuXHJcbiAgICBsZXQgc3ViVGFza3M6IExpc3Q8VGFzaz4gPSBuZXcgTGlzdDxUYXNrPigpO1xyXG4gICAgbGV0IHN1YmZvcm1DdHJsOiBNZ0NvbnRyb2w7XHJcbiAgICAvLyBidWlsZCB0aGUgc3ViZm9ybXMgbGlzdCBhbmQgc2F2ZSBpdCBmb3IgZnV0dXJlIHVzZVxyXG4gICAgdGhpcy5idWlsZFN1YkZvcm1MaXN0KCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGk8dGhpcy5fc3ViRm9ybXMubGVuZ3RoOyBpKyspXHJcbiAgICB7XHJcbiAgICAgIGxldCBzdWJUYXNrID0gdGhpcy5fc3ViRm9ybXNbaV07XHJcbiAgICAgIHN1YmZvcm1DdHJsID0gPE1nQ29udHJvbD5zdWJUYXNrLmdldEZvcm0oKS5nZXRTdWJGb3JtQ3RybCgpO1xyXG4gICAgICBpZiAoc3ViVGFzay5pc1N0YXJ0ZWQoKSAmJiBhd2FpdCAgc3ViZm9ybUN0cmwuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0FVVE9fUkVGUkVTSCwgdHJ1ZSkgJiZcclxuICAgICAgICAhc3ViVGFzay5JblNlbGVjdCAmJiAhc3ViVGFzay5JbkVuZFRhc2spIHtcclxuXHJcbiAgICAgICAgLy8gY29tcHV0ZSB0aGUgdmlzaWJpbGl0eSBwcm9wZXJ0eSBmb3IgdGhlIHN1YmZvcm0gY29udHJvbCBiZWZvcmUgdXNlIGl0IGluIGlzVmlzaWJsZSgpIG1ldGhvZFxyXG4gICAgICAgIGF3YWl0IHN1YmZvcm1DdHJsLmNoZWNrUHJvcChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFLCB0cnVlKTtcclxuICAgICAgICBpZiAoIXN1YmZvcm1DdHJsLmlzVmlzaWJsZSgpICYmICFhd2FpdCBzdWJmb3JtQ3RybC5jaGVja1Byb3AoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfUkVGUkVTSF9XSEVOX0hJRERFTiwgZmFsc2UpKVxyXG4gICAgICAgICAgc3ViZm9ybUN0cmwuUmVmcmVzaE9uVmlzaWJsZSA9IHRydWU7XHJcbiAgICAgICAgZWxzZSBzdWJUYXNrcy5wdXNoKHN1YlRhc2spO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3ViVGFza3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZXhlY3V0ZSByZWNvcmQgcHJlZml4IGZvciB0aGUgYWZmZWN0ZWQgc3ViZm9ybXMgaWYgUmVmcmVzaCBpcyBuZWVkZWRcclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IGFuZCBpdCBpcyBuZWVkZWQgdG8gcmVmcmVzaFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyByZWNQcmVmaXhTdWJGb3JtcygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCBpOiBudW1iZXI7XHJcbiAgICBsZXQgc3ViRm9ybTogVGFzaztcclxuICAgIGxldCBzdWNjZXNzZnVsOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGxldCBzdWJmb3JtQ3RybDogTWdDb250cm9sO1xyXG5cclxuICAgIC8vIGJ1aWxkIHRoZSBzdWJmb3JtcyBsaXN0IGFuZCBzYXZlIGl0IGZvciBmdXR1cmUgdXNlXHJcbiAgICB0aGlzLmJ1aWxkU3ViRm9ybUxpc3QoKTtcclxuXHJcbiAgICAvLyBleGVjdXRlIFwicmVjb3JkIHByZWZpeFwiIGZvciB0aGUgc3ViZm9ybXNcclxuICAgIGZvciAoaSA9IDA7IHN1Y2Nlc3NmdWwgJiYgaSA8IHRoaXMuX3N1YkZvcm1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHN1YkZvcm0gPSB0aGlzLl9zdWJGb3Jtcy5nZXRfSXRlbShpKTtcclxuICAgICAgc3ViZm9ybUN0cmwgPSA8TWdDb250cm9sPnN1YkZvcm0uZ2V0Rm9ybSgpLmdldFN1YkZvcm1DdHJsKCk7XHJcbiAgICAgIGlmIChzdWJGb3JtLmlzU3RhcnRlZCgpICYmICFzdWJmb3JtQ3RybC5SZWZyZXNoT25WaXNpYmxlXHJcbiAgICAgICAgJiYgYXdhaXQgIHN1YmZvcm1DdHJsLmNoZWNrUHJvcChQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9BVVRPX1JFRlJFU0gsIHRydWUpXHJcbiAgICAgICAgJiYgIXN1YkZvcm0uSW5TZWxlY3QgJiYgc3ViRm9ybS5Eb1N1YmZvcm1QcmVmaXhTdWZmaXgpIHtcclxuICAgICAgICBhd2FpdCBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5oYW5kbGVJbnRlcm5hbEV2ZW50V2l0aFRhc2tBbmRTdWJmb3JtUmVmcmVzaChzdWJGb3JtLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfUkVDX1BSRUZJWCwgdHJ1ZSk7XHJcbiAgICAgICAgc3VjY2Vzc2Z1bCA9ICFBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5HZXRTdG9wRXhlY3V0aW9uRmxhZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3VjY2Vzc2Z1bDtcclxuICB9XHJcblxyXG4gIG5vdGlmeVNlcnZlck9uQ2hhbmdlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUmNtcE1vZGUgPT09IFJlY29tcHV0ZV9SY21wQnkuU0VSVkVSX09OX0NIQU5HRTtcclxuICB9XHJcblxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBpZiB0aGUgY2xpZW50IGRvZXNuJ3Qga25vdyB0byByZWNvbXB1dGUgdGhpcyBmaWVsZDwvcmV0dXJucz5cclxuICBpc1NlcnZlclJjbXAoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5SY21wTW9kZSAhPT0gUmVjb21wdXRlX1JjbXBCeS5DTElFTlQ7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -60,4 +60,4 @@ export class RecomputeTable {
60
60
  return true;
61
61
  }
62
62
  }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21wdXRlVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1JlY29tcHV0ZVRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHekUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFPL0MsTUFBTSxPQUFPLGNBQWM7SUFLakIsY0FBYyxDQUFDLE1BQWlCO1FBQ3RDLElBQUksVUFBVSxHQUFXLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLEtBQUssR0FBVyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBRTdJLElBQUksSUFBSSxHQUFTLElBQUksQ0FBQztRQUN0QixJQUFJLFlBQVksR0FBaUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakgsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUks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LENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakQsSUFBSSxTQUFTLEdBQWMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFN0MsQ0FBQzthQUNJLElBQUksV0FBVyxLQUFLLEdBQUcsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUM3RCxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7YUFDSSxDQUFDO1lBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FDeEMsdUZBQXVGLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDekcsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3QsIE5TdHJpbmd9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge0Jhc2U2NCwgTG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0RhdGFWaWV3fSBmcm9tIFwiLi4vZGF0YS9EYXRhVmlld1wiO1xyXG5pbXBvcnQge1JlY29tcHV0ZX0gZnJvbSBcIi4vUmVjb21wdXRlXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0hlbHBlciB9IGZyb20gXCIuLi9BY2Nlc3NIZWxwZXJcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgRGF0YSBmb3IgPHJlY29tcHV0ZT4uLi4uPC9yZWNvbXB1dGU+XHJcbi8vLyAgIHRoaXMgY2xhc3MgaXMgdXNlZCBvbmx5IHRvIGNyZWF0ZSB0aGUgUmVjb21wdXRlIG9iamVjdHMgYnV0IGRvIG5vdFxyXG4vLy8gICBob2xkIGFueSBkYXRhXHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBSZWNvbXB1dGVUYWJsZSB7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIHJlY29tcHV0ZSBhdHRyaWJ1dGVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGZpbGxBdHRyaWJ1dGVzKHBhcnNlcjogWG1sUGFyc2VyKTogVGFzayB7XHJcbiAgICBsZXQgZW5kQ29udGV4dDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSk7XHJcbiAgICBsZXQgSW5kZXg6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuTUdfVEFHX1JFQ09NUFVURSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArIFhNTENvbnN0YW50cy5NR19UQUdfUkVDT01QVVRFLmxlbmd0aDtcclxuXHJcbiAgICBsZXQgdGFzazogVGFzayA9IG51bGw7XHJcbiAgICBsZXQgdG9rZW5zVmVjdG9yOiBMaXN0PHN0cmluZz4gPSBYbWxQYXJzZXIuZ2V0VG9rZW5zKHBhcnNlci5nZXRYTUxkYXRhKCkuc3Vic3RyKEluZGV4LCBlbmRDb250ZXh0IC0gSW5kZXgpLCAnXCInKTtcclxuXHJcbiAgICBmb3IgKGxldCBqOiBudW1iZXIgPSAwOyBqIDwgdG9rZW5zVmVjdG9yLmxlbmd0aDsgaiArPSAyKSB7XHJcbiAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICBsZXQgdmFsdWVTdHI6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaiArIDEpKTtcclxuXHJcbiAgICAgIGlmIChhdHRyaWJ1dGUgPT09IFhNTENvbnN0YW50cy5NR19BVFRSX1RBU0tJRClcclxuICAgICAgICAgIHRhc2sgPSA8VGFzaz5BY2Nlc3NIZWxwZXIubWdEYXRhVGFibGUuR2V0VGFza0J5SUQodmFsdWVTdHIpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coTlN0cmluZy5Gb3JtYXQoXCJVbnJlY29nbml6ZWQgYXR0cmlidXRlOiAnezB9J1wiLCBhdHRyaWJ1dGUpKTtcclxuICAgIH1cclxuICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICAgIC8vIHN0YXJ0IG9mIDxmbGQgLi4uPlxyXG5cclxuICAgIHJldHVybiB0YXNrO1xyXG4gIH1cclxuXHJcbiAgZmlsbERhdGEocGFyc2VyOiBYbWxQYXJzZXIpOiB2b2lkIHtcclxuICAgIGxldCB0YXNrOiBUYXNrID0gdGhpcy5maWxsQXR0cmlidXRlcyhwYXJzZXIpO1xyXG5cclxuICAgIGlmICh0YXNrICE9PSBudWxsKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZURldlRvTG9nKFwiZ29lcyB0byByZWZpbGwgcmVjb21wdXRlXCIpO1xyXG4gICAgICB0aGlzLmZpbGxEYXRhXzEoPERhdGFWaWV3PnRhc2suRGF0YVZpZXcsIHRhc2ssIHBhcnNlcik7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgMSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgVG8gcGFyc2UgaW5wdXQgc3RyaW5nIGFuZCBmaWxsIGlubmVyIGRhdGEgOiBWZWN0b3IgcHJvcHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGZpbGxEYXRhXzEoZGF0YVZpZXc6IERhdGFWaWV3LCB0YXNrOiBUYXNrLCBwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgIGlmIChwYXJzZXIuZ2V0TmV4dFRhZygpID09IFhNTENvbnN0YW50cy5NR19UQUdfUkVDT01QVVRFKSB7XHJcbiAgICAgIGxldCBjdXJycmVudEluZGV4ID0gcGFyc2VyLmdldEN1cnJJbmRleCgpOyAvLyBnZXQgdGhlIGN1cnJlbnRJbmRleCBvZiBSZWNvbXB1dGUgdGFnXHJcbiAgICAgIGxldCBlbmNvZGVkID0gcGFyc2VyLlJlYWRDb250ZW50T2ZDdXJyZW50RWxlbWVudCgpLnRyaW0oKTsgLy8gZ2V0IHZhbHVlIG9mIGVuY29kZWQgdmFsdWUgb2YgUmVjb21wdXRlXHJcbiAgICAgIGxldCBkZWNvZGVkID0gQmFzZTY0LmRlY29kZShlbmNvZGVkLnN1YnN0cigwLCBlbmNvZGVkLmxlbmd0aCkudHJpbSgpKTsgLy9kZWNvZGUgdGhlIHZhbHVlIG9mIHJlY29tcHV0ZVxyXG4gICAgICBsZXQgbmV3WG1sRGF0YSA9IHBhcnNlci5nZXRYTUxkYXRhKCkucmVwbGFjZShlbmNvZGVkLnRyaW0oKSwgZGVjb2RlZCk7IC8vIHJlcGxhY2UgdGhlIGVuY29kZWQgdmFsdWUgd2l0aCBkZWNvZGVkIHZhbHVlXHJcbiAgICAgIHBhcnNlci5zZXRYTUxkYXRhKG5ld1htbERhdGEpOyAvL2NyZWF0ZSBhIHBhcnNlciB3aXRoIG5ld1hNTFxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KGN1cnJyZW50SW5kZXgpOyAvLyBzZXQgdGhlIGN1cnJlbnQgaW5kZXggb2YgcGFyc2VyIHRvIHJlY29tcHV0ZSB0YWdcclxuICAgIH1cclxuXHJcbiAgICB3aGlsZSAodGhpcy5pbml0SW5uZXJPYmplY3RzKHBhcnNlciwgcGFyc2VyLmdldE5leHRUYWcoKSwgZGF0YVZpZXcsIHRhc2spKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgRmlsbCBSZWNvbXB1dGUgT2JqZWN0LCBnaXZlcyBpdHMgcmVmZXJlbmNlIHRvIEZpZWxkIGFuZCByZWZlcmVuY2Ugb2YgRmllbGQgdG8gaGltXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGluaXRJbm5lck9iamVjdHMocGFyc2VyOiBYbWxQYXJzZXIsIG5hbWVPZkZvdW5kOiBTdHJpbmcsIGRhdGFWaWV3OiBEYXRhVmlldywgdGFzazogVGFzayk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKG5hbWVPZkZvdW5kID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcblxyXG4gICAgaWYgKG5hbWVPZkZvdW5kID09PSBYTUxDb25zdGFudHMuTUdfVEFHX1JFQ09NUFVURSlcclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleChwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArIDEpO1xyXG4gICAgLy8gc3RhcnQgb2YgPGZsZCAuLi4+XHJcbiAgICBlbHNlIGlmIChuYW1lT2ZGb3VuZCA9PT0gWE1MQ29uc3RhbnRzLk1HX1RBR19GTEQpIHtcclxuICAgICAgbGV0IHJlY29tcHV0ZTogUmVjb21wdXRlID0gbmV3IFJlY29tcHV0ZSgpO1xyXG4gICAgICByZWNvbXB1dGUuZmlsbERhdGEoZGF0YVZpZXcsIHRhc2ssIHBhcnNlcik7IC8vIGdldCByZWZlcmVuY2UgdG8gRGF0YVZpZXcsIHRvIG1ha2UgbGlua2VkIHJlZi4gOiBSZWNvbXB1dGU8LUZpZWxkXHJcbiAgICAgIC8vIHRhc2tSZWZlcmVuY2UgZm9yIFJlY29tcHV0ZS5wcm9wcz0+IENvbnRyb2xUYWJsZS5Db250cm9sLnRhc2tcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKG5hbWVPZkZvdW5kID09PSAnLycgKyBYTUxDb25zdGFudHMuTUdfVEFHX1JFQ09NUFVURSkge1xyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXHJcbiAgICAgICAgXCJUaGVyZSBpcyBubyBzdWNoIHRhZyBpbiA8cmVjb21wdXRlPiwgYWRkIGNhc2UgdG8gUmVjb21wdXRlVGFibGUuaW5pdElubmVyT2JqZWN0cyBmb3IgXCIgKyBuYW1lT2ZGb3VuZCk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjb21wdXRlVGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1JlY29tcHV0ZVRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBTyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFHekUsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFPL0MsTUFBTSxPQUFPLGNBQWM7SUFLakIsY0FBYyxDQUFDLE1BQWlCO1FBQ3RDLElBQUksVUFBVSxHQUFXLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUNwRyxJQUFJLEtBQUssR0FBVyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBRTdJLElBQUksSUFBSSxHQUFTLElBQUksQ0FBQztRQUN0QixJQUFJLFlBQVksR0FBaUIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakgsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RCxJQUFJLFNBQVMs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SSxTQUFTLEVBQUUsQ0FBQztZQUMzQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FFNUM7YUFDSSxJQUFJLFdBQVcsS0FBSyxHQUFHLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixFQUFFO1lBQzVELE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7YUFDSTtZQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQ3hDLHVGQUF1RixHQUFHLFdBQVcsQ0FBQyxDQUFDO1lBQ3pHLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdCwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7QmFzZTY0LCBMb2dnZXIsIFhNTENvbnN0YW50cywgWG1sUGFyc2VyfSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7RGF0YVZpZXd9IGZyb20gXCIuLi9kYXRhL0RhdGFWaWV3XCI7XHJcbmltcG9ydCB7UmVjb21wdXRlfSBmcm9tIFwiLi9SZWNvbXB1dGVcIjtcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBEYXRhIGZvciA8cmVjb21wdXRlPi4uLi48L3JlY29tcHV0ZT5cclxuLy8vICAgdGhpcyBjbGFzcyBpcyB1c2VkIG9ubHkgdG8gY3JlYXRlIHRoZSBSZWNvbXB1dGUgb2JqZWN0cyBidXQgZG8gbm90XHJcbi8vLyAgIGhvbGQgYW55IGRhdGFcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJlY29tcHV0ZVRhYmxlIHtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGdldCB0aGUgcmVjb21wdXRlIGF0dHJpYnV0ZXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZmlsbEF0dHJpYnV0ZXMocGFyc2VyOiBYbWxQYXJzZXIpOiBUYXNrIHtcclxuICAgIGxldCBlbmRDb250ZXh0OiBudW1iZXIgPSBwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKTtcclxuICAgIGxldCBJbmRleDogbnVtYmVyID0gcGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5NR19UQUdfUkVDT01QVVRFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgWE1MQ29uc3RhbnRzLk1HX1RBR19SRUNPTVBVVEUubGVuZ3RoO1xyXG5cclxuICAgIGxldCB0YXNrOiBUYXNrID0gbnVsbDtcclxuICAgIGxldCB0b2tlbnNWZWN0b3I6IExpc3Q8c3RyaW5nPiA9IFhtbFBhcnNlci5nZXRUb2tlbnMocGFyc2VyLmdldFhNTGRhdGEoKS5zdWJzdHIoSW5kZXgsIGVuZENvbnRleHQgLSBJbmRleCksICdcIicpO1xyXG5cclxuICAgIGZvciAobGV0IGo6IG51bWJlciA9IDA7IGogPCB0b2tlbnNWZWN0b3IubGVuZ3RoOyBqICs9IDIpIHtcclxuICAgICAgbGV0IGF0dHJpYnV0ZTogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqKSk7XHJcbiAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgaWYgKGF0dHJpYnV0ZSA9PT0gWE1MQ29uc3RhbnRzLk1HX0FUVFJfVEFTS0lEKVxyXG4gICAgICAgICAgdGFzayA9IDxUYXNrPkFjY2Vzc0hlbHBlci5tZ0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh2YWx1ZVN0cik7XHJcbiAgICAgIGVsc2VcclxuICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhOU3RyaW5nLkZvcm1hdChcIlVucmVjb2duaXplZCBhdHRyaWJ1dGU6ICd7MH0nXCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgfVxyXG4gICAgcGFyc2VyLnNldEN1cnJJbmRleChwYXJzZXIuZ2V0WE1MZGF0YSgpLmluZGV4T2YoWE1MQ29uc3RhbnRzLlRBR19DTE9TRSwgcGFyc2VyLmdldEN1cnJJbmRleCgpKSArIDEpO1xyXG4gICAgLy8gc3RhcnQgb2YgPGZsZCAuLi4+XHJcblxyXG4gICAgcmV0dXJuIHRhc2s7XHJcbiAgfVxyXG5cclxuICBmaWxsRGF0YShwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IHRhc2s6IFRhc2sgPSB0aGlzLmZpbGxBdHRyaWJ1dGVzKHBhcnNlcik7XHJcblxyXG4gICAgaWYgKHRhc2sgIT09IG51bGwpIHtcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRGV2VG9Mb2coXCJnb2VzIHRvIHJlZmlsbCByZWNvbXB1dGVcIik7XHJcbiAgICAgIHRoaXMuZmlsbERhdGFfMSg8RGF0YVZpZXc+dGFzay5EYXRhVmlldywgdGFzaywgcGFyc2VyKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgocGFyc2VyLmdldFhNTGRhdGEoKS5pbmRleE9mKFhNTENvbnN0YW50cy5UQUdfQ0xPU0UsIHBhcnNlci5nZXRDdXJySW5kZXgoKSkgKyAxKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBUbyBwYXJzZSBpbnB1dCBzdHJpbmcgYW5kIGZpbGwgaW5uZXIgZGF0YSA6IFZlY3RvciBwcm9wc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZmlsbERhdGFfMShkYXRhVmlldzogRGF0YVZpZXcsIHRhc2s6IFRhc2ssIHBhcnNlcjogWG1sUGFyc2VyKTogdm9pZCB7XHJcbiAgICAgaWYgKHBhcnNlci5nZXROZXh0VGFnKCkgPT0gWE1MQ29uc3RhbnRzLk1HX1RBR19SRUNPTVBVVEUpIHtcclxuICAgICAgbGV0IGN1cnJyZW50SW5kZXggPSBwYXJzZXIuZ2V0Q3VyckluZGV4KCk7IC8vIGdldCB0aGUgY3VycmVudEluZGV4IG9mIFJlY29tcHV0ZSB0YWdcclxuICAgICAgbGV0IGVuY29kZWQgPSBwYXJzZXIuUmVhZENvbnRlbnRPZkN1cnJlbnRFbGVtZW50KCkudHJpbSgpOyAvLyBnZXQgdmFsdWUgb2YgZW5jb2RlZCB2YWx1ZSBvZiBSZWNvbXB1dGVcclxuICAgICAgbGV0IGRlY29kZWQgPSBCYXNlNjQuZGVjb2RlKGVuY29kZWQuc3Vic3RyKDAsIGVuY29kZWQubGVuZ3RoKS50cmltKCkpOyAvL2RlY29kZSB0aGUgdmFsdWUgb2YgcmVjb21wdXRlXHJcbiAgICAgIGxldCBuZXdYbWxEYXRhID0gcGFyc2VyLmdldFhNTGRhdGEoKS5yZXBsYWNlKGVuY29kZWQudHJpbSgpLCBkZWNvZGVkKTsgLy8gcmVwbGFjZSB0aGUgZW5jb2RlZCB2YWx1ZSB3aXRoIGRlY29kZWQgdmFsdWVcclxuICAgICAgcGFyc2VyLnNldFhNTGRhdGEobmV3WG1sRGF0YSk7IC8vY3JlYXRlIGEgcGFyc2VyIHdpdGggbmV3WE1MXHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgoY3VycnJlbnRJbmRleCk7IC8vIHNldCB0aGUgY3VycmVudCBpbmRleCBvZiBwYXJzZXIgdG8gcmVjb21wdXRlIHRhZ1xyXG4gICAgfVxyXG5cclxuICAgIHdoaWxlICh0aGlzLmluaXRJbm5lck9iamVjdHMocGFyc2VyLCBwYXJzZXIuZ2V0TmV4dFRhZygpLCBkYXRhVmlldywgdGFzaykpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBGaWxsIFJlY29tcHV0ZSBPYmplY3QsIGdpdmVzIGl0cyByZWZlcmVuY2UgdG8gRmllbGQgYW5kIHJlZmVyZW5jZSBvZiBGaWVsZCB0byBoaW1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgaW5pdElubmVyT2JqZWN0cyhwYXJzZXI6IFhtbFBhcnNlciwgbmFtZU9mRm91bmQ6IFN0cmluZywgZGF0YVZpZXc6IERhdGFWaWV3LCB0YXNrOiBUYXNrKTogYm9vbGVhbiB7XHJcbiAgICBpZiAobmFtZU9mRm91bmQgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAobmFtZU9mRm91bmQgPT09IFhNTENvbnN0YW50cy5NR19UQUdfUkVDT01QVVRFKVxyXG4gICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgMSk7XHJcbiAgICAvLyBzdGFydCBvZiA8ZmxkIC4uLj5cclxuICAgIGVsc2UgaWYgKG5hbWVPZkZvdW5kID09PSBYTUxDb25zdGFudHMuTUdfVEFHX0ZMRCkge1xyXG4gICAgICBsZXQgcmVjb21wdXRlOiBSZWNvbXB1dGUgPSBuZXcgUmVjb21wdXRlKCk7XHJcbiAgICAgIHJlY29tcHV0ZS5maWxsRGF0YShkYXRhVmlldywgdGFzaywgcGFyc2VyKTsgLy8gZ2V0IHJlZmVyZW5jZSB0byBEYXRhVmlldywgdG8gbWFrZSBsaW5rZWQgcmVmLiA6IFJlY29tcHV0ZTwtRmllbGRcclxuICAgICAgLy8gdGFza1JlZmVyZW5jZSBmb3IgUmVjb21wdXRlLnByb3BzPT4gQ29udHJvbFRhYmxlLkNvbnRyb2wudGFza1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAobmFtZU9mRm91bmQgPT09ICcvJyArIFhNTENvbnN0YW50cy5NR19UQUdfUkVDT01QVVRFKSB7XHJcbiAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcclxuICAgICAgICBcIlRoZXJlIGlzIG5vIHN1Y2ggdGFnIGluIDxyZWNvbXB1dGU+LCBhZGQgY2FzZSB0byBSZWNvbXB1dGVUYWJsZS5pbml0SW5uZXJPYmplY3RzIGZvciBcIiArIG5hbWVPZkZvdW5kKTtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -105,4 +105,4 @@ export class RemoteDataviewHeader extends DataviewHeaderBase {
105
105
  }
106
106
  }
107
107
  }
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3RlRGF0YXZpZXdIZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1JlbW90ZURhdGF2aWV3SGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUs3QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBQ2xELE1BQU0sR0FBZSxJQUFJLENBQUM7SUFDMUIsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDO0lBRXhDLFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRVMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7UUFDeEQsUUFBUSxTQUFTLEVBQUUsQ0FBQztZQUVsQixLQUFLLGNBQWMsQ0FBQyxvQkFBb0I7Z0JBQ3RDLElBQUksUUFBUSxJQUFJLEVBQUUsRUFBRSxDQUFDO29CQUNuQixJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO3dCQUNsRCxJQUFJ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SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbnZlcnRvciwgUElDfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtEYXRhdmlld0hlYWRlckJhc2V9IGZyb20gXCIuL0RhdGF2aWV3SGVhZGVyQmFzZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGV9IGZyb20gXCIuL1RhYmxlQ2FjaGVcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7RmllbGRzVGFibGVFeHQgYXMgRmllbGRzVGFibGV9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGVNYW5hZ2VyfSBmcm9tIFwiLi9UYWJsZUNhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gbGluayB0byBSZW1vdGUgdGFibGVcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGF2aWV3SGVhZGVyIGV4dGVuZHMgRGF0YXZpZXdIZWFkZXJCYXNlIHtcclxuICBwcml2YXRlIF90YWJsZTogVGFibGVDYWNoZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbGFzdEZldGNoUmVjUG9zOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgZGIgcG9zIG9mIHRoZSBsYXN0IGZldGNoZWQgcmVjb3JkIGZyb20gdGhlIHRhYmxlIGNhY2hlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHRhc2s6IFRhc2spIHtcclxuICAgIHN1cGVyKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DQUNIRURfVEFCTEU6XHJcbiAgICAgICAgaWYgKHZhbHVlU3RyICE9IFwiXCIpIHtcclxuICAgICAgICAgIGlmIChUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5UYWJsZUV4aXN0cyh2YWx1ZVN0cikpXHJcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlID0gVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuR2V0VGFibGVCeUlkKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBUYWJsZUNhY2hlKHZhbHVlU3RyKTtcclxuICAgICAgICAgICAgVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuSW5zZXJ0VGFibGUodGhpcy5fdGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JREVOVDpcclxuICAgICAgICBpZiAodmFsdWVTdHIgIT0gXCJcIilcclxuICAgICAgICAgIHRoaXMuX3RhYmxlLlNldFRhYmxlSWRlbnQodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdXBlci5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgd2lsbCByZXR1cm4gdGhlIGxpbmtlZCByZWNvcmQgYWNjb3JkaW5nIHRvIHRoZSBsaW5rIHByb3BlcnRpZXMgYW5kIHRoZSBjdXJyZW50IHJlY29yZFxyXG4gIC8vLyAgIHRoaXMgbWV0aG9kIHdpbGwgY2hhbmdlIHRoZSBjdXJyZW50IHJlY29yZCBmaWVsZHMgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlua2VkUmVjb3JkKGN1clJlYzogUmVjb3JkKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgbG5rRmxkcyA9ICg8RmllbGRzVGFibGU+IHRoaXMuX3Rhc2suRGF0YVZpZXcuR2V0RmllbGRzVGFiKCkpLmdldExpbmtGaWVsZHModGhpcy5faWQpO1xyXG4gICAgbGV0IHJldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLl9jb25kLmdldFZhbCgpKSB7XHJcblxyXG4gICAgICAvLyBidWlsZCBsb2NhdGUgYW5kIHJhbmdlIHZlY3RvcnNcclxuICAgICAgaWYgKHRoaXMuTG9jID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLkxvYyA9IG5ldyBMaXN0PEJvdW5kYXJ5PigpO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsbmtGbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgY3VyckxvYzogQm91bmRhcnkgPSBsbmtGbGRzLmdldF9JdGVtKGkpLkxvY2F0ZTtcclxuICAgICAgICAgIGlmIChjdXJyTG9jICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5Mb2MucHVzaChjdXJyTG9jKTtcclxuICAgICAgICAgICAgYXdhaXQgY3VyckxvYy5jb21wdXRlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gY29tcHV0ZSB0aGUgcmFuZ2UgYW5kIGxvY2F0ZSBleHByZXNzaW9ucyBhbmV3XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuTG9jLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5Mb2MuZ2V0X0l0ZW0oaSkuY29tcHV0ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gc29ydCB0aGUgdGFibGUgKGlmIHRoZSB0YWJsZSB3YXMgbm90IGxvYWRlZCB5ZXQgaXQgd2lsbCBhbHNvIGxvYWQgaXRcclxuICAgICAgYXdhaXQgdGhpcy5fdGFibGUuU29ydFRhYmxlKHRoaXMuX2tleUlkeCwgdGhpcy5fZGlyKTtcclxuICAgICAgLy8gcGVyZm9ybSB0aGUgbGlua1xyXG4gICAgICBsZXQgcmVzOiBSZWNvcmQgPSB0aGlzLl90YWJsZS5GZXRjaCh0aGlzLkxvYyk7XHJcbiAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgLy8gbGluayBmYWlsZFxyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsIGZhbHNlKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvcHlMaW5rRmxkVG9SZWMoY3VyUmVjLCBsbmtGbGRzLCByZXMsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjYWxjdWxhdGUgaW5pdCBleHByZXNzaW9ucyBpZiB0aGVyZSBhcmUgYW55IG9yIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBlbHNlXHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsICBmYWxzZSk7IC8vIGV2ZXJ5IHNjZW5hcmlvIHdoZXJlIHRoZSBsaW5rZWQgZGlkIG5vdFxyXG4gICAgLy8gcmV0dXJuZWQgYW55IHJlY29yZCBmcm8gZXhhbXBsZSBoZXJlIHdoZW5cclxuICAgIC8vIHRoZSBsaW5rIGNvbmRpdGlvbiBpcyBmYWxzZSB0aGVuIHRoZSBsaW5rIGlzXHJcbiAgICAvLyBjb25zaWRlcmVkIHRvIGhhcyBmYWlsZWQgYW5kIHNob3VsZCByZXR1cm5cclxuICAgIC8vIGZhbHNlIGFzIHJldHVybiB2YWx1ZVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaWYgdGhlIGxpbmsgc3VjY2VlZGVkIGNvcGllcyB0aGUgdmFsdWVzIHJldHVybiBmcm9tIHRoZSBsaW5rZWQgdGFibGUgcmVjb3JkXHJcbiAgLy8vICAgdG8gdGhlIGN1cnJlbnQgZGF0YSB2aWV3IHJlY29yZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBjb3B5TGlua0ZsZFRvUmVjKGN1clJlYzogUmVjb3JkLCBsaW5rRmxkczogTGlzdDxGaWVsZD4sIHRhYmxlUmVjOiBSZWNvcmQsIHJldDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBmZXRjaCBhIHJlY29yZCBmcm9tIHRoZSBsaW5rXHJcbiAgICAvLyBzZXQgdGhlIGxhc3RGZXRjaFJlY1BvcyB0byBiZSB0aGUgcG9zIG9mIHRoZSBmZXRjaGVkIHJlY29yZFxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gdGFibGVSZWMuZ2V0RGJQb3NWYWwoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGlua0ZsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1ckZsZDogRmllbGQgPSBsaW5rRmxkcy5nZXRfSXRlbShpKTtcclxuICAgICAgY3VyUmVjLnNldEZpZWxkVmFsdWUoY3VyRmxkLmdldElkKCksIHRhYmxlUmVjLkdldEZpZWxkVmFsdWUoY3VyRmxkLkNhY2hlVGFibGVGbGRJZHgpLCBmYWxzZSk7XHJcblxyXG4gICAgICAvLyBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGluIGNhc2UgaXQgd2FzIHNldFxyXG4gICAgICBjdXJSZWMuY2xlYXJGbGFnKGN1ckZsZC5nZXRJZCgpLCBSZWNvcmQuRkxBR19JTlZBTElEKTtcclxuICAgICAgY3VyRmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gc2V0IHRoZSByZXQgdmFsdWVcclxuICAgIGF3YWl0IHRoaXMuU2V0UmV0dXJuVmFsdWUocmV0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbiBjYXNlIHRoZSBsaW5rIGZhaWxzIHNldCB0aGUgdmFsdWUgdG8gZGVmYXVsdCBvciB0byB0aGUgdmFsdWUgb2YgdGhlIGluaXQgZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0UmVjKGN1cnJSZWM6IFJlY29yZCwgcmV0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBpZiB3ZSBhcmUgaGVyZSBpdCBtZWFucyB0aGF0IHdlIHRyaWVkIHRvIGZldGNoIGEgcmVjb3JkIGJ1dCBmYWlsZWQgdG8gZmluZCBvbmUgdGhlcmVmb3JcclxuICAgIC8vIHRoZSBsYXN0RmV0Y2hSZWNQb3Mgc2hvdWxkIGJlIG1hcmtlZCBhY2NvcmRpbmdseVxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gXCIjXCI7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5Jbml0TGlua0ZpZWxkcyhjdXJyUmVjKTtcclxuXHJcbiAgICAvLyBzZXQgdGhlIHJldCB2YWx1ZVxyXG4gICAgbGV0IHJldEZsZCA9IHRoaXMuUmV0dXJuRmllbGQ7XHJcbiAgICBpZiAocmV0RmxkICE9IG51bGwpIHtcclxuICAgICAgY3VyclJlYy5zZXRGaWVsZFZhbHVlKHJldEZsZC5nZXRJZCgpLCAocmV0ID8gXCIxXCIgOiBcIjBcIiksIGZhbHNlKTtcclxuICAgICAgcmV0RmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGxhc3QgZmV0Y2ggcmVjb3JkIGRiIHBvcyB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldExhc3RGZXRjaGVkRGJQb3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYXN0RmV0Y2hSZWNQb3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHVwZGF0ZSBsaW5rIHJlc3VsdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VyUmVjXCI+Y3VycmVudCByZWNvcmQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldFwiPmxpbmsgc3VjY2VzczwvcGFyYW0+XHJcbiAgYXN5bmMgU2V0UmV0dXJuVmFsdWUoIHJldDogYm9vbGVhbiwgcmVjb21wdXRlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmV0dXJuRmllbGQ6IEZpZWxkID0gdGhpcy5SZXR1cm5GaWVsZDtcclxuXHJcbiAgICBpZiAocmV0dXJuRmllbGQgIT09IG51bGwpIHtcclxuICAgICAgbGV0IGVuZm9yY2VWYXJpYWJsZUNoYW5nZTogYm9vbGVhbiA9IHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrO1xyXG5cclxuICAgICAgLy8gaWYgd2UgYXJlIGZldGNoaW5nIGZpcnN0IGNodW5rIHdlIGRpZG4ndCB1cGRhdGVkIHRoZSBleGVjdXR1aW9uIHN0YWNrIHlldFxyXG4gICAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5wdXNoTmV3RXhlY1N0YWNrcygpO1xyXG4gICAgICAvLyBzYW1lIGFzIE5vblJlY29tcHV0ZVZhckNoYW5nZUV2ZW50IG9uIHNlcnZlciBmZXRjaC5jcHBcclxuXHJcbiAgICAgIC8vIGlmIHRoZSByZXR1cm4gZmllbGQgaXMgbnVtZXJpYywgdGhlbiBjb252ZXJ0IHJlc3VsdCB2YWx1ZSB0b051bSgpIGJlZm9yZSBwYXNzaW5nIHRvIHNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUoKS5cclxuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nID0gcmV0ID8gXCIxXCIgOiBcIjBcIjtcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFR5cGUoKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDKVxyXG4gICAgICAgIHJlc3VsdCA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0ocmVzdWx0LCBuZXcgUElDKHJldHVybkZpZWxkLmdldFBpY3R1cmUoKSwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKSwgMCk7XHJcblxyXG4gICAgICBhd2FpdCByZXR1cm5GaWVsZC5zZXRWYWx1ZUFuZFN0YXJ0UmVjb21wdXRlKHJlc3VsdCwgZmFsc2UsIHJlY29tcHV0ZSwgZmFsc2UsIGZhbHNlLCBlbmZvcmNlVmFyaWFibGVDaGFuZ2UpO1xyXG5cclxuICAgICAgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIucG9wTmV3RXhlY1N0YWNrcygpO1xyXG5cclxuICAgICAgaWYgKCFyZWNvbXB1dGUpXHJcbiAgICAgICAgcmV0dXJuRmllbGQuc2V0TW9kaWZpZWQoKTtcclxuXHJcbiAgICAgIHJldHVybkZpZWxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgLy8gSWYgZmllbGQgaXMgZnJvbSBhbm90aGVyIHRhc2ssIG5lZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5IGFzIHdlbGxcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrKVxyXG4gICAgICAgIGF3YWl0IHJldHVybkZpZWxkLnVwZGF0ZURpc3BsYXkoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3RlRGF0YXZpZXdIZWFkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1JlbW90ZURhdGF2aWV3SGVhZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUV4QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUs3QyxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsa0JBQWtCO0lBQ2xELE1BQU0sR0FBZSxJQUFJLENBQUM7SUFDMUIsZ0JBQWdCLEdBQVcsSUFBSSxDQUFDO0lBRXhDLFlBQVksSUFBVTtRQUNwQixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0lBRVMsWUFBWSxDQUFDLFNBQWlCLEVBQUUsUUFBZ0I7UUFDeEQsUUFBUSxTQUFTLEVBQUU7WUFFakIsS0FBSyxjQUFjLENBQUMsb0JBQW9CO2dCQUN0QyxJQUFJLFFBQVEsSUFBSSxFQUFFLEVBQUU7b0JBQ2xCLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7d0JBQ2xELElBQUksQ0FBQyxNQUFN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QVUsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUUxQyxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUU7WUFDeEIsSUFBSSxxQkFBcUIsR0FBWSxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztZQUd6RSxZQUFZLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFJL0MsSUFBSSxNQUFNLEdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNyQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO2dCQUNwRCxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV0SCxNQUFNLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFFM0csWUFBWSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTlDLElBQUksQ0FBQyxTQUFTO2dCQUNaLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUU1QixXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUdwQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSTtnQkFDckMsTUFBTSxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDckM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3R9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGV9IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RGlzcGxheUNvbnZlcnRvciwgUElDfSBmcm9tIFwiQG1hZ2ljLXhwYS9ndWlcIjtcclxuaW1wb3J0IHtEYXRhdmlld0hlYWRlckJhc2V9IGZyb20gXCIuL0RhdGF2aWV3SGVhZGVyQmFzZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGV9IGZyb20gXCIuL1RhYmxlQ2FjaGVcIjtcclxuaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7RmllbGR9IGZyb20gXCIuLi9kYXRhL0ZpZWxkXCI7XHJcbmltcG9ydCB7RmllbGRzVGFibGVFeHQgYXMgRmllbGRzVGFibGV9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1RhYmxlQ2FjaGVNYW5hZ2VyfSBmcm9tIFwiLi9UYWJsZUNhY2hlTWFuYWdlclwiO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSBcIi4uL0FjY2Vzc0hlbHBlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gbGluayB0byBSZW1vdGUgdGFibGVcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFJlbW90ZURhdGF2aWV3SGVhZGVyIGV4dGVuZHMgRGF0YXZpZXdIZWFkZXJCYXNlIHtcclxuICBwcml2YXRlIF90YWJsZTogVGFibGVDYWNoZSA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfbGFzdEZldGNoUmVjUG9zOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgZGIgcG9zIG9mIHRoZSBsYXN0IGZldGNoZWQgcmVjb3JkIGZyb20gdGhlIHRhYmxlIGNhY2hlXHJcblxyXG4gIGNvbnN0cnVjdG9yKHRhc2s6IFRhc2spIHtcclxuICAgIHN1cGVyKHRhc2spO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldEF0dHJpYnV0ZShhdHRyaWJ1dGU6IHN0cmluZywgdmFsdWVTdHI6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgc3dpdGNoIChhdHRyaWJ1dGUpIHtcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9DQUNIRURfVEFCTEU6XHJcbiAgICAgICAgaWYgKHZhbHVlU3RyICE9IFwiXCIpIHtcclxuICAgICAgICAgIGlmIChUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5UYWJsZUV4aXN0cyh2YWx1ZVN0cikpXHJcbiAgICAgICAgICAgIHRoaXMuX3RhYmxlID0gVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuR2V0VGFibGVCeUlkKHZhbHVlU3RyKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBUYWJsZUNhY2hlKHZhbHVlU3RyKTtcclxuICAgICAgICAgICAgVGFibGVDYWNoZU1hbmFnZXIuSW5zdGFuY2UuSW5zZXJ0VGFibGUodGhpcy5fdGFibGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9JREVOVDpcclxuICAgICAgICBpZiAodmFsdWVTdHIgIT0gXCJcIilcclxuICAgICAgICAgIHRoaXMuX3RhYmxlLlNldFRhYmxlSWRlbnQodmFsdWVTdHIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBzdXBlci5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgd2lsbCByZXR1cm4gdGhlIGxpbmtlZCByZWNvcmQgYWNjb3JkaW5nIHRvIHRoZSBsaW5rIHByb3BlcnRpZXMgYW5kIHRoZSBjdXJyZW50IHJlY29yZFxyXG4gIC8vLyAgIHRoaXMgbWV0aG9kIHdpbGwgY2hhbmdlIHRoZSBjdXJyZW50IHJlY29yZCBmaWVsZHMgdmFsdWVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlua2VkUmVjb3JkKGN1clJlYzogUmVjb3JkKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgbG5rRmxkcyA9ICg8RmllbGRzVGFibGU+IHRoaXMuX3Rhc2suRGF0YVZpZXcuR2V0RmllbGRzVGFiKCkpLmdldExpbmtGaWVsZHModGhpcy5faWQpO1xyXG4gICAgbGV0IHJldDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh0aGlzLl9jb25kLmdldFZhbCgpKSB7XHJcblxyXG4gICAgICAvLyBidWlsZCBsb2NhdGUgYW5kIHJhbmdlIHZlY3RvcnNcclxuICAgICAgaWYgKHRoaXMuTG9jID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLkxvYyA9IG5ldyBMaXN0PEJvdW5kYXJ5PigpO1xyXG4gICAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBsbmtGbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBsZXQgY3VyckxvYzogQm91bmRhcnkgPSBsbmtGbGRzLmdldF9JdGVtKGkpLkxvY2F0ZTtcclxuICAgICAgICAgIGlmIChjdXJyTG9jICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5Mb2MucHVzaChjdXJyTG9jKTtcclxuICAgICAgICAgICAgYXdhaXQgY3VyckxvYy5jb21wdXRlKGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gY29tcHV0ZSB0aGUgcmFuZ2UgYW5kIGxvY2F0ZSBleHByZXNzaW9ucyBhbmV3XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuTG9jLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5Mb2MuZ2V0X0l0ZW0oaSkuY29tcHV0ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gc29ydCB0aGUgdGFibGUgKGlmIHRoZSB0YWJsZSB3YXMgbm90IGxvYWRlZCB5ZXQgaXQgd2lsbCBhbHNvIGxvYWQgaXRcclxuICAgICAgYXdhaXQgdGhpcy5fdGFibGUuU29ydFRhYmxlKHRoaXMuX2tleUlkeCwgdGhpcy5fZGlyKTtcclxuICAgICAgLy8gcGVyZm9ybSB0aGUgbGlua1xyXG4gICAgICBsZXQgcmVzOiBSZWNvcmQgPSB0aGlzLl90YWJsZS5GZXRjaCh0aGlzLkxvYyk7XHJcbiAgICAgIGlmIChyZXMgPT0gbnVsbClcclxuICAgICAgLy8gbGluayBmYWlsZFxyXG4gICAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsIGZhbHNlKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmV0ID0gdHJ1ZTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNvcHlMaW5rRmxkVG9SZWMoY3VyUmVjLCBsbmtGbGRzLCByZXMsIHRydWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjYWxjdWxhdGUgaW5pdCBleHByZXNzaW9ucyBpZiB0aGVyZSBhcmUgYW55IG9yIGRlZmF1bHQgdmFsdWVzXHJcbiAgICBlbHNlXHJcbiAgICAgIGF3YWl0IHRoaXMuaW5pdFJlYyhjdXJSZWMsICBmYWxzZSk7IC8vIGV2ZXJ5IHNjZW5hcmlvIHdoZXJlIHRoZSBsaW5rZWQgZGlkIG5vdFxyXG4gICAgLy8gcmV0dXJuZWQgYW55IHJlY29yZCBmcm8gZXhhbXBsZSBoZXJlIHdoZW5cclxuICAgIC8vIHRoZSBsaW5rIGNvbmRpdGlvbiBpcyBmYWxzZSB0aGVuIHRoZSBsaW5rIGlzXHJcbiAgICAvLyBjb25zaWRlcmVkIHRvIGhhcyBmYWlsZWQgYW5kIHNob3VsZCByZXR1cm5cclxuICAgIC8vIGZhbHNlIGFzIHJldHVybiB2YWx1ZVxyXG5cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaWYgdGhlIGxpbmsgc3VjY2VlZGVkIGNvcGllcyB0aGUgdmFsdWVzIHJldHVybiBmcm9tIHRoZSBsaW5rZWQgdGFibGUgcmVjb3JkXHJcbiAgLy8vICAgdG8gdGhlIGN1cnJlbnQgZGF0YSB2aWV3IHJlY29yZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBjb3B5TGlua0ZsZFRvUmVjKGN1clJlYzogUmVjb3JkLCBsaW5rRmxkczogTGlzdDxGaWVsZD4sIHRhYmxlUmVjOiBSZWNvcmQsIHJldDogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgaXQgbWVhbnMgdGhhdCB3ZSBoYXZlIHN1Y2Nlc3NmdWxseSBmZXRjaCBhIHJlY29yZCBmcm9tIHRoZSBsaW5rXHJcbiAgICAvLyBzZXQgdGhlIGxhc3RGZXRjaFJlY1BvcyB0byBiZSB0aGUgcG9zIG9mIHRoZSBmZXRjaGVkIHJlY29yZFxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gdGFibGVSZWMuZ2V0RGJQb3NWYWwoKTtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgbGlua0ZsZHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGN1ckZsZDogRmllbGQgPSBsaW5rRmxkcy5nZXRfSXRlbShpKTtcclxuICAgICAgY3VyUmVjLnNldEZpZWxkVmFsdWUoY3VyRmxkLmdldElkKCksIHRhYmxlUmVjLkdldEZpZWxkVmFsdWUoY3VyRmxkLkNhY2hlVGFibGVGbGRJZHgpLCBmYWxzZSk7XHJcblxyXG4gICAgICAvLyBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGluIGNhc2UgaXQgd2FzIHNldFxyXG4gICAgICBjdXJSZWMuY2xlYXJGbGFnKGN1ckZsZC5nZXRJZCgpLCBSZWNvcmQuRkxBR19JTlZBTElEKTtcclxuICAgICAgY3VyRmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgLy8gc2V0IHRoZSByZXQgdmFsdWVcclxuICAgIGF3YWl0IHRoaXMuU2V0UmV0dXJuVmFsdWUocmV0LCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBpbiBjYXNlIHRoZSBsaW5rIGZhaWxzIHNldCB0aGUgdmFsdWUgdG8gZGVmYXVsdCBvciB0byB0aGUgdmFsdWUgb2YgdGhlIGluaXQgZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBpbml0UmVjKGN1cnJSZWM6IFJlY29yZCwgcmV0OiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAvLyBpZiB3ZSBhcmUgaGVyZSBpdCBtZWFucyB0aGF0IHdlIHRyaWVkIHRvIGZldGNoIGEgcmVjb3JkIGJ1dCBmYWlsZWQgdG8gZmluZCBvbmUgdGhlcmVmb3JcclxuICAgIC8vIHRoZSBsYXN0RmV0Y2hSZWNQb3Mgc2hvdWxkIGJlIG1hcmtlZCBhY2NvcmRpbmdseVxyXG4gICAgdGhpcy5fbGFzdEZldGNoUmVjUG9zID0gXCIjXCI7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5Jbml0TGlua0ZpZWxkcyhjdXJyUmVjKTtcclxuXHJcbiAgICAvLyBzZXQgdGhlIHJldCB2YWx1ZVxyXG4gICAgbGV0IHJldEZsZCA9IHRoaXMuUmV0dXJuRmllbGQ7XHJcbiAgICBpZiAocmV0RmxkICE9IG51bGwpIHtcclxuICAgICAgY3VyclJlYy5zZXRGaWVsZFZhbHVlKHJldEZsZC5nZXRJZCgpLCAocmV0ID8gXCIxXCIgOiBcIjBcIiksIGZhbHNlKTtcclxuICAgICAgcmV0RmxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIGxhc3QgZmV0Y2ggcmVjb3JkIGRiIHBvcyB2YWx1ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGdldExhc3RGZXRjaGVkRGJQb3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYXN0RmV0Y2hSZWNQb3M7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHVwZGF0ZSBsaW5rIHJlc3VsdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VyUmVjXCI+Y3VycmVudCByZWNvcmQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJldFwiPmxpbmsgc3VjY2VzczwvcGFyYW0+XHJcbiAgYXN5bmMgU2V0UmV0dXJuVmFsdWUoIHJldDogYm9vbGVhbiwgcmVjb21wdXRlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgcmV0dXJuRmllbGQ6IEZpZWxkID0gdGhpcy5SZXR1cm5GaWVsZDtcclxuXHJcbiAgICBpZiAocmV0dXJuRmllbGQgIT09IG51bGwpIHtcclxuICAgICAgbGV0IGVuZm9yY2VWYXJpYWJsZUNoYW5nZTogYm9vbGVhbiA9IHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrO1xyXG5cclxuICAgICAgLy8gaWYgd2UgYXJlIGZldGNoaW5nIGZpcnN0IGNodW5rIHdlIGRpZG4ndCB1cGRhdGVkIHRoZSBleGVjdXR1aW9uIHN0YWNrIHlldFxyXG4gICAgICBBY2Nlc3NIZWxwZXIuZXZlbnRzTWFuYWdlci5wdXNoTmV3RXhlY1N0YWNrcygpO1xyXG4gICAgICAvLyBzYW1lIGFzIE5vblJlY29tcHV0ZVZhckNoYW5nZUV2ZW50IG9uIHNlcnZlciBmZXRjaC5jcHBcclxuXHJcbiAgICAgIC8vIGlmIHRoZSByZXR1cm4gZmllbGQgaXMgbnVtZXJpYywgdGhlbiBjb252ZXJ0IHJlc3VsdCB2YWx1ZSB0b051bSgpIGJlZm9yZSBwYXNzaW5nIHRvIHNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUoKS5cclxuICAgICAgbGV0IHJlc3VsdDogc3RyaW5nID0gcmV0ID8gXCIxXCIgOiBcIjBcIjtcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFR5cGUoKSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDKVxyXG4gICAgICAgIHJlc3VsdCA9IERpc3BsYXlDb252ZXJ0b3IuSW5zdGFuY2UudG9OdW0ocmVzdWx0LCBuZXcgUElDKHJldHVybkZpZWxkLmdldFBpY3R1cmUoKSwgU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDLCAwKSwgMCk7XHJcblxyXG4gICAgICBhd2FpdCByZXR1cm5GaWVsZC5zZXRWYWx1ZUFuZFN0YXJ0UmVjb21wdXRlKHJlc3VsdCwgZmFsc2UsIHJlY29tcHV0ZSwgZmFsc2UsIGZhbHNlLCBlbmZvcmNlVmFyaWFibGVDaGFuZ2UpO1xyXG5cclxuICAgICAgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIucG9wTmV3RXhlY1N0YWNrcygpO1xyXG5cclxuICAgICAgaWYgKCFyZWNvbXB1dGUpXHJcbiAgICAgICAgcmV0dXJuRmllbGQuc2V0TW9kaWZpZWQoKTtcclxuXHJcbiAgICAgIHJldHVybkZpZWxkLmludmFsaWRhdGUodHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgLy8gSWYgZmllbGQgaXMgZnJvbSBhbm90aGVyIHRhc2ssIG5lZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5IGFzIHdlbGxcclxuICAgICAgaWYgKHJldHVybkZpZWxkLmdldFRhc2soKSAhPT0gdGhpcy5UYXNrKVxyXG4gICAgICAgIGF3YWl0IHJldHVybkZpZWxkLnVwZGF0ZURpc3BsYXkoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
@@ -174,4 +174,4 @@ export class TableCache {
174
174
  }
175
175
  }
176
176
  }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvVGFibGVDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEMsT0FBTyxFQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt4RCxNQUFNLE9BQU8sVUFBVTtJQUNiLEtBQUssR0FBYyxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFpQixJQUFJLENBQUM7SUFDOUIsWUFBWSxHQUFXLElBQUksQ0FBQztJQUM1QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBRWpDLE9BQU8sR0FBZ0IsSUFBSSxDQUFDO0lBRXBCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsV0FBVyxHQUFXLElBQUksQ0FBQztJQUMzQixTQUFTLEdBQVcsSUFBSSxDQUFDO0lBTWpDLFlBQVksT0FBZTtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBVSxDQUFDO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFLRCxhQUFhLENBQUMsS0FBYTtRQUN6QixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSTtZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEMsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO1FBQy9ILENBQUM7SUFDSCxDQUFDO0lBS0QsUUFBUTtRQUNOLElBQUksTUFBTSxHQUFjLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDM0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUtPLGNBQWMsQ0FBQyxNQUFpQjtRQUN0QyxJQUFJLFVBQVUsR0FBVyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFcEcsSUFBSSxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVqRSxJQUFJLEdBQUcsR0FBVyxNQUFNLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxjQUFjLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEgsSUFBSSxZQUFZLEdBQWlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsRUFBRSxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7WUFHdEgsS0FBSyxJQUFJLENBQUMsR0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLFNBQVMsR0FBVyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxRQUFRLEdBQVcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUV0RCxRQUFRLFNBQVMsRUFBRSxDQUFDO29CQUNsQixLQUFLLFlBQVksQ0FBQyxVQUFVO3dCQUkxQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDOzRCQUMxQixNQUFNLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLCtEQUErRCxDQUFDLENBQUM7d0JBQzlHLENBQUM7d0JBQ0QsTUFBTTtvQkFFUixLQUFLLFlBQVksQ0FBQyxZQUFZO3dCQUM1QixNQUFNO29CQUVSLEtBQUssY0FBYyxDQUFDLGFBQWE7d0JBQy9CLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQzs0QkFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7NEJBQzVCLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsbUVBQW1FLENBQUMsQ0FBQzt3QkFDbEgsQ0FBQzt3QkFDRCxNQUFNO29CQUNSO3dCQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO3dCQUN2RyxNQUFNO2dCQUNWLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFLTyxnQkFBZ0IsQ0FBQyxNQUFpQixFQUFFLFlBQW9CO1FBQzlELElBQUksWUFBWSxJQUFJLElBQUk7WUFDdEIsT0FBTyxLQUFLLENBQUM7UUFFZixRQUFRLFlBQVksRUFBRSxDQUFDO1lBQ3JCLEtBQUssWUFBWSxDQUFDLFdBQVc7Z0JBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFFUixLQUFLLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07WUFDUixDQUFDO1lBRUQsS0FBSyxjQUFjLENBQUMsY0FBYztnQkFDaEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBRXBHLE1BQU07WUFDUixLQUFLLGNBQWMsQ0FBQyxrQkFBa0I7Z0JBQ3BDLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixNQUFNO1lBQ1IsS0FBSyxjQUFjLENBQUMsdUJBQXVCO2dCQUN6QyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDL0IsT0FBTyxLQUFLLENBQUM7WUFDZixLQUFLLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUMvQixJQUFJLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNyQixPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUIsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFLRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFLRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFLRCxVQUFVLENBQUMsS0FBYTtRQUN0QixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEtBQUs7Z0JBQzdDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtPLEtBQUssQ0FBQyxJQUFJO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDcEIsTUFBTSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQU9ELEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBaUIsRUFBRSxPQUFlO1FBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNqQixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUdwQixJQUFJLFNBQVMsS0FBSyxJQUFJLENBQUMsWUFBWSxJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckUsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7WUFFOUIsSUFBSSxVQUFVLEdBQWEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNuRCxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTFCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxHQUFHO2dCQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRWpDLEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBTUQsS0FBSyxDQUFDLEdBQW1CO1FBSXZCLElBQUksUUFBUSxHQUFZLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRXZDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRW5CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFZCxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNFLENBQUM7WUFHRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxPQUFPLEdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBR2hELElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUdELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUtPLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBZSxFQUFFLFNBQXlCO1FBQ25FLElBQUksTUFBTSxHQUFZLElBQUksQ0FBQztRQUczQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hELElBQUksT0FBTyxHQUFhLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzNILE1BQU0sR0FBRyxLQUFLLENBQUM7Z0JBQ2YsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQU1TLGFBQWEsQ0FBQyxLQUFlO1FBQ3JDLElBQUksS0FBSyxHQUFXLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLEtBQUssSUFBSSxJQUFJLEdBQVcsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZGLElBQUksR0FBRyxHQUFXLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdCwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7S2V5fSBmcm9tIFwiLi4vZGF0YS9LZXlcIjtcclxuaW1wb3J0IHtGaWVsZHNUYWJsZUV4dCBhcyBGaWVsZHNUYWJsZSB9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtSdW50aW1lQ29udGV4dEJhc2V9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7SGVhcFNvcnR9IGZyb20gXCIuLi91dGlsL0hlYXBTb3J0XCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNhY2hlTWFuYWdlciB9IGZyb20gXCIuL1RhYmxlQ2FjaGVNYW5hZ2VyXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIHJlc2lkZW50IHRhYmxlIG9uIGNsaWVudFxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVGFibGVDYWNoZSB7XHJcbiAgcHJpdmF0ZSBfa2V5czogTGlzdDxLZXk+ID0gbnVsbDtcclxuICBwcml2YXRlIF9yZWNvcmRzOiBMaXN0PFJlY29yZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnJTb3J0RGlyOiBzdHJpbmcgPSAnXFwwJztcclxuICBwcml2YXRlIF9jdXJyU29ydEtleTogbnVtYmVyID0gMDtcclxuXHJcbiAgRmxkc1RhYjogRmllbGRzVGFibGUgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9pc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RhYmxlSWRlbnQ6IHN0cmluZyA9IG51bGw7IC8vIGEgdGFibGUgaWRlbnRpZmllciB0aGlzIGlkIGlmIHNoYXJlIGJldHdlZW4gYWxsIGluc3RhbmNlcyBvZiBhIHJlc2lkZW50IHRhYmxlIHVzZWQgdG8gZGVsZXRlIG9sZCBpbnN0bmNlcyBvZiBhIHJlbG9hZGVkIHRhYmxlO1xyXG4gIHByaXZhdGUgX3RhYmxlVUlkOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgdGFibGUgdW5pcXVlIGlkIHVzZWQgdG8gbG9hZCB0aGUgdGFibGUgLSBpdCBpcyBhbHNvIHRoZSBpZCBvZiB0aGUgZGF0YS1pc2xhbmQgY29udGFpbmluZyB0aGUgdGFibGUgeG1sXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29uc3RydWN0cyBhbiBlbXB0eSB0YWJsZSBjYWNoZSB3aXRob3V0IGxvYWRpbmcgdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3Rvcih0YWJsZUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3RhYmxlVUlkID0gdGFibGVJZDtcclxuICAgIHRoaXMuX2tleXMgPSBuZXcgTGlzdDxLZXk+KCk7XHJcbiAgICB0aGlzLl9yZWNvcmRzID0gbmV3IExpc3Q8UmVjb3JkPigpO1xyXG4gICAgdGhpcy5faXNMb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHRhYmxlIHNoYXJlZCBpZGVudGlmaWVyIHdpbGwgYmUgY2FsbGVkIGRpcmVjdGx5IGJlZm9yZSB0aGUgY29uc3RydWN0b3IgYW5kIGJlZm9yZSBwYXJzaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBTZXRUYWJsZUlkZW50KGlkZW50OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl90YWJsZUlkZW50ID09PSBudWxsKVxyXG4gICAgICB0aGlzLl90YWJsZUlkZW50ID0gaWRlbnQ7XHJcbiAgICBlbHNlIGlmICh0aGlzLl90YWJsZUlkZW50ICE9PSBpZGVudCkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLnNldFRhYmxlSWRlbnQoKSBhbHJlYWR5IHNldCBhbmQgdGFibGUgaWRlbnRpZmllciAgZG9lcyBub3QgbWF0Y2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2VzIHRoZSB4bWwgZGF0YSBvZiB0aGUgdGFibGUgY2FjaGUgYXMgcGFydCBvZiB0aGUgbG9hZCBwcm9jZXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBGaWxsRGF0YSgpOiB2b2lkIHtcclxuICAgIGxldCBwYXJzZXI6IFhtbFBhcnNlciA9IFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5QYXJzZXI7XHJcbiAgICB0aGlzLkZpbGxBdHRyaWJ1dGVzKHBhcnNlcik7XHJcbiAgICB3aGlsZSAodGhpcy5Jbml0SW5uZXJPYmplY3RzKHBhcnNlciwgcGFyc2VyLmdldE5leHRUYWcoKSkpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZXMgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGNhY2hlZFRhYmxlIHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBGaWxsQXR0cmlidXRlcyhwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG5cclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19DQUNIRURfVEFCTEUpICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0NBQ0hFRF9UQUJMRS5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG5cclxuICAgICAgLy8gcGFyc2UgdGhlIGNhY2hlZFRhYmxlIGF0dHJpYnV0ZXNcclxuICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JRDpcclxuXHJcbiAgICAgICAgICAgIC8vIHRoZSBpZCBvZiB0aGUgdGFibGUgaXMgcmVjaXZlZCBhdCB0aGUgY29uc3RydWN0b3IgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgcGFyc2VkXHJcbiAgICAgICAgICAgIC8vIGhvd2V2ZXIgaXNzdWUgYSB3YXJubmluZyBpZiB0aGUgcGFyc2VkIHZhbHVlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50IHZhbHVlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZVVJZC5pbmRleE9mKHZhbHVlU3RyKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLl90YWJsZVVJZCA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFRhYmxlQ2FjaGUuZmlsbEF0dHJpYnV0ZXMoKSB0YWJsZSB1bmlxdWUgaWQgZG9lcyBub3QgbWF0Y2hcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FOlxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSURFTlQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZUlkZW50ICE9PSB2YWx1ZVN0cikge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3RhYmxlSWRlbnQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLmZpbGxBdHRyaWJ1dGVzKCkgdGFibGUgaWRlbnRpZmllciBpZCBkb2VzIG5vdCBtYXRjaFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhOU3RyaW5nLkZvcm1hdChcIlVucmVjb2duaXplZCBhdHRyaWJ1dGU6ICd7MH0nXCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleCgrK2VuZENvbnRleHQpOyAgLy8gdG8gZGVsZXRlIFwiPlwiIHRvb1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLmZpbGxBdHRyaWJ1dGVzKCkgb3V0IG9mIHN0cmluZyBib3VuZHNcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplIGlubmVyIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIGZvdW5kIHhtbCBkYXRhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIEluaXRJbm5lck9iamVjdHMocGFyc2VyOiBYbWxQYXJzZXIsIGZvdW5kVGFnTmFtZTogU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKGZvdW5kVGFnTmFtZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19UQUdfRkxESDpcclxuICAgICAgICB0aGlzLkZsZHNUYWIgPSBuZXcgRmllbGRzVGFibGUoKTtcclxuICAgICAgICB0aGlzLkZsZHNUYWIuZmlsbERhdGEocGFyc2VyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVk6IHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG5ldyBLZXkodGhpcyk7XHJcbiAgICAgICAgY3VycmVudC5GaWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIHRoaXMuX2tleXMucHVzaChjdXJyZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfUkVDT1JEUzpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgMSk7XHJcbiAgICAgICAgLy8gZW5kIG9mIG91dGVyIHRhZCBhbmQgaXRzIFwiPlwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1JFQ09SRFNfRU5EOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfQ0FDSEVEX1RBQkxFX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19SRUM6IHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG5ldyBSZWNvcmQodGhpcyk7XHJcbiAgICAgICAgY3VycmVudC5Jbml0aWFsaXplKCk7XHJcbiAgICAgICAgY3VycmVudC5maWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIHRoaXMuX3JlY29yZHMucHVzaChjdXJyZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdW5pcXVlIGlkIG9mIHRoZSBjdXJyZW50IGNhY2hlZCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VGFibGVVbmlxdWVJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlVUlkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgdGFibGUgY29tbW9uIGlkZW50aWZpZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFRhYmxlQ29tbW9uSWRlbnRpZmllcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlSWRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUga2V5IGJ5IHdoaWMgd2UgYXJlIGN1cnJlbnRseSBzb3J0aW5nIChvciBjdXJyZW50bHkgc29ydGVkKSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldEN1cnJTb3J0S2V5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VyclNvcnRLZXk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUga2V5IGJ5IGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRLZXlCeUlkKGtleUlkOiBudW1iZXIpOiBLZXkge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2tleXMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgaWYgKHRoaXMuX2tleXMuZ2V0X0l0ZW0oaSkuR2V0S2V5SWQoKSA9PT0ga2V5SWQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleXMuZ2V0X0l0ZW0oaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBsb2FkcyBhIHRhYmxlIGZyb20gdGhlIGRhdGFJc2xhbmQgYWNjb3JkaW5nIHRvIGlzIHVuaXF1ZSBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9pc0xvYWRlZCkge1xyXG4gICAgICBhd2FpdCBUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5Mb2FkVGFibGUodGhpcy5fdGFibGVVSWQpO1xyXG4gICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc29ydCB0aGUgY3VycmVudCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic29ydEtleUlkXCI+dGhlIGlkIG9mIHRoZSBrZXkgdG8gc29ydCBieSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvcnREaXJcIj48L3BhcmFtPlxyXG4gIGFzeW5jIFNvcnRUYWJsZShzb3J0S2V5SWQ6IG51bWJlciwgc29ydERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX2lzTG9hZGVkKVxyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuXHJcbiAgICAvLyBpZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgdGhlIHdheSB3ZSB3YW50IGl0XHJcbiAgICBpZiAoc29ydEtleUlkICE9PSB0aGlzLl9jdXJyU29ydEtleSB8fCBzb3J0RGlyICE9PSB0aGlzLl9jdXJyU29ydERpcikge1xyXG4gICAgICB0aGlzLl9jdXJyU29ydERpciA9IHNvcnREaXI7XHJcbiAgICAgIHRoaXMuX2N1cnJTb3J0S2V5ID0gc29ydEtleUlkO1xyXG5cclxuICAgICAgbGV0IHJlY29yZHNBcnI6IFJlY29yZFtdID0gdGhpcy5fcmVjb3Jkcy5Ub0FycmF5KCk7XHJcbiAgICAgIEhlYXBTb3J0LnNvcnQocmVjb3Jkc0Fycik7XHJcblxyXG4gICAgICBpZiAodGhpcy5fY3VyclNvcnREaXIgPT09ICdEJylcclxuICAgICAgICB0aGlzLlJldmVyc2VWZWN0b3IocmVjb3Jkc0Fycik7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX3JlY29yZHMuc2V0X0l0ZW0oaSwgcmVjb3Jkc0FycltpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlcyB0aGUgdGhlIGxpbmsgb3BlcmF0aW9uIHdlIGFzc3VtZSB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgYnkgdGhlIGNvcnJlY3Qga2V5IGFuZCBkaXJlY3Rpb25cclxuICAvLy8gICB0aGUgbWV0aG9kIHJldHVybnMgdGhlIHJlcXVlc3RlZCByZWNvcmQgYWNjb3JkaW5nIHRoZSBsb2NhdGVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBGZXRjaChsb2M6IExpc3Q8Qm91bmRhcnk+KTogUmVjb3JkIHtcclxuXHJcbiAgICAvLyBpZiB0aGVyZSBhcmUgbm90IGFueSBsb2NhdGUgZXhwcmVzc2lvbiB0aGVuIGVpdGhlciB3ZSByZXR1cm4gdGhlIGZmaXJzdCByZWNvcmQgdGhhdCBhY2NlcHRzXHJcbiAgICAvLyBhbCB0aGUgcmFuZ2UgY29uZGl0aW9uIG9yIHdlIHJldHVybiB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSB0YWJsZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc29ydFxyXG4gICAgbGV0IGNoZWNrTG9jOiBib29sZWFuID0gbG9jLmxlbmd0aCA+IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuX2lzTG9hZGVkKSB7XHJcbiAgICAgIC8vIHNob3VsZCBiZSBsb2FkZWQgYXQgc29ydCB0aW1lIHRoZSB0aW1lIG11c3QgYmUgYWxyZWFkeSBzb3J0ZWQgYXQgdGhpcyBzdGFnZVxyXG4gICAgICBpZiAoIWNoZWNrTG9jKSB7XHJcbiAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIGxvY2F0ZXMgcmV0dXJuIHRoZSBmaXJzdCByZWNvcmRcclxuICAgICAgICByZXR1cm4gKCh0aGlzLl9yZWNvcmRzLmxlbmd0aCAhPT0gMCkgPyB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKDApIDogbnVsbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHJlY29yZCB0aGF0IGFncmVlcyB3aXRoIHRoZSBsb2NhdGVzIGFudCByZXR1cm4gaXRcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX3JlY29yZHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBsZXQgY3VyclJlYzogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByZWNvcmQgYWdyZWVzIHdpdGggYWxsIHRoZSBsb2NhdGUgY29uZGl0aW9uc1xyXG4gICAgICAgIGlmIChUYWJsZUNhY2hlLnZhbGlkYXRlUmVjKGN1cnJSZWMsIGxvYykpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyUmVjO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgdGhlbiBlaXRoZXIgdGhlIHRhYmxlIHdhcyBub3QgbG9hZGVkIGFuZCBzb3J0ZWQgb3Igd2UgZGlkIG5vdCBmaW5kIGFueSByZWNvcmRcclxuICAgIC8vIHRoYXQgYWdyZWVzIHdpdGggdGhlIGxvY2F0ZSBleHByZXNzaW9ucyAtIGluIGVpdGhlciBjYXNlIHJldHVybiBudWxsXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSBhIHJlY29yZCBkYXRhIGFnYWluc3QgYSBzZXJpZXMgb2YgbG9jYXRlIGV4cHJlc3Npb25zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZVJlYyhjdXJyUmVjOiBSZWNvcmQsIHJhbmdlQ29uZDogTGlzdDxCb3VuZGFyeT4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vIGdvIG92ZXIgYWxsIHRoZSBjb25kaXRpb25zXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgcmFuZ2VDb25kLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjdXJyQ25kOiBCb3VuZGFyeSA9IHJhbmdlQ29uZC5nZXRfSXRlbShpKTtcclxuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGZpbGVkIHRoYXQgZG9lcyBub3QgYWdyZWUgYWxsIHRoZSByZWNvcmQgZGllcyBub3QgYWdyZWVcclxuICAgICAgaWYgKCFjdXJyQ25kLmNoZWNrUmFuZ2UoY3VyclJlYy5HZXRGaWVsZFZhbHVlKGN1cnJDbmQuZ2V0Q2FjaGVUYWJsZUZsZElkKCkpLCBjdXJyUmVjLklzTnVsbChjdXJyQ25kLmdldENhY2hlVGFibGVGbGRJZCgpKSkpIHtcclxuICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFycmF5XCI+PC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgUmV2ZXJzZVZlY3RvcihhcnJheTogT2JqZWN0W10pOiB2b2lkIHtcclxuICAgIGxldCByaWdodDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMTtcclxuICAgIGZvciAobGV0IGxlZnQ6IG51bWJlciA9IDA7IGxlZnQgPCBNYXRoLmZsb29yKChhcnJheS5sZW5ndGggLSAxKSAvIDIpOyBsZWZ0KysgLCByaWdodC0tKSB7XHJcbiAgICAgIGxldCB0bXA6IE9iamVjdCA9IGFycmF5W2xlZnRdO1xyXG4gICAgICBhcnJheVtsZWZ0XSA9IGFycmF5W3JpZ2h0XTtcclxuICAgICAgYXJyYXlbcmlnaHRdID0gdG1wO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VuZ2luZS9zcmMvcnQvVGFibGVDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLE9BQU8sRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEMsT0FBTyxFQUFDLGNBQWMsSUFBSSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTFDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUt4RCxNQUFNLE9BQU8sVUFBVTtJQUNiLEtBQUssR0FBYyxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFpQixJQUFJLENBQUM7SUFDOUIsWUFBWSxHQUFXLElBQUksQ0FBQztJQUM1QixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBRWpDLE9BQU8sR0FBZ0IsSUFBSSxDQUFDO0lBRXBCLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsV0FBVyxHQUFXLElBQUksQ0FBQztJQUMzQixTQUFTLEdBQVcsSUFBSSxDQUFDO0lBTWpDLFlBQVksT0FBZTtRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksSUFBSSxFQUFPLENBQUM7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QUcsS0FBSyxFQUFFLEVBQUU7WUFDdEYsSUFBSSxHQUFHLEdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDM0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUNwQjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TGlzdCwgTlN0cmluZ30gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7S2V5fSBmcm9tIFwiLi4vZGF0YS9LZXlcIjtcclxuaW1wb3J0IHtGaWVsZHNUYWJsZUV4dCBhcyBGaWVsZHNUYWJsZSB9IGZyb20gXCIuLi9kYXRhL0ZpZWxkc1RhYmxlXCI7XHJcbmltcG9ydCB7TG9nZ2VyLCBYTUxDb25zdGFudHMsIFhtbFBhcnNlcn0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHtSdW50aW1lQ29udGV4dEJhc2V9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSBcIi4uL2RhdGEvUmVjb3JkXCI7XHJcbmltcG9ydCB7SGVhcFNvcnR9IGZyb20gXCIuLi91dGlsL0hlYXBTb3J0XCI7XHJcbmltcG9ydCB7Qm91bmRhcnl9IGZyb20gXCIuL0JvdW5kYXJ5XCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUNhY2hlTWFuYWdlciB9IGZyb20gXCIuL1RhYmxlQ2FjaGVNYW5hZ2VyXCI7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIHJlc2lkZW50IHRhYmxlIG9uIGNsaWVudFxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVGFibGVDYWNoZSB7XHJcbiAgcHJpdmF0ZSBfa2V5czogTGlzdDxLZXk+ID0gbnVsbDtcclxuICBwcml2YXRlIF9yZWNvcmRzOiBMaXN0PFJlY29yZD4gPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnJTb3J0RGlyOiBzdHJpbmcgPSAnXFwwJztcclxuICBwcml2YXRlIF9jdXJyU29ydEtleTogbnVtYmVyID0gMDtcclxuXHJcbiAgRmxkc1RhYjogRmllbGRzVGFibGUgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIF9pc0xvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RhYmxlSWRlbnQ6IHN0cmluZyA9IG51bGw7IC8vIGEgdGFibGUgaWRlbnRpZmllciB0aGlzIGlkIGlmIHNoYXJlIGJldHdlZW4gYWxsIGluc3RhbmNlcyBvZiBhIHJlc2lkZW50IHRhYmxlIHVzZWQgdG8gZGVsZXRlIG9sZCBpbnN0bmNlcyBvZiBhIHJlbG9hZGVkIHRhYmxlO1xyXG4gIHByaXZhdGUgX3RhYmxlVUlkOiBzdHJpbmcgPSBudWxsOyAvLyB0aGUgdGFibGUgdW5pcXVlIGlkIHVzZWQgdG8gbG9hZCB0aGUgdGFibGUgLSBpdCBpcyBhbHNvIHRoZSBpZCBvZiB0aGUgZGF0YS1pc2xhbmQgY29udGFpbmluZyB0aGUgdGFibGUgeG1sXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY29uc3RydWN0cyBhbiBlbXB0eSB0YWJsZSBjYWNoZSB3aXRob3V0IGxvYWRpbmcgdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3Rvcih0YWJsZUlkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX3RhYmxlVUlkID0gdGFibGVJZDtcclxuICAgIHRoaXMuX2tleXMgPSBuZXcgTGlzdDxLZXk+KCk7XHJcbiAgICB0aGlzLl9yZWNvcmRzID0gbmV3IExpc3Q8UmVjb3JkPigpO1xyXG4gICAgdGhpcy5faXNMb2FkZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIHRhYmxlIHNoYXJlZCBpZGVudGlmaWVyIHdpbGwgYmUgY2FsbGVkIGRpcmVjdGx5IGJlZm9yZSB0aGUgY29uc3RydWN0b3IgYW5kIGJlZm9yZSBwYXJzaW5nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBTZXRUYWJsZUlkZW50KGlkZW50OiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl90YWJsZUlkZW50ID09PSBudWxsKVxyXG4gICAgICB0aGlzLl90YWJsZUlkZW50ID0gaWRlbnQ7XHJcbiAgICBlbHNlIGlmICh0aGlzLl90YWJsZUlkZW50ICE9PSBpZGVudCkge1xyXG4gICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLnNldFRhYmxlSWRlbnQoKSBhbHJlYWR5IHNldCBhbmQgdGFibGUgaWRlbnRpZmllciAgZG9lcyBub3QgbWF0Y2hcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcGFyc2VzIHRoZSB4bWwgZGF0YSBvZiB0aGUgdGFibGUgY2FjaGUgYXMgcGFydCBvZiB0aGUgbG9hZCBwcm9jZXNzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBGaWxsRGF0YSgpOiB2b2lkIHtcclxuICAgIGxldCBwYXJzZXI6IFhtbFBhcnNlciA9IFJ1bnRpbWVDb250ZXh0QmFzZS5JbnN0YW5jZS5QYXJzZXI7XHJcbiAgICB0aGlzLkZpbGxBdHRyaWJ1dGVzKHBhcnNlcik7XHJcbiAgICB3aGlsZSAodGhpcy5Jbml0SW5uZXJPYmplY3RzKHBhcnNlciwgcGFyc2VyLmdldE5leHRUYWcoKSkpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBwYXJzZXMgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGNhY2hlZFRhYmxlIHRhZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBGaWxsQXR0cmlidXRlcyhwYXJzZXI6IFhtbFBhcnNlcik6IHZvaWQge1xyXG4gICAgbGV0IGVuZENvbnRleHQ6IG51bWJlciA9IHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpO1xyXG5cclxuICAgIGlmIChlbmRDb250ZXh0ICE9PSAtMSAmJiBlbmRDb250ZXh0IDwgcGFyc2VyLmdldFhNTGRhdGEoKS5sZW5ndGgpIHtcclxuICAgICAgLy8gbGFzdCBwb3NpdGlvbiBvZiBpdHMgdGFnXHJcbiAgICAgIGxldCB0YWc6IHN0cmluZyA9IHBhcnNlci5nZXRYTUxzdWJzdHJpbmcoZW5kQ29udGV4dCk7XHJcbiAgICAgIHBhcnNlci5hZGQyQ3VyckluZGV4KHRhZy5pbmRleE9mKENvbnN0SW50ZXJmYWNlLk1HX1RBR19DQUNIRURfVEFCTEUpICsgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX0NBQ0hFRF9UQUJMRS5sZW5ndGgpO1xyXG5cclxuICAgICAgbGV0IHRva2Vuc1ZlY3RvcjogTGlzdDxzdHJpbmc+ID0gWG1sUGFyc2VyLmdldFRva2VucyhwYXJzZXIuZ2V0WE1Mc3Vic3RyaW5nKGVuZENvbnRleHQpLCBYTUxDb25zdGFudHMuWE1MX0FUVFJfREVMSU0pO1xyXG5cclxuICAgICAgLy8gcGFyc2UgdGhlIGNhY2hlZFRhYmxlIGF0dHJpYnV0ZXNcclxuICAgICAgZm9yIChsZXQgajogbnVtYmVyID0gMDsgaiA8IHRva2Vuc1ZlY3Rvci5sZW5ndGg7IGogKz0gMikge1xyXG4gICAgICAgIGxldCBhdHRyaWJ1dGU6IHN0cmluZyA9ICh0b2tlbnNWZWN0b3IuZ2V0X0l0ZW0oaikpO1xyXG4gICAgICAgIGxldCB2YWx1ZVN0cjogc3RyaW5nID0gKHRva2Vuc1ZlY3Rvci5nZXRfSXRlbShqICsgMSkpO1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkge1xyXG4gICAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9JRDpcclxuXHJcbiAgICAgICAgICAgIC8vIHRoZSBpZCBvZiB0aGUgdGFibGUgaXMgcmVjaXZlZCBhdCB0aGUgY29uc3RydWN0b3IgYW5kIGRvZXMgbm90IG5lZWQgdG8gYmUgcGFyc2VkXHJcbiAgICAgICAgICAgIC8vIGhvd2V2ZXIgaXNzdWUgYSB3YXJubmluZyBpZiB0aGUgcGFyc2VkIHZhbHVlIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBjdXJyZW50IHZhbHVlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZVVJZC5pbmRleE9mKHZhbHVlU3RyKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICB0aGlzLl90YWJsZVVJZCA9IHZhbHVlU3RyO1xyXG4gICAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhcImluIFRhYmxlQ2FjaGUuZmlsbEF0dHJpYnV0ZXMoKSB0YWJsZSB1bmlxdWUgaWQgZG9lcyBub3QgbWF0Y2hcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBYTUxDb25zdGFudHMuTUdfQVRUUl9OQU1FOlxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX0FUVFJfSURFTlQ6XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZUlkZW50ICE9PSB2YWx1ZVN0cikge1xyXG4gICAgICAgICAgICAgIHRoaXMuX3RhYmxlSWRlbnQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgICAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLmZpbGxBdHRyaWJ1dGVzKCkgdGFibGUgaWRlbnRpZmllciBpZCBkb2VzIG5vdCBtYXRjaFwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUV4Y2VwdGlvblRvTG9nV2l0aE1zZyhOU3RyaW5nLkZvcm1hdChcIlVucmVjb2duaXplZCBhdHRyaWJ1dGU6ICd7MH0nXCIsIGF0dHJpYnV0ZSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcGFyc2VyLnNldEN1cnJJbmRleCgrK2VuZENvbnRleHQpOyAgLy8gdG8gZGVsZXRlIFwiPlwiIHRvb1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBMb2dnZXIuSW5zdGFuY2UuV3JpdGVFeGNlcHRpb25Ub0xvZ1dpdGhNc2coXCJpbiBUYWJsZUNhY2hlLmZpbGxBdHRyaWJ1dGVzKCkgb3V0IG9mIHN0cmluZyBib3VuZHNcIik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplIGlubmVyIG9iamVjdCBhY2NvcmRpbmcgdG8gdGhlIGZvdW5kIHhtbCBkYXRhXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIEluaXRJbm5lck9iamVjdHMocGFyc2VyOiBYbWxQYXJzZXIsIGZvdW5kVGFnTmFtZTogU3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoZm91bmRUYWdOYW1lID09IG51bGwpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBzd2l0Y2ggKGZvdW5kVGFnTmFtZSkge1xyXG4gICAgICBjYXNlIFhNTENvbnN0YW50cy5NR19UQUdfRkxESDpcclxuICAgICAgICB0aGlzLkZsZHNUYWIgPSBuZXcgRmllbGRzVGFibGUoKTtcclxuICAgICAgICB0aGlzLkZsZHNUYWIuZmlsbERhdGEocGFyc2VyKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9LRVk6IHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG5ldyBLZXkodGhpcyk7XHJcbiAgICAgICAgY3VycmVudC5GaWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIHRoaXMuX2tleXMucHVzaChjdXJyZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG5cclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfUkVDT1JEUzpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4KHBhcnNlci5nZXRYTUxkYXRhKCkuaW5kZXhPZihYTUxDb25zdGFudHMuVEFHX0NMT1NFLCBwYXJzZXIuZ2V0Q3VyckluZGV4KCkpICsgMSk7XHJcbiAgICAgICAgLy8gZW5kIG9mIG91dGVyIHRhZCBhbmQgaXRzIFwiPlwiXHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfVEFHX1JFQ09SRFNfRU5EOlxyXG4gICAgICAgIHBhcnNlci5zZXRDdXJySW5kZXgyRW5kT2ZUYWcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19UQUdfQ0FDSEVEX1RBQkxFX0VORDpcclxuICAgICAgICBwYXJzZXIuc2V0Q3VyckluZGV4MkVuZE9mVGFnKCk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBjYXNlIENvbnN0SW50ZXJmYWNlLk1HX1RBR19SRUM6IHtcclxuICAgICAgICBsZXQgY3VycmVudCA9IG5ldyBSZWNvcmQodGhpcyk7XHJcbiAgICAgICAgY3VycmVudC5Jbml0aWFsaXplKCk7XHJcbiAgICAgICAgY3VycmVudC5maWxsRGF0YShwYXJzZXIpO1xyXG4gICAgICAgIHRoaXMuX3JlY29yZHMucHVzaChjdXJyZW50KTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdW5pcXVlIGlkIG9mIHRoZSBjdXJyZW50IGNhY2hlZCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgR2V0VGFibGVVbmlxdWVJZCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlVUlkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgdGFibGUgY29tbW9uIGlkZW50aWZpZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFRhYmxlQ29tbW9uSWRlbnRpZmllcigpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlSWRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUga2V5IGJ5IHdoaWMgd2UgYXJlIGN1cnJlbnRseSBzb3J0aW5nIChvciBjdXJyZW50bHkgc29ydGVkKSB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldEN1cnJTb3J0S2V5KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY3VyclNvcnRLZXk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUga2V5IGJ5IGlkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRLZXlCeUlkKGtleUlkOiBudW1iZXIpOiBLZXkge1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX2tleXMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgaWYgKHRoaXMuX2tleXMuZ2V0X0l0ZW0oaSkuR2V0S2V5SWQoKSA9PT0ga2V5SWQpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2tleXMuZ2V0X0l0ZW0oaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBsb2FkcyBhIHRhYmxlIGZyb20gdGhlIGRhdGFJc2xhbmQgYWNjb3JkaW5nIHRvIGlzIHVuaXF1ZSBpZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBhc3luYyBMb2FkKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9pc0xvYWRlZCkge1xyXG4gICAgICBhd2FpdCBUYWJsZUNhY2hlTWFuYWdlci5JbnN0YW5jZS5Mb2FkVGFibGUodGhpcy5fdGFibGVVSWQpO1xyXG4gICAgICB0aGlzLl9pc0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc29ydCB0aGUgY3VycmVudCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic29ydEtleUlkXCI+dGhlIGlkIG9mIHRoZSBrZXkgdG8gc29ydCBieSA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNvcnREaXJcIj48L3BhcmFtPlxyXG4gIGFzeW5jIFNvcnRUYWJsZShzb3J0S2V5SWQ6IG51bWJlciwgc29ydERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuX2lzTG9hZGVkKVxyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuXHJcbiAgICAvLyBpZiB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgdGhlIHdheSB3ZSB3YW50IGl0XHJcbiAgICBpZiAoc29ydEtleUlkICE9PSB0aGlzLl9jdXJyU29ydEtleSB8fCBzb3J0RGlyICE9PSB0aGlzLl9jdXJyU29ydERpcikge1xyXG4gICAgICB0aGlzLl9jdXJyU29ydERpciA9IHNvcnREaXI7XHJcbiAgICAgIHRoaXMuX2N1cnJTb3J0S2V5ID0gc29ydEtleUlkO1xyXG5cclxuICAgICAgbGV0IHJlY29yZHNBcnI6IFJlY29yZFtdID0gdGhpcy5fcmVjb3Jkcy5Ub0FycmF5KCk7XHJcbiAgICAgIEhlYXBTb3J0LnNvcnQocmVjb3Jkc0Fycik7XHJcblxyXG4gICAgICBpZiAodGhpcy5fY3VyclNvcnREaXIgPT09ICdEJylcclxuICAgICAgICB0aGlzLlJldmVyc2VWZWN0b3IocmVjb3Jkc0Fycik7XHJcblxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgdGhpcy5fcmVjb3Jkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX3JlY29yZHMuc2V0X0l0ZW0oaSwgcmVjb3Jkc0FycltpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBleGVjdXRlcyB0aGUgdGhlIGxpbmsgb3BlcmF0aW9uIHdlIGFzc3VtZSB0aGUgdGFibGUgaXMgYWxyZWFkeSBzb3J0ZWQgYnkgdGhlIGNvcnJlY3Qga2V5IGFuZCBkaXJlY3Rpb25cclxuICAvLy8gICB0aGUgbWV0aG9kIHJldHVybnMgdGhlIHJlcXVlc3RlZCByZWNvcmQgYWNjb3JkaW5nIHRoZSBsb2NhdGVzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBGZXRjaChsb2M6IExpc3Q8Qm91bmRhcnk+KTogUmVjb3JkIHtcclxuXHJcbiAgICAvLyBpZiB0aGVyZSBhcmUgbm90IGFueSBsb2NhdGUgZXhwcmVzc2lvbiB0aGVuIGVpdGhlciB3ZSByZXR1cm4gdGhlIGZmaXJzdCByZWNvcmQgdGhhdCBhY2NlcHRzXHJcbiAgICAvLyBhbCB0aGUgcmFuZ2UgY29uZGl0aW9uIG9yIHdlIHJldHVybiB0aGUgZmlyc3QgcmVjb3JkIGluIHRoZSB0YWJsZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgc29ydFxyXG4gICAgbGV0IGNoZWNrTG9jOiBib29sZWFuID0gbG9jLmxlbmd0aCA+IDA7XHJcblxyXG4gICAgaWYgKHRoaXMuX2lzTG9hZGVkKSB7XHJcbiAgICAgIC8vIHNob3VsZCBiZSBsb2FkZWQgYXQgc29ydCB0aW1lIHRoZSB0aW1lIG11c3QgYmUgYWxyZWFkeSBzb3J0ZWQgYXQgdGhpcyBzdGFnZVxyXG4gICAgICBpZiAoIWNoZWNrTG9jKSB7XHJcbiAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG5vIGxvY2F0ZXMgcmV0dXJuIHRoZSBmaXJzdCByZWNvcmRcclxuICAgICAgICByZXR1cm4gKCh0aGlzLl9yZWNvcmRzLmxlbmd0aCAhPT0gMCkgPyB0aGlzLl9yZWNvcmRzLmdldF9JdGVtKDApIDogbnVsbCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHJlY29yZCB0aGF0IGFncmVlcyB3aXRoIHRoZSBsb2NhdGVzIGFudCByZXR1cm4gaXRcclxuICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHRoaXMuX3JlY29yZHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICBsZXQgY3VyclJlYzogUmVjb3JkID0gdGhpcy5fcmVjb3Jkcy5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhpcyByZWNvcmQgYWdyZWVzIHdpdGggYWxsIHRoZSBsb2NhdGUgY29uZGl0aW9uc1xyXG4gICAgICAgIGlmIChUYWJsZUNhY2hlLnZhbGlkYXRlUmVjKGN1cnJSZWMsIGxvYykpIHtcclxuICAgICAgICAgIHJldHVybiBjdXJyUmVjO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gaWYgd2UgZ290IGhlcmUgdGhlbiBlaXRoZXIgdGhlIHRhYmxlIHdhcyBub3QgbG9hZGVkIGFuZCBzb3J0ZWQgb3Igd2UgZGlkIG5vdCBmaW5kIGFueSByZWNvcmRcclxuICAgIC8vIHRoYXQgYWdyZWVzIHdpdGggdGhlIGxvY2F0ZSBleHByZXNzaW9ucyAtIGluIGVpdGhlciBjYXNlIHJldHVybiBudWxsXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB2YWxpZGF0ZSBhIHJlY29yZCBkYXRhIGFnYWluc3QgYSBzZXJpZXMgb2YgbG9jYXRlIGV4cHJlc3Npb25zXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZVJlYyhjdXJyUmVjOiBSZWNvcmQsIHJhbmdlQ29uZDogTGlzdDxCb3VuZGFyeT4pOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vIGdvIG92ZXIgYWxsIHRoZSBjb25kaXRpb25zXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgcmFuZ2VDb25kLmxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjdXJyQ25kOiBCb3VuZGFyeSA9IHJhbmdlQ29uZC5nZXRfSXRlbShpKTtcclxuICAgICAgLy8gaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGZpbGVkIHRoYXQgZG9lcyBub3QgYWdyZWUgYWxsIHRoZSByZWNvcmQgZGllcyBub3QgYWdyZWVcclxuICAgICAgaWYgKCFjdXJyQ25kLmNoZWNrUmFuZ2UoY3VyclJlYy5HZXRGaWVsZFZhbHVlKGN1cnJDbmQuZ2V0Q2FjaGVUYWJsZUZsZElkKCkpLCBjdXJyUmVjLklzTnVsbChjdXJyQ25kLmdldENhY2hlVGFibGVGbGRJZCgpKSkpIHtcclxuICAgICAgICByZXN1bHQgPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImFycmF5XCI+PC9wYXJhbT5cclxuICBwcm90ZWN0ZWQgUmV2ZXJzZVZlY3RvcihhcnJheTogT2JqZWN0W10pOiB2b2lkIHtcclxuICAgIGxldCByaWdodDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMTtcclxuICAgIGZvciAobGV0IGxlZnQ6IG51bWJlciA9IDA7IGxlZnQgPCBNYXRoLmZsb29yKChhcnJheS5sZW5ndGggLSAxKSAvIDIpOyBsZWZ0KysgLCByaWdodC0tKSB7XHJcbiAgICAgIGxldCB0bXA6IE9iamVjdCA9IGFycmF5W2xlZnRdO1xyXG4gICAgICBhcnJheVtsZWZ0XSA9IGFycmF5W3JpZ2h0XTtcclxuICAgICAgYXJyYXlbcmlnaHRdID0gdG1wO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -64,4 +64,4 @@ export class TableCacheManager {
64
64
  }
65
65
  }
66
66
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLNUUsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixPQUFPLEdBQWtDLElBQUksQ0FBQztJQUV0RCxNQUFNLENBQUMsUUFBUSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFFN0Q7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxFQUFzQixDQUFDO0lBQ3JELENBQUM7SUFLRCxZQUFZLENBQUMsUUFBZ0I7UUFDM0IsT0FBbUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUtELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixJQUFJLE1BQU0sR0FBWSxJQUFJLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7WUFDdEMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVqQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBTUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQU1ELEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBZ0I7UUFDOUIsSUFBSSxNQUFNLEdBQTBCLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRzFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBRS9CLElBQUksT0FBTyxHQUEyQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUM7Z0JBQ0gsSUFBSSx1QkFBdUIsR0FBVyxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM5RSxJQUFJLENBQUM7b0JBQ0gsa0JBQWtCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUNqRixDQUFDO2dCQUNELE9BQU8sY0FBYyxFQUFFLENBQUM7b0JBQ3RCLElBQUksY0FBYyxZQUFZLFNBQVMsRUFBRSxDQUFDO3dCQUN4QyxNQUFNLElBQUksb0JBQW9CLENBQUMsaUNBQWlDLEdBQUcsUUFBUSxHQUFHLGdDQUFnQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUNsSSxDQUFDOzt3QkFFQyxNQUFNLGNBQWMsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUM7WUFDRCxPQUFPLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLFNBQVMsWUFBWSxTQUFTLEVBQUUsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEMsQ0FBQzs7b0JBRUMsTUFBTSxTQUFTLENBQUM7WUFDcEIsQ0FBQztZQUdELE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUduQixJQUFJLFdBQVcsR0FBaUIsSUFBSSxJQUFJLEVBQVUsQ0FBQztZQUNuRCxJQUFJLFVBQVUsR0FBaUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDbkUsT0FBTyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxHQUFHLEdBQTJCLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JELElBQUksU0FBUyxHQUFXLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLFNBQVMsS0FBSyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxRQUFRO29CQUN6RixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUVELEtBQUssSUFBSSxDQUFDLEdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNaXNjIH0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7IEFwcGxpY2F0aW9uRXhjZXB0aW9uLCBBcnJheV9FbnVtZXJhdG9yLCBFeGNlcHRpb24sIEhhc2h0YWJsZSwgTGlzdCB9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHsgUnVudGltZUNvbnRleHRCYXNlIH0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQgeyBUYWJsZUNhY2hlIH0gZnJvbSAnLi9UYWJsZUNhY2hlJztcclxuaW1wb3J0IHsgQ29tbWFuZHNQcm9jZXNzb3JCYXNlIH0gZnJvbSAnLi4vQ29tbWFuZHNQcm9jZXNzb3JCYXNlJztcclxuaW1wb3J0IHsgUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IgfSBmcm9tICcuLi9yZW1vdGUvUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3InO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBoYW5kbGVzIHRoZSBsb2FkaW5nIGFuZCBtYW5hZ2luZyBvZiBhbGwgY2FjaGUgdGFibGVzIGluIHRoZSBjb250ZXh0XHJcbi8vLyA8L3N1bW1hcnk+XHJcbmV4cG9ydCBjbGFzcyBUYWJsZUNhY2hlTWFuYWdlciB7XHJcbiAgcHJpdmF0ZSBfdGFibGVzOiBIYXNodGFibGU8c3RyaW5nLCBUYWJsZUNhY2hlPiA9IG51bGw7XHJcblxyXG4gIHN0YXRpYyBJbnN0YW5jZTogVGFibGVDYWNoZU1hbmFnZXIgPSBuZXcgVGFibGVDYWNoZU1hbmFnZXIoKTtcclxuXHJcbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHRoaXMuX3RhYmxlcyA9IG5ldyBIYXNodGFibGU8c3RyaW5nLCBUYWJsZUNhY2hlPigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0aGUgdGFibGVDYWNoZSBvYmplY3QgIGFjY29yZGluZyB0byBpdHMgdW5pcXVlIGlkIG9yIG51bGwgaWYgZG9lcyBub3QgZXhpc3QgaW4gdGhlIG1hbmFnZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFRhYmxlQnlJZCh0YWJsZVVJZDogc3RyaW5nKTogVGFibGVDYWNoZSB7XHJcbiAgICByZXR1cm4gPFRhYmxlQ2FjaGU+dGhpcy5fdGFibGVzLmdldF9JdGVtKHRhYmxlVUlkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjaGVja3MgaWYgYSBnaXZlbiB0YWJsZSBleGlzdHMgaW4gdGhlIG1hbmFnZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIFRhYmxlRXhpc3RzKHRhYmxlVUlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLkdldFRhYmxlQnlJZCh0YWJsZVVJZCkgPT09IG51bGwpXHJcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgaW5zZXJ0cyBhIHRhYmxlIGludG8gdGhlIG1hbmFnZXIgaXMgbm90IGFscmVhZHkgZXhpc3RzXHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlzIGluc2VydCBzdWNjZWVkZWQgZmFsc2Ugb3RoZXJ3aXNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBJbnNlcnRUYWJsZSh0YWJsZTogVGFibGVDYWNoZSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJlc3VsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlmICghdGhpcy5UYWJsZUV4aXN0cyh0YWJsZS5HZXRUYWJsZVVuaXF1ZUlkKCkpKSB7XHJcbiAgICAgIHRoaXMuX3RhYmxlcy5zZXRfSXRlbSh0YWJsZS5HZXRUYWJsZVVuaXF1ZUlkKCksIHRhYmxlKTtcclxuICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGxvYWRzIGEgbmV3IHRhYmxlIHN0YXJ0IHRoZSB0YWJsZSBwYXJzaW5nIHByb2Nlc3NcclxuICAvLy8gICBkZWxldGUgYW55IG9sZCBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgdGFibGUgKGV2ZW4gaWYgdGhleSBvdGhlciB1bmlxdWUgaWRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBhc3luYyBMb2FkVGFibGUodGFibGVVSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgbGV0IHNlcnZlcjogQ29tbWFuZHNQcm9jZXNzb3JCYXNlID0gUmVtb3RlQ29tbWFuZHNQcm9jZXNzb3IuR2V0SW5zdGFuY2UoKTtcclxuXHJcbiAgICAvLyB0aGUgdGFibGUgbXVzdCBleGlzdCBpbiB0aGUgaGFzaFRhYmxlIGF0IHRoaXMgc3RhZ2UgZWxzZSBpdCBpcyBhbiBlcnJvclxyXG4gICAgaWYgKHRoaXMuVGFibGVFeGlzdHModGFibGVVSWQpKSB7XHJcbiAgICAgIC8vIGdldCB0aGUgdGFibGVcclxuICAgICAgbGV0IGN1cnJlbnQ6IFRhYmxlQ2FjaGUgPSA8VGFibGVDYWNoZT50aGlzLl90YWJsZXMuZ2V0X0l0ZW0odGFibGVVSWQpO1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxldCByZXNpZGVudFRhYmxlQ29udGVudFN0cjogc3RyaW5nID0gYXdhaXQgc2VydmVyLkdldENvbnRlbnQodGFibGVVSWQsIHRydWUpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBSdW50aW1lQ29udGV4dEJhc2UuSW5zdGFuY2UuUGFyc2VyLmxvYWRUYWJsZUNhY2hlRGF0YShyZXNpZGVudFRhYmxlQ29udGVudFN0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChpbm5lckV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgaWYgKGlubmVyRXhjZXB0aW9uIGluc3RhbmNlb2YgRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBBcHBsaWNhdGlvbkV4Y2VwdGlvbihcIlVuYWJsZSB0byBwYXJzZSByZXNpZGVudCB0YWJsZSBcIiArIHRhYmxlVUlkICsgXCIsIGR1ZSB0byB1bnN1cHBvcnRlZCBlbmNvZGluZy5cIiwgaW5uZXJFeGNlcHRpb24pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aHJvdyBpbm5lckV4Y2VwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2F0Y2ggKHRocm93YWJsZSkge1xyXG4gICAgICAgIGlmICh0aHJvd2FibGUgaW5zdGFuY2VvZiBFeGNlcHRpb24pIHtcclxuICAgICAgICAgIE1pc2MuV3JpdGVTdGFja1RyYWNlKHRocm93YWJsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHRocm93IHRocm93YWJsZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gc3RhcnQgcGFyc2luZ1xyXG4gICAgICBjdXJyZW50LkZpbGxEYXRhKCk7XHJcblxyXG4gICAgICAvLyBkZWxldGUgb2xkIHRhYmxlc1xyXG4gICAgICBsZXQgZGVsZXRlZFVpZHM6IExpc3Q8c3RyaW5nPiA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgICAgbGV0IGVudW1lcmF0b3I6IEFycmF5X0VudW1lcmF0b3I8VGFibGVDYWNoZT4gPSB0aGlzLl90YWJsZXMuVmFsdWVzO1xyXG4gICAgICB3aGlsZSAoZW51bWVyYXRvci5Nb3ZlTmV4dCgpKSB7XHJcbiAgICAgICAgbGV0IHRibDogVGFibGVDYWNoZSA9IDxUYWJsZUNhY2hlPmVudW1lcmF0b3IuQ3VycmVudDtcclxuICAgICAgICBsZXQgY3VycklkZW50OiBzdHJpbmcgPSB0YmwuR2V0VGFibGVDb21tb25JZGVudGlmaWVyKCk7XHJcbiAgICAgICAgaWYgKGN1cnJJZGVudCA9PT0gY3VycmVudC5HZXRUYWJsZUNvbW1vbklkZW50aWZpZXIoKSAmJiB0YmwuR2V0VGFibGVVbmlxdWVJZCgpICE9PSB0YWJsZVVJZClcclxuICAgICAgICAgIGRlbGV0ZWRVaWRzLnB1c2godGJsLkdldFRhYmxlVW5pcXVlSWQoKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gZGVsZXRlXHJcbiAgICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBkZWxldGVkVWlkcy5sZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICAgIHRoaXMuX3RhYmxlcy5SZW1vdmUoZGVsZXRlZFVpZHMuZ2V0X0l0ZW0oaSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDYWNoZU1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RhYmxlQ2FjaGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsb0JBQW9CLEVBQW9CLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUcsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFLNUUsTUFBTSxPQUFPLGlCQUFpQjtJQUNwQixPQUFPLEdBQWtDLElBQUksQ0FBQztJQUV0RCxNQUFNLENBQUMsUUFBUSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFFN0Q7UUFDRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxFQUFzQixDQUFDO0lBQ3JELENBQUM7SUFLRCxZQUFZLENBQUMsUUFBZ0I7UUFDM0IsT0FBbUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUtELFdBQVcsQ0FBQyxRQUFnQjtRQUMxQixJQUFJLE1BQU0sR0FBWSxJQUFJLENBQUM7UUFFM0IsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7WUFDdEMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVqQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBTUQsV0FBVyxDQUFDLEtBQWlCO1FBQzNCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFO1lBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFNRCxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQWdCO1FBQzlCLElBQUksTUFBTSxHQUEwQix1QkFBdUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUcxRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFFOUIsSUFBSSxPQUFPLEdBQTJCLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RFLElBQUk7Z0JBQ0YsSUFBSSx1QkFBdUIsR0FBVyxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM5RSxJQUFJO29CQUNGLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztpQkFDaEY7Z0JBQ0QsT0FBTyxjQUFjLEVBQUU7b0JBQ3JCLElBQUksY0FBYyxZQUFZLFNBQVMsRUFBRTt3QkFDdkMsTUFBTSxJQUFJLG9CQUFvQixDQUFDLGlDQUFpQyxHQUFHLFFBQVEsR0FBRyxnQ0FBZ0MsRUFBRSxjQUFjLENBQUMsQ0FBQztxQkFDakk7O3dCQUVDLE1BQU0sY0FBYyxDQUFDO2lCQUN4QjthQUNGO1lBQ0QsT0FBTyxTQUFTLEVBQUU7Z0JBQ2hCLElBQUksU0FBUyxZQUFZLFNBQVMsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDakM7O29CQUVDLE1BQU0sU0FBUyxDQUFDO2FBQ25CO1lBR0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBR25CLElBQUksV0FBVyxHQUFpQixJQUFJLElBQUksRUFBVSxDQUFDO1lBQ25ELElBQUksVUFBVSxHQUFpQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUNuRSxPQUFPLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxHQUFHLEdBQTJCLFVBQVUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JELElBQUksU0FBUyxHQUFXLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUN2RCxJQUFJLFNBQVMsS0FBSyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxRQUFRO29CQUN6RixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7YUFDNUM7WUFFRCxLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWlzYyB9IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbkV4Y2VwdGlvbiwgQXJyYXlfRW51bWVyYXRvciwgRXhjZXB0aW9uLCBIYXNodGFibGUsIExpc3QgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IFJ1bnRpbWVDb250ZXh0QmFzZSB9IGZyb20gJ0BtYWdpYy14cGEvZ3VpJztcclxuaW1wb3J0IHsgVGFibGVDYWNoZSB9IGZyb20gJy4vVGFibGVDYWNoZSc7XHJcbmltcG9ydCB7IENvbW1hbmRzUHJvY2Vzc29yQmFzZSB9IGZyb20gJy4uL0NvbW1hbmRzUHJvY2Vzc29yQmFzZSc7XHJcbmltcG9ydCB7IFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yIH0gZnJvbSAnLi4vcmVtb3RlL1JlbW90ZUNvbW1hbmRzUHJvY2Vzc29yJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgaGFuZGxlcyB0aGUgbG9hZGluZyBhbmQgbWFuYWdpbmcgb2YgYWxsIGNhY2hlIHRhYmxlcyBpbiB0aGUgY29udGV4dFxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgVGFibGVDYWNoZU1hbmFnZXIge1xyXG4gIHByaXZhdGUgX3RhYmxlczogSGFzaHRhYmxlPHN0cmluZywgVGFibGVDYWNoZT4gPSBudWxsO1xyXG5cclxuICBzdGF0aWMgSW5zdGFuY2U6IFRhYmxlQ2FjaGVNYW5hZ2VyID0gbmV3IFRhYmxlQ2FjaGVNYW5hZ2VyKCk7XHJcblxyXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLl90YWJsZXMgPSBuZXcgSGFzaHRhYmxlPHN0cmluZywgVGFibGVDYWNoZT4oKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdGhlIHRhYmxlQ2FjaGUgb2JqZWN0ICBhY2NvcmRpbmcgdG8gaXRzIHVuaXF1ZSBpZCBvciBudWxsIGlmIGRvZXMgbm90IGV4aXN0IGluIHRoZSBtYW5hZ2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBHZXRUYWJsZUJ5SWQodGFibGVVSWQ6IHN0cmluZyk6IFRhYmxlQ2FjaGUge1xyXG4gICAgcmV0dXJuIDxUYWJsZUNhY2hlPnRoaXMuX3RhYmxlcy5nZXRfSXRlbSh0YWJsZVVJZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2hlY2tzIGlmIGEgZ2l2ZW4gdGFibGUgZXhpc3RzIGluIHRoZSBtYW5hZ2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBUYWJsZUV4aXN0cyh0YWJsZVVJZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBpZiAodGhpcy5HZXRUYWJsZUJ5SWQodGFibGVVSWQpID09PSBudWxsKVxyXG4gICAgICByZXN1bHQgPSBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGluc2VydHMgYSB0YWJsZSBpbnRvIHRoZSBtYW5hZ2VyIGlzIG5vdCBhbHJlYWR5IGV4aXN0c1xyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpcyBpbnNlcnQgc3VjY2VlZGVkIGZhbHNlIG90aGVyd2lzZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgSW5zZXJ0VGFibGUodGFibGU6IFRhYmxlQ2FjaGUpOiBib29sZWFuIHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIXRoaXMuVGFibGVFeGlzdHModGFibGUuR2V0VGFibGVVbmlxdWVJZCgpKSkge1xyXG4gICAgICB0aGlzLl90YWJsZXMuc2V0X0l0ZW0odGFibGUuR2V0VGFibGVVbmlxdWVJZCgpLCB0YWJsZSk7XHJcbiAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBsb2FkcyBhIG5ldyB0YWJsZSBzdGFydCB0aGUgdGFibGUgcGFyc2luZyBwcm9jZXNzXHJcbiAgLy8vICAgZGVsZXRlIGFueSBvbGQgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIHRhYmxlIChldmVuIGlmIHRoZXkgb3RoZXIgdW5pcXVlIGlkc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgYXN5bmMgTG9hZFRhYmxlKHRhYmxlVUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBzZXJ2ZXI6IENvbW1hbmRzUHJvY2Vzc29yQmFzZSA9IFJlbW90ZUNvbW1hbmRzUHJvY2Vzc29yLkdldEluc3RhbmNlKCk7XHJcblxyXG4gICAgLy8gdGhlIHRhYmxlIG11c3QgZXhpc3QgaW4gdGhlIGhhc2hUYWJsZSBhdCB0aGlzIHN0YWdlIGVsc2UgaXQgaXMgYW4gZXJyb3JcclxuICAgIGlmICh0aGlzLlRhYmxlRXhpc3RzKHRhYmxlVUlkKSkge1xyXG4gICAgICAvLyBnZXQgdGhlIHRhYmxlXHJcbiAgICAgIGxldCBjdXJyZW50OiBUYWJsZUNhY2hlID0gPFRhYmxlQ2FjaGU+dGhpcy5fdGFibGVzLmdldF9JdGVtKHRhYmxlVUlkKTtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgcmVzaWRlbnRUYWJsZUNvbnRlbnRTdHI6IHN0cmluZyA9IGF3YWl0IHNlcnZlci5HZXRDb250ZW50KHRhYmxlVUlkLCB0cnVlKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgUnVudGltZUNvbnRleHRCYXNlLkluc3RhbmNlLlBhcnNlci5sb2FkVGFibGVDYWNoZURhdGEocmVzaWRlbnRUYWJsZUNvbnRlbnRTdHIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoaW5uZXJFeGNlcHRpb24pIHtcclxuICAgICAgICAgIGlmIChpbm5lckV4Y2VwdGlvbiBpbnN0YW5jZW9mIEV4Y2VwdGlvbikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgQXBwbGljYXRpb25FeGNlcHRpb24oXCJVbmFibGUgdG8gcGFyc2UgcmVzaWRlbnQgdGFibGUgXCIgKyB0YWJsZVVJZCArIFwiLCBkdWUgdG8gdW5zdXBwb3J0ZWQgZW5jb2RpbmcuXCIsIGlubmVyRXhjZXB0aW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhyb3cgaW5uZXJFeGNlcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNhdGNoICh0aHJvd2FibGUpIHtcclxuICAgICAgICBpZiAodGhyb3dhYmxlIGluc3RhbmNlb2YgRXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICBNaXNjLldyaXRlU3RhY2tUcmFjZSh0aHJvd2FibGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aHJvdyB0aHJvd2FibGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHN0YXJ0IHBhcnNpbmdcclxuICAgICAgY3VycmVudC5GaWxsRGF0YSgpO1xyXG5cclxuICAgICAgLy8gZGVsZXRlIG9sZCB0YWJsZXNcclxuICAgICAgbGV0IGRlbGV0ZWRVaWRzOiBMaXN0PHN0cmluZz4gPSBuZXcgTGlzdDxzdHJpbmc+KCk7XHJcbiAgICAgIGxldCBlbnVtZXJhdG9yOiBBcnJheV9FbnVtZXJhdG9yPFRhYmxlQ2FjaGU+ID0gdGhpcy5fdGFibGVzLlZhbHVlcztcclxuICAgICAgd2hpbGUgKGVudW1lcmF0b3IuTW92ZU5leHQoKSkge1xyXG4gICAgICAgIGxldCB0Ymw6IFRhYmxlQ2FjaGUgPSA8VGFibGVDYWNoZT5lbnVtZXJhdG9yLkN1cnJlbnQ7XHJcbiAgICAgICAgbGV0IGN1cnJJZGVudDogc3RyaW5nID0gdGJsLkdldFRhYmxlQ29tbW9uSWRlbnRpZmllcigpO1xyXG4gICAgICAgIGlmIChjdXJySWRlbnQgPT09IGN1cnJlbnQuR2V0VGFibGVDb21tb25JZGVudGlmaWVyKCkgJiYgdGJsLkdldFRhYmxlVW5pcXVlSWQoKSAhPT0gdGFibGVVSWQpXHJcbiAgICAgICAgICBkZWxldGVkVWlkcy5wdXNoKHRibC5HZXRUYWJsZVVuaXF1ZUlkKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIGRlbGV0ZVxyXG4gICAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgZGVsZXRlZFVpZHMubGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgICB0aGlzLl90YWJsZXMuUmVtb3ZlKGRlbGV0ZWRVaWRzLmdldF9JdGVtKGkpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -50,4 +50,4 @@ export class Transaction {
50
50
  this.OwnerTask = task;
51
51
  }
52
52
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sV0FBVztJQUNkLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFHeEIsZ0JBQWdCLEdBQVcsY0FBYyxDQUFDLGFBQWEsQ0FBQztJQUV4RCxXQUFXLEdBQVcsSUFBSSxDQUFDO0lBQ25DLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFDeEIsU0FBUyxHQUFTLElBQUksQ0FBQztJQVF2QixZQUFZLElBQWMsRUFBRSxVQUFrQjtRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFTLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBUztJQUM5RCxDQUFDO0lBTUQsT0FBTyxDQUFDLElBQVU7UUFDaEIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFLRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUtELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUtELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUlELGFBQWEsQ0FBQyxRQUFpQjtRQUM3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBS08sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxjQUFjLENBQUMsYUFBYSxDQUFTO0lBQ3hFLENBQUM7SUFLTyxlQUFlLENBQUMsUUFBZ0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEtBQUssUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFLRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFLRCxhQUFhLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBS0QsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBS0QsWUFBWSxDQUFDLElBQVU7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUYXNrfSBmcm9tIFwiLi4vdGFza3MvVGFza1wiO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tIFwiLi4vQ29uc3RJbnRlcmZhY2VcIjtcclxuaW1wb3J0IHtUYXNrQmFzZX0gZnJvbSBcIi4uL3Rhc2tzL1Rhc2tCYXNlXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24ge1xyXG4gIHByaXZhdGUgX3RyYW5zSWQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vIGhvbGRzIHRoZSByZWNvdmVyeSB0eXBlIG9mIGEgZmFpbGVkIHRyYW5zYWN0aW9uIHNvIHdlIGNhbiBhc2sgaWYgd2UgYXJlIGFmdGVyIHJldHJ5LlxyXG4gIHByaXZhdGUgX2FmdGVyVHJhbnNSZXRyeTogc3RyaW5nID0gQ29uc3RJbnRlcmZhY2UuUkVDT1ZFUllfTk9ORTtcclxuXHJcbiAgcHJpdmF0ZSBfdHJhbnNCZWdpbjogc3RyaW5nID0gJ1xcMCc7XHJcbiAgT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgT3duZXJUYXNrOiBUYXNrID0gbnVsbDtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhc2tcIj50aGUgdGFzayB3aG8gb3ducyB0aGlzIHRyYW5zYWN0aW9uIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2V0VHJhbnNJZFwiPjwvcGFyYW0+XHJcbiAgY29uc3RydWN0b3IodGFzazogVGFza0Jhc2UsIHNldFRyYW5zSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5Pd25lclRhc2sgPSA8VGFzaz50YXNrO1xyXG4gICAgdGhpcy5fdHJhbnNJZCA9IHNldFRyYW5zSWQ7XHJcbiAgICB0aGlzLl90cmFuc0JlZ2luID0gQ29uc3RJbnRlcmZhY2UuVFJBTlNfVEFTS19QUkVGSVggLyonVCcqLztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHRhc2sgaXMgdGhlIG93bmVyIG9mIHRoaXMgdHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSB0YXNrIHRvIGNoZWNrIDwvcGFyYW0+XHJcbiAgaXNPd25lcih0YXNrOiBUYXNrKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGFzayA9PT0gdGhpcy5Pd25lclRhc2s7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgY2xvc2UgdGhlIHRyYW5zYWN0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjbG9zZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuT3BlbmVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgb3BlbnMgdGhlIHRyYW5zYWN0aW9uIC0gc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGFuIHVwZGF0ZSBvY2N1cmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBvcGVuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5PcGVuZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIG9wZW5lZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaXNPcGVuZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5PcGVuZWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2lnbmFsbHMgd2hlYXRoZXIgd2UgYXJlIG5vdyBpbiB0aGUgcHJvY2VzcyBvZiByZXRyeWluZyBhIGZhaWxlZCB0cmFuc2FjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0QWZ0ZXJSZXRyeSh2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fYWZ0ZXJUcmFuc1JldHJ5ID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWZ0ZXJSZXRyeSgpOiBib29sZWFuO1xyXG4gIGdldEFmdGVyUmV0cnkocmVjb3Zlcnk6IHN0cmluZyk6IGJvb2xlYW47XHJcbiAgZ2V0QWZ0ZXJSZXRyeShyZWNvdmVyeT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0QWZ0ZXJSZXRyeV8wKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5nZXRBZnRlclJldHJ5XzEocmVjb3ZlcnkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHdlIGFyZSBhZnRlciBhIHRyYW5zYWN0aW9uIHJldHJ5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGdldEFmdGVyUmV0cnlfMCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hZnRlclRyYW5zUmV0cnkgIT09IENvbnN0SW50ZXJmYWNlLlJFQ09WRVJZX05PTkUgLyonXHUwMDAwJyovO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHdlIGFyZSBhZnRlciBhIHRyYW5zYWN0aW9uIHdpdGggcmVjb3ZlcnkgUkVDT1ZFUllfUkVUUllcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0QWZ0ZXJSZXRyeV8xKHJlY292ZXJ5OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9hZnRlclRyYW5zUmV0cnkgPT09IHJlY292ZXJ5O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHRyYW5zYWN0aW9uIGxldmVsIChUYXNrL1JlY29yZClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldExldmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNCZWdpbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHRoZSBsZXZlbCBvZiB0aGUgVHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFRyYW5zQmVnaW4odmFsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3RyYW5zQmVnaW4gPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZ2V0cyB0cmFuc0lkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRUcmFuc0lkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNJZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIE93bmVyIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldE93bmVyVGFzayh0YXNrOiBUYXNrKTogdm9pZCB7XHJcbiAgICB0aGlzLk93bmVyVGFzayA9IHRhc2s7XHJcbiAgfVxyXG59XHJcbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbmdpbmUvc3JjL3J0L1RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRCxNQUFNLE9BQU8sV0FBVztJQUNkLFFBQVEsR0FBVyxJQUFJLENBQUM7SUFHeEIsZ0JBQWdCLEdBQVcsY0FBYyxDQUFDLGFBQWEsQ0FBQztJQUV4RCxXQUFXLEdBQVcsSUFBSSxDQUFDO0lBQ25DLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFDeEIsU0FBUyxHQUFTLElBQUksQ0FBQztJQVF2QixZQUFZLElBQWMsRUFBRSxVQUFrQjtRQUM1QyxJQUFJLENBQUMsU0FBUyxHQUFTLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBUztJQUM5RCxDQUFDO0lBTUQsT0FBTyxDQUFDLElBQVU7UUFDaEIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBS0QsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFLRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUtELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUtELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUlELGFBQWEsQ0FBQyxRQUFpQjtRQUM3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFLTyxlQUFlO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixLQUFLLGNBQWMsQ0FBQyxhQUFhLENBQVM7SUFDeEUsQ0FBQztJQUtPLGVBQWUsQ0FBQyxRQUFnQjtRQUN0QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQUtELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUtELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFLRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFLRCxZQUFZLENBQUMsSUFBVTtRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1Rhc2t9IGZyb20gXCIuLi90YXNrcy9UYXNrXCI7XHJcbmltcG9ydCB7Q29uc3RJbnRlcmZhY2V9IGZyb20gXCIuLi9Db25zdEludGVyZmFjZVwiO1xyXG5pbXBvcnQge1Rhc2tCYXNlfSBmcm9tIFwiLi4vdGFza3MvVGFza0Jhc2VcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiB7XHJcbiAgcHJpdmF0ZSBfdHJhbnNJZDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8gaG9sZHMgdGhlIHJlY292ZXJ5IHR5cGUgb2YgYSBmYWlsZWQgdHJhbnNhY3Rpb24gc28gd2UgY2FuIGFzayBpZiB3ZSBhcmUgYWZ0ZXIgcmV0cnkuXHJcbiAgcHJpdmF0ZSBfYWZ0ZXJUcmFuc1JldHJ5OiBzdHJpbmcgPSBDb25zdEludGVyZmFjZS5SRUNPVkVSWV9OT05FO1xyXG5cclxuICBwcml2YXRlIF90cmFuc0JlZ2luOiBzdHJpbmcgPSAnXFwwJztcclxuICBPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBPd25lclRhc2s6IFRhc2sgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIENUT1JcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFza1wiPnRoZSB0YXNrIHdobyBvd25zIHRoaXMgdHJhbnNhY3Rpb24gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzZXRUcmFuc0lkXCI+PC9wYXJhbT5cclxuICBjb25zdHJ1Y3Rvcih0YXNrOiBUYXNrQmFzZSwgc2V0VHJhbnNJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLk93bmVyVGFzayA9IDxUYXNrPnRhc2s7XHJcbiAgICB0aGlzLl90cmFuc0lkID0gc2V0VHJhbnNJZDtcclxuICAgIHRoaXMuX3RyYW5zQmVnaW4gPSBDb25zdEludGVyZmFjZS5UUkFOU19UQVNLX1BSRUZJWCAvKidUJyovO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gdGFzayBpcyB0aGUgb3duZXIgb2YgdGhpcyB0cmFuc2FjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0YXNrXCI+dGhlIHRhc2sgdG8gY2hlY2sgPC9wYXJhbT5cclxuICBpc093bmVyKHRhc2s6IFRhc2spOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0YXNrID09PSB0aGlzLk93bmVyVGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBjbG9zZSB0aGUgdHJhbnNhY3Rpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5PcGVuZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBvcGVucyB0aGUgdHJhbnNhY3Rpb24gLSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gYW4gdXBkYXRlIG9jY3VyZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIG9wZW4oKTogdm9pZCB7XHJcbiAgICB0aGlzLk9wZW5lZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0cnVlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgb3BlbmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBpc09wZW5lZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLk9wZW5lZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzaWduYWxscyB3aGVhdGhlciB3ZSBhcmUgbm93IGluIHRoZSBwcm9jZXNzIG9mIHJldHJ5aW5nIGEgZmFpbGVkIHRyYW5zYWN0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzZXRBZnRlclJldHJ5KHZhbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hZnRlclRyYW5zUmV0cnkgPSB2YWw7XHJcbiAgfVxyXG5cclxuICBnZXRBZnRlclJldHJ5KCk6IGJvb2xlYW47XHJcbiAgZ2V0QWZ0ZXJSZXRyeShyZWNvdmVyeTogc3RyaW5nKTogYm9vbGVhbjtcclxuICBnZXRBZnRlclJldHJ5KHJlY292ZXJ5Pzogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5nZXRBZnRlclJldHJ5XzAoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmdldEFmdGVyUmV0cnlfMShyZWNvdmVyeSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgd2UgYXJlIGFmdGVyIGEgdHJhbnNhY3Rpb24gcmV0cnlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgZ2V0QWZ0ZXJSZXRyeV8wKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyVHJhbnNSZXRyeSAhPT0gQ29uc3RJbnRlcmZhY2UuUkVDT1ZFUllfTk9ORSAvKidcdTAwMDAnKi87XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgd2UgYXJlIGFmdGVyIGEgdHJhbnNhY3Rpb24gd2l0aCByZWNvdmVyeSBSRUNPVkVSWV9SRVRSWVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBnZXRBZnRlclJldHJ5XzEocmVjb3Zlcnk6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FmdGVyVHJhbnNSZXRyeSA9PT0gcmVjb3Zlcnk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgdHJhbnNhY3Rpb24gbGV2ZWwgKFRhc2svUmVjb3JkKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0TGV2ZWwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc0JlZ2luO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGxldmVsIG9mIHRoZSBUcmFuc2FjdGlvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0VHJhbnNCZWdpbih2YWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5fdHJhbnNCZWdpbiA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXRzIHRyYW5zSWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGdldFRyYW5zSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl90cmFuc0lkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgT3duZXIgdGFza1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc2V0T3duZXJUYXNrKHRhc2s6IFRhc2spOiB2b2lkIHtcclxuICAgIHRoaXMuT3duZXJUYXNrID0gdGFzaztcclxuICB9XHJcbn1cclxuIl19