oxygen-cli 1.40.2-beta.1 → 1.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/CHANGELOG.md +1755 -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 -1
  17. package/build/index.js +1 -1
  18. package/build/lib/cli-util.js +1 -1
  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 -1
  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-mongo.js +82 -82
  126. package/build/ox_modules/module-pdf.js +35 -35
  127. package/build/ox_modules/module-proxy.js +77 -77
  128. package/build/ox_modules/module-serial.js +55 -55
  129. package/build/ox_modules/module-shell.js +52 -33
  130. package/build/ox_modules/module-soap.js +72 -72
  131. package/build/ox_modules/module-twilio.js +41 -41
  132. package/build/ox_modules/module-utils.js +91 -91
  133. package/build/ox_modules/module-web/commands/alertAccept.js +17 -17
  134. package/build/ox_modules/module-web/commands/alertDismiss.js +17 -17
  135. package/build/ox_modules/module-web/commands/assertAlert.js +20 -20
  136. package/build/ox_modules/module-web/commands/assertExist.js +17 -17
  137. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +21 -21
  138. package/build/ox_modules/module-web/commands/assertSelectedValue.js +21 -21
  139. package/build/ox_modules/module-web/commands/assertText.js +21 -21
  140. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +18 -18
  141. package/build/ox_modules/module-web/commands/assertTextPresent.js +18 -18
  142. package/build/ox_modules/module-web/commands/assertTitle.js +19 -19
  143. package/build/ox_modules/module-web/commands/assertValue.js +20 -20
  144. package/build/ox_modules/module-web/commands/back.js +16 -16
  145. package/build/ox_modules/module-web/commands/clear.js +18 -18
  146. package/build/ox_modules/module-web/commands/click.js +25 -25
  147. package/build/ox_modules/module-web/commands/clickHidden.js +23 -23
  148. package/build/ox_modules/module-web/commands/closeWindow.js +15 -15
  149. package/build/ox_modules/module-web/commands/debug.js +15 -15
  150. package/build/ox_modules/module-web/commands/deleteCookies.js +12 -12
  151. package/build/ox_modules/module-web/commands/deselect.js +22 -22
  152. package/build/ox_modules/module-web/commands/doubleClick.js +17 -17
  153. package/build/ox_modules/module-web/commands/dragAndDrop.js +20 -20
  154. package/build/ox_modules/module-web/commands/execute.js +24 -24
  155. package/build/ox_modules/module-web/commands/fileBrowse.js +18 -18
  156. package/build/ox_modules/module-web/commands/findElement.js +19 -19
  157. package/build/ox_modules/module-web/commands/findElements.js +22 -22
  158. package/build/ox_modules/module-web/commands/fullscreenWindow.js +14 -14
  159. package/build/ox_modules/module-web/commands/getAlertText.js +16 -16
  160. package/build/ox_modules/module-web/commands/getAttribute.js +19 -19
  161. package/build/ox_modules/module-web/commands/getBrowserLogs.js +17 -17
  162. package/build/ox_modules/module-web/commands/getCookies.js +13 -13
  163. package/build/ox_modules/module-web/commands/getCssValue.js +19 -19
  164. package/build/ox_modules/module-web/commands/getElementCount.js +17 -17
  165. package/build/ox_modules/module-web/commands/getHTML.js +17 -17
  166. package/build/ox_modules/module-web/commands/getSource.js +16 -16
  167. package/build/ox_modules/module-web/commands/getText.js +18 -18
  168. package/build/ox_modules/module-web/commands/getTitle.js +12 -12
  169. package/build/ox_modules/module-web/commands/getUrl.js +16 -16
  170. package/build/ox_modules/module-web/commands/getValue.js +18 -18
  171. package/build/ox_modules/module-web/commands/getWindowHandles.js +16 -16
  172. package/build/ox_modules/module-web/commands/getWindowSize.js +16 -16
  173. package/build/ox_modules/module-web/commands/getXMLPageSource.js +16 -16
  174. package/build/ox_modules/module-web/commands/index.js +1 -1
  175. package/build/ox_modules/module-web/commands/isAlertPresent.js +16 -16
  176. package/build/ox_modules/module-web/commands/isChecked.js +18 -18
  177. package/build/ox_modules/module-web/commands/isExist.js +19 -19
  178. package/build/ox_modules/module-web/commands/isInteractable.js +22 -22
  179. package/build/ox_modules/module-web/commands/isSelected.js +23 -23
  180. package/build/ox_modules/module-web/commands/isVisible.js +19 -19
  181. package/build/ox_modules/module-web/commands/makeVisible.js +25 -25
  182. package/build/ox_modules/module-web/commands/maximizeWindow.js +14 -14
  183. package/build/ox_modules/module-web/commands/minimizeWindow.js +14 -14
  184. package/build/ox_modules/module-web/commands/mock.js +20 -20
  185. package/build/ox_modules/module-web/commands/mockClearAll.js +12 -12
  186. package/build/ox_modules/module-web/commands/mockRestoreAll.js +12 -12
  187. package/build/ox_modules/module-web/commands/newWindow.js +16 -16
  188. package/build/ox_modules/module-web/commands/open.js +16 -16
  189. package/build/ox_modules/module-web/commands/pause.js +15 -15
  190. package/build/ox_modules/module-web/commands/point.js +21 -21
  191. package/build/ox_modules/module-web/commands/pointJS.js +15 -15
  192. package/build/ox_modules/module-web/commands/refresh.js +15 -15
  193. package/build/ox_modules/module-web/commands/rightClick.js +17 -17
  194. package/build/ox_modules/module-web/commands/rightClickActions.js +19 -19
  195. package/build/ox_modules/module-web/commands/scrollToElement.js +21 -21
  196. package/build/ox_modules/module-web/commands/select.js +23 -23
  197. package/build/ox_modules/module-web/commands/selectFrame.js +24 -24
  198. package/build/ox_modules/module-web/commands/selectWindow.js +27 -27
  199. package/build/ox_modules/module-web/commands/sendKeys.js +22 -22
  200. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +20 -20
  201. package/build/ox_modules/module-web/commands/setTimeout.js +21 -21
  202. package/build/ox_modules/module-web/commands/setWindowSize.js +17 -17
  203. package/build/ox_modules/module-web/commands/takeScreenshot.js +17 -17
  204. package/build/ox_modules/module-web/commands/type.js +20 -20
  205. package/build/ox_modules/module-web/commands/verifyAlert.js +20 -20
  206. package/build/ox_modules/module-web/commands/verifyExist.js +17 -17
  207. package/build/ox_modules/module-web/commands/verifySelectedLabel.js +21 -21
  208. package/build/ox_modules/module-web/commands/verifySelectedValue.js +21 -21
  209. package/build/ox_modules/module-web/commands/verifyText.js +21 -21
  210. package/build/ox_modules/module-web/commands/verifyTextNotPresent.js +18 -18
  211. package/build/ox_modules/module-web/commands/verifyTextPresent.js +18 -18
  212. package/build/ox_modules/module-web/commands/verifyTitle.js +19 -19
  213. package/build/ox_modules/module-web/commands/verifyValue.js +20 -20
  214. package/build/ox_modules/module-web/commands/waitForAngular.js +19 -19
  215. package/build/ox_modules/module-web/commands/waitForExist.js +17 -17
  216. package/build/ox_modules/module-web/commands/waitForInteractable.js +17 -17
  217. package/build/ox_modules/module-web/commands/waitForNotExist.js +17 -17
  218. package/build/ox_modules/module-web/commands/waitForNotText.js +20 -20
  219. package/build/ox_modules/module-web/commands/waitForNotValue.js +20 -20
  220. package/build/ox_modules/module-web/commands/waitForText.js +20 -20
  221. package/build/ox_modules/module-web/commands/waitForValue.js +20 -20
  222. package/build/ox_modules/module-web/commands/waitForVisible.js +17 -17
  223. package/build/ox_modules/module-web/commands/waitForWindow.js +22 -22
  224. package/build/ox_modules/module-web.js +94 -94
  225. package/build/ox_modules/module-win/commands/assertText.js +17 -17
  226. package/build/ox_modules/module-win/commands/assertTitle.js +15 -15
  227. package/build/ox_modules/module-win/commands/assertValue.js +14 -14
  228. package/build/ox_modules/module-win/commands/back.js +11 -11
  229. package/build/ox_modules/module-win/commands/clear.js +13 -13
  230. package/build/ox_modules/module-win/commands/click.js +13 -13
  231. package/build/ox_modules/module-win/commands/clickLong.js +14 -14
  232. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +14 -14
  233. package/build/ox_modules/module-win/commands/findElement.js +15 -15
  234. package/build/ox_modules/module-win/commands/findElements.js +15 -15
  235. package/build/ox_modules/module-win/commands/getAppiumLogs.js +12 -12
  236. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +15 -15
  237. package/build/ox_modules/module-win/commands/getLocation.js +14 -14
  238. package/build/ox_modules/module-win/commands/getSource.js +12 -12
  239. package/build/ox_modules/module-win/commands/getText.js +14 -14
  240. package/build/ox_modules/module-win/commands/getValue.js +14 -14
  241. package/build/ox_modules/module-win/commands/getWindowHandles.js +15 -15
  242. package/build/ox_modules/module-win/commands/index.js +1 -1
  243. package/build/ox_modules/module-win/commands/isCheckable.js +14 -14
  244. package/build/ox_modules/module-win/commands/isChecked.js +14 -14
  245. package/build/ox_modules/module-win/commands/isClickable.js +14 -14
  246. package/build/ox_modules/module-win/commands/isExist.js +15 -15
  247. package/build/ox_modules/module-win/commands/isSelected.js +14 -14
  248. package/build/ox_modules/module-win/commands/isVisible.js +15 -15
  249. package/build/ox_modules/module-win/commands/open.js +13 -13
  250. package/build/ox_modules/module-win/commands/pause.js +12 -12
  251. package/build/ox_modules/module-win/commands/rightClick.js +13 -13
  252. package/build/ox_modules/module-win/commands/selectWindow.js +23 -23
  253. package/build/ox_modules/module-win/commands/sendKeys.js +22 -22
  254. package/build/ox_modules/module-win/commands/setTimeout.js +17 -17
  255. package/build/ox_modules/module-win/commands/takeScreenshot.js +16 -16
  256. package/build/ox_modules/module-win/commands/tap.js +13 -13
  257. package/build/ox_modules/module-win/commands/type.js +16 -16
  258. package/build/ox_modules/module-win/commands/waitForExist.js +14 -14
  259. package/build/ox_modules/module-win/commands/waitForInteractable.js +16 -16
  260. package/build/ox_modules/module-win/commands/waitForVisible.js +13 -13
  261. package/build/ox_modules/module-win.js +47 -47
  262. package/build/ox_modules/utils.js +8 -8
  263. package/build/ox_reporters/excel/template.json +48 -48
  264. package/build/ox_reporters/html/index.ejs +163 -163
  265. package/build/ox_reporters/html/summary.ejs +77 -77
  266. package/build/ox_reporters/html/tests-details.ejs +134 -134
  267. package/build/ox_reporters/html/tests-devices-browsers.ejs +83 -83
  268. package/build/ox_reporters/reporter-excel.js +1 -1
  269. package/build/ox_reporters/reporter-html.js +1 -1
  270. package/build/ox_reporters/reporter-json.js +1 -1
  271. package/build/ox_reporters/reporter-junit.js +1 -1
  272. package/build/ox_reporters/reporter-pdf.js +1 -1
  273. package/build/ox_reporters/reporter-rp.js +73 -42
  274. package/build/ox_reporters/reporter-xml.js +1 -1
  275. package/build/ox_services/service-devtools/submodule-network.js +1 -1
  276. package/build/ox_services/service-devtools.js +1 -1
  277. package/build/reporter/FileReporterBase.js +1 -1
  278. package/build/reporter/ReportAggregator.js +1 -1
  279. package/build/reporter/ReporterBase.js +1 -1
  280. package/build/reporter/WebSocketReporter.js +1 -1
  281. package/build/runners/WorkerProcess.js +1 -1
  282. package/build/runners/cucumber/CucumberEventListener.js +1 -1
  283. package/build/runners/cucumber/CucumberReporter.js +1 -1
  284. package/build/runners/cucumber/CucumberWorker.js +1 -1
  285. package/build/runners/cucumber/index.js +1 -1
  286. package/build/runners/cucumber/worker.js +1 -1
  287. package/build/runners/index.js +1 -1
  288. package/build/runners/oxygen/OxygenWorker.js +1 -1
  289. package/build/runners/oxygen/index.js +1 -1
  290. package/build/runners/oxygen/worker.js +1 -1
  291. package/config/default.json +6 -6
  292. package/package.json +139 -139
  293. package/types/index.d.ts +70 -70
  294. package/types/module-eyes.d.ts +39 -39
  295. package/types/module-http.d.ts +163 -163
  296. package/types/module-log.d.ts +34 -34
  297. package/types/module-mob.d.ts +966 -966
  298. package/types/module-pdf.d.ts +40 -40
  299. package/types/module-proxy.d.ts +100 -100
  300. package/types/module-shell.d.ts +24 -24
  301. package/types/module-utils.d.ts +99 -99
  302. package/types/module-web.d.ts +1053 -1053
  303. package/types/module-win.d.ts +352 -352
  304. package/types/oxygen.d.ts +53 -53
  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
@@ -1,43 +1,43 @@
1
- Object.defineProperty(exports, '__esModule', {
2
- value: true
3
- });
4
-
5
- const path = require('path');
6
-
7
- // explicitly set the config dir, otherwise if oxygen is globally installed it will use cwd
8
- let originalNodeCfgDir = process.env.NODE_CONFIG_DIR;
9
- process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '../..', 'config');
10
-
11
- // import config and @oxygen/logger modules
12
- const config = require('config');
13
- const loggerFactory = require('@oxygenhq/logger');
14
-
15
- // setup logger
16
- loggerFactory.init(config.get('logger'));
17
-
18
- // revert back NODE_CONFIG_DIR value
19
- process.env.NODE_CONFIG_DIR = originalNodeCfgDir;
20
-
21
- exports.default = function logger(name) {
22
- return loggerFactory.get(name);
23
- };
24
-
25
- const LEVEL_INFO = 'info';
26
- const LEVEL_DEBUG = 'debug';
27
- const LEVEL_ERROR = 'error';
28
- const LEVEL_WARN = 'warn';
29
- const ISSUER_SYSTEM = 'system';
30
- const ISSUER_USER = 'user';
31
- exports.DEFAULT_ISSUER = ISSUER_USER;
32
- exports.ISSUERS = {
33
- SYSTEM: ISSUER_SYSTEM,
34
- USER: ISSUER_USER
35
- };
36
- exports.LEVELS = {
37
- INFO: LEVEL_INFO,
38
- DEBUG: LEVEL_DEBUG,
39
- ERROR: LEVEL_ERROR,
40
- WARN: LEVEL_WARN
41
- };
42
- exports.DEFAULT_LOGGER_ISSUER = ISSUER_SYSTEM;
43
-
1
+ Object.defineProperty(exports, '__esModule', {
2
+ value: true
3
+ });
4
+
5
+ const path = require('path');
6
+
7
+ // explicitly set the config dir, otherwise if oxygen is globally installed it will use cwd
8
+ let originalNodeCfgDir = process.env.NODE_CONFIG_DIR;
9
+ process.env.NODE_CONFIG_DIR = path.resolve(__dirname, '../..', 'config');
10
+
11
+ // import config and @oxygen/logger modules
12
+ const config = require('config');
13
+ const loggerFactory = require('@oxygenhq/logger');
14
+
15
+ // setup logger
16
+ loggerFactory.init(config.get('logger'));
17
+
18
+ // revert back NODE_CONFIG_DIR value
19
+ process.env.NODE_CONFIG_DIR = originalNodeCfgDir;
20
+
21
+ exports.default = function logger(name) {
22
+ return loggerFactory.get(name);
23
+ };
24
+
25
+ const LEVEL_INFO = 'info';
26
+ const LEVEL_DEBUG = 'debug';
27
+ const LEVEL_ERROR = 'error';
28
+ const LEVEL_WARN = 'warn';
29
+ const ISSUER_SYSTEM = 'system';
30
+ const ISSUER_USER = 'user';
31
+ exports.DEFAULT_ISSUER = ISSUER_USER;
32
+ exports.ISSUERS = {
33
+ SYSTEM: ISSUER_SYSTEM,
34
+ USER: ISSUER_USER
35
+ };
36
+ exports.LEVELS = {
37
+ INFO: LEVEL_INFO,
38
+ DEBUG: LEVEL_DEBUG,
39
+ ERROR: LEVEL_ERROR,
40
+ WARN: LEVEL_WARN
41
+ };
42
+ exports.DEFAULT_LOGGER_ISSUER = ISSUER_SYSTEM;
43
+
@@ -18,4 +18,4 @@ function moduleRequire(moduleName) {
18
18
  throw e;
19
19
  }
20
20
  }
