oxygen-cli 1.40.2-beta.1 → 1.40.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +1750 -1742
  2. package/LICENSE +672 -672
  3. package/README.md +37 -37
  4. package/build/core/OxygenCore.js +1 -1
  5. package/build/core/OxygenEvents.js +1 -1
  6. package/build/core/OxygenModule.js +1 -1
  7. package/build/core/OxygenService.js +1 -1
  8. package/build/core/OxygenSubModule.js +1 -1
  9. package/build/core/WebDriverModule.js +1 -1
  10. package/build/core/utils.js +1 -1
  11. package/build/errors/HookError.js +1 -1
  12. package/build/errors/ModuleError.js +1 -1
  13. package/build/errors/ModuleUnavailableError.js +1 -1
  14. package/build/errors/OxygenError.js +1 -1
  15. package/build/errors/ScriptNotFound.js +1 -1
  16. package/build/errors/helper.js +1 -2
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -5
  19. package/build/lib/cli.js +1 -1
  20. package/build/lib/debugger.js +1 -1
  21. package/build/lib/img-merge.js +1 -1
  22. package/build/lib/launcher.js +1 -1
  23. package/build/lib/logger.js +43 -43
  24. package/build/lib/moduleRequire.js +1 -1
  25. package/build/lib/parallel-launcher.js +1 -1
  26. package/build/lib/param-manager.js +1 -1
  27. package/build/lib/param-reader-csv.js +1 -1
  28. package/build/lib/param-reader-excel.js +1 -1
  29. package/build/lib/param-reader-json.js +1 -1
  30. package/build/lib/text-to-image.js +1 -1
  31. package/build/lib/util.js +1 -1
  32. package/build/model/case-result.js +1 -1
  33. package/build/model/failure.js +1 -1
  34. package/build/model/status.js +1 -1
  35. package/build/model/step-result.js +1 -1
  36. package/build/model/suite-result.js +1 -1
  37. package/build/model/test-result.js +1 -1
  38. package/build/model/testcase.js +1 -1
  39. package/build/model/testsuite.js +1 -1
  40. package/build/ox_modules/index.js +1 -9
  41. package/build/ox_modules/module-assert.js +37 -37
  42. package/build/ox_modules/module-date.js +24 -24
  43. package/build/ox_modules/module-db.js +52 -52
  44. package/build/ox_modules/module-email.js +59 -59
  45. package/build/ox_modules/module-eyes.js +34 -34
  46. package/build/ox_modules/module-http/ntlm-util.js +10 -10
  47. package/build/ox_modules/module-http/ntlm.js +15 -15
  48. package/build/ox_modules/module-http.js +132 -132
  49. package/build/ox_modules/module-log.js +27 -27
  50. package/build/ox_modules/module-mailinator.js +87 -87
  51. package/build/ox_modules/module-mob/commands/alertAccept.js +17 -17
  52. package/build/ox_modules/module-mob/commands/alertDismiss.js +17 -17
  53. package/build/ox_modules/module-mob/commands/assertAlert.js +20 -20
  54. package/build/ox_modules/module-mob/commands/assertText.js +21 -21
  55. package/build/ox_modules/module-mob/commands/assertTitle.js +19 -19
  56. package/build/ox_modules/module-mob/commands/assertValue.js +18 -18
  57. package/build/ox_modules/module-mob/commands/back.js +16 -16
  58. package/build/ox_modules/module-mob/commands/clear.js +19 -19
  59. package/build/ox_modules/module-mob/commands/click.js +17 -17
  60. package/build/ox_modules/module-mob/commands/clickHidden.js +17 -17
  61. package/build/ox_modules/module-mob/commands/clickLong.js +18 -18
  62. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +18 -18
  63. package/build/ox_modules/module-mob/commands/closeApp.js +16 -16
  64. package/build/ox_modules/module-mob/commands/debug.js +16 -16
  65. package/build/ox_modules/module-mob/commands/dragAndDrop.js +19 -19
  66. package/build/ox_modules/module-mob/commands/enableNetwork.js +27 -27
  67. package/build/ox_modules/module-mob/commands/execute.js +21 -21
  68. package/build/ox_modules/module-mob/commands/findElement.js +20 -20
  69. package/build/ox_modules/module-mob/commands/findElements.js +23 -23
  70. package/build/ox_modules/module-mob/commands/getAlertText.js +17 -17
  71. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +16 -16
  72. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +16 -16
  73. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +15 -15
  74. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +15 -15
  75. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +16 -16
  76. package/build/ox_modules/module-mob/commands/getDeviceTime.js +16 -16
  77. package/build/ox_modules/module-mob/commands/getLocation.js +20 -20
  78. package/build/ox_modules/module-mob/commands/getSource.js +16 -16
  79. package/build/ox_modules/module-mob/commands/getText.js +18 -18
  80. package/build/ox_modules/module-mob/commands/getTitle.js +13 -13
  81. package/build/ox_modules/module-mob/commands/getUrl.js +17 -17
  82. package/build/ox_modules/module-mob/commands/getValue.js +18 -18
  83. package/build/ox_modules/module-mob/commands/getWindowHandles.js +17 -17
  84. package/build/ox_modules/module-mob/commands/hideKeyboard.js +21 -21
  85. package/build/ox_modules/module-mob/commands/index.js +1 -1
  86. package/build/ox_modules/module-mob/commands/installApp.js +16 -16
  87. package/build/ox_modules/module-mob/commands/isAppInstalled.js +16 -16
  88. package/build/ox_modules/module-mob/commands/isCheckable.js +18 -18
  89. package/build/ox_modules/module-mob/commands/isChecked.js +18 -18
  90. package/build/ox_modules/module-mob/commands/isClickable.js +18 -18
  91. package/build/ox_modules/module-mob/commands/isExist.js +19 -19
  92. package/build/ox_modules/module-mob/commands/isSelected.js +23 -23
  93. package/build/ox_modules/module-mob/commands/isVisible.js +19 -19
  94. package/build/ox_modules/module-mob/commands/isWebViewContext.js +16 -16
  95. package/build/ox_modules/module-mob/commands/launchApp.js +15 -15
  96. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +18 -18
  97. package/build/ox_modules/module-mob/commands/open.js +17 -17
  98. package/build/ox_modules/module-mob/commands/pause.js +16 -16
  99. package/build/ox_modules/module-mob/commands/removeApp.js +16 -16
  100. package/build/ox_modules/module-mob/commands/resetApp.js +15 -15
  101. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +22 -22
  102. package/build/ox_modules/module-mob/commands/scrollIntoView.js +27 -27
  103. package/build/ox_modules/module-mob/commands/select.js +24 -24
  104. package/build/ox_modules/module-mob/commands/selectFrame.js +23 -23
  105. package/build/ox_modules/module-mob/commands/selectWindow.js +28 -28
  106. package/build/ox_modules/module-mob/commands/sendKeys.js +29 -29
  107. package/build/ox_modules/module-mob/commands/setContext.js +16 -16
  108. package/build/ox_modules/module-mob/commands/setNativeContext.js +15 -15
  109. package/build/ox_modules/module-mob/commands/setTimeout.js +21 -21
  110. package/build/ox_modules/module-mob/commands/setWebViewContext.js +16 -16
  111. package/build/ox_modules/module-mob/commands/shake.js +16 -16
  112. package/build/ox_modules/module-mob/commands/smsClickLink.js +19 -19
  113. package/build/ox_modules/module-mob/commands/smsGetText.js +20 -20
  114. package/build/ox_modules/module-mob/commands/swipe.js +20 -20
  115. package/build/ox_modules/module-mob/commands/swipeElement.js +20 -20
  116. package/build/ox_modules/module-mob/commands/swipeScreen.js +20 -20
  117. package/build/ox_modules/module-mob/commands/takeScreenshot.js +17 -17
  118. package/build/ox_modules/module-mob/commands/tap.js +17 -17
  119. package/build/ox_modules/module-mob/commands/type.js +20 -20
  120. package/build/ox_modules/module-mob/commands/unlockPattern.js +22 -22
  121. package/build/ox_modules/module-mob/commands/waitForExist.js +18 -18
  122. package/build/ox_modules/module-mob/commands/waitForInteractable.js +17 -17
  123. package/build/ox_modules/module-mob/commands/waitForVisible.js +17 -17
  124. package/build/ox_modules/module-mob.js +74 -74
  125. package/build/ox_modules/module-pdf.js +35 -35
  126. package/build/ox_modules/module-proxy.js +77 -77
  127. package/build/ox_modules/module-serial.js +55 -55
  128. package/build/ox_modules/module-shell.js +52 -33
  129. package/build/ox_modules/module-soap.js +72 -72
  130. package/build/ox_modules/module-twilio.js +41 -41
  131. package/build/ox_modules/module-utils.js +91 -91
  132. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  133. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  134. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  135. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  136. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  137. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  140. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  142. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  143. package/build/ox_modules/module-web/commands/back.js +16 -16
  144. package/build/ox_modules/module-web/commands/clear.js +18 -18
  145. package/build/ox_modules/module-web/commands/click.js +25 -25
  146. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  147. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  148. package/build/ox_modules/module-web/commands/debug.js +15 -15
  149. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  150. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  151. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  152. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  153. package/build/ox_modules/module-web/commands/execute.js +24 -24
  154. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  155. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  156. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  157. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  158. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  159. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  160. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  161. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  162. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  163. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  164. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  165. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  166. package/build/ox_modules/module-web/commands/getText.js +18 -18
  167. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  168. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  169. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  170. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  171. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  172. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  173. package/build/ox_modules/module-web/commands/index.js +1 -1
  174. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  175. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  176. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  177. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  178. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  179. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  180. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  181. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  182. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/mock.js +20 -20
  184. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  185. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  187. package/build/ox_modules/module-web/commands/open.js +16 -16
  188. package/build/ox_modules/module-web/commands/pause.js +15 -15
  189. package/build/ox_modules/module-web/commands/point.js +21 -21
  190. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  191. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  192. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  193. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  194. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  195. package/build/ox_modules/module-web/commands/select.js +23 -23
  196. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  197. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  198. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  199. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  200. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  201. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  202. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  203. package/build/ox_modules/module-web/commands/type.js +20 -20
  204. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  206. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  207. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  210. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  212. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  213. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  214. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  215. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  218. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  222. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  223. package/build/ox_modules/module-web.js +94 -94
  224. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  225. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  226. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  227. package/build/ox_modules/module-win/commands/back.js +11 -11
  228. package/build/ox_modules/module-win/commands/clear.js +13 -13
  229. package/build/ox_modules/module-win/commands/click.js +13 -13
  230. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  231. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  232. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  233. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  234. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  235. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  236. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  237. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  238. package/build/ox_modules/module-win/commands/getText.js +14 -14
  239. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  240. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  241. package/build/ox_modules/module-win/commands/index.js +1 -1
  242. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  243. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  244. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  245. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  246. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  247. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  248. package/build/ox_modules/module-win/commands/open.js +13 -13
  249. package/build/ox_modules/module-win/commands/pause.js +12 -12
  250. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  251. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  252. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  253. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  254. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  255. package/build/ox_modules/module-win/commands/tap.js +13 -13
  256. package/build/ox_modules/module-win/commands/type.js +16 -16
  257. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  258. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  259. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  260. package/build/ox_modules/module-win.js +47 -47
  261. package/build/ox_modules/utils.js +8 -8
  262. package/build/ox_reporters/excel/template.json +48 -48
  263. package/build/ox_reporters/html/index.ejs +163 -163
  264. package/build/ox_reporters/html/summary.ejs +77 -77
  265. package/build/ox_reporters/html/tests-details.ejs +134 -134
  266. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  267. package/build/ox_reporters/reporter-excel.js +1 -1
  268. package/build/ox_reporters/reporter-html.js +1 -1
  269. package/build/ox_reporters/reporter-json.js +1 -1
  270. package/build/ox_reporters/reporter-junit.js +1 -1
  271. package/build/ox_reporters/reporter-pdf.js +1 -1
  272. package/build/ox_reporters/reporter-rp.js +73 -42
  273. package/build/ox_reporters/reporter-xml.js +1 -1
  274. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  275. package/build/ox_services/service-devtools.js +1 -1
  276. package/build/reporter/FileReporterBase.js +1 -1
  277. package/build/reporter/ReportAggregator.js +5 -13
  278. package/build/reporter/ReporterBase.js +1 -1
  279. package/build/reporter/WebSocketReporter.js +1 -1
  280. package/build/runners/WorkerProcess.js +1 -1
  281. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  282. package/build/runners/cucumber/CucumberReporter.js +1 -1
  283. package/build/runners/cucumber/CucumberWorker.js +1 -1
  284. package/build/runners/cucumber/index.js +1 -1
  285. package/build/runners/cucumber/worker.js +1 -1
  286. package/build/runners/index.js +1 -1
  287. package/build/runners/oxygen/OxygenWorker.js +1 -1
  288. package/build/runners/oxygen/index.js +1 -1
  289. package/build/runners/oxygen/worker.js +1 -1
  290. package/config/default.json +6 -6
  291. package/package.json +137 -139
  292. package/types/index.d.ts +70 -70
  293. package/types/module-eyes.d.ts +39 -39
  294. package/types/module-http.d.ts +163 -163
  295. package/types/module-log.d.ts +34 -34
  296. package/types/module-mob.d.ts +966 -966
  297. package/types/module-pdf.d.ts +40 -40
  298. package/types/module-proxy.d.ts +100 -100
  299. package/types/module-shell.d.ts +24 -24
  300. package/types/module-utils.d.ts +99 -99
  301. package/types/module-web.d.ts +1053 -1053
  302. package/types/module-win.d.ts +352 -352
  303. package/types/oxygen.d.ts +53 -53
  304. package/build/ox_modules/module-mongo.js +0 -302
  305. package/log.txt +0 -1614
  306. package/reports/2025-06-08_231627/report.html +0 -440
  307. package/reports/2025-06-09_223615/report.html +0 -440
  308. package/transpiled/mongodb/etc/prepare.js +0 -18
  309. package/transpiled/mongodb/lib/admin.js +0 -182
  310. package/transpiled/mongodb/lib/beta.js +0 -26
  311. package/transpiled/mongodb/lib/bson.js +0 -220
  312. package/transpiled/mongodb/lib/bulk/common.js +0 -1041
  313. package/transpiled/mongodb/lib/bulk/ordered.js +0 -76
  314. package/transpiled/mongodb/lib/bulk/unordered.js +0 -102
  315. package/transpiled/mongodb/lib/change_stream.js +0 -517
  316. package/transpiled/mongodb/lib/client-side-encryption/auto_encrypter.js +0 -329
  317. package/transpiled/mongodb/lib/client-side-encryption/client_encryption.js +0 -779
  318. package/transpiled/mongodb/lib/client-side-encryption/crypto_callbacks.js +0 -95
  319. package/transpiled/mongodb/lib/client-side-encryption/errors.js +0 -171
  320. package/transpiled/mongodb/lib/client-side-encryption/mongocryptd_manager.js +0 -98
  321. package/transpiled/mongodb/lib/client-side-encryption/providers/aws.js +0 -34
  322. package/transpiled/mongodb/lib/client-side-encryption/providers/azure.js +0 -186
  323. package/transpiled/mongodb/lib/client-side-encryption/providers/gcp.js +0 -29
  324. package/transpiled/mongodb/lib/client-side-encryption/providers/index.js +0 -58
  325. package/transpiled/mongodb/lib/client-side-encryption/state_machine.js +0 -505
  326. package/transpiled/mongodb/lib/cmap/auth/auth_provider.js +0 -63
  327. package/transpiled/mongodb/lib/cmap/auth/aws_temporary_credentials.js +0 -167
  328. package/transpiled/mongodb/lib/cmap/auth/gssapi.js +0 -207
  329. package/transpiled/mongodb/lib/cmap/auth/mongo_credentials.js +0 -193
  330. package/transpiled/mongodb/lib/cmap/auth/mongodb_aws.js +0 -181
  331. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/automated_callback_workflow.js +0 -101
  332. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/azure_machine_workflow.js +0 -81
  333. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/callback_workflow.js +0 -174
  334. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/command_builders.js +0 -59
  335. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/gcp_machine_workflow.js +0 -58
  336. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/human_callback_workflow.js +0 -138
  337. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/k8s_machine_workflow.js +0 -42
  338. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_cache.js +0 -71
  339. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc/token_machine_workflow.js +0 -34
  340. package/transpiled/mongodb/lib/cmap/auth/mongodb_oidc.js +0 -111
  341. package/transpiled/mongodb/lib/cmap/auth/plain.js +0 -43
  342. package/transpiled/mongodb/lib/cmap/auth/providers.js +0 -22
  343. package/transpiled/mongodb/lib/cmap/auth/scram.js +0 -318
  344. package/transpiled/mongodb/lib/cmap/auth/x509.js +0 -61
  345. package/transpiled/mongodb/lib/cmap/command_monitoring_events.js +0 -266
  346. package/transpiled/mongodb/lib/cmap/commands.js +0 -605
  347. package/transpiled/mongodb/lib/cmap/connect.js +0 -418
  348. package/transpiled/mongodb/lib/cmap/connection.js +0 -673
  349. package/transpiled/mongodb/lib/cmap/connection_pool.js +0 -688
  350. package/transpiled/mongodb/lib/cmap/connection_pool_events.js +0 -254
  351. package/transpiled/mongodb/lib/cmap/errors.js +0 -128
  352. package/transpiled/mongodb/lib/cmap/handshake/client_metadata.js +0 -278
  353. package/transpiled/mongodb/lib/cmap/metrics.js +0 -67
  354. package/transpiled/mongodb/lib/cmap/stream_description.js +0 -74
  355. package/transpiled/mongodb/lib/cmap/wire_protocol/compression.js +0 -196
  356. package/transpiled/mongodb/lib/cmap/wire_protocol/constants.js +0 -19
  357. package/transpiled/mongodb/lib/cmap/wire_protocol/on_data.js +0 -144
  358. package/transpiled/mongodb/lib/cmap/wire_protocol/on_demand/document.js +0 -278
  359. package/transpiled/mongodb/lib/cmap/wire_protocol/responses.js +0 -376
  360. package/transpiled/mongodb/lib/cmap/wire_protocol/shared.js +0 -49
  361. package/transpiled/mongodb/lib/collection.js +0 -852
  362. package/transpiled/mongodb/lib/connection_string.js +0 -1452
  363. package/transpiled/mongodb/lib/constants.js +0 -162
  364. package/transpiled/mongodb/lib/cursor/abstract_cursor.js +0 -1082
  365. package/transpiled/mongodb/lib/cursor/aggregation_cursor.js +0 -227
  366. package/transpiled/mongodb/lib/cursor/change_stream_cursor.js +0 -136
  367. package/transpiled/mongodb/lib/cursor/client_bulk_write_cursor.js +0 -69
  368. package/transpiled/mongodb/lib/cursor/find_cursor.js +0 -476
  369. package/transpiled/mongodb/lib/cursor/list_collections_cursor.js +0 -48
  370. package/transpiled/mongodb/lib/cursor/list_indexes_cursor.js +0 -46
  371. package/transpiled/mongodb/lib/cursor/list_search_indexes_cursor.js +0 -30
  372. package/transpiled/mongodb/lib/cursor/run_command_cursor.js +0 -125
  373. package/transpiled/mongodb/lib/db.js +0 -467
  374. package/transpiled/mongodb/lib/deps.js +0 -174
  375. package/transpiled/mongodb/lib/encrypter.js +0 -129
  376. package/transpiled/mongodb/lib/error.js +0 -1550
  377. package/transpiled/mongodb/lib/explain.js +0 -122
  378. package/transpiled/mongodb/lib/gridfs/download.js +0 -369
  379. package/transpiled/mongodb/lib/gridfs/index.js +0 -240
  380. package/transpiled/mongodb/lib/gridfs/upload.js +0 -446
  381. package/transpiled/mongodb/lib/index.js +0 -975
  382. package/transpiled/mongodb/lib/mongo_client.js +0 -626
  383. package/transpiled/mongodb/lib/mongo_client_auth_providers.js +0 -98
  384. package/transpiled/mongodb/lib/mongo_logger.js +0 -812
  385. package/transpiled/mongodb/lib/mongo_types.js +0 -71
  386. package/transpiled/mongodb/lib/operations/aggregate.js +0 -129
  387. package/transpiled/mongodb/lib/operations/bulk_write.js +0 -48
  388. package/transpiled/mongodb/lib/operations/client_bulk_write/client_bulk_write.js +0 -96
  389. package/transpiled/mongodb/lib/operations/client_bulk_write/command_builder.js +0 -409
  390. package/transpiled/mongodb/lib/operations/client_bulk_write/common.js +0 -5
  391. package/transpiled/mongodb/lib/operations/client_bulk_write/executor.js +0 -144
  392. package/transpiled/mongodb/lib/operations/client_bulk_write/results_merger.js +0 -228
  393. package/transpiled/mongodb/lib/operations/collections.js +0 -49
  394. package/transpiled/mongodb/lib/operations/command.js +0 -102
  395. package/transpiled/mongodb/lib/operations/count.js +0 -60
  396. package/transpiled/mongodb/lib/operations/create_collection.js +0 -109
  397. package/transpiled/mongodb/lib/operations/delete.js +0 -134
  398. package/transpiled/mongodb/lib/operations/distinct.js +0 -77
  399. package/transpiled/mongodb/lib/operations/drop.js +0 -102
  400. package/transpiled/mongodb/lib/operations/estimated_document_count.js +0 -47
  401. package/transpiled/mongodb/lib/operations/execute_operation.js +0 -251
  402. package/transpiled/mongodb/lib/operations/find.js +0 -197
  403. package/transpiled/mongodb/lib/operations/find_and_modify.js +0 -191
  404. package/transpiled/mongodb/lib/operations/get_more.js +0 -84
  405. package/transpiled/mongodb/lib/operations/indexes.js +0 -197
  406. package/transpiled/mongodb/lib/operations/insert.js +0 -138
  407. package/transpiled/mongodb/lib/operations/is_capped.js +0 -44
  408. package/transpiled/mongodb/lib/operations/kill_cursors.js +0 -58
  409. package/transpiled/mongodb/lib/operations/list_collections.js +0 -66
  410. package/transpiled/mongodb/lib/operations/list_databases.js +0 -56
  411. package/transpiled/mongodb/lib/operations/operation.js +0 -88
  412. package/transpiled/mongodb/lib/operations/options_operation.js +0 -44
  413. package/transpiled/mongodb/lib/operations/profiling_level.js +0 -42
  414. package/transpiled/mongodb/lib/operations/remove_user.js +0 -35
  415. package/transpiled/mongodb/lib/operations/rename.js +0 -48
  416. package/transpiled/mongodb/lib/operations/run_command.js +0 -64
  417. package/transpiled/mongodb/lib/operations/search_indexes/create.js +0 -41
  418. package/transpiled/mongodb/lib/operations/search_indexes/drop.js +0 -51
  419. package/transpiled/mongodb/lib/operations/search_indexes/update.js +0 -40
  420. package/transpiled/mongodb/lib/operations/set_profiling_level.js +0 -70
  421. package/transpiled/mongodb/lib/operations/stats.js +0 -39
  422. package/transpiled/mongodb/lib/operations/update.js +0 -218
  423. package/transpiled/mongodb/lib/operations/validate_collection.js +0 -49
  424. package/transpiled/mongodb/lib/read_concern.js +0 -92
  425. package/transpiled/mongodb/lib/read_preference.js +0 -215
  426. package/transpiled/mongodb/lib/resource_management.js +0 -74
  427. package/transpiled/mongodb/lib/sdam/common.js +0 -53
  428. package/transpiled/mongodb/lib/sdam/events.js +0 -177
  429. package/transpiled/mongodb/lib/sdam/monitor.js +0 -656
  430. package/transpiled/mongodb/lib/sdam/server.js +0 -463
  431. package/transpiled/mongodb/lib/sdam/server_description.js +0 -196
  432. package/transpiled/mongodb/lib/sdam/server_selection.js +0 -283
  433. package/transpiled/mongodb/lib/sdam/server_selection_events.js +0 -112
  434. package/transpiled/mongodb/lib/sdam/srv_polling.js +0 -139
  435. package/transpiled/mongodb/lib/sdam/topology.js +0 -833
  436. package/transpiled/mongodb/lib/sdam/topology_description.js +0 -447
  437. package/transpiled/mongodb/lib/sessions.js +0 -988
  438. package/transpiled/mongodb/lib/sort.js +0 -123
  439. package/transpiled/mongodb/lib/timeout.js +0 -349
  440. package/transpiled/mongodb/lib/transactions.js +0 -149
  441. package/transpiled/mongodb/lib/utils.js +0 -1502
  442. package/transpiled/mongodb/lib/write_concern.js +0 -115
@@ -8,18 +8,18 @@ var _util = _interopRequireDefault(require("../lib/util"));
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
10
 
11
- /*
12
- * Copyright (C) 2015-present CloudBeat Limited
13
- *
14
- * This program is free software: you can redistribute it and/or modify
15
- * it under the terms of the GNU General Public License as published by
16
- * the Free Software Foundation, either version 3 of the License, or
17
- * (at your option) any later version.
11
+ /*
12
+ * Copyright (C) 2015-present CloudBeat Limited
13
+ *
14
+ * This program is free software: you can redistribute it and/or modify
15
+ * it under the terms of the GNU General Public License as published by
16
+ * the Free Software Foundation, either version 3 of the License, or
17
+ * (at your option) any later version.
18
18
  */
19
19
 
20
- /**
21
- * @name serial
22
- * @description Provides methods for working with serial ports.
20
+ /**
21
+ * @name serial
22
+ * @description Provides methods for working with serial ports.
23
23
  */
24
24
  var errHelper = require('../errors/helper');
25
25
 
@@ -34,39 +34,39 @@ module.exports = function () {
34
34
  module.isInitialized = function () {
35
35
  return serialPort !== undefined;
36
36
  };
37
- /**
38
- * @summary Returns list of available ports.
39
- * @description See https://github.com/EmergingTechnologyAdvisors/node-serialport#module_serialport--SerialPort.list
40
- * for details about the structure of returned values.
41
- * @function list
42
- * @return {Object[]} Array of port descriptions.
37
+ /**
38
+ * @summary Returns list of available ports.
39
+ * @description See https://github.com/EmergingTechnologyAdvisors/node-serialport#module_serialport--SerialPort.list
40
+ * for details about the structure of returned values.
41
+ * @function list
42
+ * @return {Object[]} Array of port descriptions.
43
43
  */
44
44
 
45
45
 
46
46
  module.list = async function () {
47
47
  return await SerialPort.list();
48
48
  };
49
- /**
50
- * @summary Opens a serial port.
51
- * @description Data from the opened port will be automatically read line by line into a circular buffer.
52
- * Once the buffer reaches it's maximum capacity specified by `bufferSize` argument, eldest entries are
53
- * evicted to make room for new data.
54
- * @function open
55
- * @param {String} port - Path to serial port. E.g. '/dev/tty-usbserial1', 'COM5', etc.
56
- * @param {Object} opts - Port properties.
57
- * @param {Number=} bufferSize - Size of the input data buffer. Default is 65536 bytes.
58
- * @return {SerialPort} SerialPort object.
59
- * @example <caption>[json] Serial port properties with default values</caption>
60
- * {
61
- * baudRate: 9600,
62
- * dataBits: 8, // Must be one of: 8, 7, 6, or 5.
63
- * stopBits: 1, // Must be one of: 1 or 2.
64
- * parity: 'none' // Must be one of: 'none', 'even', 'mark', 'odd', 'space'.
65
- * rtscts: false,
66
- * xon: false,
67
- * xoff: false,
68
- * xany: false
69
- * }
49
+ /**
50
+ * @summary Opens a serial port.
51
+ * @description Data from the opened port will be automatically read line by line into a circular buffer.
52
+ * Once the buffer reaches it's maximum capacity specified by `bufferSize` argument, eldest entries are
53
+ * evicted to make room for new data.
54
+ * @function open
55
+ * @param {String} port - Path to serial port. E.g. '/dev/tty-usbserial1', 'COM5', etc.
56
+ * @param {Object} opts - Port properties.
57
+ * @param {Number=} bufferSize - Size of the input data buffer. Default is 65536 bytes.
58
+ * @return {SerialPort} SerialPort object.
59
+ * @example <caption>[json] Serial port properties with default values</caption>
60
+ * {
61
+ * baudRate: 9600,
62
+ * dataBits: 8, // Must be one of: 8, 7, 6, or 5.
63
+ * stopBits: 1, // Must be one of: 1 or 2.
64
+ * parity: 'none' // Must be one of: 'none', 'even', 'mark', 'odd', 'space'.
65
+ * rtscts: false,
66
+ * xon: false,
67
+ * xoff: false,
68
+ * xany: false
69
+ * }
70
70
  */
71
71
 
72
72
 
@@ -91,13 +91,13 @@ module.exports = function () {
91
91
  });