21
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kdWxlUmVxdWlyZS5qcyJdLCJuYW1lcyI6WyJkZWNhY2hlIiwicmVxdWlyZSIsIm1vZHVsZVJlcXVpcmUiLCJtb2R1bGVOYW1lIiwiZSIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBRWUsU0FBU0MsYUFBVCxDQUF1QkMsVUFBdkIsRUFBbUM7QUFDOUMsTUFBSTtBQUNBSCxJQUFBQSxPQUFPLENBQUNHLFVBQUQsQ0FBUDtBQUNBLFdBQU9GLE9BQU8sQ0FBQ0UsVUFBRCxDQUFkO0FBQ0gsR0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNSQyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsQ0FBL0I7QUFDQSxVQUFNQSxDQUFOO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWNhY2hlID0gcmVxdWlyZSgnZGVjYWNoZScpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2R1bGVSZXF1aXJlKG1vZHVsZU5hbWUpIHtcbiAgICB0cnkge1xuICAgICAgICBkZWNhY2hlKG1vZHVsZU5hbWUpO1xuICAgICAgICByZXR1cm4gcmVxdWlyZShtb2R1bGVOYW1lKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdtb2R1bGVSZXF1aXJlIGUnLCBlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICB9XG59Il19
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kdWxlUmVxdWlyZS5qcyJdLCJuYW1lcyI6WyJkZWNhY2hlIiwicmVxdWlyZSIsIm1vZHVsZVJlcXVpcmUiLCJtb2R1bGVOYW1lIiwiZSIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBRWUsU0FBU0MsYUFBVCxDQUF1QkMsVUFBdkIsRUFBbUM7QUFDOUMsTUFBSTtBQUNBSCxJQUFBQSxPQUFPLENBQUNHLFVBQUQsQ0FBUDtBQUNBLFdBQU9GLE9BQU8sQ0FBQ0UsVUFBRCxDQUFkO0FBQ0gsR0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNSQyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsQ0FBL0I7QUFDQSxVQUFNQSxDQUFOO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWNhY2hlID0gcmVxdWlyZSgnZGVjYWNoZScpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9kdWxlUmVxdWlyZShtb2R1bGVOYW1lKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGRlY2FjaGUobW9kdWxlTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUobW9kdWxlTmFtZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ21vZHVsZVJlcXVpcmUgZScsIGUpO1xyXG4gICAgICAgIHRocm93IGU7XHJcbiAgICB9XHJcbn0iXX0=
@@ -260,4 +260,4 @@ class ParamManagerMock {
260
260
  }
261
261
 
262
262
  }
263
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYWxsZWwtbGF1bmNoZXIuanMiXSwibmFtZXMiOlsiRHVyYXRpb24iLCJyZXF1aXJlIiwiaGFzaCIsInYxIiwiUGFyYWxsZWxMYXVuY2hlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwicmVwb3J0ZXIiLCJfY29uZmlnIiwiX3F1ZXVlIiwicnVubmVycyIsImNyZWF0ZWRSdW5uZXJzU3RhdCIsInJ1biIsImNhcHNTZXQiLCJjb2xsZWN0aW9uIiwicGFyYWxsZWwiLCJFcnJvciIsIm1vZGUiLCJ3b3JrZXJzQ291bnQiLCJpc05hTiIsIndvcmtlcnMiLCJzdWl0ZXMiLCJyZXN1bHROYW1lIiwibmFtZSIsIkFycmF5IiwiaXNBcnJheSIsInRlc3RDYXBzIiwicmVzdWx0SGFzaCIsInJlc3VsdEtleSIsInN1aXRlSW5kZXgiLCJmb3JFYWNoIiwic3VpdGVEZWYiLCJzdWl0ZUtleSIsImtleSIsImlkIiwic3VpdGVSZWZJZCIsImkiLCJpdGVyYXRpb25Db3VudCIsIm1vY2tlZFBhcmFtTWFuYWdlciIsInVuZGVmaW5lZCIsInBhcmFtTWFuYWdlciIsIlBhcmFtTWFuYWdlck1vY2siLCJnZXRWYWx1ZXMiLCJyZWFkTmV4dCIsIndvcmtlcklkIiwic3VpdGVDb3B5IiwicmVmSWQiLCJ0ZXN0Q29uZmlnIiwiX2dyb3VwUmVzdWx0Iiwid29ya2VyQ29uZmlnIiwic3RhcnR1cERlbGF5IiwicHVzaCIsImNhbGxiYWNrIiwiX2xhdW5jaFdvcmtlckZ1bmMiLCJjYXNlcyIsImNhc2VJbmRleCIsImNhc2VEZWYiLCJjYXNlS2V5Iiwic3RhcnQiLCJEYXRlIiwidG90YWwiLCJjb25zb2xlIiwibG9nIiwicnVubmVyc0lkcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiY2F6ZXMiLCJlbmQiLCJkdXJhdGlvbiIsInRvU3RyaW5nIiwiY2IiLCJlcnJvciIsIl9sYXVuY2hUZXN0IiwidGhlbiIsInJlc3VsdCIsImNhdGNoIiwiX2luc3RhbnRpYXRlUnVubmVyIiwiZnJhbWV3b3JrIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiUnVubmVycyIsIm94eWdlbiIsIl9zbGVlcCIsInJ1bm5lciIsIl9pZCIsImluaXQiLCJkaXNwb3NlIiwic3RhdHVzIiwiZSIsImtpbGwiLCJlcnJNc2ciLCJlcnIiLCJ0eXBlIiwibWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsInZhbHVlcyIsImdldE1vZGUiLCJyZWFkUHJldiIsInJvd3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBOztBQUNBOzs7Ozs7OztBQUNBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVFLEVBQUFBO0FBQUYsSUFBU0YsT0FBTyxDQUFDLE1BQUQsQ0FBdEI7O0FBRWUsTUFBTUcsZ0JBQU4sQ0FBdUI7QUFDbENDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CO0FBQzFCLFNBQUtDLE9BQUwsR0FBZUYsTUFBZjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQWQ7QUFDQSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0g7O0FBRVEsUUFBSEMsR0FBRyxDQUFDQyxPQUFELEVBQVU7QUFDZixVQUFNQyxVQUFVLEdBQUcsRUFBbkI7O0FBRUEsUUFBSSxDQUFDLEtBQUtOLE9BQUwsQ0FBYU8sUUFBbEIsRUFBNEI7QUFDeEIsWUFBTSxJQUFJQyxLQUFKLENBQVUsc0VBQVYsQ0FBTjtBQUNIOztBQUVELFFBQUksQ0FBQyxLQUFLUixPQUFMLENBQWFPLFFBQWIsQ0FBc0JFLElBQTNCLEVBQWlDO0FBQzdCLFdBQUtULE9BQUwsQ0FBYU8sUUFBYixDQUFzQkUsSUFBdEIsR0FBNkIs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SDs7QUFFRFosRUFBQUEsSUFBSSxHQUFHLENBRU47O0FBRURhLEVBQUFBLE9BQU8sR0FBRyxDQUVUOztBQUVEM0QsRUFBQUEsUUFBUSxHQUFHLENBRVY7O0FBRUQ0RCxFQUFBQSxRQUFRLEdBQUcsQ0FFVjs7QUFFRDdELEVBQUFBLFNBQVMsR0FBRztBQUNSLFdBQU8sS0FBSzJELE1BQVo7QUFDSDs7QUFFTyxNQUFKRyxJQUFJLEdBQUc7QUFDUCxXQUFPLENBQVA7QUFDSDs7QUEzQmtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuXG4vLyBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgUnVubmVycyBmcm9tICcuLi9ydW5uZXJzJztcbmltcG9ydCBwYXJhbGxlbExpbWl0IGZyb20gJ2FzeW5jL3BhcmFsbGVsTGltaXQnO1xuY29uc3QgRHVyYXRpb24gPSByZXF1aXJlKCdkdXJhdGlvbicpO1xuY29uc3QgaGFzaCA9IHJlcXVpcmUoJ29iamVjdC1oYXNoJyk7XG5jb25zdCB7IHYxIH0gPSByZXF1aXJlKCd1dWlkJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFsbGVsTGF1bmNoZXIge1xuICAgIGNvbnN0cnVjdG9yKGNvbmZpZywgcmVwb3J0ZXIpIHtcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xuICAgICAgICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG4gICAgICAgIHRoaXMuX3F1ZXVlID0gbnVsbDtcbiAgICAgICAgdGhpcy5ydW5uZXJzID0gW107XG4gICAgICAgIHRoaXMuY3JlYXRlZFJ1bm5lcnNTdGF0ID0gW107XG4gICAgfVxuXG4gICAgYXN5bmMgcnVuKGNhcHNTZXQpIHtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IFtdO1xuXG4gICAgICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmFsbGVsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgcGFyYWxsZWwgdGVzdGluZyAtIFwicGFyYWxsZWxcIiBzZXR0aW5ncyBhcmUgbWlzc2luZy4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID0gJ2Nhc2UnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd29ya2Vyc0NvdW50ID0gIWlzTmFOKHRoaXMuX2NvbmZpZy5wYXJhbGxlbC53b3JrZXJzKSA/IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC53b3JrZXJzIDogMTtcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID09PSAnaXRlcmF0aW9uJ1xuICAgICAgICAgICAgPyAnaXRlcmF0aW9uJyA6IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID09PSAnc3VpdGUnXG4gICAgICAgICAgICAgICAgPyAnc3VpdGUnIDogJ2Nhc2UnO1xuICAgICAgICAvLyBmbGF0dGVuIGFsbCBzdWl0ZXMgYW5kIGNyZWF0ZSBvbmUgdW5pZmllZCBhcnJheSBvZiBhbGwgdGhlIHRlc3QgY2FzZXNcbiAgICAgICAgY29uc3Qgc3VpdGVzID0gdGhpcy5fY29uZmlnLnN1aXRlcztcbiAgICAgICAgY29uc3QgcmVzdWx0TmFtZSA9IHRoaXMuX2NvbmZpZy5uYW1lIHx8ICcnO1xuICAgICAgICBpZiAoIXN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShzdWl0ZXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgcGFyYWxsZWwgdGVzdGluZyAtIG5vIHN1aXRlcyBhcmUgZGVmaW5lZC4nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBubyBjYXBhYmlsaXRpZXMgYXJlIHNwZWNpZmllZCwgcnVuIHNpbmdsZSBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgYXJndW1lbnRzXG4gICAgICAgIC8vIGFsdGVybmF0aXZlbHksIHBpY2sgdGhlIGZpcnN0IGNhcGFiaWxpdGllcyBzZXQgKGxvYWQgdGVzdCBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIGJyb3dzZXIgdHlwZSlcbiAgICAgICAgY29uc3QgdGVzdENhcHMgPSBjYXBzU2V0ID8gKEFycmF5LmlzQXJyYXkoY2Fwc1NldCkgPyBjYXBzU2V0WzBdIDogY2Fwc1NldCkgOiBudWxsO1xuICAgICAgICBjb25zdCByZXN1bHRIYXNoID0gdGVzdENhcHMgPyBoYXNoKHRlc3RDYXBzKSA6ICcnO1xuICAgICAgICBjb25zdCByZXN1bHRLZXkgPSBgJHtyZXN1bHROYW1lfS0ke3Jlc3VsdEhhc2h9YDtcbiAgICAgICAgLy8gaWYgJ3dvcmtlcnMnIHNldCB0byBtYXggYW5kIHBhcmFtZXRlciBmaWxlIGlzIGRlZmluZWQsIFxuICAgICAgICAvLyB0aGVuIHJ1biBhcyBtYW55IHBhcmFsbGVsIHRlc3RzIGFzIHJvd3MgaW4gdGhlIGZpbGVcbiAgICAgICAgbGV0IHN1aXRlSW5kZXggPSAwO1xuXG4gICAgICAgIHN1aXRlcy5mb3JFYWNoKHN1aXRlRGVmID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1aXRlS2V5ID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHN1aXRlRGVmLm5hbWU7XG4gICAgICAgICAgICBjb25zdCBzdWl0ZVJlZklkID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHYxKCk7XG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gJ2l0ZXJhdGlvbicpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaTw9IHN1aXRlRGVmLml0ZXJhdGlvbkNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vY2tlZFBhcmFtTWFuYWdlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1aXRlRGVmLnBhcmFtTWFuYWdlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW9ja2VkUGFyYW1NYW5hZ2VyID0gbmV3IFBhcmFtTWFuYWdlck1vY2soc3VpdGVEZWYucGFyYW1NYW5hZ2VyLmdldFZhbHVlcygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlRGVmLnBhcmFtTWFuYWdlci5yZWFkTmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlcklkID0gYCR7c3VpdGVLZXl9LSR7c3VpdGVJbmRleH0vJHtpfWA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlQ29weSA9IHsgLi4uc3VpdGVEZWYsIHJlZklkOiBzdWl0ZVJlZklkLCBpdGVyYXRpb25Db3VudDogMSwgcGFyYW1NYW5hZ2VyOiBtb2NrZWRQYXJhbU1hbmFnZXIgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGVzdENvbmZpZyA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZywgc3VpdGVzOiBbIHN1aXRlQ29weSBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgX2dyb3VwUmVzdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0S2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAyMDAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgYW55IG9mIGNhc2VzIGhhdmUgcGFyYW0gZmlsZSBhdHRhY2hlZFxuICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2Nhc2UnICYmIEFycmF5LmlzQXJyYXkoc3VpdGVEZWYuY2FzZXMpKSB7XG4gICAgICAgICAgICAgICAgbGV0IGNhc2VJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgc3VpdGVEZWYuY2FzZXMuZm9yRWFjaChjYXNlRGVmID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FzZUtleSA9IGNhc2VEZWYua2V5IHx8IGNhc2VEZWYuaWQgfHwgY2FzZURlZi5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke2Nhc2VLZXl9LSR7c3VpdGVJbmRleH0vJHtjYXNlSW5kZXh9YDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVDb3B5ID0geyAuLi5zdWl0ZURlZiwgcmVmSWQ6IHN1aXRlUmVmSWQsIGNhc2VzOiBbIGNhc2VEZWYgXX07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9jb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWl0ZXM6IFsgc3VpdGVDb3B5IF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVLZXksXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckNvbmZpZyA9IHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXk6IDAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2VJbmRleCsrO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VpdGVLZXkgPSBzdWl0ZURlZi5rZXkgfHwgc3VpdGVEZWYuaWQgfHwgc3VpdGVEZWYubmFtZTtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9YDtcbiAgICAgICAgICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9jb25maWcsXG4gICAgICAgICAgICAgICAgICAgIHN1aXRlczogWyB7IC4uLnN1aXRlRGVmLCByZWZJZDogc3VpdGVSZWZJZCB9IF0sXG4gICAgICAgICAgICAgICAgICAgIF9ncm91cFJlc3VsdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0S2V5LFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAwIH07XG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdWl0ZUluZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGF3YWl0IHBhcmFsbGVsTGltaXQoY29sbGVjdGlvbiwgd29ya2Vyc0NvdW50KTtcblxuICAgICAgICBsZXQgdG90YWwgPSAwO1xuICAgICAgICBjb25zb2xlLmxvZygnQ3JlYXRlZCBSdW5uZXJzIFN0YXQnLCB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdCk7XG4gICAgICAgIGNvbnN0IHJ1bm5lcnNJZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdCk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDcmVhdGVkIFJ1bm5lcnMgY291bnQnLCBydW5uZXJzSWRzLmxlbmd0aCk7XG5cbiAgICAgICAgcnVubmVyc0lkcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhemVzID0gdGhpcy5jcmVhdGVkUnVubmVyc1N0YXRbaXRlbV0ubGVuZ3RoO1xuICAgICAgICAgICAgdG90YWwgKz0gY2F6ZXM7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUnVubmVyJywgaXRlbSwgJyBydW4gJywgY2F6ZXMsICcgY2FzZXMnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJ1BhcmFsbGVsIGNvdW50Jywgd29ya2Vyc0NvdW50KTtcbiAgICAgICAgY29uc29sZS5sb2coJ1RvdGFsOiAnLCB0b3RhbCk7XG4gICAgICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbmV3IER1cmF0aW9uKHN0YXJ0LCBlbmQpO1xuICAgICAgICBjb25zb2xlLmxvZygnRHVyYXRpb246ICcsIGR1cmF0aW9uLnRvU3RyaW5nKDEpKTtcbiAgICAgICAgLy90aGlzLnJlcG9ydGVyLm9uQWZ0ZXJFbmQoKTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICogUHJpdmF0ZSBtZXRob2RzXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIF9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3QgY2IgPSAoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5fbGF1bmNoVGVzdCh3b3JrZXJDb25maWcsIGNiKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgX2luc3RhbnRpYXRlUnVubmVyKCkge1xuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgdGhpcy5fY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUnVubmVycywgdGhpcy5fY29uZmlnLmZyYW1ld29yaykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJ1bm5lcnNbdGhpcy5fY29uZmlnLmZyYW1ld29ya10oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgUnVubmVycy5veHlnZW4oKTtcbiAgICB9XG5cbiAgICBhc3luYyBfbGF1bmNoVGVzdCh7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5IH0sIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLl9zbGVlcChzdGFydHVwRGVsYXkpO1xuXG4gICAgICAgIGxldCBydW5uZXIgPSB0aGlzLl9pbnN0YW50aWF0ZVJ1bm5lcigpO1xuICAgICAgICB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdFtydW5uZXIuX2lkXSA9IFt3b3JrZXJJZF07XG5cbiAgICAgICAgaWYgKCFydW5uZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGZyYW1ld29yayA9IHRoaXMuX2NvbmZpZy5mcmFtZXdvcms7XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHJ1bm5lciBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZXdvcms6ICR7ZnJhbWV3b3JrfS5gKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIGZpcmVmb3ggXCJwcm9maWxlXCIgdmFsdWUgaWYgcHJvZmlsZSBvcHRpb25zIGFyZSBzcGVjaWZpZWRcbiAgICAgICAgICAgIC8vIGF3YWl0IG94dXRpbC5nZW5lcmF0ZUZpcmVmb3hPcHRpb25zUHJvZmlsZSh0ZXN0Q2Fwcyk7XG5cbiAgICAgICAgICAgIC8vIGluaXRpYWxpemUgb3h5Z2VuXG4gICAgICAgICAgICBhd2FpdCBydW5uZXIuaW5pdCh0ZXN0Q29uZmlnLCB0ZXN0Q2FwcywgdGhpcy5yZXBvcnRlcik7XG5cbiAgICAgICAgICAgIC8vIHJ1biBPeHlnZW4gdGVzdCBcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bm5lci5ydW4oKTtcbiAgICAgICAgICAgIGF3YWl0IHJ1bm5lci5kaXNwb3NlKHJlc3VsdC5zdGF0dXMgfHwgbnVsbCk7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbGF1bmNoIHRoZSB0ZXN0OicsIGUpO1xuICAgICAgICAgICAgLy8gc3RvcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZVxuICAgICAgICAgICAgaWYgKHRoaXMuX3F1ZXVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcXVldWUua2lsbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBjdXN0b20gZXJyb3IgbWVzc2FnZVxuICAgICAgICAgICAgaWYgKGUuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgZXJyTXNnID0gJyc7XG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IGUuZXJyb3I7XG4gICAgICAgICAgICAgICAgaWYgKGVyci50eXBlKVxuICAgICAgICAgICAgICAgICAgICBlcnJNc2cgKz0gZXJyLnR5cGUgKyAnIC0gJztcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyArPSBlcnIubWVzc2FnZTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyA9IGVyci50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihlcnJNc2cpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpOyAgICAvLyBjYWxsIGJhY2sgd2l0aCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJ1bm5lcnMucHVzaChydW5uZXIpO1xuICAgIH1cblxuICAgIF9zbGVlcChkdXJhdGlvbikge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgZHVyYXRpb24pKTtcbiAgICB9XG59XG5cbmNsYXNzIFBhcmFtTWFuYWdlck1vY2sge1xuICAgIGNvbnN0cnVjdG9yKHZhbHVlcykge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICB9XG5cbiAgICBpbml0KCkge1xuXG4gICAgfVxuXG4gICAgZ2V0TW9kZSgpIHtcblxuICAgIH1cblxuICAgIHJlYWROZXh0KCkge1xuXG4gICAgfVxuXG4gICAgcmVhZFByZXYoKSB7XG5cbiAgICB9XG5cbiAgICBnZXRWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcztcbiAgICB9XG5cbiAgICBnZXQgcm93cygpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuIl19
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYWxsZWwtbGF1bmNoZXIuanMiXSwibmFtZXMiOlsiRHVyYXRpb24iLCJyZXF1aXJlIiwiaGFzaCIsInYxIiwiUGFyYWxsZWxMYXVuY2hlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwicmVwb3J0ZXIiLCJfY29uZmlnIiwiX3F1ZXVlIiwicnVubmVycyIsImNyZWF0ZWRSdW5uZXJzU3RhdCIsInJ1biIsImNhcHNTZXQiLCJjb2xsZWN0aW9uIiwicGFyYWxsZWwiLCJFcnJvciIsIm1vZGUiLCJ3b3JrZXJzQ291bnQiLCJpc05hTiIsIndvcmtlcnMiLCJzdWl0ZXMiLCJyZXN1bHROYW1lIiwibmFtZSIsIkFycmF5IiwiaXNBcnJheSIsInRlc3RDYXBzIiwicmVzdWx0SGFzaCIsInJlc3VsdEtleSIsInN1aXRlSW5kZXgiLCJmb3JFYWNoIiwic3VpdGVEZWYiLCJzdWl0ZUtleSIsImtleSIsImlkIiwic3VpdGVSZWZJZCIsImkiLCJpdGVyYXRpb25Db3VudCIsIm1vY2tlZFBhcmFtTWFuYWdlciIsInVuZGVmaW5lZCIsInBhcmFtTWFuYWdlciIsIlBhcmFtTWFuYWdlck1vY2siLCJnZXRWYWx1ZXMiLCJyZWFkTmV4dCIsIndvcmtlcklkIiwic3VpdGVDb3B5IiwicmVmSWQiLCJ0ZXN0Q29uZmlnIiwiX2dyb3VwUmVzdWx0Iiwid29ya2VyQ29uZmlnIiwic3RhcnR1cERlbGF5IiwicHVzaCIsImNhbGxiYWNrIiwiX2xhdW5jaFdvcmtlckZ1bmMiLCJjYXNlcyIsImNhc2VJbmRleCIsImNhc2VEZWYiLCJjYXNlS2V5Iiwic3RhcnQiLCJEYXRlIiwidG90YWwiLCJjb25zb2xlIiwibG9nIiwicnVubmVyc0lkcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiY2F6ZXMiLCJlbmQiLCJkdXJhdGlvbiIsInRvU3RyaW5nIiwiY2IiLCJlcnJvciIsIl9sYXVuY2hUZXN0IiwidGhlbiIsInJlc3VsdCIsImNhdGNoIiwiX2luc3RhbnRpYXRlUnVubmVyIiwiZnJhbWV3b3JrIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiUnVubmVycyIsIm94eWdlbiIsIl9zbGVlcCIsInJ1bm5lciIsIl9pZCIsImluaXQiLCJkaXNwb3NlIiwic3RhdHVzIiwiZSIsImtpbGwiLCJlcnJNc2ciLCJlcnIiLCJ0eXBlIiwibWVzc2FnZSIsIlByb21pc2UiLCJyZXNvbHZlIiwic2V0VGltZW91dCIsInZhbHVlcyIsImdldE1vZGUiLCJyZWFkUHJldiIsInJvd3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVVBOztBQUNBOzs7Ozs7OztBQUNBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsYUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVFLEVBQUFBO0FBQUYsSUFBU0YsT0FBTyxDQUFDLE1BQUQsQ0FBdEI7O0FBRWUsTUFBTUcsZ0JBQU4sQ0FBdUI7QUFDbENDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CO0FBQzFCLFNBQUtDLE9BQUwsR0FBZUYsTUFBZjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQWQ7QUFDQSxTQUFLQyxPQUFMLEdBQWUsRUFBZjtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLEVBQTFCO0FBQ0g7O0FBRVEsUUFBSEMsR0FBRyxDQUFDQyxPQUFELEVBQVU7QUFDZixVQUFNQyxVQUFVLEdBQUcsRUFBbkI7O0FBRUEsUUFBSSxDQUFDLEtBQUtOLE9BQUwsQ0FBYU8sUUFBbEIsRUFBNEI7QUFDeEIsWUFBTSxJQUFJQyxLQUFKLENBQVUsc0VBQVYsQ0FBTjtBQUNIOztBQUVELFFBQUksQ0FBQyxLQUFLUixPQUFMLENBQWFPLFFBQWIsQ0FBc0JFLElBQTNCLEVBQWlDO0FBQzdCLFdBQUtULE9BQUwsQ0FBYU8sUUFBYixDQUFzQkUsSUFBdEIsR0FBNkIs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SDs7QUFFRFosRUFBQUEsSUFBSSxHQUFHLENBRU47O0FBRURhLEVBQUFBLE9BQU8sR0FBRyxDQUVUOztBQUVEM0QsRUFBQUEsUUFBUSxHQUFHLENBRVY7O0FBRUQ0RCxFQUFBQSxRQUFRLEdBQUcsQ0FFVjs7QUFFRDdELEVBQUFBLFNBQVMsR0FBRztBQUNSLFdBQU8sS0FBSzJELE1BQVo7QUFDSDs7QUFFTyxNQUFKRyxJQUFJLEdBQUc7QUFDUCxXQUFPLENBQVA7QUFDSDs7QUEzQmtCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vLyBpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgKiBhcyBSdW5uZXJzIGZyb20gJy4uL3J1bm5lcnMnO1xyXG5pbXBvcnQgcGFyYWxsZWxMaW1pdCBmcm9tICdhc3luYy9wYXJhbGxlbExpbWl0JztcclxuY29uc3QgRHVyYXRpb24gPSByZXF1aXJlKCdkdXJhdGlvbicpO1xyXG5jb25zdCBoYXNoID0gcmVxdWlyZSgnb2JqZWN0LWhhc2gnKTtcclxuY29uc3QgeyB2MSB9ID0gcmVxdWlyZSgndXVpZCcpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYWxsZWxMYXVuY2hlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWcsIHJlcG9ydGVyKSB7XHJcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjtcclxuICAgICAgICB0aGlzLl9xdWV1ZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5ydW5uZXJzID0gW107XHJcbiAgICAgICAgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXQgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oY2Fwc1NldCkge1xyXG4gICAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBbXTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9jb25maWcucGFyYWxsZWwpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHBhcmFsbGVsIHRlc3RpbmcgLSBcInBhcmFsbGVsXCIgc2V0dGluZ3MgYXJlIG1pc3NpbmcuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZy5wYXJhbGxlbC5tb2RlID0gJ2Nhc2UnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgd29ya2Vyc0NvdW50ID0gIWlzTmFOKHRoaXMuX2NvbmZpZy5wYXJhbGxlbC53b3JrZXJzKSA/IHRoaXMuX2NvbmZpZy5wYXJhbGxlbC53b3JrZXJzIDogMTtcclxuICAgICAgICBjb25zdCBtb2RlID0gdGhpcy5fY29uZmlnLnBhcmFsbGVsLm1vZGUgPT09ICdpdGVyYXRpb24nXHJcbiAgICAgICAgICAgID8gJ2l0ZXJhdGlvbicgOiB0aGlzLl9jb25maWcucGFyYWxsZWwubW9kZSA9PT0gJ3N1aXRlJ1xyXG4gICAgICAgICAgICAgICAgPyAnc3VpdGUnIDogJ2Nhc2UnO1xyXG4gICAgICAgIC8vIGZsYXR0ZW4gYWxsIHN1aXRlcyBhbmQgY3JlYXRlIG9uZSB1bmlmaWVkIGFycmF5IG9mIGFsbCB0aGUgdGVzdCBjYXNlc1xyXG4gICAgICAgIGNvbnN0IHN1aXRlcyA9IHRoaXMuX2NvbmZpZy5zdWl0ZXM7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0TmFtZSA9IHRoaXMuX2NvbmZpZy5uYW1lIHx8ICcnO1xyXG4gICAgICAgIGlmICghc3VpdGVzIHx8ICFBcnJheS5pc0FycmF5KHN1aXRlcykpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHBhcmFsbGVsIHRlc3RpbmcgLSBubyBzdWl0ZXMgYXJlIGRlZmluZWQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIG5vIGNhcGFiaWxpdGllcyBhcmUgc3BlY2lmaWVkLCBydW4gc2luZ2xlIGluc3RhbmNlIHdpdGggZGVmYXVsdCBhcmd1bWVudHNcclxuICAgICAgICAvLyBhbHRlcm5hdGl2ZWx5LCBwaWNrIHRoZSBmaXJzdCBjYXBhYmlsaXRpZXMgc2V0IChsb2FkIHRlc3QgaXMgbGltaXRlZCB0byBhIHNpbmdsZSBicm93c2VyIHR5cGUpXHJcbiAgICAgICAgY29uc3QgdGVzdENhcHMgPSBjYXBzU2V0ID8gKEFycmF5LmlzQXJyYXkoY2Fwc1NldCkgPyBjYXBzU2V0WzBdIDogY2Fwc1NldCkgOiBudWxsO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEhhc2ggPSB0ZXN0Q2FwcyA/IGhhc2godGVzdENhcHMpIDogJyc7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0S2V5ID0gYCR7cmVzdWx0TmFtZX0tJHtyZXN1bHRIYXNofWA7XHJcbiAgICAgICAgLy8gaWYgJ3dvcmtlcnMnIHNldCB0byBtYXggYW5kIHBhcmFtZXRlciBmaWxlIGlzIGRlZmluZWQsIFxyXG4gICAgICAgIC8vIHRoZW4gcnVuIGFzIG1hbnkgcGFyYWxsZWwgdGVzdHMgYXMgcm93cyBpbiB0aGUgZmlsZVxyXG4gICAgICAgIGxldCBzdWl0ZUluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgc3VpdGVzLmZvckVhY2goc3VpdGVEZWYgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBzdWl0ZUtleSA9IHN1aXRlRGVmLmtleSB8fCBzdWl0ZURlZi5pZCB8fCBzdWl0ZURlZi5uYW1lO1xyXG4gICAgICAgICAgICBjb25zdCBzdWl0ZVJlZklkID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHYxKCk7XHJcbiAgICAgICAgICAgIGlmIChtb2RlID09PSAnaXRlcmF0aW9uJykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGk8PSBzdWl0ZURlZi5pdGVyYXRpb25Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1vY2tlZFBhcmFtTWFuYWdlciA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3VpdGVEZWYucGFyYW1NYW5hZ2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tlZFBhcmFtTWFuYWdlciA9IG5ldyBQYXJhbU1hbmFnZXJNb2NrKHN1aXRlRGVmLnBhcmFtTWFuYWdlci5nZXRWYWx1ZXMoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlRGVmLnBhcmFtTWFuYWdlci5yZWFkTmV4dCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9LyR7aX1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlQ29weSA9IHsgLi4uc3VpdGVEZWYsIHJlZklkOiBzdWl0ZVJlZklkLCBpdGVyYXRpb25Db3VudDogMSwgcGFyYW1NYW5hZ2VyOiBtb2NrZWRQYXJhbU1hbmFnZXIgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLl9jb25maWcsIHN1aXRlczogWyBzdWl0ZUNvcHkgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgX2dyb3VwUmVzdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRLZXksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlckNvbmZpZyA9IHsgd29ya2VySWQsIHRlc3RDb25maWcsIHRlc3RDYXBzLCBzdGFydHVwRGVsYXk6IDIwMCB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaCgoY2FsbGJhY2spID0+IHRoaXMuX2xhdW5jaFdvcmtlckZ1bmMod29ya2VyQ29uZmlnLCBjYWxsYmFjaykpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFueSBvZiBjYXNlcyBoYXZlIHBhcmFtIGZpbGUgYXR0YWNoZWRcclxuICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gJ2Nhc2UnICYmIEFycmF5LmlzQXJyYXkoc3VpdGVEZWYuY2FzZXMpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FzZUluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHN1aXRlRGVmLmNhc2VzLmZvckVhY2goY2FzZURlZiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2FzZUtleSA9IGNhc2VEZWYua2V5IHx8IGNhc2VEZWYuaWQgfHwgY2FzZURlZi5uYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtlcklkID0gYCR7Y2FzZUtleX0tJHtzdWl0ZUluZGV4fS8ke2Nhc2VJbmRleH1gO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlQ29weSA9IHsgLi4uc3VpdGVEZWYsIHJlZklkOiBzdWl0ZVJlZklkLCBjYXNlczogWyBjYXNlRGVmIF19O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2NvbmZpZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VpdGVzOiBbIHN1aXRlQ29weSBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBfZ3JvdXBSZXN1bHQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1aXRlS2V5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJDb25maWcgPSB7IHdvcmtlcklkLCB0ZXN0Q29uZmlnLCB0ZXN0Q2Fwcywgc3RhcnR1cERlbGF5OiAwIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZUluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN1aXRlS2V5ID0gc3VpdGVEZWYua2V5IHx8IHN1aXRlRGVmLmlkIHx8IHN1aXRlRGVmLm5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrZXJJZCA9IGAke3N1aXRlS2V5fS0ke3N1aXRlSW5kZXh9YDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRlc3RDb25maWcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fY29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1aXRlczogWyB7IC4uLnN1aXRlRGVmLCByZWZJZDogc3VpdGVSZWZJZCB9IF0sXHJcbiAgICAgICAgICAgICAgICAgICAgX2dyb3VwUmVzdWx0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEtleSxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd29ya2VyQ29uZmlnID0geyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheTogMCB9O1xyXG4gICAgICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKChjYWxsYmFjaykgPT4gdGhpcy5fbGF1bmNoV29ya2VyRnVuYyh3b3JrZXJDb25maWcsIGNhbGxiYWNrKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VpdGVJbmRleCsrO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTtcclxuICAgICAgICBhd2FpdCBwYXJhbGxlbExpbWl0KGNvbGxlY3Rpb24sIHdvcmtlcnNDb3VudCk7XHJcblxyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NyZWF0ZWQgUnVubmVycyBTdGF0JywgdGhpcy5jcmVhdGVkUnVubmVyc1N0YXQpO1xyXG4gICAgICAgIGNvbnN0IHJ1bm5lcnNJZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdCk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ0NyZWF0ZWQgUnVubmVycyBjb3VudCcsIHJ1bm5lcnNJZHMubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgcnVubmVyc0lkcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2F6ZXMgPSB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdFtpdGVtXS5sZW5ndGg7XHJcbiAgICAgICAgICAgIHRvdGFsICs9IGNhemVzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnUnVubmVyJywgaXRlbSwgJyBydW4gJywgY2F6ZXMsICcgY2FzZXMnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJ1BhcmFsbGVsIGNvdW50Jywgd29ya2Vyc0NvdW50KTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVG90YWw6ICcsIHRvdGFsKTtcclxuICAgICAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIGNvbnN0IGR1cmF0aW9uID0gbmV3IER1cmF0aW9uKHN0YXJ0LCBlbmQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdEdXJhdGlvbjogJywgZHVyYXRpb24udG9TdHJpbmcoMSkpO1xyXG4gICAgICAgIC8vdGhpcy5yZXBvcnRlci5vbkFmdGVyRW5kKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICogUHJpdmF0ZSBtZXRob2RzXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG5cclxuICAgIF9sYXVuY2hXb3JrZXJGdW5jKHdvcmtlckNvbmZpZywgY2FsbGJhY2spIHtcclxuICAgICAgICBjb25zdCBjYiA9IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fbGF1bmNoVGVzdCh3b3JrZXJDb25maWcsIGNiKS50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcclxuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKGVycm9yLCBudWxsKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaW5zdGFudGlhdGVSdW5uZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5mcmFtZXdvcmsgJiYgdHlwZW9mIHRoaXMuX2NvbmZpZy5mcmFtZXdvcmsgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUnVubmVycywgdGhpcy5fY29uZmlnLmZyYW1ld29yaykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUnVubmVyc1t0aGlzLl9jb25maWcuZnJhbWV3b3JrXSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IFJ1bm5lcnMub3h5Z2VuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2xhdW5jaFRlc3QoeyB3b3JrZXJJZCwgdGVzdENvbmZpZywgdGVzdENhcHMsIHN0YXJ0dXBEZWxheSB9LCBjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCB0aGlzLl9zbGVlcChzdGFydHVwRGVsYXkpO1xyXG5cclxuICAgICAgICBsZXQgcnVubmVyID0gdGhpcy5faW5zdGFudGlhdGVSdW5uZXIoKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZWRSdW5uZXJzU3RhdFtydW5uZXIuX2lkXSA9IFt3b3JrZXJJZF07XHJcblxyXG4gICAgICAgIGlmICghcnVubmVyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZyYW1ld29yayA9IHRoaXMuX2NvbmZpZy5mcmFtZXdvcms7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcnVubmVyIGZvciB0aGUgc3BlY2lmaWVkIGZyYW1ld29yazogJHtmcmFtZXdvcmt9LmApKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBnZW5lcmF0ZSBmaXJlZm94IFwicHJvZmlsZVwiIHZhbHVlIGlmIHByb2ZpbGUgb3B0aW9ucyBhcmUgc3BlY2lmaWVkXHJcbiAgICAgICAgICAgIC8vIGF3YWl0IG94dXRpbC5nZW5lcmF0ZUZpcmVmb3hPcHRpb25zUHJvZmlsZSh0ZXN0Q2Fwcyk7XHJcblxyXG4gICAgICAgICAgICAvLyBpbml0aWFsaXplIG94eWdlblxyXG4gICAgICAgICAgICBhd2FpdCBydW5uZXIuaW5pdCh0ZXN0Q29uZmlnLCB0ZXN0Q2FwcywgdGhpcy5yZXBvcnRlcik7XHJcblxyXG4gICAgICAgICAgICAvLyBydW4gT3h5Z2VuIHRlc3QgXHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bm5lci5ydW4oKTtcclxuICAgICAgICAgICAgYXdhaXQgcnVubmVyLmRpc3Bvc2UocmVzdWx0LnN0YXR1cyB8fCBudWxsKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGxhdW5jaCB0aGUgdGVzdDonLCBlKTtcclxuICAgICAgICAgICAgLy8gc3RvcCBwcm9jZXNzaW5nIHRoZSBxdWV1ZVxyXG4gICAgICAgICAgICBpZiAodGhpcy5fcXVldWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlLmtpbGwoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiB0aGlzIGlzIGN1c3RvbSBlcnJvciBtZXNzYWdlXHJcbiAgICAgICAgICAgIGlmIChlLmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXJyTXNnID0gJyc7XHJcbiAgICAgICAgICAgICAgICB2YXIgZXJyID0gZS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIudHlwZSlcclxuICAgICAgICAgICAgICAgICAgICBlcnJNc2cgKz0gZXJyLnR5cGUgKyAnIC0gJztcclxuICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgICAgICBlcnJNc2cgKz0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnID0gZXJyLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoZXJyTXNnKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTsgICAgLy8gY2FsbCBiYWNrIHdpdGggdGhlIG9yaWdpbmFsIGV4Y2VwdGlvblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJ1bm5lcnMucHVzaChydW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIF9zbGVlcChkdXJhdGlvbikge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkdXJhdGlvbikpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jbGFzcyBQYXJhbU1hbmFnZXJNb2NrIHtcclxuICAgIGNvbnN0cnVjdG9yKHZhbHVlcykge1xyXG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldE1vZGUoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlYWROZXh0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZWFkUHJldigpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFsdWVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlcztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgcm93cygpIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -100,4 +100,4 @@ ${err.message}`));
100
100
 
101
101
  return module;
102
102
  };
103
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tbWFuYWdlci5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiZmlsZVBhdGgiLCJtb2RlIiwiZmlsZVR5cGUiLCJkZWZlciIsInJlcXVpcmUiLCJwYXRoIiwiRXhjZWxSZWFkZXIiLCJDc3ZSZWFkZXIiLCJKc29uUmVhZGVyIiwiZXJySGVscGVyIiwiX3doZW5Jbml0aWFsaXplZCIsImluaXQiLCJleHQiLCJleHRuYW1lIiwicmVhZGVyIiwic2VsZiIsInJlamVjdCIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJQQVJBTUVURVJTX0VSUk9SIiwicHJvbWlzZSIsInJlYWQiLCJ0aGVuIiwicmVzdWx0IiwidGFibGUiLCJjdXJyZW50Um93IiwicmFuZG9tIiwibGVuZ3RoIiwicmVzb2x2ZSIsImNhdGNoIiwiZXJyIiwibWVzc2FnZSIsImdldE1vZGUiLCJyZWFkTmV4dCIsInByZXZSb3ciLCJyZWFkUHJldiIsImdldFZhbHVlcyIsIl9fZGVmaW5lR2V0dGVyX18iLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiXSwibWFwcGluZ3MiOiI7Ozs7QUFRQTs7OztBQUNBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsVUFBVUMsUUFBVixFQUFvQkMsSUFBcEIsRUFBMEJDLFFBQTFCLEVBQWlEO0FBQzlELE1BQUlDLEtBQUssR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBUCxDQUFnQkQsS0FBNUI7O0FBQ0EsTUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFJRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxzQkFBRCxDQUF6Qjs7QUFDQSxNQUFJRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxvQkFBRCxDQUF2Qjs7QUFDQSxNQUFJSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxxQkFBRCxDQUF4Qjs7QUFDQSxNQUFJSyxTQUFTLEdBQUdMLE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxNQUFJTixNQUFNLEdB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QUF3QixXQUE1QixFQUF5QztBQUNyQyxXQUFLVCxVQUFMLEdBQWtCLEtBQUtTLE9BQXZCO0FBQ0g7QUFDSixHQUpEOztBQU1BcEMsRUFBQUEsTUFBTSxDQUFDc0MsU0FBUCxHQUFtQixZQUFXO0FBQzFCLFFBQUksQ0FBQyxLQUFLWixLQUFOLElBQWUsS0FBS0EsS0FBTCxDQUFXRyxNQUFYLEtBQXNCLENBQXpDLEVBQTRDO0FBQ3hDLFlBQU0sSUFBSVYsb0JBQUosQ0FBWVIsU0FBUyxDQUFDUyxTQUFWLENBQW9CQyxnQkFBaEMsRUFBa0QsMkJBQWxELENBQU47QUFDSDs7QUFDRCxXQUFPLEtBQUtLLEtBQUwsQ0FBVyxLQUFLQyxVQUFoQixDQUFQO0FBQ0gsR0FMRDs7QUFPQTNCLEVBQUFBLE1BQU0sQ0FBQ3VDLGdCQUFQLENBQXdCLE1BQXhCLEVBQWdDLFlBQVc7QUFDdkMsV0FBTyxLQUFLYixLQUFMLENBQVdHLE1BQWxCO0FBQ0gsR0FGRDs7QUFJQSxXQUFTRCxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEI7QUFDdEIsV0FBT0MsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ2QsTUFBTCxNQUFpQmEsR0FBRyxHQUFHRCxHQUF2QixDQUFYLElBQTBDQSxHQUFqRDtBQUNIOztBQUVELFNBQU94QyxNQUFQO0FBQ0gsQ0E5RkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZmlsZVBhdGgsIG1vZGUsIGZpbGVUeXBlIC8qb3B0aW9uYWwqLykge1xuICAgIHZhciBkZWZlciA9IHJlcXVpcmUoJ3doZW4nKS5kZWZlcjtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcbiAgICB2YXIgRXhjZWxSZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1leGNlbCcpO1xuICAgIHZhciBDc3ZSZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1jc3YnKTtcbiAgICB2YXIgSnNvblJlYWRlciA9IHJlcXVpcmUoJy4vcGFyYW0tcmVhZGVyLWpzb24nKTtcbiAgICB2YXIgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xuICAgIHZhciBtb2R1bGUgPSB7fTtcbiAgICB2YXIgX3doZW5Jbml0aWFsaXplZCA9IGRlZmVyKCk7XG5cbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcblxuICAgICAgICBpZiAoZmlsZVR5cGUpIHtcbiAgICAgICAgICAgIGV4dCA9IGZpbGVUeXBlO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWFkZXIgPSBudWxsO1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgIC8vIGNob29zZSB0aGUgcmlnaHQgY29udmVydGVyIGJhc2VkIG9uIGVpdGhlciB4bHMgb3IgeGxzeCBmaWxlIGV4dGVuc2lvblxuICAgICAgICBpZiAoZXh0ID09PSAnLnhsc3gnIHx8IGV4dCA9PT0gJy54bHMnKSB7XG4gICAgICAgICAgICByZWFkZXIgPSBuZXcgRXhjZWxSZWFkZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChleHQgPT09ICcuY3N2JyB8fCBleHQgPT09ICcudHh0Jykge1xuICAgICAgICAgICAgcmVhZGVyID0gbmV3IENzdlJlYWRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV4dCA9PT0gJy5qc29uJyB8fCBleHQgPT09ICcuanMnKSB7XG4gICAgICAgICAgICByZWFkZXIgPSBuZXcgSnNvblJlYWRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgX3doZW5Jbml0aWFsaXplZC5yZWplY3QobmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLCAnVW5zdXBwb3J0ZWQgcGFyYW1ldGVycyBmaWxlIHR5cGU6ICcgKyBleHQpKTtcbiAgICAgICAgICAgIHJldHVybiBfd2hlbkluaXRpYWxpemVkLnByb21pc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xuXG4gICAgICAgIHJlYWRlci5yZWFkKGZpbGVQYXRoLCBmaWxlVHlwZSB8fCBudWxsKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJlc3VsdDtcbiAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGN1cnJlbnRSb3cgYWNjb3JkaW5nIHdpdGggcGFyYW1ldGVyIHJlYWRpbmcgbW9kZSAocmFuZG9tIG9yIHNlcXVlbnRpYWwpXG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50Um93ID0gc2VsZi5tb2RlID09PSAncmFuZG9tJyA/IHJhbmRvbSgwLCBzZWxmLnRhYmxlLmxlbmd0aCkgOiAwO1xuICAgICAgICAgICAgICAgIF93aGVuSW5pdGlhbGl6ZWQucmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgX3doZW5Jbml0aWFsaXplZC5yZWplY3QoXG4gICAgICAgICAgICAgICAgICAgIG5ldyBPeEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SfTogVW5hYmxlIHRvIGxvYWQgcGFyYW1ldGVycyBmaWxlLiBcbiR7ZXJyLm1lc3NhZ2V9YFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBfd2hlbkluaXRpYWxpemVkLnByb21pc2U7XG4gICAgfTtcblxuICAgIG1vZHVsZS5nZXRNb2RlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vZGU7XG4gICAgfTtcblxuICAgIG1vZHVsZS5yZWFkTmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wcmV2Um93ID0gdGhpcy5jdXJyZW50Um93O1xuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmFuZG9tJykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93ID0gcmFuZG9tKDAsIHRoaXMudGFibGUubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdysrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFJvdyA+IHRoaXMudGFibGUubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93ID0gMDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBtb2R1bGUucmVhZFByZXYgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmV2Um93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93ID0gdGhpcy5wcmV2Um93O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1vZHVsZS5nZXRWYWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlIHx8IHRoaXMudGFibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlBBUkFNRVRFUlNfRVJST1IsICdQYXJhbWV0ZXJzIHRhYmxlIGlzIGVtcHR5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVbdGhpcy5jdXJyZW50Um93XTtcbiAgICB9O1xuXG4gICAgbW9kdWxlLl9fZGVmaW5lR2V0dGVyX18oJ3Jvd3MnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGUubGVuZ3RoO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gcmFuZG9tKG1pbiwgbWF4KSB7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZTtcbn07XG4iXX0=
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tbWFuYWdlci5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiZmlsZVBhdGgiLCJtb2RlIiwiZmlsZVR5cGUiLCJkZWZlciIsInJlcXVpcmUiLCJwYXRoIiwiRXhjZWxSZWFkZXIiLCJDc3ZSZWFkZXIiLCJKc29uUmVhZGVyIiwiZXJySGVscGVyIiwiX3doZW5Jbml0aWFsaXplZCIsImluaXQiLCJleHQiLCJleHRuYW1lIiwicmVhZGVyIiwic2VsZiIsInJlamVjdCIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJQQVJBTUVURVJTX0VSUk9SIiwicHJvbWlzZSIsInJlYWQiLCJ0aGVuIiwicmVzdWx0IiwidGFibGUiLCJjdXJyZW50Um93IiwicmFuZG9tIiwibGVuZ3RoIiwicmVzb2x2ZSIsImNhdGNoIiwiZXJyIiwibWVzc2FnZSIsImdldE1vZGUiLCJyZWFkTmV4dCIsInByZXZSb3ciLCJyZWFkUHJldiIsImdldFZhbHVlcyIsIl9fZGVmaW5lR2V0dGVyX18iLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiXSwibWFwcGluZ3MiOiI7Ozs7QUFRQTs7OztBQUNBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsVUFBVUMsUUFBVixFQUFvQkMsSUFBcEIsRUFBMEJDLFFBQTFCLEVBQWlEO0FBQzlELE1BQUlDLEtBQUssR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBUCxDQUFnQkQsS0FBNUI7O0FBQ0EsTUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFJRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxzQkFBRCxDQUF6Qjs7QUFDQSxNQUFJRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxvQkFBRCxDQUF2Qjs7QUFDQSxNQUFJSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxxQkFBRCxDQUF4Qjs7QUFDQSxNQUFJSyxTQUFTLEdBQUdMLE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxNQUFJTixNQUFNLEdB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QUF3QixXQUE1QixFQUF5QztBQUNyQyxXQUFLVCxVQUFMLEdBQWtCLEtBQUtTLE9BQXZCO0FBQ0g7QUFDSixHQUpEOztBQU1BcEMsRUFBQUEsTUFBTSxDQUFDc0MsU0FBUCxHQUFtQixZQUFXO0FBQzFCLFFBQUksQ0FBQyxLQUFLWixLQUFOLElBQWUsS0FBS0EsS0FBTCxDQUFXRyxNQUFYLEtBQXNCLENBQXpDLEVBQTRDO0FBQ3hDLFlBQU0sSUFBSVYsb0JBQUosQ0FBWVIsU0FBUyxDQUFDUyxTQUFWLENBQW9CQyxnQkFBaEMsRUFBa0QsMkJBQWxELENBQU47QUFDSDs7QUFDRCxXQUFPLEtBQUtLLEtBQUwsQ0FBVyxLQUFLQyxVQUFoQixDQUFQO0FBQ0gsR0FMRDs7QUFPQTNCLEVBQUFBLE1BQU0sQ0FBQ3VDLGdCQUFQLENBQXdCLE1BQXhCLEVBQWdDLFlBQVc7QUFDdkMsV0FBTyxLQUFLYixLQUFMLENBQVdHLE1BQWxCO0FBQ0gsR0FGRDs7QUFJQSxXQUFTRCxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEI7QUFDdEIsV0FBT0MsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ2QsTUFBTCxNQUFpQmEsR0FBRyxHQUFHRCxHQUF2QixDQUFYLElBQTBDQSxHQUFqRDtBQUNIOztBQUVELFNBQU94QyxNQUFQO0FBQ0gsQ0E5RkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZmlsZVBhdGgsIG1vZGUsIGZpbGVUeXBlIC8qb3B0aW9uYWwqLykge1xyXG4gICAgdmFyIGRlZmVyID0gcmVxdWlyZSgnd2hlbicpLmRlZmVyO1xyXG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcbiAgICB2YXIgRXhjZWxSZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1leGNlbCcpO1xyXG4gICAgdmFyIENzdlJlYWRlciA9IHJlcXVpcmUoJy4vcGFyYW0tcmVhZGVyLWNzdicpO1xyXG4gICAgdmFyIEpzb25SZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1qc29uJyk7XHJcbiAgICB2YXIgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG4gICAgdmFyIG1vZHVsZSA9IHt9O1xyXG4gICAgdmFyIF93aGVuSW5pdGlhbGl6ZWQgPSBkZWZlcigpO1xyXG5cclxuICAgIG1vZHVsZS5pbml0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChmaWxlVHlwZSkge1xyXG4gICAgICAgICAgICBleHQgPSBmaWxlVHlwZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlYWRlciA9IG51bGw7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vIGNob29zZSB0aGUgcmlnaHQgY29udmVydGVyIGJhc2VkIG9uIGVpdGhlciB4bHMgb3IgeGxzeCBmaWxlIGV4dGVuc2lvblxyXG4gICAgICAgIGlmIChleHQgPT09ICcueGxzeCcgfHwgZXh0ID09PSAnLnhscycpIHtcclxuICAgICAgICAgICAgcmVhZGVyID0gbmV3IEV4Y2VsUmVhZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGV4dCA9PT0gJy5jc3YnIHx8IGV4dCA9PT0gJy50eHQnKSB7XHJcbiAgICAgICAgICAgIHJlYWRlciA9IG5ldyBDc3ZSZWFkZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXh0ID09PSAnLmpzb24nIHx8IGV4dCA9PT0gJy5qcycpIHtcclxuICAgICAgICAgICAgcmVhZGVyID0gbmV3IEpzb25SZWFkZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIF93aGVuSW5pdGlhbGl6ZWQucmVqZWN0KG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuUEFSQU1FVEVSU19FUlJPUiwgJ1Vuc3VwcG9ydGVkIHBhcmFtZXRlcnMgZmlsZSB0eXBlOiAnICsgZXh0KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBfd2hlbkluaXRpYWxpemVkLnByb21pc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xyXG5cclxuICAgICAgICByZWFkZXIucmVhZChmaWxlUGF0aCwgZmlsZVR5cGUgfHwgbnVsbClcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnRhYmxlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBjdXJyZW50Um93IGFjY29yZGluZyB3aXRoIHBhcmFtZXRlciByZWFkaW5nIG1vZGUgKHJhbmRvbSBvciBzZXF1ZW50aWFsKVxyXG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50Um93ID0gc2VsZi5tb2RlID09PSAncmFuZG9tJyA/IHJhbmRvbSgwLCBzZWxmLnRhYmxlLmxlbmd0aCkgOiAwO1xyXG4gICAgICAgICAgICAgICAgX3doZW5Jbml0aWFsaXplZC5yZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBfd2hlbkluaXRpYWxpemVkLnJlamVjdChcclxuICAgICAgICAgICAgICAgICAgICBuZXcgT3hFcnJvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtlcnJIZWxwZXIuZXJyb3JDb2RlLlBBUkFNRVRFUlNfRVJST1J9OiBVbmFibGUgdG8gbG9hZCBwYXJhbWV0ZXJzIGZpbGUuIFxyXG4ke2Vyci5tZXNzYWdlfWBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIF93aGVuSW5pdGlhbGl6ZWQucHJvbWlzZTtcclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLmdldE1vZGUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUucmVhZE5leHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2Um93ID0gdGhpcy5jdXJyZW50Um93O1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdyYW5kb20nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdyA9IHJhbmRvbSgwLCB0aGlzLnRhYmxlLmxlbmd0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93Kys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Um93ID4gdGhpcy50YWJsZS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdyA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUucmVhZFByZXYgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXZSb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdyA9IHRoaXMucHJldlJvdztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5nZXRWYWx1ZXMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAoIXRoaXMudGFibGUgfHwgdGhpcy50YWJsZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLCAnUGFyYW1ldGVycyB0YWJsZSBpcyBlbXB0eScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVt0aGlzLmN1cnJlbnRSb3ddO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuX19kZWZpbmVHZXR0ZXJfXygncm93cycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlLmxlbmd0aDtcclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIHJhbmRvbShtaW4sIG1heCkge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
@@ -54,4 +54,4 @@ module.exports = function () {
54
54
 
55
55
  return module;
56
56
  };
57
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWNzdi5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImRhdGEiLCJyZWFkRmlsZVN5bmMiLCJlIiwicmVwbGFjZSIsImJvbSIsImNoYXJDb2RlQXQiLCJ0YWJsZSIsImNvbHVtbnMiLCJ0cmltIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLFFBQU1FLEtBQUssR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUNBLE1BQUlDLEVBQUUsR0FBR0QsT0FBTyxDQUFDLElBQUQsQ0FBaEI7O0FBQ0EsTUFBSUUsSUFBSSxHQUFHRixPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFFQUgsRUFBQUEsTUFBTSxDQUFDTSxJQUFQLEdBQWMsVUFBU0MsUUFBVCxFQUFtQkMsV0FBbkIsRUFBZ0M7QUFDMUMsV0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3BDLFVBQUlDLEdBQUcsR0FBR1AsSUFBSSxDQUFDUSxPQUFMLENBQWFOLFFBQWIsQ0FBVjs7QUFDQSxVQUFJQyxXQUFKLEVBQWlCO0FBQ2JJLFFBQUFBLEdBQUcsR0FBR0osV0FBTjtBQUNIOztBQUNELFVBQUlJLEdBQUcsS0FBSyxNQUFSLElBQWtCQSxHQUFHLEtBQUssTUFBOUIsRUFBc0M7QUFDbENELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUsaUNBQWlDRixHQUEzQyxDQUFELENBQU47QUFDSDs7QUFFRCxVQUFJRyxJQUFKOztBQUNBLFVBQUk7QUFDQUEsUUFBQUEsSUFBSSxHQUFHWCxFQUFFLENBQUNZLFlBQUgsQ0FBZ0JULFFBQWhCLEVBQTBCLE1BQTFCLENBQVA7QUFDSCxPQUZELENBRUUsT0FBT1UsQ0FBUCxFQUFVO0FBQ1JOLFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUscUNBQXFDRyxDQUEvQyxDQUFELENBQU47QUFDSDs7QUFHREYsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLE9BQUwsQ0FBYSxPQUFiLEVBQXNCLElBQXRCLENBQVA7QUFHQSxVQUFJQyxHQUFHLEdBQUcsS0FBVjs7QUFHQSxVQUFJSixJQUFJLENBQUNLLFVBQUwsQ0FBZ0IsQ0FBaEIsTUFBdUIsTUFBM0IsRUFBbUM7QUFDL0JELFFBQUFBLEdBQUcsR0FBRyxJQUFOO0FBQ0g7O0FBRUQsVUFBSTtBQUNBLFlBQUlFLEtBQUssR0FBR25CLEtBQUssQ0FBQ2EsSUFBRCxFQUFPO0FBQUVJLFVBQUFBLEdBQUcsRUFBRUEsR0FBUDtBQUFZRyxVQUFBQSxPQUFPLEVBQUUsSUFBckI7QUFBMkJDLFVBQUFBLElBQUksRUFBRTtBQUFqQyxTQUFQLENBQWpCO0FBQ0gsT0FGRCxDQUVFLE9BQU9OLENBQVAsRUFBVTtBQUNSTixRQUFBQSxNQUFNLENBQUNNLENBQUQsQ0FBTjtBQUNIOztBQUVEUCxNQUFBQSxPQUFPLENBQUNXLEtBQUQsQ0FBUDtBQUNILEtBbENNLENBQVA7QUFtQ0gsR0FwQ0Q7O0FBc0NBLFNBQU9yQixNQUFQO0FBQ0gsQ0E3Q0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBtb2R1bGUgPSB7fTtcbiAgICBjb25zdCBwYXJzZSA9IHJlcXVpcmUoJ2Nzdi1wYXJzZS9saWIvc3luYycpO1xuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbiAgICBtb2R1bGUucmVhZCA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBleHRPdmVycmlkZSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdmFyIGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XG4gICAgICAgICAgICBpZiAoZXh0T3ZlcnJpZGUpIHtcbiAgICAgICAgICAgICAgICBleHQgPSBleHRPdmVycmlkZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChleHQgIT09ICcuY3N2JyAmJiBleHQgIT09ICcudHh0Jykge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9uOiAnICsgZXh0KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBkYXRhO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFkIHBhcmFtZXRlcnMgZmlsZTogJyArIGUpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ1NWcyBwcm9kdWNlZCBieSBPUyBYIEV4Y2VsIGhhdmUgaGVhZGVyIHRlcm1pbmF0ZWQgd2l0aCAwZDBkMGFcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xcclxcci9nLCAnXFxyJyk7XG5cbiAgICAgICAgICAgIC8vIHN0cmlwIEJPTSBmb3IgVVRGLThcbiAgICAgICAgICAgIHZhciBib20gPSBmYWxzZTtcbiAgICAgICAgICAgIC8vIGNhdGNoZXMgMHhFRkJCQkYgKFVURi04IEJPTSkgYmVjYXVzZSB0aGUgYnVmZmVyLXRvLXN0cmluZ1xuICAgICAgICAgICAgLy8gY29udmVyc2lvbiB0cmFuc2xhdGVzIGl0IHRvIDB4RkVGRiAoVVRGLTE2IEJPTSlcbiAgICAgICAgICAgIGlmIChkYXRhLmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xuICAgICAgICAgICAgICAgIGJvbSA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gcGFyc2UoZGF0YSwgeyBib206IGJvbSwgY29sdW1uczogdHJ1ZSwgdHJpbTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc29sdmUodGFibGUpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIG1vZHVsZTtcbn07XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWNzdi5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImRhdGEiLCJyZWFkRmlsZVN5bmMiLCJlIiwicmVwbGFjZSIsImJvbSIsImNoYXJDb2RlQXQiLCJ0YWJsZSIsImNvbHVtbnMiLCJ0cmltIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLFFBQU1FLEtBQUssR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUNBLE1BQUlDLEVBQUUsR0FBR0QsT0FBTyxDQUFDLElBQUQsQ0FBaEI7O0FBQ0EsTUFBSUUsSUFBSSxHQUFHRixPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFFQUgsRUFBQUEsTUFBTSxDQUFDTSxJQUFQLEdBQWMsVUFBU0MsUUFBVCxFQUFtQkMsV0FBbkIsRUFBZ0M7QUFDMUMsV0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3BDLFVBQUlDLEdBQUcsR0FBR1AsSUFBSSxDQUFDUSxPQUFMLENBQWFOLFFBQWIsQ0FBVjs7QUFDQSxVQUFJQyxXQUFKLEVBQWlCO0FBQ2JJLFFBQUFBLEdBQUcsR0FBR0osV0FBTjtBQUNIOztBQUNELFVBQUlJLEdBQUcsS0FBSyxNQUFSLElBQWtCQSxHQUFHLEtBQUssTUFBOUIsRUFBc0M7QUFDbENELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUsaUNBQWlDRixHQUEzQyxDQUFELENBQU47QUFDSDs7QUFFRCxVQUFJRyxJQUFKOztBQUNBLFVBQUk7QUFDQUEsUUFBQUEsSUFBSSxHQUFHWCxFQUFFLENBQUNZLFlBQUgsQ0FBZ0JULFFBQWhCLEVBQTBCLE1BQTFCLENBQVA7QUFDSCxPQUZELENBRUUsT0FBT1UsQ0FBUCxFQUFVO0FBQ1JOLFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUscUNBQXFDRyxDQUEvQyxDQUFELENBQU47QUFDSDs7QUFHREYsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLE9BQUwsQ0FBYSxPQUFiLEVBQXNCLElBQXRCLENBQVA7QUFHQSxVQUFJQyxHQUFHLEdBQUcsS0FBVjs7QUFHQSxVQUFJSixJQUFJLENBQUNLLFVBQUwsQ0FBZ0IsQ0FBaEIsTUFBdUIsTUFBM0IsRUFBbUM7QUFDL0JELFFBQUFBLEdBQUcsR0FBRyxJQUFOO0FBQ0g7O0FBRUQsVUFBSTtBQUNBLFlBQUlFLEtBQUssR0FBR25CLEtBQUssQ0FBQ2EsSUFBRCxFQUFPO0FBQUVJLFVBQUFBLEdBQUcsRUFBRUEsR0FBUDtBQUFZRyxVQUFBQSxPQUFPLEVBQUUsSUFBckI7QUFBMkJDLFVBQUFBLElBQUksRUFBRTtBQUFqQyxTQUFQLENBQWpCO0FBQ0gsT0FGRCxDQUVFLE9BQU9OLENBQVAsRUFBVTtBQUNSTixRQUFBQSxNQUFNLENBQUNNLENBQUQsQ0FBTjtBQUNIOztBQUVEUCxNQUFBQSxPQUFPLENBQUNXLEtBQUQsQ0FBUDtBQUNILEtBbENNLENBQVA7QUFtQ0gsR0FwQ0Q7O0FBc0NBLFNBQU9yQixNQUFQO0FBQ0gsQ0E3Q0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG1vZHVsZSA9IHt9O1xyXG4gICAgY29uc3QgcGFyc2UgPSByZXF1aXJlKCdjc3YtcGFyc2UvbGliL3N5bmMnKTtcclxuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuXHJcbiAgICBtb2R1bGUucmVhZCA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBleHRPdmVycmlkZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoZXh0T3ZlcnJpZGUpIHtcclxuICAgICAgICAgICAgICAgIGV4dCA9IGV4dE92ZXJyaWRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChleHQgIT09ICcuY3N2JyAmJiBleHQgIT09ICcudHh0Jykge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBleHRlbnNpb246ICcgKyBleHQpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGRhdGE7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbmFibGUgdG8gcmVhZCBwYXJhbWV0ZXJzIGZpbGU6ICcgKyBlKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIENTVnMgcHJvZHVjZWQgYnkgT1MgWCBFeGNlbCBoYXZlIGhlYWRlciB0ZXJtaW5hdGVkIHdpdGggMGQwZDBhXHJcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xcclxcci9nLCAnXFxyJyk7XHJcblxyXG4gICAgICAgICAgICAvLyBzdHJpcCBCT00gZm9yIFVURi04XHJcbiAgICAgICAgICAgIHZhciBib20gPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gY2F0Y2hlcyAweEVGQkJCRiAoVVRGLTggQk9NKSBiZWNhdXNlIHRoZSBidWZmZXItdG8tc3RyaW5nXHJcbiAgICAgICAgICAgIC8vIGNvbnZlcnNpb24gdHJhbnNsYXRlcyBpdCB0byAweEZFRkYgKFVURi0xNiBCT00pXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xyXG4gICAgICAgICAgICAgICAgYm9tID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IHBhcnNlKGRhdGEsIHsgYm9tOiBib20sIGNvbHVtbnM6IHRydWUsIHRyaW06IHRydWUgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZSh0YWJsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdfQ==
@@ -53,4 +53,4 @@ module.exports = function () {
53
53
 
54
54
  return module;
55
55
  };
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWV4Y2VsLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJ4bHN4IiwicmVxdWlyZSIsInBhdGgiLCJyZWFkIiwiZmlsZVBhdGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImpzb24iLCJ3b3JrYm9vayIsInJlYWRGaWxlIiwic2hlZXROYW1lTGlzdCIsIlNoZWV0TmFtZXMiLCJqc29uUmF3IiwidXRpbHMiLCJzaGVldF90b19qc29uIiwiU2hlZXRzIiwiZGVmdmFsIiwicGFyYW1SYXciLCJwYXJhbSIsInByb3BSYXciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ2YWx1ZVJhdyIsIlN0cmluZyIsInRyaW0iLCJwdXNoIiwiZXJyIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLE1BQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBQ0EsTUFBSUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFHQUgsRUFBQUEsTUFBTSxDQUFDSyxJQUFQLEdBQWMsVUFBU0MsUUFBVCxFQUFtQjtBQUM3QixXQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDcEMsVUFBSUMsR0FBRyxHQUFHTixJQUFJLENBQUNPLE9BQUwsQ0FBYUwsUUFBYixDQUFWOztBQUNBLFVBQUlJLEdBQUcsS0FBSyxPQUFSLElBQW1CQSxHQUFHLEtBQUssTUFBL0IsRUFBdUM7QUFDbkNELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUsaUNBQWlDRixHQUEzQyxDQUFELENBQU47QUFDSDs7QUFFRCxVQUFJRyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxVQUFJO0FBQ0EsWUFBSUMsUUFBUSxHQUFHWixJQUFJLENBQUNhLFFBQUwsQ0FBY1QsUUFBZCxDQUFmO0FBQ0EsWUFBSVUsYUFBYSxHQUFHRixRQUFRLENBQUNHLFVBQTdCO0FBQ0EsWUFBSUMsT0FBTyxHQUFHaEIsSUFBSSxDQUFDaUIsS0FBTCxDQUFXQyxhQUFYLENBQXlCTixRQUFRLENBQUNPLE1BQVQsQ0FBZ0JMLGFBQWEsQ0FBQyxDQUFELENBQTdCLENBQXpCLEVBQTREO0FBQUVNLFVBQUFBLE1BQU0sRUFBRTtBQUFWLFNBQTVELENBQWQ7O0FBR0EsYUFBSyxJQUFJQyxRQUFULElBQXFCTCxPQUFyQixFQUE4QjtBQUMxQixjQUFJTSxLQUFLLEdBQUcsRUFBWjs7QUFDQSxlQUFLLElBQUlDLE9BQVQsSUFBb0JGLFFBQXBCLEVBQThCO0FBQzFCLGdCQUFJRyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQ04sUUFBckMsRUFBK0NFLE9BQS9DLENBQUosRUFBNkQ7QUFDekQsa0JBQUlLLFFBQVEsR0FBR1AsUUFBUSxDQUFDRSxPQUFELENBQXZCOztBQUNBLGtCQUFJLE9BQU9LLFFBQVAsS0FBb0IsUUFBcEIsSUFBZ0NBLFFBQVEsWUFBWUMsTUFBeEQsRUFBZ0U7QUFDNURQLGdCQUFBQSxLQUFLLENBQUNDLE9BQU8sQ0FBQ08sSUFBUixFQUFELENBQUwsR0FBd0JGLFFBQVEsQ0FBQ0UsSUFBVCxFQUF4QjtBQUNILGVBRkQsTUFFTztBQUNIUixnQkFBQUEsS0FBSyxDQUFDQyxPQUFPLENBQUNPLElBQVIsRUFBRCxDQUFMLEdBQXdCRixRQUF4QjtBQUNIO0FBQ0o7QUFDSjs7QUFDRGpCLFVBQUFBLElBQUksQ0FBQ29CLElBQUwsQ0FBVVQsS0FBVjtBQUNIO0FBQ0osT0FwQkQsQ0FvQkUsT0FBT1UsR0FBUCxFQUFZO0FBQ1Z6QixRQUFBQSxNQUFNLENBQUN5QixHQUFELENBQU47QUFDSDs7QUFFRDFCLE1BQUFBLE9BQU8sQ0FBQ0ssSUFBRCxDQUFQO0FBQ0gsS0FoQ00sQ0FBUDtBQWlDSCxHQWxDRDs7QUFvQ0EsU0FBT2IsTUFBUDtBQUNILENBM0NEIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbW9kdWxlID0ge307XG4gICAgdmFyIHhsc3ggPSByZXF1aXJlKCd4bHN4Jyk7XG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbiAgICAvLyBhc3luY2hyb25vdXNseSByZWFkcyBFeGNlbCBmaWxlIGFuZCByZXR1cm5zIGpzb24gdGhhdCByZXByZXNlbnRzIHRoZSBmaXJzdCBzaGVldFxuICAgIG1vZHVsZS5yZWFkID0gZnVuY3Rpb24oZmlsZVBhdGgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHZhciBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xuICAgICAgICAgICAgaWYgKGV4dCAhPT0gJy54bHN4JyAmJiBleHQgIT09ICcueGxzJykge1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9uOiAnICsgZXh0KSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBqc29uID0gW107XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciB3b3JrYm9vayA9IHhsc3gucmVhZEZpbGUoZmlsZVBhdGgpO1xuICAgICAgICAgICAgICAgIHZhciBzaGVldE5hbWVMaXN0ID0gd29ya2Jvb2suU2hlZXROYW1lcztcbiAgICAgICAgICAgICAgICB2YXIganNvblJhdyA9IHhsc3gudXRpbHMuc2hlZXRfdG9fanNvbih3b3JrYm9vay5TaGVldHNbc2hlZXROYW1lTGlzdFswXV0sIHsgZGVmdmFsOiAnJyB9KTtcbiAgICAgICAgICAgICAgICAvLyBqdXN0IGluIGNhc2UgdGhlcmUgd2VyZSBzb21lIGV4dHJhIGxpbmUgYnJlYWtzIGluIHRoZSBjZWxsc1xuICAgICAgICAgICAgICAgIC8vIHJlY3JlYXRlIHRoZSBwYXJhbWV0ZXJzIG9iamVjdHMgd2l0aCBhbGwgdGhlIFxcciBhbmQgXFxuIGFuZCB3aGl0ZSBzcGFjZXMgdHJpbW1lZFxuICAgICAgICAgICAgICAgIGZvciAodmFyIHBhcmFtUmF3IG9mIGpzb25SYXcpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0ge307XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BSYXcgaW4gcGFyYW1SYXcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1SYXcsIHByb3BSYXcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlUmF3ID0gcGFyYW1SYXdbcHJvcFJhd107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVJhdyA9PT0gJ3N0cmluZycgfHwgdmFsdWVSYXcgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1bcHJvcFJhdy50cmltKCldID0gdmFsdWVSYXcudHJpbSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtW3Byb3BSYXcudHJpbSgpXSA9IHZhbHVlUmF3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBqc29uLnB1c2gocGFyYW0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXNvbHZlKGpzb24pO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIG1vZHVsZTtcbn07XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWV4Y2VsLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJ4bHN4IiwicmVxdWlyZSIsInBhdGgiLCJyZWFkIiwiZmlsZVBhdGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImpzb24iLCJ3b3JrYm9vayIsInJlYWRGaWxlIiwic2hlZXROYW1lTGlzdCIsIlNoZWV0TmFtZXMiLCJqc29uUmF3IiwidXRpbHMiLCJzaGVldF90b19qc29uIiwiU2hlZXRzIiwiZGVmdmFsIiwicGFyYW1SYXciLCJwYXJhbSIsInByb3BSYXciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ2YWx1ZVJhdyIsIlN0cmluZyIsInRyaW0iLCJwdXNoIiwiZXJyIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLE1BQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBQ0EsTUFBSUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFHQUgsRUFBQUEsTUFBTSxDQUFDSyxJQUFQLEdBQWMsVUFBU0MsUUFBVCxFQUFtQjtBQUM3QixXQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDcEMsVUFBSUMsR0FBRyxHQUFHTixJQUFJLENBQUNPLE9BQUwsQ0FBYUwsUUFBYixDQUFWOztBQUNBLFVBQUlJLEdBQUcsS0FBSyxPQUFSLElBQW1CQSxHQUFHLEtBQUssTUFBL0IsRUFBdUM7QUFDbkNELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUsaUNBQWlDRixHQUEzQyxDQUFELENBQU47QUFDSDs7QUFFRCxVQUFJRyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxVQUFJO0FBQ0EsWUFBSUMsUUFBUSxHQUFHWixJQUFJLENBQUNhLFFBQUwsQ0FBY1QsUUFBZCxDQUFmO0FBQ0EsWUFBSVUsYUFBYSxHQUFHRixRQUFRLENBQUNHLFVBQTdCO0FBQ0EsWUFBSUMsT0FBTyxHQUFHaEIsSUFBSSxDQUFDaUIsS0FBTCxDQUFXQyxhQUFYLENBQXlCTixRQUFRLENBQUNPLE1BQVQsQ0FBZ0JMLGFBQWEsQ0FBQyxDQUFELENBQTdCLENBQXpCLEVBQTREO0FBQUVNLFVBQUFBLE1BQU0sRUFBRTtBQUFWLFNBQTVELENBQWQ7O0FBR0EsYUFBSyxJQUFJQyxRQUFULElBQXFCTCxPQUFyQixFQUE4QjtBQUMxQixjQUFJTSxLQUFLLEdBQUcsRUFBWjs7QUFDQSxlQUFLLElBQUlDLE9BQVQsSUFBb0JGLFFBQXBCLEVBQThCO0FBQzFCLGdCQUFJRyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQ04sUUFBckMsRUFBK0NFLE9BQS9DLENBQUosRUFBNkQ7QUFDekQsa0JBQUlLLFFBQVEsR0FBR1AsUUFBUSxDQUFDRSxPQUFELENBQXZCOztBQUNBLGtCQUFJLE9BQU9LLFFBQVAsS0FBb0IsUUFBcEIsSUFBZ0NBLFFBQVEsWUFBWUMsTUFBeEQsRUFBZ0U7QUFDNURQLGdCQUFBQSxLQUFLLENBQUNDLE9BQU8sQ0FBQ08sSUFBUixFQUFELENBQUwsR0FBd0JGLFFBQVEsQ0FBQ0UsSUFBVCxFQUF4QjtBQUNILGVBRkQsTUFFTztBQUNIUixnQkFBQUEsS0FBSyxDQUFDQyxPQUFPLENBQUNPLElBQVIsRUFBRCxDQUFMLEdBQXdCRixRQUF4QjtBQUNIO0FBQ0o7QUFDSjs7QUFDRGpCLFVBQUFBLElBQUksQ0FBQ29CLElBQUwsQ0FBVVQsS0FBVjtBQUNIO0FBQ0osT0FwQkQsQ0FvQkUsT0FBT1UsR0FBUCxFQUFZO0FBQ1Z6QixRQUFBQSxNQUFNLENBQUN5QixHQUFELENBQU47QUFDSDs7QUFFRDFCLE1BQUFBLE9BQU8sQ0FBQ0ssSUFBRCxDQUFQO0FBQ0gsS0FoQ00sQ0FBUDtBQWlDSCxHQWxDRDs7QUFvQ0EsU0FBT2IsTUFBUDtBQUNILENBM0NEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBtb2R1bGUgPSB7fTtcclxuICAgIHZhciB4bHN4ID0gcmVxdWlyZSgneGxzeCcpO1xyXG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcblxyXG4gICAgLy8gYXN5bmNocm9ub3VzbHkgcmVhZHMgRXhjZWwgZmlsZSBhbmQgcmV0dXJucyBqc29uIHRoYXQgcmVwcmVzZW50cyB0aGUgZmlyc3Qgc2hlZXRcclxuICAgIG1vZHVsZS5yZWFkID0gZnVuY3Rpb24oZmlsZVBhdGgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGV4dCAhPT0gJy54bHN4JyAmJiBleHQgIT09ICcueGxzJykge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBleHRlbnNpb246ICcgKyBleHQpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGpzb24gPSBbXTtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHZhciB3b3JrYm9vayA9IHhsc3gucmVhZEZpbGUoZmlsZVBhdGgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNoZWV0TmFtZUxpc3QgPSB3b3JrYm9vay5TaGVldE5hbWVzO1xyXG4gICAgICAgICAgICAgICAgdmFyIGpzb25SYXcgPSB4bHN4LnV0aWxzLnNoZWV0X3RvX2pzb24od29ya2Jvb2suU2hlZXRzW3NoZWV0TmFtZUxpc3RbMF1dLCB7IGRlZnZhbDogJycgfSk7XHJcbiAgICAgICAgICAgICAgICAvLyBqdXN0IGluIGNhc2UgdGhlcmUgd2VyZSBzb21lIGV4dHJhIGxpbmUgYnJlYWtzIGluIHRoZSBjZWxsc1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjcmVhdGUgdGhlIHBhcmFtZXRlcnMgb2JqZWN0cyB3aXRoIGFsbCB0aGUgXFxyIGFuZCBcXG4gYW5kIHdoaXRlIHNwYWNlcyB0cmltbWVkXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwYXJhbVJhdyBvZiBqc29uUmF3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcFJhdyBpbiBwYXJhbVJhdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtUmF3LCBwcm9wUmF3KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlUmF3ID0gcGFyYW1SYXdbcHJvcFJhd107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlUmF3ID09PSAnc3RyaW5nJyB8fCB2YWx1ZVJhdyBpbnN0YW5jZW9mIFN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtW3Byb3BSYXcudHJpbSgpXSA9IHZhbHVlUmF3LnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1bcHJvcFJhdy50cmltKCldID0gdmFsdWVSYXc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAganNvbi5wdXNoKHBhcmFtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShqc29uKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
@@ -35,4 +35,4 @@ module.exports = function () {
35
35
 
36
36
  return module;
37
37
  };
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWpzb24uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInBhdGgiLCJyZXF1aXJlIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsInJvd3MiLCJBcnJheSIsImlzQXJyYXkiLCJlIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLE1BQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUFILEVBQUFBLE1BQU0sQ0FBQ0ksSUFBUCxHQUFjLFVBQVNDLFFBQVQsRUFBbUJDLFdBQW5CLEVBQWdDO0FBQzFDLFdBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQyxVQUFJQyxHQUFHLEdBQUdSLElBQUksQ0FBQ1MsT0FBTCxDQUFhTixRQUFiLENBQVY7O0FBQ0EsVUFBSUMsV0FBSixFQUFpQjtBQUNiSSxRQUFBQSxHQUFHLEdBQUdKLFdBQU47QUFDSDs7QUFDRCxVQUFJSSxHQUFHLEtBQUssT0FBUixJQUFtQkEsR0FBRyxLQUFLLEtBQS9CLEVBQXNDO0FBQ2xDRCxRQUFBQSxNQUFNLENBQUMsSUFBSUcsS0FBSixDQUFVLGlDQUFpQ0YsR0FBM0MsQ0FBRCxDQUFOO0FBQ0g7O0FBRUQsVUFBSTtBQUNBLGNBQU1HLElBQUksR0FBR1YsT0FBTyxDQUFDRSxRQUFELENBQXBCOztBQUNBLFlBQUksQ0FBQ1MsS0FBSyxDQUFDQyxPQUFOLENBQWNGLElBQWQsQ0FBTCxFQUEwQjtBQUN0QkosVUFBQUEsTUFBTSxDQUFDLElBQUlHLEtBQUosQ0FBVSwwQkFBVixDQUFELENBQU47QUFDSDs7QUFDREosUUFBQUEsT0FBTyxDQUFDSyxJQUFELENBQVA7QUFDSCxPQU5ELENBTUUsT0FBT0csQ0FBUCxFQUFVO0FBQ1JQLFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUscUNBQXFDSSxDQUEvQyxDQUFELENBQU47QUFDSDtBQUNKLEtBbEJNLENBQVA7QUFtQkgsR0FwQkQ7O0FBc0JBLFNBQU9oQixNQUFQO0FBQ0gsQ0EzQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBtb2R1bGUgPSB7fTtcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuICAgIG1vZHVsZS5yZWFkID0gZnVuY3Rpb24oZmlsZVBhdGgsIGV4dE92ZXJyaWRlKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcbiAgICAgICAgICAgIGlmIChleHRPdmVycmlkZSkge1xuICAgICAgICAgICAgICAgIGV4dCA9IGV4dE92ZXJyaWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV4dCAhPT0gJy5qc29uJyAmJiBleHQgIT09ICcuanMnKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBleHRlbnNpb246ICcgKyBleHQpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dzID0gcmVxdWlyZShmaWxlUGF0aCk7XG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJvd3MpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgY29udGVudCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyb3dzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbmFibGUgdG8gcmVhZCBwYXJhbWV0ZXJzIGZpbGU6ICcgKyBlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gbW9kdWxlO1xufTtcbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWpzb24uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInBhdGgiLCJyZXF1aXJlIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsInJvd3MiLCJBcnJheSIsImlzQXJyYXkiLCJlIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLE1BQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUFILEVBQUFBLE1BQU0sQ0FBQ0ksSUFBUCxHQUFjLFVBQVNDLFFBQVQsRUFBbUJDLFdBQW5CLEVBQWdDO0FBQzFDLFdBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQyxVQUFJQyxHQUFHLEdBQUdSLElBQUksQ0FBQ1MsT0FBTCxDQUFhTixRQUFiLENBQVY7O0FBQ0EsVUFBSUMsV0FBSixFQUFpQjtBQUNiSSxRQUFBQSxHQUFHLEdBQUdKLFdBQU47QUFDSDs7QUFDRCxVQUFJSSxHQUFHLEtBQUssT0FBUixJQUFtQkEsR0FBRyxLQUFLLEtBQS9CLEVBQXNDO0FBQ2xDRCxRQUFBQSxNQUFNLENBQUMsSUFBSUcsS0FBSixDQUFVLGlDQUFpQ0YsR0FBM0MsQ0FBRCxDQUFOO0FBQ0g7O0FBRUQsVUFBSTtBQUNBLGNBQU1HLElBQUksR0FBR1YsT0FBTyxDQUFDRSxRQUFELENBQXBCOztBQUNBLFlBQUksQ0FBQ1MsS0FBSyxDQUFDQyxPQUFOLENBQWNGLElBQWQsQ0FBTCxFQUEwQjtBQUN0QkosVUFBQUEsTUFBTSxDQUFDLElBQUlHLEtBQUosQ0FBVSwwQkFBVixDQUFELENBQU47QUFDSDs7QUFDREosUUFBQUEsT0FBTyxDQUFDSyxJQUFELENBQVA7QUFDSCxPQU5ELENBTUUsT0FBT0csQ0FBUCxFQUFVO0FBQ1JQLFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUscUNBQXFDSSxDQUEvQyxDQUFELENBQU47QUFDSDtBQUNKLEtBbEJNLENBQVA7QUFtQkgsR0FwQkQ7O0FBc0JBLFNBQU9oQixNQUFQO0FBQ0gsQ0EzQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG1vZHVsZSA9IHt9O1xyXG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcblxyXG4gICAgbW9kdWxlLnJlYWQgPSBmdW5jdGlvbihmaWxlUGF0aCwgZXh0T3ZlcnJpZGUpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGV4dE92ZXJyaWRlKSB7XHJcbiAgICAgICAgICAgICAgICBleHQgPSBleHRPdmVycmlkZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZXh0ICE9PSAnLmpzb24nICYmIGV4dCAhPT0gJy5qcycpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9uOiAnICsgZXh0KSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb3dzID0gcmVxdWlyZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocm93cykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmaWxlIGNvbnRlbnQnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJvd3MpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbmFibGUgdG8gcmVhZCBwYXJhbWV0ZXJzIGZpbGU6ICcgKyBlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
@@ -180,4 +180,4 @@ const generateSync = (content, config) => {
180
180
 
181
181
  exports.generate = generate;
182
182
  exports.generateSync = generateSync;
183
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGV4dC10by1pbWFnZS5qcyJdLCJuYW1lcyI6WyJjcmVhdGVDYW52YXMiLCJyZWdpc3RlckZvbnQiLCJyZXF1aXJlIiwiZGVmYXVsdHMiLCJiZ0NvbG9yIiwiY3VzdG9tSGVpZ2h0IiwiYnViYmxlVGFpbCIsIndpZHRoIiwiaGVpZ2h0IiwiZm9udEZhbWlseSIsImZvbnRQYXRoIiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsIm1hcmdpbiIsIm1heFdpZHRoIiwidGV4dEFsaWduIiwidGV4dENvbG9yIiwidmVydGljYWxBbGlnbiIsImNyZWF0ZVRleHREYXRhIiwidGV4dCIsImNvbmZpZyIsImNhbnZhcyIsImZhbWlseSIsInRleHRDYW52YXMiLCJ0ZXh0Q29udGV4dCIsImdldENvbnRleHQiLCJ0ZXh0WCIsInRleHRZIiwiaW5jbHVkZXMiLCJ0b0xvd2VyQ2FzZSIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwiZm9udCIsInRleHRCYXNlbGluZSIsIndvcmRzIiwic3BsaXQiLCJ3b3JkQ291bnQiLCJsZW5ndGgiLCJsaW5lIiwiYWRkTmV3TGluZXMiLCJuIiwid29yZCIsInRlc3QiLCJwYXJ0cyIsInNoaWZ0IiwicHVzaCIsInNwbGljZSIsImpvaW4iLCJ0ZXN0TGluZSIsInJlcGxhY2UiLCJ0ZXN0TGluZVdpZHRoIiwibWVhc3VyZVRleHQiLCJpbmRleE9mIiwiZmlsbFRleHQiLCJNYXRoIiwibWF4IiwidGV4dEhlaWdodCIsInRleHREYXRhIiwiZ2V0SW1hZ2VEYXRhIiwiY3JlYXRlSW1hZ2VDYW52YXMiLCJjb250ZW50IiwiY29uZiIsInRleHRIZWlnaHRXaXRoTWFyZ2lucyIsImNvbnNvbGUiLCJ3YXJuIiwiY3R4IiwiY2xlYXJSZWN0IiwiZ2xvYmFsQWxwaGEiLCJiZWdpblBhdGgiLCJtb3ZlVG8iLCJsaW5lVG8iLCJjbG9zZVBhdGgiLCJmaWxsIiwicHV0SW1hZ2VEYXRhIiwiZ2VuZXJhdGUiLCJ0b0Rh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O0FBTUFFLE9BQU8sQ0FBQ0gsUUFBUixHQUFtQkEsUUFBbkI7QUFDQUcsT0FBTyxDQUFDRCxZQUFSLEdBQXVCQSxZQUF2QiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgY3JlYXRlQ2FudmFzLCByZWdpc3RlckZvbnQgfSA9IHJlcXVpcmUoJ2NhbnZhcycpO1xuXG4vLyB0aGlzIGlzIHRleHQtdG8taW1hZ2UgdjUuMiBwYWNrYWdlIGluY2x1ZGVkIGRpcmVjdGx5IGluIG94eWdlbiBmb3IgZWFzaWVyIGNvbnRyb2wgb3ZlciBjYW52YXMgYW5kIG5hbiB2ZXJzaW9uc1xuXG5jb25zdCBkZWZhdWx0cyA9IHtcbiAgICBiZ0NvbG9yOiAnI2ZmZicsXG4gICAgY3VzdG9tSGVpZ2h0OiAwLFxuICAgIGJ1YmJsZVRhaWw6IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9LFxuICAgIGZvbnRGYW1pbHk6ICdBcmlhbCcsXG4gICAgZm9udFBhdGg6ICcnLFxuICAgIGZvbnRTaXplOiAxOCxcbiAgICBmb250V2VpZ2h0OiAnbm9ybWFsJyxcbiAgICBsaW5lSGVpZ2h0OiAyOCxcbiAgICBtYXJnaW46IDEwLFxuICAgIG1heFdpZHRoOiA0MDAsXG4gICAgdGV4dEFsaWduOiAnbGVmdCcsXG4gICAgdGV4dENvbG9yOiAnIzAwMCcsXG4gICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG59O1xuXG5jb25zdCBjcmVhdGVUZXh0RGF0YSA9ICh0ZXh0LCBjb25maWcsIGNhbnZhcykgPT4ge1xuICAgIGNvbnN0IHsgYmdDb2xvciwgZm9udEZhbWlseSwgZm9udFBhdGgsIGZvbnRTaXplLCBmb250V2VpZ2h0LCBsaW5lSGVpZ2h0LCBtYXhXaWR0aCwgdGV4dEFsaWduLCB0ZXh0Q29sb3IsIH0gPSBjb25maWc7XG4gICAgaWYgKGZvbnRQYXRoKSB7XG4gICAgICAgIHJlZ2lzdGVyRm9udChmb250UGF0aCwgeyBmYW1pbHk6IGZvbnRGYW1pbHkgfSk7XG4gICAgfVxuICAgIGNvbnN0IHRleHRDYW52YXMgPSBjYW52YXMgfHwgY3JlYXRlQ2FudmFzKG1heFdpZHRoLCAxMDApO1xuICAgIGNvbnN0IHRleHRDb250ZXh0ID0gdGV4dENhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGxldCB0ZXh0WCA9IDA7XG4gICAgbGV0IHRleHRZID0gMDtcbiAgICBpZiAoWydjZW50ZXInXS5pbmNsdWRlcyh0ZXh0QWxpZ24udG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgdGV4dFggPSBtYXhXaWR0aCAvIDI7XG4gICAgfVxuICAgIGlmIChbJ3JpZ2h0JywgJ2VuZCddLmluY2x1ZGVzKHRleHRBbGlnbi50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICB0ZXh0WCA9IG1heFdpZHRoO1xuICAgIH1cbiAgICB0ZXh0Q29udGV4dC50ZXh0QWxpZ24gPSB0ZXh0QWxpZ247XG4gICAgdGV4dENvbnRleHQuZmlsbFN0eWxlID0gYmdDb2xvcjtcbiAgICB0ZXh0Q29udGV4dC5maWxsUmVjdCgwLCAwLCB0ZXh0Q2FudmFzLndpZHRoLCB0ZXh0Q2FudmFzLmhlaWdodCk7XG4gICAgdGV4dENvbnRleHQuZmlsbFN0eWxlID0gdGV4dENvbG9yO1xuICAgIHRleHRDb250ZXh0LmZvbnQgPSBgJHtmb250V2VpZ2h0fSAke2ZvbnRTaXplfXB4ICR7Zm9udEZhbWlseX1gO1xuICAgIHRleHRDb250ZXh0LnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgIGNvbnN0IHdvcmRzID0gdGV4dC5zcGxpdCgnICcpO1xuICAgIGxldCB3b3JkQ291bnQgPSB3b3Jkcy5sZW5ndGg7XG4gICAgbGV0IGxpbmUgPSAnJztcbiAgICBjb25zdCBhZGROZXdMaW5lcyA9IFtdO1xuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgd29yZENvdW50OyBuICs9IDEpIHtcbiAgICAgICAgbGV0IHdvcmQgPSB3b3Jkc1tuXTtcbiAgICAgICAgaWYgKC9cXG4vLnRlc3Qod29yZHNbbl0pKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHdvcmRzW25dLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgIHdvcmQgPSBwYXJ0cy5zaGlmdCgpIHx8ICcnO1xuICAgICAgICAgICAgYWRkTmV3TGluZXMucHVzaChuICsgMSk7XG4gICAgICAgICAgICB3b3Jkcy5zcGxpY2UobiArIDEsIDAsIHBhcnRzLmpvaW4oJ1xcbicpKTtcbiAgICAgICAgICAgIHdvcmRDb3VudCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRlc3RMaW5lID0gYCR7bGluZX0gJHt3b3JkfWAucmVwbGFjZSgvXiArLywgJycpLnJlcGxhY2UoLyArJC8sICcnKTtcbiAgICAgICAgY29uc3QgdGVzdExpbmVXaWR0aCA9IHRleHRDb250ZXh0Lm1lYXN1cmVUZXh0KHRlc3RMaW5lKS53aWR0aDtcbiAgICAgICAgaWYgKGFkZE5ld0xpbmVzLmluZGV4T2YobikgPiAtMSB8fCAodGVzdExpbmVXaWR0aCA+IG1heFdpZHRoICYmIG4gPiAwKSkge1xuICAgICAgICAgICAgdGV4dENvbnRleHQuZmlsbFRleHQobGluZSwgdGV4dFgsIHRleHRZKTtcbiAgICAgICAgICAgIGxpbmUgPSB3b3JkO1xuICAgICAgICAgICAgdGV4dFkgKz0gbGluZUhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxpbmUgPSB0ZXN0TGluZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0ZXh0Q29udGV4dC5maWxsVGV4dChsaW5lLCB0ZXh0WCwgdGV4dFkpO1xuICAgIGNvbnN0IGhlaWdodCA9IHRleHRZICsgTWF0aC5tYXgobGluZUhlaWdodCwgZm9udFNpemUpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHRleHRIZWlnaHQ6IGhlaWdodCxcbiAgICAgICAgdGV4dERhdGE6IHRleHRDb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCBtYXhXaWR0aCwgaGVpZ2h0KSxcbiAgICB9O1xufTtcblxuY29uc3QgY3JlYXRlSW1hZ2VDYW52YXMgPSAoY29udGVudCwgY29uZikgPT4ge1xuICAgIGNvbnN0IHsgdGV4dEhlaWdodCB9ID0gY3JlYXRlVGV4dERhdGEoY29udGVudCwge1xuICAgICAgICBtYXhXaWR0aDogY29uZi5tYXhXaWR0aCAtIGNvbmYubWFyZ2luICogMixcbiAgICAgICAgZm9udFNpemU6IGNvbmYuZm9udFNpemUsXG4gICAgICAgIGxpbmVIZWlnaHQ6IGNvbmYubGluZUhlaWdodCxcbiAgICAgICAgYmdDb2xvcjogY29uZi5iZ0NvbG9yLFxuICAgICAgICB0ZXh0Q29sb3I6IGNvbmYudGV4dENvbG9yLFxuICAgICAgICBmb250RmFtaWx5OiBjb25mLmZvbnRGYW1pbHksXG4gICAgICAgIGZvbnRQYXRoOiBjb25mLmZvbnRQYXRoLFxuICAgICAgICBmb250V2VpZ2h0OiBjb25mLmZvbnRXZWlnaHQsXG4gICAgICAgIHRleHRBbGlnbjogY29uZi50ZXh0QWxpZ24sXG4gICAgfSk7XG4gICAgY29uc3QgdGV4dEhlaWdodFdpdGhNYXJnaW5zID0gdGV4dEhlaWdodCArIGNvbmYubWFyZ2luICogMjtcbiAgICBpZiAoY29uZi5jdXN0b21IZWlnaHQgJiYgY29uZi5jdXN0b21IZWlnaHQgPCB0ZXh0SGVpZ2h0V2l0aE1hcmdpbnMpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdUZXh0IGlzIGxvbmdlciB0aGFuIGN1c3RvbUhlaWdodCwgY2xpcHBpbmcgd2lsbCBvY2N1ci4nKTtcbiAgICB9XG4gICAgY29uc3QgaGVpZ2h0ID0gY29uZi5jdXN0b21IZWlnaHQgfHwgdGV4dEhlaWdodFdpdGhNYXJnaW5zO1xuICAgIGNvbnN0IGNhbnZhcyA9IGNyZWF0ZUNhbnZhcyhjb25mLm1heFdpZHRoLCBoZWlnaHQgKyBjb25mLmJ1YmJsZVRhaWwuaGVpZ2h0KTtcbiAgICBjb25zdCB7IHRleHREYXRhIH0gPSBjcmVhdGVUZXh0RGF0YShjb250ZW50LCB7XG4gICAgICAgIG1heFdpZHRoOiBjb25mLm1heFdpZHRoIC0gY29uZi5tYXJnaW4gKiAyLFxuICAgICAgICBmb250U2l6ZTogY29uZi5mb250U2l6ZSxcbiAgICAgICAgbGluZUhlaWdodDogY29uZi5saW5lSGVpZ2h0LFxuICAgICAgICBiZ0NvbG9yOiBjb25mLmJnQ29sb3IsXG4gICAgICAgIHRleHRDb2xvcjogY29uZi50ZXh0Q29sb3IsXG4gICAgICAgIGZvbnRGYW1pbHk6IGNvbmYuZm9udEZhbWlseSxcbiAgICAgICAgZm9udFBhdGg6IGNvbmYuZm9udFBhdGgsXG4gICAgICAgIGZvbnRXZWlnaHQ6IGNvbmYuZm9udFdlaWdodCxcbiAgICAgICAgdGV4dEFsaWduOiBjb25mLnRleHRBbGlnbixcbiAgICB9LCBjYW52YXMpO1xuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTtcbiAgICBjdHguZ2xvYmFsQWxwaGEgPSAxO1xuICAgIGN0eC5maWxsU3R5bGUgPSBjb25mLmJnQ29sb3I7XG4gICAgY3R4LmZpbGxSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgaGVpZ2h0KTtcbiAgICBpZiAoY29uZi5idWJibGVUYWlsLndpZHRoICYmIGNvbmYuYnViYmxlVGFpbC5oZWlnaHQpIHtcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICBjdHgubW92ZVRvKGNhbnZhcy53aWR0aCAvIDIgLSBjb25mLmJ1YmJsZVRhaWwud2lkdGggLyAyLCBoZWlnaHQpO1xuICAgICAgICBjdHgubGluZVRvKGNhbnZhcy53aWR0aCAvIDIsIGNhbnZhcy5oZWlnaHQpO1xuICAgICAgICBjdHgubGluZVRvKGNhbnZhcy53aWR0aCAvIDIgKyBjb25mLmJ1YmJsZVRhaWwud2lkdGggLyAyLCBoZWlnaHQpO1xuICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb25mLmJnQ29sb3I7XG4gICAgICAgIGN0eC5maWxsKCk7XG4gICAgfVxuICAgIGNvbnN0IHRleHRYID0gY29uZi5tYXJnaW47XG4gICAgbGV0IHRleHRZID0gY29uZi5tYXJnaW47XG4gICAgaWYgKGNvbmYuY3VzdG9tSGVpZ2h0ICYmIGNvbmYudmVydGljYWxBbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgICAgdGV4dFkgPVxuICAgICAgICAgICAgKGNvbmYuY3VzdG9tSGVpZ2h0IC0gdGV4dERhdGEuaGVpZ2h0KSAvIDIgK1xuICAgICAgICAgICAgICAgIE1hdGgubWF4KDAsIChjb25mLmxpbmVIZWlnaHQgLSBjb25mLmZvbnRTaXplKSAvIDIpO1xuICAgIH1cbiAgICBjdHgucHV0SW1hZ2VEYXRhKHRleHREYXRhLCB0ZXh0WCwgdGV4dFkpO1xuICAgIHJldHVybiBjYW52YXM7XG59O1xuXG5jb25zdCBnZW5lcmF0ZSA9IGFzeW5jIChjb250ZW50LCBjb25maWcpID0+IHtcbiAgICBjb25zdCBjb25mID0geyAuLi5kZWZhdWx0cywgLi4uY29uZmlnIH07XG4gICAgY29uc3QgY2FudmFzID0gY3JlYXRlSW1hZ2VDYW52YXMoY29udGVudCwgY29uZik7XG4gICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoKTtcbn07XG5cbmNvbnN0IGdlbmVyYXRlU3luYyA9IChjb250ZW50LCBjb25maWcpID0+IHtcbiAgICBjb25zdCBjb25mID0geyAuLi5kZWZhdWx0cywgLi4uY29uZmlnIH07XG4gICAgY29uc3QgY2FudmFzID0gY3JlYXRlSW1hZ2VDYW52YXMoY29udGVudCwgY29uZik7XG4gICAgcmV0dXJuIGNhbnZhcy50b0RhdGFVUkwoKTtcbn07XG5cbmV4cG9ydHMuZ2VuZXJhdGUgPSBnZW5lcmF0ZTtcbmV4cG9ydHMuZ2VuZXJhdGVTeW5jID0gZ2VuZXJhdGVTeW5jOyJdfQ==
183
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGV4dC10by1pbWFnZS5qcyJdLCJuYW1lcyI6WyJjcmVhdGVDYW52YXMiLCJyZWdpc3RlckZvbnQiLCJyZXF1aXJlIiwiZGVmYXVsdHMiLCJiZ0NvbG9yIiwiY3VzdG9tSGVpZ2h0IiwiYnViYmxlVGFpbCIsIndpZHRoIiwiaGVpZ2h0IiwiZm9udEZhbWlseSIsImZvbnRQYXRoIiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwibGluZUhlaWdodCIsIm1hcmdpbiIsIm1heFdpZHRoIiwidGV4dEFsaWduIiwidGV4dENvbG9yIiwidmVydGljYWxBbGlnbiIsImNyZWF0ZVRleHREYXRhIiwidGV4dCIsImNvbmZpZyIsImNhbnZhcyIsImZhbWlseSIsInRleHRDYW52YXMiLCJ0ZXh0Q29udGV4dCIsImdldENvbnRleHQiLCJ0ZXh0WCIsInRleHRZIiwiaW5jbHVkZXMiLCJ0b0xvd2VyQ2FzZSIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwiZm9udCIsInRleHRCYXNlbGluZSIsIndvcmRzIiwic3BsaXQiLCJ3b3JkQ291bnQiLCJsZW5ndGgiLCJsaW5lIiwiYWRkTmV3TGluZXMiLCJuIiwid29yZCIsInRlc3QiLCJwYXJ0cyIsInNoaWZ0IiwicHVzaCIsInNwbGljZSIsImpvaW4iLCJ0ZXN0TGluZSIsInJlcGxhY2UiLCJ0ZXN0TGluZVdpZHRoIiwibWVhc3VyZVRleHQiLCJpbmRleE9mIiwiZmlsbFRleHQiLCJNYXRoIiwibWF4IiwidGV4dEhlaWdodCIsInRleHREYXRhIiwiZ2V0SW1hZ2VEYXRhIiwiY3JlYXRlSW1hZ2VDYW52YXMiLCJjb250ZW50IiwiY29uZiIsInRleHRIZWlnaHRXaXRoTWFyZ2lucyIsImNvbnNvbGUiLCJ3YXJuIiwiY3R4IiwiY2xlYXJSZWN0IiwiZ2xvYmFsQWxwaGEiLCJiZWdpblBhdGgiLCJtb3ZlVG8iLCJsaW5lVG8iLCJjbG9zZVBhdGgiLCJmaWxsIiwicHV0SW1hZ2VEYXRhIiwiZ2VuZXJhdGUiLCJ0b0Rh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O0FBTUFFLE9BQU8sQ0FBQ0gsUUFBUixHQUFtQkEsUUFBbkI7QUFDQUcsT0FBTyxDQUFDRCxZQUFSLEdBQXVCQSxZQUF2QiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgY3JlYXRlQ2FudmFzLCByZWdpc3RlckZvbnQgfSA9IHJlcXVpcmUoJ2NhbnZhcycpO1xyXG5cclxuLy8gdGhpcyBpcyB0ZXh0LXRvLWltYWdlIHY1LjIgcGFja2FnZSBpbmNsdWRlZCBkaXJlY3RseSBpbiBveHlnZW4gZm9yIGVhc2llciBjb250cm9sIG92ZXIgY2FudmFzIGFuZCBuYW4gdmVyc2lvbnNcclxuXHJcbmNvbnN0IGRlZmF1bHRzID0ge1xyXG4gICAgYmdDb2xvcjogJyNmZmYnLFxyXG4gICAgY3VzdG9tSGVpZ2h0OiAwLFxyXG4gICAgYnViYmxlVGFpbDogeyB3aWR0aDogMCwgaGVpZ2h0OiAwIH0sXHJcbiAgICBmb250RmFtaWx5OiAnQXJpYWwnLFxyXG4gICAgZm9udFBhdGg6ICcnLFxyXG4gICAgZm9udFNpemU6IDE4LFxyXG4gICAgZm9udFdlaWdodDogJ25vcm1hbCcsXHJcbiAgICBsaW5lSGVpZ2h0OiAyOCxcclxuICAgIG1hcmdpbjogMTAsXHJcbiAgICBtYXhXaWR0aDogNDAwLFxyXG4gICAgdGV4dEFsaWduOiAnbGVmdCcsXHJcbiAgICB0ZXh0Q29sb3I6ICcjMDAwJyxcclxuICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLFxyXG59O1xyXG5cclxuY29uc3QgY3JlYXRlVGV4dERhdGEgPSAodGV4dCwgY29uZmlnLCBjYW52YXMpID0+IHtcclxuICAgIGNvbnN0IHsgYmdDb2xvciwgZm9udEZhbWlseSwgZm9udFBhdGgsIGZvbnRTaXplLCBmb250V2VpZ2h0LCBsaW5lSGVpZ2h0LCBtYXhXaWR0aCwgdGV4dEFsaWduLCB0ZXh0Q29sb3IsIH0gPSBjb25maWc7XHJcbiAgICBpZiAoZm9udFBhdGgpIHtcclxuICAgICAgICByZWdpc3RlckZvbnQoZm9udFBhdGgsIHsgZmFtaWx5OiBmb250RmFtaWx5IH0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdGV4dENhbnZhcyA9IGNhbnZhcyB8fCBjcmVhdGVDYW52YXMobWF4V2lkdGgsIDEwMCk7XHJcbiAgICBjb25zdCB0ZXh0Q29udGV4dCA9IHRleHRDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgIGxldCB0ZXh0WCA9IDA7XHJcbiAgICBsZXQgdGV4dFkgPSAwO1xyXG4gICAgaWYgKFsnY2VudGVyJ10uaW5jbHVkZXModGV4dEFsaWduLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgdGV4dFggPSBtYXhXaWR0aCAvIDI7XHJcbiAgICB9XHJcbiAgICBpZiAoWydyaWdodCcsICdlbmQnXS5pbmNsdWRlcyh0ZXh0QWxpZ24udG9Mb3dlckNhc2UoKSkpIHtcclxuICAgICAgICB0ZXh0WCA9IG1heFdpZHRoO1xyXG4gICAgfVxyXG4gICAgdGV4dENvbnRleHQudGV4dEFsaWduID0gdGV4dEFsaWduO1xyXG4gICAgdGV4dENvbnRleHQuZmlsbFN0eWxlID0gYmdDb2xvcjtcclxuICAgIHRleHRDb250ZXh0LmZpbGxSZWN0KDAsIDAsIHRleHRDYW52YXMud2lkdGgsIHRleHRDYW52YXMuaGVpZ2h0KTtcclxuICAgIHRleHRDb250ZXh0LmZpbGxTdHlsZSA9IHRleHRDb2xvcjtcclxuICAgIHRleHRDb250ZXh0LmZvbnQgPSBgJHtmb250V2VpZ2h0fSAke2ZvbnRTaXplfXB4ICR7Zm9udEZhbWlseX1gO1xyXG4gICAgdGV4dENvbnRleHQudGV4dEJhc2VsaW5lID0gJ3RvcCc7XHJcbiAgICBjb25zdCB3b3JkcyA9IHRleHQuc3BsaXQoJyAnKTtcclxuICAgIGxldCB3b3JkQ291bnQgPSB3b3Jkcy5sZW5ndGg7XHJcbiAgICBsZXQgbGluZSA9ICcnO1xyXG4gICAgY29uc3QgYWRkTmV3TGluZXMgPSBbXTtcclxuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgd29yZENvdW50OyBuICs9IDEpIHtcclxuICAgICAgICBsZXQgd29yZCA9IHdvcmRzW25dO1xyXG4gICAgICAgIGlmICgvXFxuLy50ZXN0KHdvcmRzW25dKSkge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IHdvcmRzW25dLnNwbGl0KCdcXG4nKTtcclxuICAgICAgICAgICAgd29yZCA9IHBhcnRzLnNoaWZ0KCkgfHwgJyc7XHJcbiAgICAgICAgICAgIGFkZE5ld0xpbmVzLnB1c2gobiArIDEpO1xyXG4gICAgICAgICAgICB3b3Jkcy5zcGxpY2UobiArIDEsIDAsIHBhcnRzLmpvaW4oJ1xcbicpKTtcclxuICAgICAgICAgICAgd29yZENvdW50ICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHRlc3RMaW5lID0gYCR7bGluZX0gJHt3b3JkfWAucmVwbGFjZSgvXiArLywgJycpLnJlcGxhY2UoLyArJC8sICcnKTtcclxuICAgICAgICBjb25zdCB0ZXN0TGluZVdpZHRoID0gdGV4dENvbnRleHQubWVhc3VyZVRleHQodGVzdExpbmUpLndpZHRoO1xyXG4gICAgICAgIGlmIChhZGROZXdMaW5lcy5pbmRleE9mKG4pID4gLTEgfHwgKHRlc3RMaW5lV2lkdGggPiBtYXhXaWR0aCAmJiBuID4gMCkpIHtcclxuICAgICAgICAgICAgdGV4dENvbnRleHQuZmlsbFRleHQobGluZSwgdGV4dFgsIHRleHRZKTtcclxuICAgICAgICAgICAgbGluZSA9IHdvcmQ7XHJcbiAgICAgICAgICAgIHRleHRZICs9IGxpbmVIZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsaW5lID0gdGVzdExpbmU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGV4dENvbnRleHQuZmlsbFRleHQobGluZSwgdGV4dFgsIHRleHRZKTtcclxuICAgIGNvbnN0IGhlaWdodCA9IHRleHRZICsgTWF0aC5tYXgobGluZUhlaWdodCwgZm9udFNpemUpO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0ZXh0SGVpZ2h0OiBoZWlnaHQsXHJcbiAgICAgICAgdGV4dERhdGE6IHRleHRDb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCBtYXhXaWR0aCwgaGVpZ2h0KSxcclxuICAgIH07XHJcbn07XHJcblxyXG5jb25zdCBjcmVhdGVJbWFnZUNhbnZhcyA9IChjb250ZW50LCBjb25mKSA9PiB7XHJcbiAgICBjb25zdCB7IHRleHRIZWlnaHQgfSA9IGNyZWF0ZVRleHREYXRhKGNvbnRlbnQsIHtcclxuICAgICAgICBtYXhXaWR0aDogY29uZi5tYXhXaWR0aCAtIGNvbmYubWFyZ2luICogMixcclxuICAgICAgICBmb250U2l6ZTogY29uZi5mb250U2l6ZSxcclxuICAgICAgICBsaW5lSGVpZ2h0OiBjb25mLmxpbmVIZWlnaHQsXHJcbiAgICAgICAgYmdDb2xvcjogY29uZi5iZ0NvbG9yLFxyXG4gICAgICAgIHRleHRDb2xvcjogY29uZi50ZXh0Q29sb3IsXHJcbiAgICAgICAgZm9udEZhbWlseTogY29uZi5mb250RmFtaWx5LFxyXG4gICAgICAgIGZvbnRQYXRoOiBjb25mLmZvbnRQYXRoLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IGNvbmYuZm9udFdlaWdodCxcclxuICAgICAgICB0ZXh0QWxpZ246IGNvbmYudGV4dEFsaWduLFxyXG4gICAgfSk7XHJcbiAgICBjb25zdCB0ZXh0SGVpZ2h0V2l0aE1hcmdpbnMgPSB0ZXh0SGVpZ2h0ICsgY29uZi5tYXJnaW4gKiAyO1xyXG4gICAgaWYgKGNvbmYuY3VzdG9tSGVpZ2h0ICYmIGNvbmYuY3VzdG9tSGVpZ2h0IDwgdGV4dEhlaWdodFdpdGhNYXJnaW5zKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCdUZXh0IGlzIGxvbmdlciB0aGFuIGN1c3RvbUhlaWdodCwgY2xpcHBpbmcgd2lsbCBvY2N1ci4nKTtcclxuICAgIH1cclxuICAgIGNvbnN0IGhlaWdodCA9IGNvbmYuY3VzdG9tSGVpZ2h0IHx8IHRleHRIZWlnaHRXaXRoTWFyZ2lucztcclxuICAgIGNvbnN0IGNhbnZhcyA9IGNyZWF0ZUNhbnZhcyhjb25mLm1heFdpZHRoLCBoZWlnaHQgKyBjb25mLmJ1YmJsZVRhaWwuaGVpZ2h0KTtcclxuICAgIGNvbnN0IHsgdGV4dERhdGEgfSA9IGNyZWF0ZVRleHREYXRhKGNvbnRlbnQsIHtcclxuICAgICAgICBtYXhXaWR0aDogY29uZi5tYXhXaWR0aCAtIGNvbmYubWFyZ2luICogMixcclxuICAgICAgICBmb250U2l6ZTogY29uZi5mb250U2l6ZSxcclxuICAgICAgICBsaW5lSGVpZ2h0OiBjb25mLmxpbmVIZWlnaHQsXHJcbiAgICAgICAgYmdDb2xvcjogY29uZi5iZ0NvbG9yLFxyXG4gICAgICAgIHRleHRDb2xvcjogY29uZi50ZXh0Q29sb3IsXHJcbiAgICAgICAgZm9udEZhbWlseTogY29uZi5mb250RmFtaWx5LFxyXG4gICAgICAgIGZvbnRQYXRoOiBjb25mLmZvbnRQYXRoLFxyXG4gICAgICAgIGZvbnRXZWlnaHQ6IGNvbmYuZm9udFdlaWdodCxcclxuICAgICAgICB0ZXh0QWxpZ246IGNvbmYudGV4dEFsaWduLFxyXG4gICAgfSwgY2FudmFzKTtcclxuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpO1xyXG4gICAgY3R4Lmdsb2JhbEFscGhhID0gMTtcclxuICAgIGN0eC5maWxsU3R5bGUgPSBjb25mLmJnQ29sb3I7XHJcbiAgICBjdHguZmlsbFJlY3QoMCwgMCwgY2FudmFzLndpZHRoLCBoZWlnaHQpO1xyXG4gICAgaWYgKGNvbmYuYnViYmxlVGFpbC53aWR0aCAmJiBjb25mLmJ1YmJsZVRhaWwuaGVpZ2h0KSB7XHJcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGN0eC5tb3ZlVG8oY2FudmFzLndpZHRoIC8gMiAtIGNvbmYuYnViYmxlVGFpbC53aWR0aCAvIDIsIGhlaWdodCk7XHJcbiAgICAgICAgY3R4LmxpbmVUbyhjYW52YXMud2lkdGggLyAyLCBjYW52YXMuaGVpZ2h0KTtcclxuICAgICAgICBjdHgubGluZVRvKGNhbnZhcy53aWR0aCAvIDIgKyBjb25mLmJ1YmJsZVRhaWwud2lkdGggLyAyLCBoZWlnaHQpO1xyXG4gICAgICAgIGN0eC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gY29uZi5iZ0NvbG9yO1xyXG4gICAgICAgIGN0eC5maWxsKCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0ZXh0WCA9IGNvbmYubWFyZ2luO1xyXG4gICAgbGV0IHRleHRZID0gY29uZi5tYXJnaW47XHJcbiAgICBpZiAoY29uZi5jdXN0b21IZWlnaHQgJiYgY29uZi52ZXJ0aWNhbEFsaWduID09PSAnY2VudGVyJykge1xyXG4gICAgICAgIHRleHRZID1cclxuICAgICAgICAgICAgKGNvbmYuY3VzdG9tSGVpZ2h0IC0gdGV4dERhdGEuaGVpZ2h0KSAvIDIgK1xyXG4gICAgICAgICAgICAgICAgTWF0aC5tYXgoMCwgKGNvbmYubGluZUhlaWdodCAtIGNvbmYuZm9udFNpemUpIC8gMik7XHJcbiAgICB9XHJcbiAgICBjdHgucHV0SW1hZ2VEYXRhKHRleHREYXRhLCB0ZXh0WCwgdGV4dFkpO1xyXG4gICAgcmV0dXJuIGNhbnZhcztcclxufTtcclxuXHJcbmNvbnN0IGdlbmVyYXRlID0gYXN5bmMgKGNvbnRlbnQsIGNvbmZpZykgPT4ge1xyXG4gICAgY29uc3QgY29uZiA9IHsgLi4uZGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xyXG4gICAgY29uc3QgY2FudmFzID0gY3JlYXRlSW1hZ2VDYW52YXMoY29udGVudCwgY29uZik7XHJcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpO1xyXG59O1xyXG5cclxuY29uc3QgZ2VuZXJhdGVTeW5jID0gKGNvbnRlbnQsIGNvbmZpZykgPT4ge1xyXG4gICAgY29uc3QgY29uZiA9IHsgLi4uZGVmYXVsdHMsIC4uLmNvbmZpZyB9O1xyXG4gICAgY29uc3QgY2FudmFzID0gY3JlYXRlSW1hZ2VDYW52YXMoY29udGVudCwgY29uZik7XHJcbiAgICByZXR1cm4gY2FudmFzLnRvRGF0YVVSTCgpO1xyXG59O1xyXG5cclxuZXhwb3J0cy5nZW5lcmF0ZSA9IGdlbmVyYXRlO1xyXG5leHBvcnRzLmdlbmVyYXRlU3luYyA9IGdlbmVyYXRlU3luYzsiXX0=