92
92
  }
93
93
  };
94
- /**
95
- * @summary Waits for text to appear in the input data buffer.
96
- * @description Text pattern can be any of the supported
97
- * string matching patterns(on the top of page).
98
- * @function waitForText
99
- * @param {String} pattern - Text pattern.
100
- * @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
94
+ /**
95
+ * @summary Waits for text to appear in the input data buffer.
96
+ * @description Text pattern can be any of the supported
97
+ * string matching patterns(on the top of page).
98
+ * @function waitForText
99
+ * @param {String} pattern - Text pattern.
100
+ * @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
101
101
  */
102
102
 
103
103
 
@@ -127,12 +127,12 @@ module.exports = function () {
127
127
  }
128
128
  }
129
129
  };
130
- /**
131
- * @summary Write data to the port.
132
- * @function write
133
- * @param {(String|Array)} data - Data to send. Either a string or an array of bytes.
134
- * @example <caption>[javascript] Usage example</caption>
135
- * serial.write('Hello\r\n');
130
+ /**
131
+ * @summary Write data to the port.
132
+ * @function write
133
+ * @param {(String|Array)} data - Data to send. Either a string or an array of bytes.
134
+ * @example <caption>[javascript] Usage example</caption>
135
+ * serial.write('Hello\r\n');
136
136
  */
137
137
 
138
138
 
@@ -148,10 +148,10 @@ module.exports = function () {
148
148
  });
149
149
  }
150
150
  };
151
- /**
152
- * @summary Return data buffer.
153
- * @function getBuffer
154
- * @return {CircularStringBuffer} Data buffer.
151
+ /**
152
+ * @summary Return data buffer.
153
+ * @function getBuffer
154
+ * @return {CircularStringBuffer} Data buffer.
155
155
  */
156
156
 
157
157
 
@@ -184,4 +184,4 @@ module.exports = function () {
184
184
 
185
185
  return module;
186
186
  };
187
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zZXJpYWwuanMiXSwibmFtZXMiOlsiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJTZXJpYWxQb3J0IiwidXRpbHMiLCJzZXJpYWxQb3J0Iiwic3RyaW5nQnVmZmVyIiwiaXNJbml0aWFsaXplZCIsInVuZGVmaW5lZCIsImxpc3QiLCJvcGVuIiwicG9ydCIsIm9wdHMiLCJidWZmZXJTaXplIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwiZXJyIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIlNFUklBTF9QT1JUX0VSUk9SIiwibWVzc2FnZSIsInBhcnNlciIsInBpcGUiLCJwYXJzZXJzIiwiUmVhZGxpbmUiLCJDaXJjdWxhclN0cmluZ0J1ZmZlciIsImRhdGEiLCJwdXNoIiwidG9TdHJpbmciLCJ3YWl0Rm9yVGV4dCIsInBhdHRlcm4iLCJ0aW1lb3V0Iiwibm93IiwiRGF0ZSIsImdldFRpbWUiLCJkb25lIiwiaSIsImxlbmd0aCIsIm1hdGNoUGF0dGVybiIsImxpYlV0aWxzIiwic2xlZXAiLCJUSU1FT1VUIiwid3JpdGUiLCJhc3NlcnRBcmd1bWVudCIsImRyYWluIiwiZ2V0QnVmZmVyIiwiZGlzcG9zZSIsImNsb3NlIiwibWF4U2l6ZSIsInNpemUiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJjcmVhdGUiLCJBcnJheSIsInN0cmluZyIsInNoaWZ0IiwiY2FsbCJdLCJtYXBwaW5ncyI6Ijs7OztBQWFBOztBQUVBOzs7O0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUdBQyxNQUFNLENBQUNDLE9BQVAsR0FB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QUFDeEIsUUFBSTdDLFVBQUosRUFBZ0I7QUFDWkEsTUFBQUEsVUFBVSxDQUFDOEMsS0FBWDtBQUNIO0FBQ0osR0FKRDs7QUFNQSxXQUFTdEIsb0JBQVQsQ0FBOEJ1QixPQUE5QixFQUF1QztBQUNuQyxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLQyxJQUFMLEdBQVksQ0FBWjtBQUNIOztBQUVEeEIsRUFBQUEsb0JBQW9CLENBQUN5QixTQUFyQixHQUFpQ0MsTUFBTSxDQUFDQyxNQUFQLENBQWNDLEtBQUssQ0FBQ0gsU0FBcEIsQ0FBakM7O0FBRUF6QixFQUFBQSxvQkFBb0IsQ0FBQ3lCLFNBQXJCLENBQStCdkIsSUFBL0IsR0FBc0MsVUFBUzJCLE1BQVQsRUFBaUI7QUFDbkQsV0FBTyxLQUFLTCxJQUFMLEdBQVlLLE1BQU0sQ0FBQ2pCLE1BQW5CLEdBQTRCLEtBQUtXLE9BQXhDLEVBQWlEO0FBQzdDLFdBQUtDLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDQSxXQUFLa0IsS0FBTDtBQUNIOztBQUNERixJQUFBQSxLQUFLLENBQUNILFNBQU4sQ0FBZ0J2QixJQUFoQixDQUFxQjZCLElBQXJCLENBQTBCLElBQTFCLEVBQWdDRixNQUFoQztBQUNBLFNBQUtMLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDSCxHQVBEOztBQVNBLFNBQU94QyxNQUFQO0FBQ0gsQ0EzSkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5cbi8qKlxuICogQG5hbWUgc2VyaWFsXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIHNlcmlhbCBwb3J0cy5cbiAqL1xuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcbnZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XG5pbXBvcnQgbGliVXRpbHMgZnJvbSAnLi4vbGliL3V0aWwnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBTZXJpYWxQb3J0ID0gcmVxdWlyZSgnc2VyaWFscG9ydCcpO1xuICAgIHZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuICAgIHZhciBzZXJpYWxQb3J0O1xuICAgIHZhciBzdHJpbmdCdWZmZXI7XG5cbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gc2VyaWFsUG9ydCAhPT0gdW5kZWZpbmVkO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGxpc3Qgb2YgYXZhaWxhYmxlIHBvcnRzLlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0VtZXJnaW5nVGVjaG5vbG9neUFkdmlzb3JzL25vZGUtc2VyaWFscG9ydCNtb2R1bGVfc2VyaWFscG9ydC0tU2VyaWFsUG9ydC5saXN0XG4gICAgICogICAgICAgICAgICAgIGZvciBkZXRhaWxzIGFib3V0IHRoZSBzdHJ1Y3R1cmUgb2YgcmV0dXJuZWQgdmFsdWVzLlxuICAgICAqIEBmdW5jdGlvbiBsaXN0XG4gICAgICogQHJldHVybiB7T2JqZWN0W119IEFycmF5IG9mIHBvcnQgZGVzY3JpcHRpb25zLlxuICAgICAqL1xuICAgIG1vZHVsZS5saXN0ID0gYXN5bmMgZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBTZXJpYWxQb3J0Lmxpc3QoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgT3BlbnMgYSBzZXJpYWwgcG9ydC5cbiAgICAgKiBAZGVzY3JpcHRpb24gRGF0YSBmcm9tIHRoZSBvcGVuZWQgcG9ydCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmVhZCBsaW5lIGJ5IGxpbmUgaW50byBhIGNpcmN1bGFyIGJ1ZmZlci5cbiAgICAgKiAgICAgICAgICAgICAgT25jZSB0aGUgYnVmZmVyIHJlYWNoZXMgaXQncyBtYXhpbXVtIGNhcGFjaXR5IHNwZWNpZmllZCBieSBgYnVmZmVyU2l6ZWAgYXJndW1lbnQsIGVsZGVzdCBlbnRyaWVzIGFyZSBcbiAgICAgKiAgICAgICAgICAgICAgZXZpY3RlZCB0byBtYWtlIHJvb20gZm9yIG5ldyBkYXRhLlxuICAgICAqIEBmdW5jdGlvbiBvcGVuXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBvcnQgLSBQYXRoIHRvIHNlcmlhbCBwb3J0LiBFLmcuICcvZGV2L3R0eS11c2JzZXJpYWwxJywgJ0NPTTUnLCBldGMuXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBQb3J0IHByb3BlcnRpZXMuXG4gICAgICogQHBhcmFtIHtOdW1iZXI9fSBidWZmZXJTaXplIC0gU2l6ZSBvZiB0aGUgaW5wdXQgZGF0YSBidWZmZXIuIERlZmF1bHQgaXMgNjU1MzYgYnl0ZXMuXG4gICAgICogQHJldHVybiB7U2VyaWFsUG9ydH0gU2VyaWFsUG9ydCBvYmplY3QuXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2pzb25dIFNlcmlhbCBwb3J0IHByb3BlcnRpZXMgd2l0aCBkZWZhdWx0IHZhbHVlczwvY2FwdGlvbj5cbiAgICAgKiB7XG4gICAgICogICBiYXVkUmF0ZTogOTYwMCxcbiAgICAgKiAgIGRhdGFCaXRzOiA4LCAgICAgICAgLy8gTXVzdCBiZSBvbmUgb2Y6IDgsIDcsIDYsIG9yIDUuXG4gICAgICogICBzdG9wQml0czogMSwgICAgICAgIC8vIE11c3QgYmUgb25lIG9mOiAxIG9yIDIuXG4gICAgICogICBwYXJpdHk6ICdub25lJyAgICAgIC8vIE11c3QgYmUgb25lIG9mOiAnbm9uZScsICdldmVuJywgJ21hcmsnLCAnb2RkJywgJ3NwYWNlJy5cbiAgICAgKiAgIHJ0c2N0czogZmFsc2UsXG4gICAgICogICB4b246IGZhbHNlLFxuICAgICAqICAgeG9mZjogZmFsc2UsXG4gICAgICogICB4YW55OiBmYWxzZVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBtb2R1bGUub3BlbiA9IGZ1bmN0aW9uKHBvcnQsIG9wdHMsIGJ1ZmZlclNpemUgPSA2NTUzNikge1xuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHBvcnQsICdwb3J0Jyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYnVmZmVyU2l6ZSwgJ2J1ZmZlclNpemUnKTtcblxuICAgICAgICBpZiAocG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0ID0gbmV3IFNlcmlhbFBvcnQocG9ydCwgb3B0cyk7XG5cbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0Lm9uKCdvcGVuJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHNlcmlhbFBvcnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgc2VyaWFsUG9ydC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNFUklBTF9QT1JUX0VSUk9SLCBlcnIubWVzc2FnZSkpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdmFyIHBhcnNlciA9IHNlcmlhbFBvcnQucGlwZShuZXcgU2VyaWFsUG9ydC5wYXJzZXJzLlJlYWRsaW5lKCkpO1xuICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlciA9IG5ldyBDaXJjdWxhclN0cmluZ0J1ZmZlcihidWZmZXJTaXplKTtcbiAgICAgICAgICAgICAgICBwYXJzZXIub24oJ2RhdGEnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWZmZXIucHVzaChkYXRhLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBXYWl0cyBmb3IgdGV4dCB0byBhcHBlYXIgaW4gdGhlIGlucHV0IGRhdGEgYnVmZmVyLlxuICAgICAqIEBkZXNjcmlwdGlvbiBUZXh0IHBhdHRlcm4gY2FuIGJlIGFueSBvZiB0aGUgc3VwcG9ydGVkIFxuICAgICAqICBzdHJpbmcgbWF0Y2hpbmcgcGF0dGVybnMob24gdGhlIHRvcCBvZiBwYWdlKS5cbiAgICAgKiBAZnVuY3Rpb24gd2FpdEZvclRleHRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFRleHQgcGF0dGVybi5cbiAgICAgKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxuICAgICAqL1xuICAgIG1vZHVsZS53YWl0Rm9yVGV4dCA9IGFzeW5jIGZ1bmN0aW9uKHBhdHRlcm4sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHBhdHRlcm4sICdwYXR0ZXJuJyk7XG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUodGltZW91dCwgJ3RpbWVvdXQnKTtcblxuICAgICAgICBpZiAoc3RyaW5nQnVmZmVyKSB7XG4gICAgICAgICAgICB2YXIgbm93ID0gKG5ldyBEYXRlKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBsZXQgZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lICYmIChEYXRlLm5vdygpIC0gbm93KSA8IHRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgaTtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSBzdHJpbmdCdWZmZXIubGVuZ3RoOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodXRpbHMubWF0Y2hQYXR0ZXJuKHN0cmluZ0J1ZmZlcltpXSwgcGF0dGVybikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhd2FpdCBsaWJVdGlscy5zbGVlcCg1MDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBub3cgPj0gdGltZW91dCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuVElNRU9VVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgV3JpdGUgZGF0YSB0byB0aGUgcG9ydC5cbiAgICAgKiBAZnVuY3Rpb24gd3JpdGVcbiAgICAgKiBAcGFyYW0geyhTdHJpbmd8QXJyYXkpfSBkYXRhIC0gRGF0YSB0byBzZW5kLiBFaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2YgYnl0ZXMuXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XG4gICAgICogc2VyaWFsLndyaXRlKCdIZWxsb1xcclxcbicpO1xuICAgICAqL1xuICAgIG1vZHVsZS53cml0ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnQoZGF0YSwgJ2RhdGEnKTtcblxuICAgICAgICBpZiAoc2VyaWFsUG9ydCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0LndyaXRlKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlcmlhbFBvcnQuZHJhaW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm4gZGF0YSBidWZmZXIuXG4gICAgICogQGZ1bmN0aW9uIGdldEJ1ZmZlclxuICAgICAqIEByZXR1cm4ge0NpcmN1bGFyU3RyaW5nQnVmZmVyfSBEYXRhIGJ1ZmZlci5cbiAgICAgKi9cbiAgICBtb2R1bGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBzdHJpbmdCdWZmZXI7XG4gICAgfTtcblxuICAgIG1vZHVsZS5kaXNwb3NlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmIChzZXJpYWxQb3J0KSB7XG4gICAgICAgICAgICBzZXJpYWxQb3J0LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gQ2lyY3VsYXJTdHJpbmdCdWZmZXIobWF4U2l6ZSkge1xuICAgICAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xuICAgICAgICB0aGlzLnNpemUgPSAwO1xuICAgIH1cblxuICAgIENpcmN1bGFyU3RyaW5nQnVmZmVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQXJyYXkucHJvdG90eXBlKTtcblxuICAgIENpcmN1bGFyU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oc3RyaW5nKSB7XG4gICAgICAgIHdoaWxlICh0aGlzLnNpemUgKyBzdHJpbmcubGVuZ3RoID4gdGhpcy5tYXhTaXplKSB7XG4gICAgICAgICAgICB0aGlzLnNpemUgLT0gc3RyaW5nLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuc2hpZnQoKTtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsIHN0cmluZyk7XG4gICAgICAgIHRoaXMuc2l6ZSArPSBzdHJpbmcubGVuZ3RoO1xuICAgIH07XG5cbiAgICByZXR1cm4gbW9kdWxlO1xufTtcbiJdfQ==
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zZXJpYWwuanMiXSwibmFtZXMiOlsiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJTZXJpYWxQb3J0IiwidXRpbHMiLCJzZXJpYWxQb3J0Iiwic3RyaW5nQnVmZmVyIiwiaXNJbml0aWFsaXplZCIsInVuZGVmaW5lZCIsImxpc3QiLCJvcGVuIiwicG9ydCIsIm9wdHMiLCJidWZmZXJTaXplIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwiZXJyIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIlNFUklBTF9QT1JUX0VSUk9SIiwibWVzc2FnZSIsInBhcnNlciIsInBpcGUiLCJwYXJzZXJzIiwiUmVhZGxpbmUiLCJDaXJjdWxhclN0cmluZ0J1ZmZlciIsImRhdGEiLCJwdXNoIiwidG9TdHJpbmciLCJ3YWl0Rm9yVGV4dCIsInBhdHRlcm4iLCJ0aW1lb3V0Iiwibm93IiwiRGF0ZSIsImdldFRpbWUiLCJkb25lIiwiaSIsImxlbmd0aCIsIm1hdGNoUGF0dGVybiIsImxpYlV0aWxzIiwic2xlZXAiLCJUSU1FT1VUIiwid3JpdGUiLCJhc3NlcnRBcmd1bWVudCIsImRyYWluIiwiZ2V0QnVmZmVyIiwiZGlzcG9zZSIsImNsb3NlIiwibWF4U2l6ZSIsInNpemUiLCJwcm90b3R5cGUiLCJPYmplY3QiLCJjcmVhdGUiLCJBcnJheSIsInN0cmluZyIsInNoaWZ0IiwiY2FsbCJdLCJtYXBwaW5ncyI6Ijs7OztBQWFBOztBQUVBOzs7O0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLElBQUlBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUdBQyxNQUFNLENBQUNDLE9BQVAsR0FB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QUFDeEIsUUFBSTdDLFVBQUosRUFBZ0I7QUFDWkEsTUFBQUEsVUFBVSxDQUFDOEMsS0FBWDtBQUNIO0FBQ0osR0FKRDs7QUFNQSxXQUFTdEIsb0JBQVQsQ0FBOEJ1QixPQUE5QixFQUF1QztBQUNuQyxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFDQSxTQUFLQyxJQUFMLEdBQVksQ0FBWjtBQUNIOztBQUVEeEIsRUFBQUEsb0JBQW9CLENBQUN5QixTQUFyQixHQUFpQ0MsTUFBTSxDQUFDQyxNQUFQLENBQWNDLEtBQUssQ0FBQ0gsU0FBcEIsQ0FBakM7O0FBRUF6QixFQUFBQSxvQkFBb0IsQ0FBQ3lCLFNBQXJCLENBQStCdkIsSUFBL0IsR0FBc0MsVUFBUzJCLE1BQVQsRUFBaUI7QUFDbkQsV0FBTyxLQUFLTCxJQUFMLEdBQVlLLE1BQU0sQ0FBQ2pCLE1BQW5CLEdBQTRCLEtBQUtXLE9BQXhDLEVBQWlEO0FBQzdDLFdBQUtDLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDQSxXQUFLa0IsS0FBTDtBQUNIOztBQUNERixJQUFBQSxLQUFLLENBQUNILFNBQU4sQ0FBZ0J2QixJQUFoQixDQUFxQjZCLElBQXJCLENBQTBCLElBQTFCLEVBQWdDRixNQUFoQztBQUNBLFNBQUtMLElBQUwsSUFBYUssTUFBTSxDQUFDakIsTUFBcEI7QUFDSCxHQVBEOztBQVNBLFNBQU94QyxNQUFQO0FBQ0gsQ0EzSkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzZXJpYWxcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBzZXJpYWwgcG9ydHMuXHJcbiAqL1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG52YXIgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5pbXBvcnQgbGliVXRpbHMgZnJvbSAnLi4vbGliL3V0aWwnO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIHZhciBTZXJpYWxQb3J0ID0gcmVxdWlyZSgnc2VyaWFscG9ydCcpO1xyXG4gICAgdmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xyXG5cclxuICAgIHZhciBzZXJpYWxQb3J0O1xyXG4gICAgdmFyIHN0cmluZ0J1ZmZlcjtcclxuXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBzZXJpYWxQb3J0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBsaXN0IG9mIGF2YWlsYWJsZSBwb3J0cy5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL0VtZXJnaW5nVGVjaG5vbG9neUFkdmlzb3JzL25vZGUtc2VyaWFscG9ydCNtb2R1bGVfc2VyaWFscG9ydC0tU2VyaWFsUG9ydC5saXN0XHJcbiAgICAgKiAgICAgICAgICAgICAgZm9yIGRldGFpbHMgYWJvdXQgdGhlIHN0cnVjdHVyZSBvZiByZXR1cm5lZCB2YWx1ZXMuXHJcbiAgICAgKiBAZnVuY3Rpb24gbGlzdFxyXG4gICAgICogQHJldHVybiB7T2JqZWN0W119IEFycmF5IG9mIHBvcnQgZGVzY3JpcHRpb25zLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUubGlzdCA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiBhd2FpdCBTZXJpYWxQb3J0Lmxpc3QoKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBPcGVucyBhIHNlcmlhbCBwb3J0LlxyXG4gICAgICogQGRlc2NyaXB0aW9uIERhdGEgZnJvbSB0aGUgb3BlbmVkIHBvcnQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJlYWQgbGluZSBieSBsaW5lIGludG8gYSBjaXJjdWxhciBidWZmZXIuXHJcbiAgICAgKiAgICAgICAgICAgICAgT25jZSB0aGUgYnVmZmVyIHJlYWNoZXMgaXQncyBtYXhpbXVtIGNhcGFjaXR5IHNwZWNpZmllZCBieSBgYnVmZmVyU2l6ZWAgYXJndW1lbnQsIGVsZGVzdCBlbnRyaWVzIGFyZSBcclxuICAgICAqICAgICAgICAgICAgICBldmljdGVkIHRvIG1ha2Ugcm9vbSBmb3IgbmV3IGRhdGEuXHJcbiAgICAgKiBAZnVuY3Rpb24gb3BlblxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBvcnQgLSBQYXRoIHRvIHNlcmlhbCBwb3J0LiBFLmcuICcvZGV2L3R0eS11c2JzZXJpYWwxJywgJ0NPTTUnLCBldGMuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFBvcnQgcHJvcGVydGllcy5cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyPX0gYnVmZmVyU2l6ZSAtIFNpemUgb2YgdGhlIGlucHV0IGRhdGEgYnVmZmVyLiBEZWZhdWx0IGlzIDY1NTM2IGJ5dGVzLlxyXG4gICAgICogQHJldHVybiB7U2VyaWFsUG9ydH0gU2VyaWFsUG9ydCBvYmplY3QuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5banNvbl0gU2VyaWFsIHBvcnQgcHJvcGVydGllcyB3aXRoIGRlZmF1bHQgdmFsdWVzPC9jYXB0aW9uPlxyXG4gICAgICoge1xyXG4gICAgICogICBiYXVkUmF0ZTogOTYwMCxcclxuICAgICAqICAgZGF0YUJpdHM6IDgsICAgICAgICAvLyBNdXN0IGJlIG9uZSBvZjogOCwgNywgNiwgb3IgNS5cclxuICAgICAqICAgc3RvcEJpdHM6IDEsICAgICAgICAvLyBNdXN0IGJlIG9uZSBvZjogMSBvciAyLlxyXG4gICAgICogICBwYXJpdHk6ICdub25lJyAgICAgIC8vIE11c3QgYmUgb25lIG9mOiAnbm9uZScsICdldmVuJywgJ21hcmsnLCAnb2RkJywgJ3NwYWNlJy5cclxuICAgICAqICAgcnRzY3RzOiBmYWxzZSxcclxuICAgICAqICAgeG9uOiBmYWxzZSxcclxuICAgICAqICAgeG9mZjogZmFsc2UsXHJcbiAgICAgKiAgIHhhbnk6IGZhbHNlXHJcbiAgICAgKiB9XHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5vcGVuID0gZnVuY3Rpb24ocG9ydCwgb3B0cywgYnVmZmVyU2l6ZSA9IDY1NTM2KSB7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyhwb3J0LCAncG9ydCcpO1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUoYnVmZmVyU2l6ZSwgJ2J1ZmZlclNpemUnKTtcclxuXHJcbiAgICAgICAgaWYgKHBvcnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNlcmlhbFBvcnQgPSBuZXcgU2VyaWFsUG9ydChwb3J0LCBvcHRzKTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0Lm9uKCdvcGVuJywgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoc2VyaWFsUG9ydCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0Lm9uKCdlcnJvcicsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TRVJJQUxfUE9SVF9FUlJPUiwgZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBwYXJzZXIgPSBzZXJpYWxQb3J0LnBpcGUobmV3IFNlcmlhbFBvcnQucGFyc2Vycy5SZWFkbGluZSgpKTtcclxuICAgICAgICAgICAgICAgIHN0cmluZ0J1ZmZlciA9IG5ldyBDaXJjdWxhclN0cmluZ0J1ZmZlcihidWZmZXJTaXplKTtcclxuICAgICAgICAgICAgICAgIHBhcnNlci5vbignZGF0YScsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVmZmVyLnB1c2goZGF0YS50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFdhaXRzIGZvciB0ZXh0IHRvIGFwcGVhciBpbiB0aGUgaW5wdXQgZGF0YSBidWZmZXIuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gVGV4dCBwYXR0ZXJuIGNhbiBiZSBhbnkgb2YgdGhlIHN1cHBvcnRlZCBcclxuICAgICAqICBzdHJpbmcgbWF0Y2hpbmcgcGF0dGVybnMob24gdGhlIHRvcCBvZiBwYWdlKS5cclxuICAgICAqIEBmdW5jdGlvbiB3YWl0Rm9yVGV4dFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBUZXh0IHBhdHRlcm4uXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUud2FpdEZvclRleHQgPSBhc3luYyBmdW5jdGlvbihwYXR0ZXJuLCB0aW1lb3V0ID0gNjAwMDApIHtcclxuICAgICAgICB1dGlscy5hc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nKHBhdHRlcm4sICdwYXR0ZXJuJyk7XHJcbiAgICAgICAgdXRpbHMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG5cclxuICAgICAgICBpZiAoc3RyaW5nQnVmZmVyKSB7XHJcbiAgICAgICAgICAgIHZhciBub3cgPSAobmV3IERhdGUpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgd2hpbGUgKCFkb25lICYmIChEYXRlLm5vdygpIC0gbm93KSA8IHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBpO1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gc3RyaW5nQnVmZmVyLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodXRpbHMubWF0Y2hQYXR0ZXJuKHN0cmluZ0J1ZmZlcltpXSwgcGF0dGVybikpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBsaWJVdGlscy5zbGVlcCg1MDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoKG5ldyBEYXRlKS5nZXRUaW1lKCkgLSBub3cgPj0gdGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5USU1FT1VUKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBXcml0ZSBkYXRhIHRvIHRoZSBwb3J0LlxyXG4gICAgICogQGZ1bmN0aW9uIHdyaXRlXHJcbiAgICAgKiBAcGFyYW0geyhTdHJpbmd8QXJyYXkpfSBkYXRhIC0gRGF0YSB0byBzZW5kLiBFaXRoZXIgYSBzdHJpbmcgb3IgYW4gYXJyYXkgb2YgYnl0ZXMuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIHNlcmlhbC53cml0ZSgnSGVsbG9cXHJcXG4nKTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLndyaXRlID0gZnVuY3Rpb24oZGF0YSkge1xyXG4gICAgICAgIHV0aWxzLmFzc2VydEFyZ3VtZW50KGRhdGEsICdkYXRhJyk7XHJcblxyXG4gICAgICAgIGlmIChzZXJpYWxQb3J0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzZXJpYWxQb3J0LndyaXRlKGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgc2VyaWFsUG9ydC5kcmFpbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm4gZGF0YSBidWZmZXIuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0QnVmZmVyXHJcbiAgICAgKiBAcmV0dXJuIHtDaXJjdWxhclN0cmluZ0J1ZmZlcn0gRGF0YSBidWZmZXIuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRCdWZmZXIgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gc3RyaW5nQnVmZmVyO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuZGlzcG9zZSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmIChzZXJpYWxQb3J0KSB7XHJcbiAgICAgICAgICAgIHNlcmlhbFBvcnQuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIGZ1bmN0aW9uIENpcmN1bGFyU3RyaW5nQnVmZmVyKG1heFNpemUpIHtcclxuICAgICAgICB0aGlzLm1heFNpemUgPSBtYXhTaXplO1xyXG4gICAgICAgIHRoaXMuc2l6ZSA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgQ2lyY3VsYXJTdHJpbmdCdWZmZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShBcnJheS5wcm90b3R5cGUpO1xyXG5cclxuICAgIENpcmN1bGFyU3RyaW5nQnVmZmVyLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24oc3RyaW5nKSB7XHJcbiAgICAgICAgd2hpbGUgKHRoaXMuc2l6ZSArIHN0cmluZy5sZW5ndGggPiB0aGlzLm1heFNpemUpIHtcclxuICAgICAgICAgICAgdGhpcy5zaXplIC09IHN0cmluZy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRoaXMuc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBzdHJpbmcpO1xyXG4gICAgICAgIHRoaXMuc2l6ZSArPSBzdHJpbmcubGVuZ3RoO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
@@ -17,18 +17,18 @@ var _utils = _interopRequireDefault(require("./utils"));
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
- /*
21
- * Copyright (C) 2015-2018 CloudBeat Limited
22
- *
23
- * This program is free software: you can redistribute it and/or modify
24
- * it under the terms of the GNU General Public License as published by
25
- * the Free Software Foundation, either version 3 of the License, or
26
- * (at your option) any later version.
20
+ /*
21
+ * Copyright (C) 2015-2018 CloudBeat Limited
22
+ *
23
+ * This program is free software: you can redistribute it and/or modify
24
+ * it under the terms of the GNU General Public License as published by
25
+ * the Free Software Foundation, either version 3 of the License, or
26
+ * (at your option) any later version.
27
27
  */
28
28
  const MODULE_NAME = 'shell';
29
- /**
30
- * @name shell
31
- * @description Provides methods for working with operating system shell.
29
+ /**
30
+ * @name shell
31
+ * @description Provides methods for working with operating system shell.
32
32
  */
33
33
 
34
34
  class ShellModule extends _OxygenModule.default {
@@ -37,31 +37,31 @@ class ShellModule extends _OxygenModule.default {
37
37
  this._alwaysInitialized = true; // pre-initialize the module
38
38
 
39
39
  this._isInitialized = true;
40
- this._lastCmd;
41
40
  this._lastStdout;
41
+ this._lastStderr;
42
42
  }
43
- /*
44
- * @summary Gets module name
45
- * @function name
46
- * @return {String} Constant value "shell".
43
+ /*
44
+ * @summary Gets module name
45
+ * @function name
46
+ * @return {String} Constant value "shell".
47
47
  */
48
48
 
49
49
 
50
50
  get name() {
51
51
  return MODULE_NAME;
52
52
  }
53
- /**
54
- * @summary Execute command
55
- * @description Spawn child process
56
- * @function exec
57
- * @param {String} command - Shell command to be executed, including arguments, if applicable.
58
- * @return {String} null | Error | stdout result
53
+ /**
54
+ * @summary Execute command
55
+ * @description Spawn child process
56
+ * @function exec
57
+ * @param {String} command - Shell command to be executed, including arguments, if applicable.
58
+ * @return {Object} Response object containing stdout, stderr, exit code, and signal (if process was terminated by a signal).
59
59
  */
60
60
 
61
61
 
62
62
  exec(command, options = {}) {
63
- this._lastCmd = command;
64
63
  this._lastStdout = null;
64
+ this._lastStderr = null;
65
65
 
66
66
  const spawn = require('cross-spawn');
67
67
 
@@ -78,17 +78,18 @@ class ShellModule extends _OxygenModule.default {
78
78
  }
79
79
 
80
80
  this._lastStdout = result.stdout ? result.stdout.toString() : null;
81
-
82
- if (result.stdout) {
83
- return result.stdout.toString();
84
- }
85
-
86
- return null;
81
+ this._lastStderr = result.stderr ? result.stderr.toString() : null;
82
+ return {
83
+ stdout: this._lastStdout,
84
+ stderr: this._lastStderr,
85
+ exitCode: result.status,
86
+ signal: result.signal
87
+ };
87
88
  }
88
- /**
89
- * @summary Assert whether the shell command output (stdout) is matching the specified pattern.
90
- * @function assertOutput
91
- * @param {String} pattern - Pattern to assert.
89
+ /**
90
+ * @summary Assert that the shell command's output (stdout) matches the specified pattern.
91
+ * @function assertOutput
92
+ * @param {String} pattern - Pattern to assert.
92
93
  */
93
94
 
94
95
 
@@ -103,8 +104,26 @@ class ShellModule extends _OxygenModule.default {
103
104
 
104
105
  return true;
105
106
  }
107
+ /**
108
+ * @summary Assert that the shell command's error output (stderr) matches the specified pattern.
109
+ * @function assertErrorOutput
110
+ * @param {String} pattern - Pattern to assert.
111
+ */
112
+
113
+
114
+ assertErrorOutput(pattern) {
115
+ if (!this._lastStderr) {
116
+ return false;
117
+ }
118
+
119
+ if (!_utils.default.matchPattern(this._lastStderr, pattern)) {
120
+ throw new _OxygenError.default(_helper.default.errorCode.ASSERT_ERROR, `Expected shell command error output to match: "${pattern}" but got: "${this._lastStderr}"`);
121
+ }
122
+
123
+ return true;
124
+ }
106
125
 
107
126
  }
108
127
 
109
128
  exports.default = ShellModule;
110
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zaGVsbC5qcyJdLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIlNoZWxsTW9kdWxlIiwiT3h5Z2VuTW9kdWxlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY29udGV4dCIsInJzIiwibG9nZ2VyIiwibW9kdWxlcyIsInNlcnZpY2VzIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2lzSW5pdGlhbGl6ZWQiLCJfbGFzdENtZCIsIl9sYXN0U3Rkb3V0IiwibmFtZSIsImV4ZWMiLCJjb21tYW5kIiwic3Bhd24iLCJyZXF1aXJlIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwiYXNzZXJ0T3V0cHV0IiwicGF0dGVybiIsIm1vZFV0aWxzIiwibWF0Y2hQYXR0ZXJuIiwiQVNTRVJUX0VSUk9SIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQVhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQSxNQUFNQSxXQUFXLEdBQUcsT0FBcEI7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFDZSxNQUFNQyxXQUFOLFNBQTBCQyxxQkFBMUIsQ0FBdUM7QUFDbERDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFVQyxPQUFWLEVBQW1CQyxFQUFuQixFQUF1QkMsTUFBdkIsRUFBK0JDLE9BQS9CLEVBQXdDQyxRQUF4QyxFQUFrRDtBQUN6RCxVQUFNTCxPQUFOLEVBQWVDLE9BQWYsRUFBd0JDLEVBQXhCLEVBQTRCQyxNQUE1QixFQUFvQ0MsT0FBcEMsRUFBNkNDLFFBQTdDO0FBQ0EsU0FBS0Msa0JBQUwsR0FBMEIsSUFBMUIsQ0FGeUQsQ0FHekQ7O0FBQ0EsU0FBS0MsY0FBTCxHQUFzQixJQUF0QjtBQUNBLFNBQUtDLFFBQUw7QUFDQSxTQUFLQyxXQUFMO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFDWSxNQUFKQyxJQUFJLEdBQUc7QUFDUCxXQUFPZCxXQUFQO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0llLEVBQUFBLElBQUksQ0FBQ0MsT0FBRCxFQUFVWixPQUFPLEdBQUcsRUFBcEIsRUFBd0I7QUFDeEIsU0FBS1EsUUFBTCxHQUFnQkksT0FBaEI7QUFDQSxTQUFLSCxXQUFMLEdBQW1CLElBQW5COztBQUNBLFVBQU1JLEtBQUssR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBckI7O0FBQ0FkLElBQUFBLE9BQU8sR0FBRztBQUFFZSxNQUFBQSxHQUFHLEVBQUUsS0FBS2YsT0FBTCxDQUFhZSxHQUFwQjtBQUF5QkMsTUFBQUEsS0FBSyxFQUFFLElBQWhDO0FBQXNDQyxNQUFBQSxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FBbkQ7QUFBd0QsU0FBR2pCO0FBQTNELEtBQVY7QUFDQSxVQUFNbUIsTUFBTSxHQUFHTixLQUFLLENBQUNPLElBQU4sQ0FBV1IsT0FBWCxFQUFvQlosT0FBcEIsQ0FBZjs7QUFDQSxRQUFJbUIsTUFBTSxDQUFDRSxLQUFYLEVBQWtCO0FBQ2QsWUFBTSxJQUFJQyxvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQkMsV0FBaEMsRUFBNkNOLE1BQU0sQ0FBQ0UsS0FBUCxDQUFhSyxPQUExRCxFQUFtRSxJQUFuRSxFQUF5RSxJQUF6RSxFQUErRVAsTUFBTSxDQUFDRSxLQUF0RixDQUFOO0FBQ0g7O0FBQ0QsU0FBS1osV0FBTCxHQUFtQlUsTUFBTSxDQUFDUSxNQUFQLEdBQWdCUixNQUFNLENBQUNRLE1BQVAsQ0FBY0MsUUFBZCxFQUFoQixHQUEyQyxJQUE5RDs7QUFDQSxRQUFJVCxNQUFNLENBQUNRLE1BQVgsRUFBbUI7QUFDZixhQUFPUixNQUFNLENBQUNRLE1BQVAsQ0FBY0MsUUFBZCxFQUFQO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0g7QUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSUMsRUFBQUEsWUFBWSxDQUFDQyxPQUFELEVBQVU7QUFDbEIsUUFBSSxDQUFDLEtBQUtyQixXQUFWLEVBQXVCO0FBQ25CLGFBQU8sS0FBUDtBQUNIOztBQUNELFFBQUksQ0FBQ3NCLGVBQVNDLFlBQVQsQ0FBc0IsS0FBS3ZCLFdBQTNCLEVBQXdDcUIsT0FBeEMsQ0FBTCxFQUF1RDtBQUNuRCxZQUFNLElBQUlSLG9CQUFKLENBQVlDLGdCQUFVQyxTQUFWLENBQW9CUyxZQUFoQyxFQUErQyw0Q0FBMkNILE9BQVEsZUFBYyxLQUFLckIsV0FBWSxHQUFqSSxDQUFOO0FBQ0g7O0FBQ0QsV0FBTyxJQUFQO0FBQ0g7O0FBdkRpRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKi9cbmltcG9ydCBPeHlnZW5Nb2R1bGUgZnJvbSAnLi4vY29yZS9PeHlnZW5Nb2R1bGUnO1xuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XG5pbXBvcnQgbW9kVXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IE1PRFVMRV9OQU1FID0gJ3NoZWxsJztcblxuLyoqXG4gKiBAbmFtZSBzaGVsbFxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBvcGVyYXRpbmcgc3lzdGVtIHNoZWxsLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGVsbE1vZHVsZSBleHRlbmRzIE94eWdlbk1vZHVsZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpO1xuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIC8vIHByZS1pbml0aWFsaXplIHRoZSBtb2R1bGVcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2xhc3RDbWQ7XG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBAc3VtbWFyeSBHZXRzIG1vZHVsZSBuYW1lXG4gICAgICogQGZ1bmN0aW9uIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IENvbnN0YW50IHZhbHVlIFwic2hlbGxcIi5cbiAgICAgKi9cbiAgICBnZXQgbmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIE1PRFVMRV9OQU1FO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGUgY29tbWFuZFxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGF3biBjaGlsZCBwcm9jZXNzXG4gICAgICogQGZ1bmN0aW9uIGV4ZWNcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29tbWFuZCAtIFNoZWxsIGNvbW1hbmQgdG8gYmUgZXhlY3V0ZWQsIGluY2x1ZGluZyBhcmd1bWVudHMsIGlmIGFwcGxpY2FibGUuIFxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gbnVsbCB8IEVycm9yIHwgc3Rkb3V0IHJlc3VsdFxuICAgICAqL1xuICAgIGV4ZWMoY29tbWFuZCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMuX2xhc3RDbWQgPSBjb21tYW5kO1xuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0ID0gbnVsbDtcbiAgICAgICAgY29uc3Qgc3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpO1xuICAgICAgICBvcHRpb25zID0geyBjd2Q6IHRoaXMub3B0aW9ucy5jd2QsIHNoZWxsOiB0cnVlLCBlbnY6IHByb2Nlc3MuZW52LCAuLi5vcHRpb25zIH07XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHNwYXduLnN5bmMoY29tbWFuZCwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0hFTExfRVJST1IsIHJlc3VsdC5lcnJvci5tZXNzYWdlLCBudWxsLCB0cnVlLCByZXN1bHQuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQgPSByZXN1bHQuc3Rkb3V0ID8gcmVzdWx0LnN0ZG91dC50b1N0cmluZygpIDogbnVsbDtcbiAgICAgICAgaWYgKHJlc3VsdC5zdGRvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHdoZXRoZXIgdGhlIHNoZWxsIGNvbW1hbmQgb3V0cHV0IChzdGRvdXQpIGlzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcGF0dGVybi5cbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0T3V0cHV0XG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBQYXR0ZXJuIHRvIGFzc2VydC5cbiAgICAgKi9cbiAgICBhc3NlcnRPdXRwdXQocGF0dGVybikge1xuICAgICAgICBpZiAoIXRoaXMuX2xhc3RTdGRvdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybih0aGlzLl9sYXN0U3Rkb3V0LCBwYXR0ZXJuKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZCBzaGVsbCBjb21tYW5kIG91dHB1dCB0byBtYXRjaDogXCIke3BhdHRlcm59XCIgYnV0IGdvdDogXCIke3RoaXMuX2xhc3RTdGRvdXR9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59Il19
129
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1zaGVsbC5qcyJdLCJuYW1lcyI6WyJNT0RVTEVfTkFNRSIsIlNoZWxsTW9kdWxlIiwiT3h5Z2VuTW9kdWxlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiY29udGV4dCIsInJzIiwibG9nZ2VyIiwibW9kdWxlcyIsInNlcnZpY2VzIiwiX2Fsd2F5c0luaXRpYWxpemVkIiwiX2lzSW5pdGlhbGl6ZWQiLCJfbGFzdFN0ZG91dCIsIl9sYXN0U3RkZXJyIiwibmFtZSIsImV4ZWMiLCJjb21tYW5kIiwic3Bhd24iLCJyZXF1aXJlIiwiY3dkIiwic2hlbGwiLCJlbnYiLCJwcm9jZXNzIiwicmVzdWx0Iiwic3luYyIsImVycm9yIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIlNIRUxMX0VSUk9SIiwibWVzc2FnZSIsInN0ZG91dCIsInRvU3RyaW5nIiwic3RkZXJyIiwiZXhpdENvZGUiLCJzdGF0dXMiLCJzaWduYWwiLCJhc3NlcnRPdXRwdXQiLCJwYXR0ZXJuIiwibW9kVXRpbHMiLCJtYXRjaFBhdHRlcm4iLCJBU1NFUlRfRVJST1IiLCJhc3NlcnRFcnJvck91dHB1dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBUUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTUEsTUFBTUEsV0FBVyxHQUFHLE9BQXBCO0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsV0FBTixTQUEwQkMscUJBQTFCLENBQXVDO0FBQ2xEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFBVUMsT0FBVixFQUFtQkMsRUFBbkIsRUFBdUJDLE1BQXZCLEVBQStCQyxPQUEvQixFQUF3Q0MsUUFBeEMsRUFBa0Q7QUFDekQsVUFBTUwsT0FBTixFQUFlQyxPQUFmLEVBQXdCQyxFQUF4QixFQUE0QkMsTUFBNUIsRUFBb0NDLE9BQXBDLEVBQTZDQyxRQUE3QztBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLElBQTFCLENBRnlELENBR3pEOztBQUNBLFNBQUtDLGNBQUwsR0FBc0IsSUFBdEI7QUFDQSxTQUFLQyxXQUFMO0FBQ0EsU0FBS0MsV0FBTDtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ1ksTUFBSkMsSUFBSSxHQUFHO0FBQ1AsV0FBT2QsV0FBUDtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJZSxFQUFBQSxJQUFJLENBQUNDLE9BQUQsRUFBVVosT0FBTyxHQUFHLEVBQXBCLEVBQXdCO0FBQ3hCLFNBQUtRLFdBQUwsR0FBbUIsSUFBbkI7QUFDQSxTQUFLQyxXQUFMLEdBQW1CLElBQW5COztBQUVBLFVBQU1JLEtBQUssR0FBR0MsT0FBTyxDQUFDLGFBQUQsQ0FBckI7O0FBQ0FkLElBQUFBLE9BQU8sR0FBRztBQUFFZSxNQUFBQSxHQUFHLEVBQUUsS0FBS2YsT0FBTCxDQUFhZSxHQUFwQjtBQUF5QkMsTUFBQUEsS0FBSyxFQUFFLElBQWhDO0FBQXNDQyxNQUFBQSxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FBbkQ7QUFBd0QsU0FBR2pCO0FBQTNELEtBQVY7QUFDQSxVQUFNbUIsTUFBTSxHQUFHTixLQUFLLENBQUNPLElBQU4sQ0FBV1IsT0FBWCxFQUFvQlosT0FBcEIsQ0FBZjs7QUFFQSxRQUFJbUIsTUFBTSxDQUFDRSxLQUFYLEVBQWtCO0FBQ2QsWUFBTSxJQUFJQyxvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQkMsV0FBaEMsRUFBNkNOLE1BQU0sQ0FBQ0UsS0FBUCxDQUFhSyxPQUExRCxFQUFtRSxJQUFuRSxFQUF5RSxJQUF6RSxFQUErRVAsTUFBTSxDQUFDRSxLQUF0RixDQUFOO0FBQ0g7O0FBRUQsU0FBS2IsV0FBTCxHQUFtQlcsTUFBTSxDQUFDUSxNQUFQLEdBQWdCUixNQUFNLENBQUNRLE1BQVAsQ0FBY0MsUUFBZCxFQUFoQixHQUEyQyxJQUE5RDtBQUNBLFNBQUtuQixXQUFMLEdBQW1CVSxNQUFNLENBQUNVLE1BQVAsR0FBZ0JWLE1BQU0sQ0FBQ1UsTUFBUCxDQUFjRCxRQUFkLEVBQWhCLEdBQTJDLElBQTlEO0FBRUEsV0FBTztBQUNIRCxNQUFBQSxNQUFNLEVBQUUsS0FBS25CLFdBRFY7QUFFSHFCLE1BQUFBLE1BQU0sRUFBRSxLQUFLcEIsV0FGVjtBQUdIcUIsTUFBQUEsUUFBUSxFQUFFWCxNQUFNLENBQUNZLE1BSGQ7QUFJSEMsTUFBQUEsTUFBTSxFQUFFYixNQUFNLENBQUNhO0FBSlosS0FBUDtBQU1IO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lDLEVBQUFBLFlBQVksQ0FBQ0MsT0FBRCxFQUFVO0FBQ2xCLFFBQUksQ0FBQyxLQUFLMUIsV0FBVixFQUF1QjtBQUNuQixhQUFPLEtBQVA7QUFDSDs7QUFDRCxRQUFJLENBQUMyQixlQUFTQyxZQUFULENBQXNCLEtBQUs1QixXQUEzQixFQUF3QzBCLE9BQXhDLENBQUwsRUFBdUQ7QUFDbkQsWUFBTSxJQUFJWixvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQmEsWUFBaEMsRUFBK0MsNENBQTJDSCxPQUFRLGVBQWMsS0FBSzFCLFdBQVksR0FBakksQ0FBTjtBQUNIOztBQUNELFdBQU8sSUFBUDtBQUNIO0FBRUQ7QUFDSjtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0k4QixFQUFBQSxpQkFBaUIsQ0FBQ0osT0FBRCxFQUFVO0FBQ3ZCLFFBQUksQ0FBQyxLQUFLekIsV0FBVixFQUF1QjtBQUNuQixhQUFPLEtBQVA7QUFDSDs7QUFDRCxRQUFJLENBQUMwQixlQUFTQyxZQUFULENBQXNCLEtBQUszQixXQUEzQixFQUF3Q3lCLE9BQXhDLENBQUwsRUFBdUQ7QUFDbkQsWUFBTSxJQUFJWixvQkFBSixDQUFZQyxnQkFBVUMsU0FBVixDQUFvQmEsWUFBaEMsRUFBK0Msa0RBQWlESCxPQUFRLGVBQWMsS0FBS3pCLFdBQVksR0FBdkksQ0FBTjtBQUNIOztBQUNELFdBQU8sSUFBUDtBQUNIOztBQTdFaUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0IE94eWdlbk1vZHVsZSBmcm9tICcuLi9jb3JlL094eWdlbk1vZHVsZSc7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcbmltcG9ydCBtb2RVdGlscyBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ3NoZWxsJztcclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBzaGVsbFxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIG9wZXJhdGluZyBzeXN0ZW0gc2hlbGwuXHJcbiAqL1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaGVsbE1vZHVsZSBleHRlbmRzIE94eWdlbk1vZHVsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKTtcclxuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgLy8gcHJlLWluaXRpYWxpemUgdGhlIG1vZHVsZVxyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRvdXQ7XHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZGVycjtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogQHN1bW1hcnkgR2V0cyBtb2R1bGUgbmFtZVxyXG4gICAgICogQGZ1bmN0aW9uIG5hbWVcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gQ29uc3RhbnQgdmFsdWUgXCJzaGVsbFwiLlxyXG4gICAgICovXHJcbiAgICBnZXQgbmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gTU9EVUxFX05BTUU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlIGNvbW1hbmRcclxuICAgICAqIEBkZXNjcmlwdGlvbiBTcGF3biBjaGlsZCBwcm9jZXNzXHJcbiAgICAgKiBAZnVuY3Rpb24gZXhlY1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbW1hbmQgLSBTaGVsbCBjb21tYW5kIHRvIGJlIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYXJndW1lbnRzLCBpZiBhcHBsaWNhYmxlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QgY29udGFpbmluZyBzdGRvdXQsIHN0ZGVyciwgZXhpdCBjb2RlLCBhbmQgc2lnbmFsIChpZiBwcm9jZXNzIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsKS5cclxuICAgICAqL1xyXG4gICAgZXhlYyhjb21tYW5kLCBvcHRpb25zID0ge30pIHtcclxuICAgICAgICB0aGlzLl9sYXN0U3Rkb3V0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9sYXN0U3RkZXJyID0gbnVsbDtcclxuXHJcbiAgICAgICAgY29uc3Qgc3Bhd24gPSByZXF1aXJlKCdjcm9zcy1zcGF3bicpO1xyXG4gICAgICAgIG9wdGlvbnMgPSB7IGN3ZDogdGhpcy5vcHRpb25zLmN3ZCwgc2hlbGw6IHRydWUsIGVudjogcHJvY2Vzcy5lbnYsIC4uLm9wdGlvbnMgfTtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBzcGF3bi5zeW5jKGNvbW1hbmQsIG9wdGlvbnMpO1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0hFTExfRVJST1IsIHJlc3VsdC5lcnJvci5tZXNzYWdlLCBudWxsLCB0cnVlLCByZXN1bHQuZXJyb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5fbGFzdFN0ZG91dCA9IHJlc3VsdC5zdGRvdXQgPyByZXN1bHQuc3Rkb3V0LnRvU3RyaW5nKCkgOiBudWxsO1xyXG4gICAgICAgIHRoaXMuX2xhc3RTdGRlcnIgPSByZXN1bHQuc3RkZXJyID8gcmVzdWx0LnN0ZGVyci50b1N0cmluZygpIDogbnVsbDtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc3Rkb3V0OiB0aGlzLl9sYXN0U3Rkb3V0LFxyXG4gICAgICAgICAgICBzdGRlcnI6IHRoaXMuX2xhc3RTdGRlcnIsXHJcbiAgICAgICAgICAgIGV4aXRDb2RlOiByZXN1bHQuc3RhdHVzLFxyXG4gICAgICAgICAgICBzaWduYWw6IHJlc3VsdC5zaWduYWxcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHRoYXQgdGhlIHNoZWxsIGNvbW1hbmQncyBvdXRwdXQgKHN0ZG91dCkgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0T3V0cHV0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcGF0dGVybiAtIFBhdHRlcm4gdG8gYXNzZXJ0LlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRPdXRwdXQocGF0dGVybikge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFN0ZG91dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbW9kVXRpbHMubWF0Y2hQYXR0ZXJuKHRoaXMuX2xhc3RTdGRvdXQsIHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQgc2hlbGwgY29tbWFuZCBvdXRwdXQgdG8gbWF0Y2g6IFwiJHtwYXR0ZXJufVwiIGJ1dCBnb3Q6IFwiJHt0aGlzLl9sYXN0U3Rkb3V0fVwiYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHRoYXQgdGhlIHNoZWxsIGNvbW1hbmQncyBlcnJvciBvdXRwdXQgKHN0ZGVycikgbWF0Y2hlcyB0aGUgc3BlY2lmaWVkIHBhdHRlcm4uXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0RXJyb3JPdXRwdXRcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXR0ZXJuIC0gUGF0dGVybiB0byBhc3NlcnQuXHJcbiAgICAgKi9cclxuICAgIGFzc2VydEVycm9yT3V0cHV0KHBhdHRlcm4pIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2xhc3RTdGRlcnIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybih0aGlzLl9sYXN0U3RkZXJyLCBwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkIHNoZWxsIGNvbW1hbmQgZXJyb3Igb3V0cHV0IHRvIG1hdGNoOiBcIiR7cGF0dGVybn1cIiBidXQgZ290OiBcIiR7dGhpcy5fbGFzdFN0ZGVycn1cImApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufSJdfQ==