oxygen-cli 1.25.0-beta.2 → 1.25.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 (265) hide show
  1. package/.husky/pre-commit +4 -0
  2. package/CHANGELOG.md +65 -0
  3. package/build/core/OxygenCore.js +36 -257
  4. package/build/core/OxygenEvents.js +1 -11
  5. package/build/core/OxygenModule.js +1 -14
  6. package/build/core/OxygenService.js +1 -12
  7. package/build/core/OxygenSubModule.js +1 -10
  8. package/build/core/WebDriverModule.js +1 -30
  9. package/build/core/utils.js +1 -17
  10. package/build/errors/HookError.js +1 -7
  11. package/build/errors/ModuleError.js +1 -7
  12. package/build/errors/ModuleUnavailableError.js +1 -3
  13. package/build/errors/OxygenError.js +1 -33
  14. package/build/errors/ScriptNotFound.js +1 -7
  15. package/build/errors/helper.js +46 -77
  16. package/build/index.js +6 -18
  17. package/build/lib/cli-util.js +28 -90
  18. package/build/lib/cli.js +1 -23
  19. package/build/lib/debugger.js +1 -144
  20. package/build/lib/img-merge.js +1 -15
  21. package/build/lib/launcher.js +1 -28
  22. package/build/lib/moduleRequire.js +1 -4
  23. package/build/lib/param-manager.js +1 -28
  24. package/build/lib/param-reader-csv.js +1 -15
  25. package/build/lib/param-reader-excel.js +1 -14
  26. package/build/lib/param-reader-json.js +1 -10
  27. package/build/lib/util.js +3 -58
  28. package/build/model/case-result.js +1 -2
  29. package/build/model/failure.js +1 -2
  30. package/build/model/status.js +1 -2
  31. package/build/model/step-result.js +1 -2
  32. package/build/model/suite-result.js +1 -2
  33. package/build/model/test-result.js +1 -2
  34. package/build/model/testcase.js +1 -2
  35. package/build/model/testsuite.js +1 -2
  36. package/build/ox_modules/index.js +13 -33
  37. package/build/ox_modules/module-assert.js +8 -24
  38. package/build/ox_modules/module-date.js +3 -8
  39. package/build/ox_modules/module-db.js +7 -28
  40. package/build/ox_modules/module-email.js +10 -36
  41. package/build/ox_modules/module-eyes.js +5 -46
  42. package/build/ox_modules/module-http.js +42 -104
  43. package/build/ox_modules/module-log.js +5 -22
  44. package/build/ox_modules/module-mailinator.js +10 -32
  45. package/build/ox_modules/module-mob/commands/alertAccept.js +1 -2
  46. package/build/ox_modules/module-mob/commands/alertDismiss.js +1 -2
  47. package/build/ox_modules/module-mob/commands/assertAlert.js +1 -6
  48. package/build/ox_modules/module-mob/commands/assertText.js +1 -3
  49. package/build/ox_modules/module-mob/commands/assertTitle.js +1 -4
  50. package/build/ox_modules/module-mob/commands/assertValue.js +9 -15
  51. package/build/ox_modules/module-mob/commands/back.js +1 -2
  52. package/build/ox_modules/module-mob/commands/clear.js +1 -4
  53. package/build/ox_modules/module-mob/commands/click.js +3 -4
  54. package/build/ox_modules/module-mob/commands/clickHidden.js +3 -9
  55. package/build/ox_modules/module-mob/commands/clickLong.js +1 -2
  56. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +1 -4
  57. package/build/ox_modules/module-mob/commands/closeApp.js +1 -2
  58. package/build/ox_modules/module-mob/commands/debug.js +2 -2
  59. package/build/ox_modules/module-mob/commands/dragAndDrop.js +1 -2
  60. package/build/ox_modules/module-mob/commands/enableNetwork.js +4 -12
  61. package/build/ox_modules/module-mob/commands/execute.js +1 -2
  62. package/build/ox_modules/module-mob/commands/findElement.js +1 -3
  63. package/build/ox_modules/module-mob/commands/findElements.js +1 -4
  64. package/build/ox_modules/module-mob/commands/getAlertText.js +1 -2
  65. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +1 -2
  66. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +1 -10
  67. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +1 -2
  68. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +1 -2
  69. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +1 -9
  70. package/build/ox_modules/module-mob/commands/getDeviceTime.js +1 -2
  71. package/build/ox_modules/module-mob/commands/getLocation.js +1 -2
  72. package/build/ox_modules/module-mob/commands/getSource.js +1 -2
  73. package/build/ox_modules/module-mob/commands/getText.js +1 -4
  74. package/build/ox_modules/module-mob/commands/getTitle.js +1 -2
  75. package/build/ox_modules/module-mob/commands/getUrl.js +1 -2
  76. package/build/ox_modules/module-mob/commands/getValue.js +5 -9
  77. package/build/ox_modules/module-mob/commands/getWindowHandles.js +1 -2
  78. package/build/ox_modules/module-mob/commands/hideKeyboard.js +1 -2
  79. package/build/ox_modules/module-mob/commands/index.js +19 -94
  80. package/build/ox_modules/module-mob/commands/installApp.js +1 -2
  81. package/build/ox_modules/module-mob/commands/isAppInstalled.js +1 -2
  82. package/build/ox_modules/module-mob/commands/isCheckable.js +1 -2
  83. package/build/ox_modules/module-mob/commands/isChecked.js +1 -2
  84. package/build/ox_modules/module-mob/commands/isClickable.js +1 -2
  85. package/build/ox_modules/module-mob/commands/isExist.js +1 -3
  86. package/build/ox_modules/module-mob/commands/isSelected.js +1 -2
  87. package/build/ox_modules/module-mob/commands/isVisible.js +1 -3
  88. package/build/ox_modules/module-mob/commands/isWebViewContext.js +1 -2
  89. package/build/ox_modules/module-mob/commands/launchApp.js +1 -2
  90. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +1 -2
  91. package/build/ox_modules/module-mob/commands/open.js +1 -3
  92. package/build/ox_modules/module-mob/commands/pause.js +1 -2
  93. package/build/ox_modules/module-mob/commands/removeApp.js +1 -2
  94. package/build/ox_modules/module-mob/commands/resetApp.js +1 -2
  95. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +1 -6
  96. package/build/ox_modules/module-mob/commands/scrollIntoView.js +1 -2
  97. package/build/ox_modules/module-mob/commands/select.js +1 -4
  98. package/build/ox_modules/module-mob/commands/selectFrame.js +1 -4
  99. package/build/ox_modules/module-mob/commands/selectWindow.js +5 -26
  100. package/build/ox_modules/module-mob/commands/sendKeys.js +6 -9
  101. package/build/ox_modules/module-mob/commands/setContext.js +1 -2
  102. package/build/ox_modules/module-mob/commands/setNativeContext.js +1 -2
  103. package/build/ox_modules/module-mob/commands/setTimeout.js +1 -2
  104. package/build/ox_modules/module-mob/commands/setWebViewContext.js +3 -6
  105. package/build/ox_modules/module-mob/commands/shake.js +1 -2
  106. package/build/ox_modules/module-mob/commands/smsClickLink.js +1 -2
  107. package/build/ox_modules/module-mob/commands/smsGetText.js +3 -6
  108. package/build/ox_modules/module-mob/commands/swipe.js +1 -2
  109. package/build/ox_modules/module-mob/commands/swipeElement.js +1 -2
  110. package/build/ox_modules/module-mob/commands/swipeScreen.js +1 -2
  111. package/build/ox_modules/module-mob/commands/takeScreenshot.js +1 -2
  112. package/build/ox_modules/module-mob/commands/tap.js +1 -2
  113. package/build/ox_modules/module-mob/commands/type.js +3 -7
  114. package/build/ox_modules/module-mob/commands/unlockPattern.js +9 -10
  115. package/build/ox_modules/module-mob/commands/waitForExist.js +1 -2
  116. package/build/ox_modules/module-mob/commands/waitForInteractable.js +1 -3
  117. package/build/ox_modules/module-mob/commands/waitForVisible.js +1 -2
  118. package/build/ox_modules/module-mob.js +72 -142
  119. package/build/ox_modules/module-pdf.js +23 -62
  120. package/build/ox_modules/module-proxy.js +8 -68
  121. package/build/ox_modules/module-serial.js +7 -32
  122. package/build/ox_modules/module-shell.js +8 -27
  123. package/build/ox_modules/module-soap.js +14 -47
  124. package/build/ox_modules/module-twilio.js +10 -53
  125. package/build/ox_modules/module-utils.js +16 -51
  126. package/build/ox_modules/module-web/commands/alertAccept.js +1 -2
  127. package/build/ox_modules/module-web/commands/alertDismiss.js +1 -2
  128. package/build/ox_modules/module-web/commands/assertAlert.js +1 -6
  129. package/build/ox_modules/module-web/commands/assertExist.js +1 -2
  130. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +1 -4
  131. package/build/ox_modules/module-web/commands/assertSelectedValue.js +1 -3
  132. package/build/ox_modules/module-web/commands/assertText.js +1 -3
  133. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +1 -6
  134. package/build/ox_modules/module-web/commands/assertTextPresent.js +1 -6
  135. package/build/ox_modules/module-web/commands/assertTitle.js +1 -3
  136. package/build/ox_modules/module-web/commands/assertValue.js +1 -3
  137. package/build/ox_modules/module-web/commands/back.js +1 -2
  138. package/build/ox_modules/module-web/commands/clear.js +1 -5
  139. package/build/ox_modules/module-web/commands/click.js +4 -13
  140. package/build/ox_modules/module-web/commands/clickHidden.js +2 -7
  141. package/build/ox_modules/module-web/commands/closeWindow.js +1 -2
  142. package/build/ox_modules/module-web/commands/debug.js +2 -2
  143. package/build/ox_modules/module-web/commands/deleteCookies.js +1 -2
  144. package/build/ox_modules/module-web/commands/deselect.js +1 -2
  145. package/build/ox_modules/module-web/commands/doubleClick.js +3 -9
  146. package/build/ox_modules/module-web/commands/dragAndDrop.js +1 -2
  147. package/build/ox_modules/module-web/commands/execute.js +1 -2
  148. package/build/ox_modules/module-web/commands/fileBrowse.js +4 -10
  149. package/build/ox_modules/module-web/commands/findElement.js +1 -3
  150. package/build/ox_modules/module-web/commands/findElements.js +1 -4
  151. package/build/ox_modules/module-web/commands/fullscreenWindow.js +1 -2
  152. package/build/ox_modules/module-web/commands/getAlertText.js +1 -2
  153. package/build/ox_modules/module-web/commands/getAttribute.js +1 -4
  154. package/build/ox_modules/module-web/commands/getBrowserLogs.js +1 -3
  155. package/build/ox_modules/module-web/commands/getCookies.js +1 -2
  156. package/build/ox_modules/module-web/commands/getCssValue.js +1 -4
  157. package/build/ox_modules/module-web/commands/getElementCount.js +1 -2
  158. package/build/ox_modules/module-web/commands/getHTML.js +1 -2
  159. package/build/ox_modules/module-web/commands/getSource.js +1 -2
  160. package/build/ox_modules/module-web/commands/getText.js +1 -4
  161. package/build/ox_modules/module-web/commands/getTitle.js +1 -2
  162. package/build/ox_modules/module-web/commands/getUrl.js +1 -2
  163. package/build/ox_modules/module-web/commands/getValue.js +1 -5
  164. package/build/ox_modules/module-web/commands/getWindowHandles.js +1 -2
  165. package/build/ox_modules/module-web/commands/getWindowSize.js +1 -2
  166. package/build/ox_modules/module-web/commands/getXMLPageSource.js +1 -5
  167. package/build/ox_modules/module-web/commands/index.js +26 -99
  168. package/build/ox_modules/module-web/commands/isAlertPresent.js +1 -2
  169. package/build/ox_modules/module-web/commands/isChecked.js +1 -2
  170. package/build/ox_modules/module-web/commands/isExist.js +1 -3
  171. package/build/ox_modules/module-web/commands/isInteractable.js +33 -0
  172. package/build/ox_modules/module-web/commands/isSelected.js +1 -2
  173. package/build/ox_modules/module-web/commands/isVisible.js +1 -3
  174. package/build/ox_modules/module-web/commands/makeVisible.js +2 -10
  175. package/build/ox_modules/module-web/commands/maximizeWindow.js +1 -2
  176. package/build/ox_modules/module-web/commands/minimizeWindow.js +1 -2
  177. package/build/ox_modules/module-web/commands/newWindow.js +1 -2
  178. package/build/ox_modules/module-web/commands/open.js +1 -4
  179. package/build/ox_modules/module-web/commands/pause.js +1 -2
  180. package/build/ox_modules/module-web/commands/point.js +1 -2
  181. package/build/ox_modules/module-web/commands/pointJS.js +2 -8
  182. package/build/ox_modules/module-web/commands/refresh.js +1 -2
  183. package/build/ox_modules/module-web/commands/rightClick.js +3 -8
  184. package/build/ox_modules/module-web/commands/rightClickActions.js +1 -2
  185. package/build/ox_modules/module-web/commands/scrollToElement.js +1 -2
  186. package/build/ox_modules/module-web/commands/select.js +1 -5
  187. package/build/ox_modules/module-web/commands/selectFrame.js +1 -3
  188. package/build/ox_modules/module-web/commands/selectWindow.js +5 -26
  189. package/build/ox_modules/module-web/commands/sendKeys.js +3 -6
  190. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -2
  191. package/build/ox_modules/module-web/commands/setTimeout.js +1 -2
  192. package/build/ox_modules/module-web/commands/setWindowSize.js +1 -2
  193. package/build/ox_modules/module-web/commands/takeScreenshot.js +3 -5
  194. package/build/ox_modules/module-web/commands/type.js +1 -5
  195. package/build/ox_modules/module-web/commands/waitForAngular.js +6 -11
  196. package/build/ox_modules/module-web/commands/waitForExist.js +1 -2
  197. package/build/ox_modules/module-web/commands/waitForInteractable.js +1 -2
  198. package/build/ox_modules/module-web/commands/waitForNotExist.js +1 -8
  199. package/build/ox_modules/module-web/commands/waitForNotText.js +3 -5
  200. package/build/ox_modules/module-web/commands/waitForNotValue.js +3 -5
  201. package/build/ox_modules/module-web/commands/waitForText.js +3 -5
  202. package/build/ox_modules/module-web/commands/waitForValue.js +3 -5
  203. package/build/ox_modules/module-web/commands/waitForVisible.js +1 -2
  204. package/build/ox_modules/module-web/commands/waitForWindow.js +4 -21
  205. package/build/ox_modules/module-web.js +86 -192
  206. package/build/ox_modules/module-win/commands/assertText.js +1 -3
  207. package/build/ox_modules/module-win/commands/assertTitle.js +1 -4
  208. package/build/ox_modules/module-win/commands/assertValue.js +9 -15
  209. package/build/ox_modules/module-win/commands/back.js +1 -2
  210. package/build/ox_modules/module-win/commands/clear.js +1 -4
  211. package/build/ox_modules/module-win/commands/click.js +1 -2
  212. package/build/ox_modules/module-win/commands/clickLong.js +1 -2
  213. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +1 -4
  214. package/build/ox_modules/module-win/commands/findElement.js +1 -3
  215. package/build/ox_modules/module-win/commands/findElements.js +1 -4
  216. package/build/ox_modules/module-win/commands/getAppiumLogs.js +1 -2
  217. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +1 -2
  218. package/build/ox_modules/module-win/commands/getLocation.js +1 -2
  219. package/build/ox_modules/module-win/commands/getSource.js +1 -2
  220. package/build/ox_modules/module-win/commands/getText.js +1 -4
  221. package/build/ox_modules/module-win/commands/getValue.js +5 -9
  222. package/build/ox_modules/module-win/commands/getWindowHandles.js +1 -2
  223. package/build/ox_modules/module-win/commands/index.js +5 -43
  224. package/build/ox_modules/module-win/commands/isCheckable.js +1 -2
  225. package/build/ox_modules/module-win/commands/isChecked.js +1 -2
  226. package/build/ox_modules/module-win/commands/isClickable.js +1 -2
  227. package/build/ox_modules/module-win/commands/isExist.js +1 -3
  228. package/build/ox_modules/module-win/commands/isSelected.js +1 -2
  229. package/build/ox_modules/module-win/commands/isVisible.js +1 -3
  230. package/build/ox_modules/module-win/commands/open.js +1 -2
  231. package/build/ox_modules/module-win/commands/pause.js +1 -2
  232. package/build/ox_modules/module-win/commands/rightClick.js +1 -2
  233. package/build/ox_modules/module-win/commands/selectWindow.js +1 -15
  234. package/build/ox_modules/module-win/commands/sendKeys.js +1 -4
  235. package/build/ox_modules/module-win/commands/setTimeout.js +1 -2
  236. package/build/ox_modules/module-win/commands/takeScreenshot.js +1 -2
  237. package/build/ox_modules/module-win/commands/tap.js +1 -2
  238. package/build/ox_modules/module-win/commands/type.js +1 -4
  239. package/build/ox_modules/module-win/commands/waitForExist.js +1 -2
  240. package/build/ox_modules/module-win/commands/waitForInteractable.js +1 -4
  241. package/build/ox_modules/module-win/commands/waitForVisible.js +1 -2
  242. package/build/ox_modules/module-win.js +48 -87
  243. package/build/ox_modules/utils.js +22 -76
  244. package/build/ox_reporters/reporter-excel.js +1 -58
  245. package/build/ox_reporters/reporter-html.js +1 -28
  246. package/build/ox_reporters/reporter-json.js +1 -14
  247. package/build/ox_reporters/reporter-junit.js +1 -24
  248. package/build/ox_reporters/reporter-pdf.js +1 -19
  249. package/build/ox_reporters/reporter-xml.js +1 -17
  250. package/build/ox_services/service-devtools/submodule-network.js +3 -84
  251. package/build/ox_services/service-devtools.js +1 -23
  252. package/build/reporter/FileReporterBase.js +5 -44
  253. package/build/reporter/ReportAggregator.js +1 -65
  254. package/build/reporter/ReporterBase.js +1 -6
  255. package/build/runners/WorkerProcess.js +1 -99
  256. package/build/runners/cucumber/CucumberEventListener.js +4 -29
  257. package/build/runners/cucumber/CucumberReporter.js +1 -56
  258. package/build/runners/cucumber/CucumberWorker.js +1 -66
  259. package/build/runners/cucumber/index.js +1 -30
  260. package/build/runners/cucumber/worker.js +1 -18
  261. package/build/runners/index.js +1 -6
  262. package/build/runners/oxygen/OxygenWorker.js +20 -54
  263. package/build/runners/oxygen/index.js +17 -177
  264. package/build/runners/oxygen/worker.js +2 -25
  265. package/package.json +28 -29
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
-
5
4
  module.exports = function () {
6
5
  return {
7
6
  name: null,
@@ -12,4 +11,4 @@ module.exports = function () {
12
11
  poManager: null
13
12
  };
14
13
  };
15
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC90ZXN0c3VpdGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm5hbWUiLCJpZCIsIml0ZXJhdGlvbkNvdW50IiwiY2FzZXMiLCJwYXJhbU1hbmFnZXIiLCJwb01hbmFnZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFTQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVk7QUFDekIsU0FBTztBQUNIQyxJQUFBQSxJQUFJLEVBQUUsSUFESDtBQUVIQyxJQUFBQSxFQUFFLEVBQUUsSUFGRDtBQUdIQyxJQUFBQSxjQUFjLEVBQUUsQ0FIYjtBQUlIQyxJQUFBQSxLQUFLLEVBQUUsRUFKSjtBQUtIQyxJQUFBQSxZQUFZLEVBQUUsSUFMWDtBQU1IQyxJQUFBQSxTQUFTLEVBQUU7QUFOUixHQUFQO0FBUUgsQ0FURCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE3IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIG5hbWU6IG51bGwsXHJcbiAgICAgICAgaWQ6IG51bGwsXHJcbiAgICAgICAgaXRlcmF0aW9uQ291bnQ6IDEsXHJcbiAgICAgICAgY2FzZXM6IFtdLFxyXG4gICAgICAgIHBhcmFtTWFuYWdlcjogbnVsbCxcclxuICAgICAgICBwb01hbmFnZXI6IG51bGxcclxuICAgIH07XHJcbn07XHJcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibmFtZSIsImlkIiwiaXRlcmF0aW9uQ291bnQiLCJjYXNlcyIsInBhcmFtTWFuYWdlciIsInBvTWFuYWdlciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tb2RlbC90ZXN0c3VpdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTcgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogbnVsbCxcclxuICAgICAgICBpZDogbnVsbCxcclxuICAgICAgICBpdGVyYXRpb25Db3VudDogMSxcclxuICAgICAgICBjYXNlczogW10sXHJcbiAgICAgICAgcGFyYW1NYW5hZ2VyOiBudWxsLFxyXG4gICAgICAgIHBvTWFuYWdlcjogbnVsbFxyXG4gICAgfTtcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7QUFTQUEsTUFBTSxDQUFDQyxPQUFPLEdBQUcsWUFBWTtFQUN6QixPQUFPO0lBQ0hDLElBQUksRUFBRSxJQUFJO0lBQ1ZDLEVBQUUsRUFBRSxJQUFJO0lBQ1JDLGNBQWMsRUFBRSxDQUFDO0lBQ2pCQyxLQUFLLEVBQUUsRUFBRTtJQUNUQyxZQUFZLEVBQUUsSUFBSTtJQUNsQkMsU0FBUyxFQUFFO0VBQ2YsQ0FBQztBQUNMLENBQUMifQ==
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "pdf", {
63
63
  return _modulePdf.default;
64
64
  }
65
65
  });
66
+ Object.defineProperty(exports, "proxy", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _moduleProxy.default;
70
+ }
71
+ });
66
72
  Object.defineProperty(exports, "serial", {
67
73
  enumerable: true,
68
74
  get: function () {
@@ -87,68 +93,42 @@ Object.defineProperty(exports, "twilio", {
87
93
  return _moduleTwilio.default;
88
94
  }
89
95
  });
90
- Object.defineProperty(exports, "web", {
91
- enumerable: true,
92
- get: function () {
93
- return _moduleWeb.default;
94
- }
95
- });
96
- Object.defineProperty(exports, "win", {
96
+ Object.defineProperty(exports, "utils", {
97
97
  enumerable: true,
98
98
  get: function () {
99
- return _moduleWin.default;
99
+ return _moduleUtils.default;
100
100
  }
101
101
  });
102
- Object.defineProperty(exports, "proxy", {
102
+ Object.defineProperty(exports, "web", {
103
103
  enumerable: true,
104
104
  get: function () {
105
- return _moduleProxy.default;
105
+ return _moduleWeb.default;
106
106
  }
107
107
  });
108
- Object.defineProperty(exports, "utils", {
108
+ Object.defineProperty(exports, "win", {
109
109
  enumerable: true,
110
110
  get: function () {
111
- return _moduleUtils.default;
111
+ return _moduleWin.default;
112
112
  }
113
113
  });
114
-
115
114
  require("source-map-support/register");
116
-
117
115
  var _moduleAssert = _interopRequireDefault(require("./module-assert"));
118
-
119
116
  var _moduleDate = _interopRequireDefault(require("./module-date"));
120
-
121
117
  var _moduleDb = _interopRequireDefault(require("./module-db"));
122
-
123
118
  var _moduleEmail = _interopRequireDefault(require("./module-email"));
124
-
125
119
  var _moduleEyes = _interopRequireDefault(require("./module-eyes"));
126
-
127
120
  var _moduleHttp = _interopRequireDefault(require("./module-http"));
128
-
129
121
  var _moduleLog = _interopRequireDefault(require("./module-log"));
130
-
131
122
  var _moduleMailinator = _interopRequireDefault(require("./module-mailinator"));
132
-
133
123
  var _moduleMob = _interopRequireDefault(require("./module-mob"));
134
-
135
124
  var _modulePdf = _interopRequireDefault(require("./module-pdf"));
136
-
137
125
  var _moduleSerial = _interopRequireDefault(require("./module-serial"));
138
-
139
126
  var _moduleShell = _interopRequireDefault(require("./module-shell"));
140
-
141
127
  var _moduleSoap = _interopRequireDefault(require("./module-soap"));
142
-
143
128
  var _moduleTwilio = _interopRequireDefault(require("./module-twilio"));
144
-
145
129
  var _moduleWeb = _interopRequireDefault(require("./module-web"));
146
-
147
130
  var _moduleWin = _interopRequireDefault(require("./module-win"));
148
-
149
131
  var _moduleProxy = _interopRequireDefault(require("./module-proxy"));
150
-
151
132
  var _moduleUtils = _interopRequireDefault(require("./module-utils"));
152
-
153
133
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
154
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL2luZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge2RlZmF1bHQgYXMgYXNzZXJ0fSBmcm9tICcuL21vZHVsZS1hc3NlcnQnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZGF0ZX0gZnJvbSAnLi9tb2R1bGUtZGF0ZSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBkYn0gZnJvbSAnLi9tb2R1bGUtZGInO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZW1haWx9IGZyb20gJy4vbW9kdWxlLWVtYWlsJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGV5ZXN9IGZyb20gJy4vbW9kdWxlLWV5ZXMnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgaHR0cH0gZnJvbSAnLi9tb2R1bGUtaHR0cCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBsb2d9IGZyb20gJy4vbW9kdWxlLWxvZyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtYWlsaW5hdG9yfSBmcm9tICcuL21vZHVsZS1tYWlsaW5hdG9yJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIG1vYn0gZnJvbSAnLi9tb2R1bGUtbW9iJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHBkZn0gZnJvbSAnLi9tb2R1bGUtcGRmJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHNlcmlhbH0gZnJvbSAnLi9tb2R1bGUtc2VyaWFsJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHNoZWxsfSBmcm9tICcuL21vZHVsZS1zaGVsbCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzb2FwfSBmcm9tICcuL21vZHVsZS1zb2FwJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHR3aWxpb30gZnJvbSAnLi9tb2R1bGUtdHdpbGlvJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHdlYn0gZnJvbSAnLi9tb2R1bGUtd2ViJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHdpbn0gZnJvbSAnLi9tb2R1bGUtd2luJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIHByb3h5fSBmcm9tICcuL21vZHVsZS1wcm94eSc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB1dGlsc30gZnJvbSAnLi9tb2R1bGUtdXRpbHMnOyJdfQ==
134
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL294X21vZHVsZXMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIGFzc2VydH0gZnJvbSAnLi9tb2R1bGUtYXNzZXJ0JztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGRhdGV9IGZyb20gJy4vbW9kdWxlLWRhdGUnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgZGJ9IGZyb20gJy4vbW9kdWxlLWRiJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGVtYWlsfSBmcm9tICcuL21vZHVsZS1lbWFpbCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleWVzfSBmcm9tICcuL21vZHVsZS1leWVzJztcclxuZXhwb3J0IHtkZWZhdWx0IGFzIGh0dHB9IGZyb20gJy4vbW9kdWxlLWh0dHAnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbG9nfSBmcm9tICcuL21vZHVsZS1sb2cnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgbWFpbGluYXRvcn0gZnJvbSAnLi9tb2R1bGUtbWFpbGluYXRvcic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBtb2J9IGZyb20gJy4vbW9kdWxlLW1vYic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwZGZ9IGZyb20gJy4vbW9kdWxlLXBkZic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzZXJpYWx9IGZyb20gJy4vbW9kdWxlLXNlcmlhbCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBzaGVsbH0gZnJvbSAnLi9tb2R1bGUtc2hlbGwnO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgc29hcH0gZnJvbSAnLi9tb2R1bGUtc29hcCc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0d2lsaW99IGZyb20gJy4vbW9kdWxlLXR3aWxpbyc7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3ZWJ9IGZyb20gJy4vbW9kdWxlLXdlYic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyB3aW59IGZyb20gJy4vbW9kdWxlLXdpbic7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcm94eX0gZnJvbSAnLi9tb2R1bGUtcHJveHknO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgdXRpbHN9IGZyb20gJy4vbW9kdWxlLXV0aWxzJzsiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFnRCJ9
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
-
5
4
  var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
6
-
7
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
6
  /*
10
7
  * Copyright (C) 2015-present CloudBeat Limited
11
8
  *
@@ -19,20 +16,18 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
19
16
  * @name assert
20
17
  * @description Provides generic assertion methods.
21
18
  */
22
- const chai = require('chai');
23
19
 
20
+ const chai = require('chai');
24
21
  const errHelper = require('../errors/helper');
25
- /*global ox*/
26
22
 
23
+ /*global ox*/
27
24
 
28
25
  module.exports = function () {
29
26
  module.isInitialized = function () {
30
27
  return true;
31
28
  };
32
-
33
29
  module._takeScreenshotSilent = function (name) {
34
30
  var mod;
35
-
36
31
  if (ox && ox.modules && ox.modules.mob && ox.modules.mob.getDriver && ox.modules.mob.getDriver()) {
37
32
  mod = ox.modules.mob;
38
33
  } else if (ox && ox.modules && ox.modules.web && ox.modules.web.getDriver && ox.modules.web.getDriver()) {
@@ -40,18 +35,16 @@ module.exports = function () {
40
35
  } else if (ox && ox.modules && ox.modules.win && ox.modules.win.getDriver && ox.modules.win.getDriver()) {
41
36
  mod = ox.modules.win;
42
37
  }
43
-
44
38
  if (mod && mod._takeScreenshotSilent) {
45
39
  return mod._takeScreenshotSilent();
46
40
  } else {
47
41
  return null;
48
42
  }
49
- }; // take screenshot on error if either web, mob, or win module is initialized
50
-
43
+ };
51
44
 
45
+ // take screenshot on error if either web, mob, or win module is initialized
52
46
  module._takeScreenshot = function (name) {
53
47
  var mod;
54
-
55
48
  if (ox && ox.modules && ox.modules.mob && ox.modules.mob.getDriver && ox.modules.mob.getDriver()) {
56
49
  mod = ox.modules.mob;
57
50
  } else if (ox && ox.modules && ox.modules.web && ox.modules.web.getDriver && ox.modules.web.getDriver()) {
@@ -59,9 +52,9 @@ module.exports = function () {
59
52
  } else if (ox && ox.modules && ox.modules.win && ox.modules.win.getDriver && ox.modules.win.getDriver()) {
60
53
  mod = ox.modules.win;
61
54
  }
62
-
63
55
  return mod ? mod.takeScreenshot() : null;
64
56
  };
57
+
65
58
  /**
66
59
  * @summary Asserts that the string value contains a substring.
67
60
  * @function contain
@@ -69,8 +62,6 @@ module.exports = function () {
69
62
  * @param {String} contains - Verbatim string to be contained.
70
63
  * @param {String=} message - Message to throw if assertion fails.
71
64
  */
72
-
73
-
74
65
  module.contain = function (actual, contains, message) {
75
66
  try {
76
67
  chai.expect(actual).to.contain(contains, message);
@@ -78,6 +69,7 @@ module.exports = function () {
78
69
  throw new _OxygenError.default(errHelper.errorCode.ASSERT_ERROR, e.message);
79
70
  }
80
71
  };
72
+
81
73
  /**
82
74
  * @summary Asserts that two values are equal (non-strict equality).
83
75
  * @function equal
@@ -85,8 +77,6 @@ module.exports = function () {
85
77
  * @param {Object} expected - Expected value. Either an object or a string prefixed with `regex:`.
86
78
  * @param {String=} message - Message to throw if assertion fails.
87
79
  */
88
-
89
-
90
80
  module.equal = function (actual, expected, message) {
91
81
  try {
92
82
  if (expected && typeof expected === 'string' && expected.indexOf('regex:') === 0) {
@@ -106,8 +96,6 @@ module.exports = function () {
106
96
  * @param {Object} expected - Expected value. Either an object or a string prefixed with `regex:`.
107
97
  * @param {String=} message - Message to throw if assertion fails.
108
98
  */
109
-
110
-
111
99
  module.notEqual = function (actual, expected, message) {
112
100
  try {
113
101
  if (expected && typeof expected === 'string' && expected.indexOf('regex:') === 0) {
@@ -125,22 +113,18 @@ module.exports = function () {
125
113
  * @function fail
126
114
  * @param {String=} message - Error message to return.
127
115
  */
128
-
129
-
130
116
  module.fail = function (message) {
131
117
  throw new _OxygenError.default(errHelper.errorCode.ASSERT_ERROR, message);
132
118
  };
119
+
133
120
  /**
134
121
  * @summary Passes the test with the given message.
135
122
  * @function pass
136
123
  * @param {String=} message - Message to return.
137
124
  */
138
-
139
-
140
125
  module.pass = function (message) {
141
126
  throw new _OxygenError.default(errHelper.errorCode.ASSERT_PASSED, message);
142
127
  };
143
-
144
128
  return module;
145
129
  };
146
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1hc3NlcnQuanMiXSwibmFtZXMiOlsiY2hhaSIsInJlcXVpcmUiLCJlcnJIZWxwZXIiLCJtb2R1bGUiLCJleHBvcnRzIiwiaXNJbml0aWFsaXplZCIsIl90YWtlU2NyZWVuc2hvdFNpbGVudCIsIm5hbWUiLCJtb2QiLCJveCIsIm1vZHVsZXMiLCJtb2IiLCJnZXREcml2ZXIiLCJ3ZWIiLCJ3aW4iLCJfdGFrZVNjcmVlbnNob3QiLCJ0YWtlU2NyZWVuc2hvdCIsImNvbnRhaW4iLCJhY3R1YWwiLCJjb250YWlucyIsIm1lc3NhZ2UiLCJleHBlY3QiLCJ0byIsImUiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiQVNTRVJUX0VSUk9SIiwiZXF1YWwiLCJleHBlY3RlZCIsImluZGV4T2YiLCJyZWdleCIsIlJlZ0V4cCIsInN1YnN0cmluZyIsImxlbmd0aCIsImFzc2VydCIsIm1hdGNoIiwibm90RXF1YWwiLCJub3RNYXRjaCIsImZhaWwiLCJwYXNzIiwiQVNTRVJUX1BBU1NFRCJdLCJtYXBwaW5ncyI6Ijs7OztBQWVBOzs7O0FBZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBRUEsTUFBTUMsU0FBUyxHQUFHRCxPQUFPLENBQUMsa0JBQUQsQ0FBekI7QUFFQTs7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFXO0FBQ3hCRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLHFCQUFQLEdBQStCLFVBQVNDLElBQVQsRUFBZTtBQUMxQyxRQUFJQyxHQUFKOztBQUNBLFFBQUlDLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxPQUFULElBQW9CRCxFQUFFLENBQUNDLE9BQUgsQ0FBV0MsR0FBL0IsSUFBc0NGLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXQyxHQUFYLENBQWVDLFNBQXJELElBQWtFSCxFQUFFLENBQUNDLE9BQUgsQ0FBV0MsR0FBWCxDQUFlQyxTQUFmLEVBQXRFLEVBQWtHO0FBQzlGSixNQUFBQSxHQUFHLEdBQUdDLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXQyxHQUFqQjtBQUNILEtBRkQsTUFFTyxJQUFJRixFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsT0FBVCxJQUFvQkQsRUFBRSxDQUFDQyxPQUFILENBQVdHLEdBQS9CLElBQXNDSixFQUFFLENBQUNDLE9BQUgsQ0FBV0csR0FBWCxDQUFlRCxTQUFyRCxJQUFrRUgsRUFBRSxDQUFDQyxPQUFILENBQVdHLEdBQVgsQ0FBZUQsU0FBZixFQUF0RSxFQUFrRztBQUNyR0osTUFBQUEsR0FBRyxHQUFHQyxFQUFFLENBQUNDLE9BQUgsQ0FBV0csR0FBakI7QUFDSCxLQUZNLE1BRUEsSUFBSUosRUFBRSxJQUFJQSxFQUFFLENBQUNDLE9BQVQsSUFBb0JELEVBQUUsQ0FBQ0MsT0FBSCxDQUFXSSxHQUEvQixJQUFzQ0wsRUFBRSxDQUFDQyxPQUFILENBQVdJLEdBQVgsQ0FBZUYsU0FBckQsSUFBa0VILEVBQUUsQ0FBQ0MsT0FBSCxDQUFXSSxHQUFYLENBQWVGLFNBQWYsRUFBdEUsRUFBa0c7QUFDckdKLE1BQUFBLEdBQUcsR0FBR0MsRUFBRSxDQUFDQyxPQUFILENBQVdJLEdBQWpCO0FBQ0g7O0FBRUQsUUFBSU4sR0FBRyxJQUFJQSxHQUFHLENBQUNGLHFCQUFmLEVBQXNDO0FBQ2xDLGFBQU9FLEdBQUcsQ0FBQ0YscUJBQUosRUFBUDtBQUNILEtBRkQsTUFFTztBQUNILGFBQU8sSUFBUDtBQUNIO0FBQ0osR0FmRCxDQUx3QixDQXNCeEI7OztBQUNBSCxFQUFBQSxNQUFNLENBQUNZLGVBQVAsR0FBeUIsVUFBU1IsSUFBVCxFQUFlO0FBQ3BDLFFBQUlDLEdBQUo7O0FBQ0EsUUFBSUMsRUFBRSxJQUFJQSxFQUFFLENBQUNDLE9BQVQsSUFBb0JELEVBQUUsQ0FBQ0MsT0FBSCxDQUFXQyxHQUEvQixJQUFzQ0YsRUFBRSxDQUFDQyxPQUFILENBQVdDLEdBQVgsQ0FBZUMsU0FBckQsSUFBa0VILEVBQUUsQ0FBQ0MsT0FBSCxDQUFXQyxHQUFYLENBQWVDLFNBQWYsRUFBdEUsRUFBa0c7QUFDOUZKLE1BQUFBLEdBQUcsR0FBR0MsRUFBRSxDQUFDQyxPQUFILENBQVdDLEdBQWpCO0FBQ0gsS0FGRCxNQUVPLElBQUlGLEVBQUUsSUFBSUEsRUFBRSxDQUFDQyxPQUFULElBQW9CRCxFQUFFLENBQUNDLE9BQUgsQ0FBV0csR0FBL0IsSUFBc0NKLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXRyxHQUFYLENBQWVELFNBQXJELElBQWtFSCxFQUFFLENBQUNDLE9BQUgsQ0FBV0csR0FBWCxDQUFlRCxTQUFmLEVBQXRFLEVBQWtHO0FBQ3JHSixNQUFBQSxHQUFHLEdBQUdDLEVBQUUsQ0FBQ0MsT0FBSCxDQUFXRyxHQUFqQjtBQUNILEtBRk0sTUFFQSxJQUFJSixFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsT0FBVCxJQUFvQkQsRUFBRSxDQUFDQyxPQUFILENBQVdJLEdBQS9CLElBQXNDTCxFQUFFLENBQUNDLE9BQUgsQ0FBV0ksR0FBWCxDQUFlRixTQUFyRCxJQUFrRUgsRUFBRSxDQUFDQyxPQUFILENBQVdJLEdBQVgsQ0FBZUYsU0FBZixFQUF0RSxFQUFrRztBQUNyR0osTUFBQUEsR0FBRyxHQUFHQyxFQUFFLENBQUNDLE9BQUgsQ0FBV0ksR0FBakI7QUFDSDs7QUFDRCxXQUFPTixHQUFHLEdBQUdBLEdBQUcsQ0FBQ1EsY0FBSixFQUFILEdBQTBCLElBQXBDO0FBQ0gsR0FWRDtBQVlBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSWIsRUFBQUEsTUFBTSxDQUFDYyxPQUFQLEdBQWlCLFVBQVNDLE1BQVQsRUFBaUJDLFFBQWpCLEVBQTJCQyxPQUEzQixFQUFvQztBQUNqRCxRQUFJO0FBQ0FwQixNQUFBQSxJQUFJLENBQUNxQixNQUFMLENBQVlILE1BQVosRUFBb0JJLEVBQXBCLENBQXVCTCxPQUF2QixDQUErQkUsUUFBL0IsRUFBeUNDLE9BQXpDO0FBQ0gsS0FGRCxDQUdBLE9BQU9HLENBQVAsRUFBVTtBQUNOLFlBQU0sSUFBSUMsb0JBQUosQ0FBWXRCLFNBQVMsQ0FBQ3VCLFNBQVYsQ0FBb0JDLFlBQWhDLEVBQThDSCxDQUFDLENBQUNILE9BQWhELENBQU47QUFDSDtBQUNKLEdBUEQ7QUFTQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lqQixFQUFBQSxNQUFNLENBQUN3QixLQUFQLEdBQWUsVUFBU1QsTUFBVCxFQUFpQlUsUUFBakIsRUFBMkJSLE9BQTNCLEVBQW9DO0FBQy9DLFFBQUk7QUFDQSxVQUFJUSxRQUFRLElBQUksT0FBT0EsUUFBUCxLQUFvQixRQUFoQyxJQUE0Q0EsUUFBUSxDQUFDQyxPQUFULENBQWlCLFFBQWpCLE1BQStCLENBQS9FLEVBQWtGO0FBQzlFLFlBQUlDLEtBQUssR0FBRyxJQUFJQyxNQUFKLENBQVdILFFBQVEsQ0FBQ0ksU0FBVCxDQUFtQixTQUFTQyxNQUE1QixDQUFYLENBQVo7QUFDQWpDLFFBQUFBLElBQUksQ0FBQ2tDLE1BQUwsQ0FBWUMsS0FBWixDQUFrQmpCLE1BQWxCLEVBQTBCWSxLQUExQixFQUFpQ1YsT0FBakM7QUFDSCxPQUhELE1BR087QUFDSHBCLFFBQUFBLElBQUksQ0FBQ2tDLE1BQUwsQ0FBWVAsS0FBWixDQUFrQlQsTUFBbEIsRUFBMEJVLFFBQTFCLEVBQW9DUixPQUFwQztBQUNIO0FBQ0osS0FQRCxDQVFBLE9BQU9HLENBQVAsRUFBVTtBQUNOLFlBQU0sSUFBSUMsb0JBQUosQ0FBWXRCLFNBQVMsQ0FBQ3VCLFNBQVYsQ0FBb0JDLFlBQWhDLEVBQThDSCxDQUFDLENBQUNILE9BQWhELENBQU47QUFDSDtBQUNKLEdBWkQ7QUFhQTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lqQixFQUFBQSxNQUFNLENBQUNpQyxRQUFQLEdBQWtCLFVBQVNsQixNQUFULEVBQWlCVSxRQUFqQixFQUEyQlIsT0FBM0IsRUFBb0M7QUFDbEQsUUFBSTtBQUNBLFVBQUlRLFFBQVEsSUFBSSxPQUFPQSxRQUFQLEtBQW9CLFFBQWhDLElBQTRDQSxRQUFRLENBQUNDLE9BQVQsQ0FBaUIsUUFBakIsTUFBK0IsQ0FBL0UsRUFBa0Y7QUFDOUUsWUFBSUMsS0FBSyxHQUFHLElBQUlDLE1BQUosQ0FBV0gsUUFBUSxDQUFDSSxTQUFULENBQW1CLFNBQVNDLE1BQTVCLENBQVgsQ0FBWjtBQUNBakMsUUFBQUEsSUFBSSxDQUFDa0MsTUFBTCxDQUFZRyxRQUFaLENBQXFCbkIsTUFBckIsRUFBNkJZLEtBQTdCLEVBQW9DVixPQUFwQztBQUNILE9BSEQsTUFHTztBQUNIcEIsUUFBQUEsSUFBSSxDQUFDa0MsTUFBTCxDQUFZRSxRQUFaLENBQXFCbEIsTUFBckIsRUFBNkJVLFFBQTdCLEVBQXVDUixPQUF2QztBQUNIO0FBQ0osS0FQRCxDQVFBLE9BQU9HLENBQVAsRUFBVTtBQUNOLFlBQU0sSUFBSUMsb0JBQUosQ0FBWXRCLFNBQVMsQ0FBQ3VCLFNBQVYsQ0FBb0JDLFlBQWhDLEVBQThDSCxDQUFDLENBQUNILE9BQWhELENBQU47QUFDSDtBQUNKLEdBWkQ7QUFhQTtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSWpCLEVBQUFBLE1BQU0sQ0FBQ21DLElBQVAsR0FBYyxVQUFTbEIsT0FBVCxFQUFrQjtBQUM1QixVQUFNLElBQUlJLG9CQUFKLENBQVl0QixTQUFTLENBQUN1QixTQUFWLENBQW9CQyxZQUFoQyxFQUE4Q04sT0FBOUMsQ0FBTjtBQUNILEdBRkQ7QUFJQTtBQUNKO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSWpCLEVBQUFBLE1BQU0sQ0FBQ29DLElBQVAsR0FBYyxVQUFTbkIsT0FBVCxFQUFrQjtBQUM1QixVQUFNLElBQUlJLG9CQUFKLENBQVl0QixTQUFTLENBQUN1QixTQUFWLENBQW9CZSxhQUFoQyxFQUErQ3BCLE9BQS9DLENBQU47QUFDSCxHQUZEOztBQUlBLFNBQU9qQixNQUFQO0FBQ0gsQ0E5R0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBhc3NlcnRcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGdlbmVyaWMgYXNzZXJ0aW9uIG1ldGhvZHMuXHJcbiAqL1xyXG5cclxuY29uc3QgY2hhaSA9IHJlcXVpcmUoJ2NoYWknKTtcclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuY29uc3QgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5cclxuLypnbG9iYWwgb3gqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fdGFrZVNjcmVlbnNob3RTaWxlbnQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICAgICAgdmFyIG1vZDtcclxuICAgICAgICBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLm1vYiAmJiBveC5tb2R1bGVzLm1vYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy5tb2I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2ViICYmIG94Lm1vZHVsZXMud2ViLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndlYjtcclxuICAgICAgICB9IGVsc2UgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy53aW4gJiYgb3gubW9kdWxlcy53aW4uZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMud2luO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG1vZCAmJiBtb2QuX3Rha2VTY3JlZW5zaG90U2lsZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2QuX3Rha2VTY3JlZW5zaG90U2lsZW50KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyB0YWtlIHNjcmVlbnNob3Qgb24gZXJyb3IgaWYgZWl0aGVyIHdlYiwgbW9iLCBvciB3aW4gbW9kdWxlIGlzIGluaXRpYWxpemVkXHJcbiAgICBtb2R1bGUuX3Rha2VTY3JlZW5zaG90ID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgICAgIHZhciBtb2Q7XHJcbiAgICAgICAgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy5tb2IgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMubW9iLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMubW9iO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLndlYiAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy53ZWIuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy53ZWI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2luICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndpbi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndpbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1vZCA/IG1vZC50YWtlU2NyZWVuc2hvdCgpIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnRzIHRoYXQgdGhlIHN0cmluZyB2YWx1ZSBjb250YWlucyBhIHN1YnN0cmluZy5cclxuICAgICAqIEBmdW5jdGlvbiBjb250YWluXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWN0dWFsIC0gQWN0dWFsIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbnRhaW5zIC0gVmVyYmF0aW0gc3RyaW5nIHRvIGJlIGNvbnRhaW5lZC4gXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBNZXNzYWdlIHRvIHRocm93IGlmIGFzc2VydGlvbiBmYWlscy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNvbnRhaW4gPSBmdW5jdGlvbihhY3R1YWwsIGNvbnRhaW5zLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY2hhaS5leHBlY3QoYWN0dWFsKS50by5jb250YWluKGNvbnRhaW5zLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBlcXVhbCAobm9uLXN0cmljdCBlcXVhbGl0eSkuXHJcbiAgICAgKiBAZnVuY3Rpb24gZXF1YWxcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWQgLSBFeHBlY3RlZCB2YWx1ZS4gRWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5lcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5tYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgZXF1YWwgKG5vbi1zdHJpY3QgaW5lcXVhbGl0eSkuXHJcbiAgICAgKiBAZnVuY3Rpb24gbm90RXF1YWxcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWQgLSBFeHBlY3RlZCB2YWx1ZS4gRWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5ub3RFcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5ub3RNYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEZhaWxzIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cclxuICAgICAqIEBmdW5jdGlvbiBmYWlsXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIHJldHVybi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmZhaWwgPSBmdW5jdGlvbihtZXNzYWdlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBhc3NlcyB0aGUgdGVzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxyXG4gICAgICogQGZ1bmN0aW9uIHBhc3NcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gbWVzc2FnZSAtIE1lc3NhZ2UgdG8gcmV0dXJuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUucGFzcyA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcclxuICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9QQVNTRUQsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
130
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjaGFpIiwicmVxdWlyZSIsImVyckhlbHBlciIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX3Rha2VTY3JlZW5zaG90U2lsZW50IiwibmFtZSIsIm1vZCIsIm94IiwibW9kdWxlcyIsIm1vYiIsImdldERyaXZlciIsIndlYiIsIndpbiIsIl90YWtlU2NyZWVuc2hvdCIsInRha2VTY3JlZW5zaG90IiwiY29udGFpbiIsImFjdHVhbCIsImNvbnRhaW5zIiwibWVzc2FnZSIsImV4cGVjdCIsInRvIiwiZSIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJBU1NFUlRfRVJST1IiLCJlcXVhbCIsImV4cGVjdGVkIiwiaW5kZXhPZiIsInJlZ2V4IiwiUmVnRXhwIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiYXNzZXJ0IiwibWF0Y2giLCJub3RFcXVhbCIsIm5vdE1hdGNoIiwiZmFpbCIsInBhc3MiLCJBU1NFUlRfUEFTU0VEIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL294X21vZHVsZXMvbW9kdWxlLWFzc2VydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBhc3NlcnRcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIGdlbmVyaWMgYXNzZXJ0aW9uIG1ldGhvZHMuXHJcbiAqL1xyXG5cclxuY29uc3QgY2hhaSA9IHJlcXVpcmUoJ2NoYWknKTtcclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxuY29uc3QgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5cclxuLypnbG9iYWwgb3gqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fdGFrZVNjcmVlbnNob3RTaWxlbnQgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICAgICAgdmFyIG1vZDtcclxuICAgICAgICBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLm1vYiAmJiBveC5tb2R1bGVzLm1vYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy5tb2I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2ViICYmIG94Lm1vZHVsZXMud2ViLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndlYjtcclxuICAgICAgICB9IGVsc2UgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy53aW4gJiYgb3gubW9kdWxlcy53aW4uZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMud2luO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKG1vZCAmJiBtb2QuX3Rha2VTY3JlZW5zaG90U2lsZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtb2QuX3Rha2VTY3JlZW5zaG90U2lsZW50KCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyB0YWtlIHNjcmVlbnNob3Qgb24gZXJyb3IgaWYgZWl0aGVyIHdlYiwgbW9iLCBvciB3aW4gbW9kdWxlIGlzIGluaXRpYWxpemVkXHJcbiAgICBtb2R1bGUuX3Rha2VTY3JlZW5zaG90ID0gZnVuY3Rpb24obmFtZSkge1xyXG4gICAgICAgIHZhciBtb2Q7XHJcbiAgICAgICAgaWYgKG94ICYmIG94Lm1vZHVsZXMgJiYgb3gubW9kdWxlcy5tb2IgJiYgb3gubW9kdWxlcy5tb2IuZ2V0RHJpdmVyICYmIG94Lm1vZHVsZXMubW9iLmdldERyaXZlcigpKSB7XHJcbiAgICAgICAgICAgIG1vZCA9IG94Lm1vZHVsZXMubW9iO1xyXG4gICAgICAgIH0gZWxzZSBpZiAob3ggJiYgb3gubW9kdWxlcyAmJiBveC5tb2R1bGVzLndlYiAmJiBveC5tb2R1bGVzLndlYi5nZXREcml2ZXIgJiYgb3gubW9kdWxlcy53ZWIuZ2V0RHJpdmVyKCkpIHtcclxuICAgICAgICAgICAgbW9kID0gb3gubW9kdWxlcy53ZWI7XHJcbiAgICAgICAgfSBlbHNlIGlmIChveCAmJiBveC5tb2R1bGVzICYmIG94Lm1vZHVsZXMud2luICYmIG94Lm1vZHVsZXMud2luLmdldERyaXZlciAmJiBveC5tb2R1bGVzLndpbi5nZXREcml2ZXIoKSkge1xyXG4gICAgICAgICAgICBtb2QgPSBveC5tb2R1bGVzLndpbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1vZCA/IG1vZC50YWtlU2NyZWVuc2hvdCgpIDogbnVsbDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnRzIHRoYXQgdGhlIHN0cmluZyB2YWx1ZSBjb250YWlucyBhIHN1YnN0cmluZy5cclxuICAgICAqIEBmdW5jdGlvbiBjb250YWluXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYWN0dWFsIC0gQWN0dWFsIHZhbHVlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGNvbnRhaW5zIC0gVmVyYmF0aW0gc3RyaW5nIHRvIGJlIGNvbnRhaW5lZC4gXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBNZXNzYWdlIHRvIHRocm93IGlmIGFzc2VydGlvbiBmYWlscy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNvbnRhaW4gPSBmdW5jdGlvbihhY3R1YWwsIGNvbnRhaW5zLCBtZXNzYWdlKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY2hhaS5leHBlY3QoYWN0dWFsKS50by5jb250YWluKGNvbnRhaW5zLCBtZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBlcXVhbCAobm9uLXN0cmljdCBlcXVhbGl0eSkuXHJcbiAgICAgKiBAZnVuY3Rpb24gZXF1YWxcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWQgLSBFeHBlY3RlZCB2YWx1ZS4gRWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5lcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5tYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydHMgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgZXF1YWwgKG5vbi1zdHJpY3QgaW5lcXVhbGl0eSkuXHJcbiAgICAgKiBAZnVuY3Rpb24gbm90RXF1YWxcclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3R1YWwgLSBBY3R1YWwgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZXhwZWN0ZWQgLSBFeHBlY3RlZCB2YWx1ZS4gRWl0aGVyIGFuIG9iamVjdCBvciBhIHN0cmluZyBwcmVmaXhlZCB3aXRoIGByZWdleDpgLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBtZXNzYWdlIC0gTWVzc2FnZSB0byB0aHJvdyBpZiBhc3NlcnRpb24gZmFpbHMuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5ub3RFcXVhbCA9IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJyAmJiBleHBlY3RlZC5pbmRleE9mKCdyZWdleDonKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cChleHBlY3RlZC5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSk7XHJcbiAgICAgICAgICAgICAgICBjaGFpLmFzc2VydC5ub3RNYXRjaChhY3R1YWwsIHJlZ2V4LCBtZXNzYWdlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNoYWkuYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEZhaWxzIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2FnZS5cclxuICAgICAqIEBmdW5jdGlvbiBmYWlsXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIHJldHVybi5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmZhaWwgPSBmdW5jdGlvbihtZXNzYWdlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBhc3NlcyB0aGUgdGVzdCB3aXRoIHRoZSBnaXZlbiBtZXNzYWdlLlxyXG4gICAgICogQGZ1bmN0aW9uIHBhc3NcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gbWVzc2FnZSAtIE1lc3NhZ2UgdG8gcmV0dXJuLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUucGFzcyA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcclxuICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9QQVNTRUQsIG1lc3NhZ2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXSwibWFwcGluZ3MiOiI7OztBQWVBO0FBQTRDO0FBZjVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBTSxDQUFDO0FBRTVCLE1BQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDLGtCQUFrQixDQUFDOztBQUU3Qzs7QUFFQUUsTUFBTSxDQUFDQyxPQUFPLEdBQUcsWUFBVztFQUN4QkQsTUFBTSxDQUFDRSxhQUFhLEdBQUcsWUFBVztJQUM5QixPQUFPLElBQUk7RUFDZixDQUFDO0VBRURGLE1BQU0sQ0FBQ0cscUJBQXFCLEdBQUcsVUFBU0MsSUFBSSxFQUFFO0lBQzFDLElBQUlDLEdBQUc7SUFDUCxJQUFJQyxFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsT0FBTyxJQUFJRCxFQUFFLENBQUNDLE9BQU8sQ0FBQ0MsR0FBRyxJQUFJRixFQUFFLENBQUNDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxTQUFTLElBQUlILEVBQUUsQ0FBQ0MsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFNBQVMsRUFBRSxFQUFFO01BQzlGSixHQUFHLEdBQUdDLEVBQUUsQ0FBQ0MsT0FBTyxDQUFDQyxHQUFHO0lBQ3hCLENBQUMsTUFBTSxJQUFJRixFQUFFLElBQUlBLEVBQUUsQ0FBQ0MsT0FBTyxJQUFJRCxFQUFFLENB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
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
-
5
4
  /*
6
5
  * Copyright (C) 2015-2018 CloudBeat Limited
7
6
  *
@@ -19,8 +18,8 @@ module.exports = function () {
19
18
  module.isInitialized = function () {
20
19
  return true;
21
20
  };
22
-
23
21
  var moment = require('moment');
22
+
24
23
  /**
25
24
  * @summary Returns current date and time
26
25
  * @description See http://momentjs.com/docs/#/displaying/format/ for supported format strings.
@@ -28,11 +27,10 @@ module.exports = function () {
28
27
  * @param {String} format - Format string.
29
28
  * @return {String} Date formatted according to the specified format string.
30
29
  */
31
-
32
-
33
30
  module.now = function (format) {
34
31
  return moment().format(format);
35
32
  };
33
+
36
34
  /**
37
35
  * @summary Returns a future or a past date
38
36
  * @function fromNow
@@ -41,8 +39,6 @@ module.exports = function () {
41
39
  * @param {String} format - Format string.
42
40
  * @return {String} Date formatted according to the specified format string.
43
41
  */
44
-
45
-
46
42
  module.fromNow = function (unit, value, format) {
47
43
  if (value < 0) {
48
44
  return moment().subtract(-value, unit).format(format);
@@ -50,7 +46,6 @@ module.exports = function () {
50
46
  return moment().add(value, unit).format(format);
51
47
  }
52
48
  };
53
-
54
49
  return module;
55
50
  };
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYXRlLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwibW9tZW50IiwicmVxdWlyZSIsIm5vdyIsImZvcm1hdCIsImZyb21Ob3ciLCJ1bml0IiwidmFsdWUiLCJzdWJ0cmFjdCIsImFkZCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFlBQVc7QUFDeEJELEVBQUFBLE1BQU0sQ0FBQ0UsYUFBUCxHQUF1QixZQUFXO0FBQzlCLFdBQU8sSUFBUDtBQUNILEdBRkQ7O0FBSUEsTUFBSUMsTUFBTSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjtBQUVBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDSUosRUFBQUEsTUFBTSxDQUFDSyxHQUFQLEdBQWEsVUFBU0MsTUFBVCxFQUFpQjtBQUMxQixXQUFPSCxNQUFNLEdBQUdHLE1BQVQsQ0FBZ0JBLE1BQWhCLENBQVA7QUFDSCxHQUZEO0FBSUE7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0lOLEVBQUFBLE1BQU0sQ0FBQ08sT0FBUCxHQUFpQixVQUFTQyxJQUFULEVBQWVDLEtBQWYsRUFBc0JILE1BQXRCLEVBQThCO0FBQzNDLFFBQUlHLEtBQUssR0FBRyxDQUFaLEVBQWU7QUFDWCxhQUFPTixNQUFNLEdBQUdPLFFBQVQsQ0FBa0IsQ0FBQ0QsS0FBbkIsRUFBMEJELElBQTFCLEVBQWdDRixNQUFoQyxDQUF1Q0EsTUFBdkMsQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNILGFBQU9ILE1BQU0sR0FBR1EsR0FBVCxDQUFhRixLQUFiLEVBQW9CRCxJQUFwQixFQUEwQkYsTUFBMUIsQ0FBaUNBLE1BQWpDLENBQVA7QUFDSDtBQUNKLEdBTkQ7O0FBUUEsU0FBT04sTUFBUDtBQUNILENBbkNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZGF0ZVxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIGRhdGVzLlxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgY3VycmVudCBkYXRlIGFuZCB0aW1lXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZG9jcy8jL2Rpc3BsYXlpbmcvZm9ybWF0LyBmb3Igc3VwcG9ydGVkIGZvcm1hdCBzdHJpbmdzLlxyXG4gICAgICogQGZ1bmN0aW9uIG5vd1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIEZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IERhdGUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5ub3cgPSBmdW5jdGlvbihmb3JtYXQpIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KCkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBhIGZ1dHVyZSBvciBhIHBhc3QgZGF0ZVxyXG4gICAgICogQGZ1bmN0aW9uIGZyb21Ob3dcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1bml0IC0gVW5pdCB0eXBlLiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9kb2NzLyMvbWFuaXB1bGF0aW5nL2FkZC9cclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZSAtIE51bWJlciBvZiBtaW51dGVzL2RheXMvbW9udGhzL2V0YyB0byBhZGQgb3Igc3VidHJhY3QgZnJvbSB0aGUgY3VycmVudCBkYXRlLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGZvcm1hdCAtIEZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IERhdGUgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGZvcm1hdCBzdHJpbmcuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5mcm9tTm93ID0gZnVuY3Rpb24odW5pdCwgdmFsdWUsIGZvcm1hdCkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA8IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vbWVudCgpLnN1YnRyYWN0KC12YWx1ZSwgdW5pdCkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1vbWVudCgpLmFkZCh2YWx1ZSwgdW5pdCkuZm9ybWF0KGZvcm1hdCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiaXNJbml0aWFsaXplZCIsIm1vbWVudCIsInJlcXVpcmUiLCJub3ciLCJmb3JtYXQiLCJmcm9tTm93IiwidW5pdCIsInZhbHVlIiwic3VidHJhY3QiLCJhZGQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfbW9kdWxlcy9tb2R1bGUtZGF0ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBkYXRlXHJcbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBtZXRob2RzIGZvciB3b3JraW5nIHdpdGggZGF0ZXMuXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgbW9kdWxlLmlzSW5pdGlhbGl6ZWQgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gICAgdmFyIG1vbWVudCA9IHJlcXVpcmUoJ21vbWVudCcpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBjdXJyZW50IGRhdGUgYW5kIHRpbWVcclxuICAgICAqIEBkZXNjcmlwdGlvbiBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9kb2NzLyMvZGlzcGxheWluZy9mb3JtYXQvIGZvciBzdXBwb3J0ZWQgZm9ybWF0IHN0cmluZ3MuXHJcbiAgICAgKiBAZnVuY3Rpb24gbm93XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IC0gRm9ybWF0IHN0cmluZy5cclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gRGF0ZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLm5vdyA9IGZ1bmN0aW9uKGZvcm1hdCkge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoKS5mb3JtYXQoZm9ybWF0KTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgZnV0dXJlIG9yIGEgcGFzdCBkYXRlXHJcbiAgICAgKiBAZnVuY3Rpb24gZnJvbU5vd1xyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVuaXQgLSBVbml0IHR5cGUuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2RvY3MvIy9tYW5pcHVsYXRpbmcvYWRkL1xyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlIC0gTnVtYmVyIG9mIG1pbnV0ZXMvZGF5cy9tb250aHMvZXRjIHRvIGFkZCBvciBzdWJ0cmFjdCBmcm9tIHRoZSBjdXJyZW50IGRhdGUuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IC0gRm9ybWF0IHN0cmluZy5cclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gRGF0ZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZy5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmZyb21Ob3cgPSBmdW5jdGlvbih1bml0LCB2YWx1ZSwgZm9ybWF0KSB7XHJcbiAgICAgICAgaWYgKHZhbHVlIDwgMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KCkuc3VidHJhY3QoLXZhbHVlLCB1bml0KS5mb3JtYXQoZm9ybWF0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbW9tZW50KCkuYWRkKHZhbHVlLCB1bml0KS5mb3JtYXQoZm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBQSxNQUFNLENBQUNDLE9BQU8sR0FBRyxZQUFXO0VBQ3hCRCxNQUFNLENBQUNFLGFBQWEsR0FBRyxZQUFXO0lBQzlCLE9BQU8sSUFBSTtFQUNmLENBQUM7RUFFRCxJQUFJQyxNQUFNLEdBQUdDLE9BQU8sQ0FBQyxRQUFRLENBQUM7O0VBRTlCO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0lKLE1BQU0sQ0FBQ0ssR0FBRyxHQUFHLFVBQVNDLE1BQU0sRUFBRTtJQUMxQixPQUFPSCxNQUFNLEVBQUUsQ0FBQ0csTUFBTSxDQUFDQSxNQUFNLENBQUM7RUFDbEMsQ0FBQzs7RUFFRDtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0lOLE1BQU0sQ0FBQ08sT0FBTyxHQUFHLFVBQVNDLElBQUksRUFBRUMsS0FBSyxFQUFFSCxNQUFNLEVBQUU7SUFDM0MsSUFBSUcsS0FBSyxHQUFHLENBQUMsRUFBRTtNQUNYLE9BQU9OLE1BQU0sRUFBRSxDQUFDTyxRQUFRLENBQUMsQ0FBQ0QsS0FBSyxFQUFFRCxJQUFJLENBQUMsQ0FBQ0YsTUFBTSxDQUFDQSxNQUFNLENBQUM7SUFDekQsQ0FBQyxNQUFNO01BQ0gsT0FBT0gsTUFBTSxFQUFFLENBQUNRLEdBQUcsQ0FBQ0YsS0FBSyxFQUFFRCxJQUFJLENBQUMsQ0FBQ0YsTUFBTSxDQUFDQSxNQUFNLENBQUM7SUFDbkQ7RUFDSixDQUFDO0VBRUQsT0FBT04sTUFBTTtBQUNqQixDQUFDIn0=
@@ -1,11 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
-
5
4
  var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
6
-
7
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
6
  /*
10
7
  * Copyright (C) 2015-present CloudBeat Limited
11
8
  *
@@ -23,39 +20,34 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
23
20
  * * OS X - `brew install unixodbc`
24
21
  * * Linux - `sudo apt-get install unixodbc unixodbc-dev` or `sudo dnf install unixODBC unixODBC-devel`
25
22
  */
26
- var connection;
27
23
 
24
+ var connection;
28
25
  var errHelper = require('../errors/helper');
29
-
30
26
  module.exports = function () {
31
27
  // FIXME: change setConnectionString to init and add hadnling in here
32
28
  module.isInitialized = function () {
33
29
  return true;
34
30
  };
35
-
36
31
  module._openDbConn = async function () {
37
32
  if (!this.connString) {
38
33
  throw new _OxygenError.default(errHelper.errorCode.DB_CONNECTION_ERROR, 'No connection string specified. Use db.setConnectionString().');
39
34
  }
40
-
41
35
  try {
42
36
  // ignore this module if odbc wasn't installed
43
37
  var db;
44
-
45
38
  try {
46
39
  db = require('odbc');
47
40
  } catch (e) {
48
41
  // could happen only on unix due to missing unixodbc binaries
49
42
  const ModuleUnavailableError = require('../errors/ModuleUnavailableError');
50
-
51
43
  throw new ModuleUnavailableError('Unable to load DB module. ' + e.message);
52
44
  }
53
-
54
45
  connection = await db.connect(this.connString);
55
46
  } catch (e) {
56
47
  throw new _OxygenError.default(errHelper.errorCode.DB_CONNECTION_ERROR, errHelper.getDbErrorMessage(e));
57
48
  }
58
49
  };
50
+
59
51
  /**
60
52
  * @summary Sets DB connection string to be used by other methods.
61
53
  * @description This method doesn't actually open the connection as it's opened/closed
@@ -68,11 +60,10 @@ module.exports = function () {
68
60
  * @function setConnectionString
69
61
  * @param {String} connString - ODBC connection string.
70
62
  */
71
-
72
-
73
63
  module.setConnectionString = function (connString) {
74
64
  module.connString = connString;
75
65
  };
66
+
76
67
  /**
77
68
  * @summary Executes SQL query and returns the first column of the first row in the result set.
78
69
  * @function getScalar
@@ -80,18 +71,13 @@ module.exports = function () {
80
71
  * @return {Object} The first column of the first row in the result set, or null if the result
81
72
  * set is empty.
82
73
  */
83
-
84
-
85
74
  module.getScalar = async function (query) {
86
75
  await module._openDbConn();
87
-
88
76
  try {
89
77
  var resultSet = await connection.query(query);
90
-
91
78
  if (resultSet.length === 0) {
92
79
  return null;
93
80
  }
94
-
95
81
  var firstRow = resultSet[0];
96
82
  var firstCol = firstRow[Object.keys(firstRow)[0]];
97
83
  return firstCol;
@@ -101,17 +87,15 @@ module.exports = function () {
101
87
  await connection.close();
102
88
  }
103
89
  };
90
+
104
91
  /**
105
92
  * @summary Executes SQL query and returns the result set.
106
93
  * @function executeQuery
107
94
  * @param {String} query - The query to execute.
108
95
  * @return {Object} The result set.
109
96
  */
110
-
111
-
112
97
  module.executeQuery = async function (query) {
113
98
  await module._openDbConn();
114
-
115
99
  try {
116
100
  const querySyncRetval = await connection.query(query);
117
101
  return querySyncRetval;
@@ -121,17 +105,15 @@ module.exports = function () {
121
105
  await connection.close();
122
106
  }
123
107
  };
108
+
124
109
  /**
125
110
  * @summary Executes SQL statement.
126
111
  * @description Any results from the query are discarded.
127
112
  * @function executeNonQuery
128
113
  * @param {String} query - The query to execute.
129
114
  */
130
-
131
-
132
115
  module.executeNonQuery = async function (query) {
133
116
  await module._openDbConn();
134
-
135
117
  try {
136
118
  await connection.query(query);
137
119
  } catch (e) {
@@ -140,6 +122,7 @@ module.exports = function () {
140
122
  await connection.close();
141
123
  }
142
124
  };
125
+
143
126
  /**
144
127
  * @summary Calls a stored procedure.
145
128
  * @function callProcedure
@@ -151,11 +134,8 @@ module.exports = function () {
151
134
  * var result = db.callProcedure('test', 3, 4, undefined);
152
135
  * log.info(result);
153
136
  */
154
-
155
-
156
137
  module.callProcedure = async function (name, ...args) {
157
138
  await module._openDbConn();
158
-
159
139
  try {
160
140
  const querySyncRetval = await connection.callProcedure(null, null, name, [...args]);
161
141
  return querySyncRetval;
@@ -165,7 +145,6 @@ module.exports = function () {
165
145
  await connection.close();
166
146
  }
167
147
  };
168
-
169
148
  return module;
170
149
  };
171
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSIsImNhbGxQcm9jZWR1cmUiLCJuYW1lIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMs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Q0EsWUFBTU4sVUFBVSxDQUFDbUIsS0FBWCxDQUFpQkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDtBQVdBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJeEIsRUFBQUEsTUFBTSxDQUFDNEIsYUFBUCxHQUF1QixnQkFBZUMsSUFBZixFQUFxQixHQUFHQyxJQUF4QixFQUE4QjtBQUNqRCxVQUFNOUIsTUFBTSxDQUFDRyxXQUFQLEVBQU47O0FBRUEsUUFBSTtBQUNBLFlBQU11QixlQUFlLEdBQUcsTUFBTTdCLFVBQVUsQ0FBQytCLGFBQVgsQ0FBeUIsSUFBekIsRUFBK0IsSUFBL0IsRUFBcUNDLElBQXJDLEVBQTJDLENBQUMsR0FBR0MsSUFBSixDQUEzQyxDQUE5QjtBQUNBLGFBQU9KLGVBQVA7QUFDSCxLQUhELENBR0UsT0FBT2pCLENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSUosb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CaUIsY0FBaEMsRUFBZ0R6QixTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFoRCxDQUFOO0FBQ0gsS0FMRCxTQUtVO0FBQ04sWUFBTVosVUFBVSxDQUFDMkIsS0FBWCxFQUFOO0FBQ0g7QUFDSixHQVhEOztBQWFBLFNBQU94QixNQUFQO0FBQ0gsQ0FoSUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBkYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIERhdGEgQmFzZXMgdGhyb3VnaCBPREJDLlxyXG4gKiBAbm90ZSBCZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUsIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGB1bml4b2RiY2A6ICBcclxuICogICAqIFdpbmRvd3MgLSBJbnN0YWxsIGBXaW5kb3dzIFNES2AgIFxyXG4gKiAgICogT1MgWCAtICBgYnJldyBpbnN0YWxsIHVuaXhvZGJjYCAgXHJcbiAqICAgKiBMaW51eCAtIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCB1bml4b2RiYyB1bml4b2RiYy1kZXZgIG9yIGBzdWRvIGRuZiBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldmVsYFxyXG4gKi9cclxuXHJcbnZhciBjb25uZWN0aW9uO1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAvLyBGSVhNRTogY2hhbmdlIHNldENvbm5lY3Rpb25TdHJpbmcgdG8gaW5pdCBhbmQgYWRkIGhhZG5saW5nIGluIGhlcmVcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fb3BlbkRiQ29ubiA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgJ05vIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZC4gVXNlIGRiLnNldENvbm5lY3Rpb25TdHJpbmcoKS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIG1vZHVsZSBpZiBvZGJjIHdhc24ndCBpbnN0YWxsZWRcclxuICAgICAgICAgICAgdmFyIGRiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGIgPSByZXF1aXJlKCdvZGJjJyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhcHBlbiBvbmx5IG9uIHVuaXggZHVlIHRvIG1pc3NpbmcgdW5peG9kYmMgYmluYXJpZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcnMvTW9kdWxlVW5hdmFpbGFibGVFcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IoJ1VuYWJsZSB0byBsb2FkIERCIG1vZHVsZS4gJytlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCh0aGlzLmNvbm5TdHJpbmcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9DT05ORUNUSU9OX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEBzdW1tYXJ5IFNldHMgREIgY29ubmVjdGlvbiBzdHJpbmcgdG8gYmUgdXNlZCBieSBvdGhlciBtZXRob2RzLlxyXG4gICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgZG9lc24ndCBhY3R1YWxseSBvcGVuIHRoZSBjb25uZWN0aW9uIGFzIGl0J3Mgb3BlbmVkL2Nsb3NlZFxyXG4gICAgKiAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSBxdWVyeSBtZXRob2RzLiAgXHJcbiAgICAqICAgICAgICAgICAgICBFeGFtcGxlIGNvbm5lY3Rpb24gc3RyaW5nczogIFxyXG4gICAgKiAgICAgICAgICAgICAgLSBgRHJpdmVyPXtNeVNRTCBPREJDIDUuMyBVTklDT0RFIERyaXZlcn07U2VydmVyPWxvY2FsaG9zdDtEYXRhYmFzZT1teURhdGFiYXNlO1xyXG4gICAgKiAgICAgICAgICAgICAgICBVc2VyPW15VXNlcm5hbWU7UGFzc3dvcmQ9bXlQYXNzd29yZDtPcHRpb249MztgICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17T3JhY2xlIGluIGluc3RhbnRjbGllbnRfMTFfMn07ZGJxPTEyNy4wLjAuMToxNTIxL1hFO3VpZD1teVVzZXJuYW1lO1xyXG4gICAgKiAgICAgICAgICAgICAgICBwd2Q9bXlQYXNzd29yZDtgXHJcbiAgICAqIEBmdW5jdGlvbiBzZXRDb25uZWN0aW9uU3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb25uU3RyaW5nIC0gT0RCQyBjb25uZWN0aW9uIHN0cmluZy5cclxuICAgICovXHJcbiAgICBtb2R1bGUuc2V0Q29ubmVjdGlvblN0cmluZyA9IGZ1bmN0aW9uKGNvbm5TdHJpbmcpIHtcclxuICAgICAgICBtb2R1bGUuY29ublN0cmluZyA9IGNvbm5TdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRTY2FsYXJcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQsIG9yIG51bGwgaWYgdGhlIHJlc3VsdFxyXG4gICAgICogICAgICAgICAgICAgICAgICBzZXQgaXMgZW1wdHkuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRTY2FsYXIgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFJvdyA9IHJlc3VsdFNldFswXTtcclxuICAgICAgICAgICAgdmFyIGZpcnN0Q29sID0gZmlyc3RSb3dbT2JqZWN0LmtleXMoZmlyc3RSb3cpWzBdXTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q29sO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0IHNldC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmV4ZWN1dGVRdWVyeSA9IGFzeW5jIGZ1bmN0aW9uKHF1ZXJ5KSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnlTeW5jUmV0dmFsID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVN5bmNSZXR2YWw7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX1FVRVJZX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHN0YXRlbWVudC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBBbnkgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSBhcmUgZGlzY2FyZGVkLlxyXG4gICAgICogQGZ1bmN0aW9uIGV4ZWN1dGVOb25RdWVyeVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIGV4ZWN1dGUuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlTm9uUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IENhbGxzIGEgc3RvcmVkIHByb2NlZHVyZS5cclxuICAgICAqIEBmdW5jdGlvbiBjYWxsUHJvY2VkdXJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHByb2NlZHVyZSB0byBjYWxsLlxyXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgLSBQcm9jZWR1cmUgYXJndW1lbnRzLiBJZiBwcm9jZWR1cmUgcHJvZHVjZXMgb3V0cHV0IHBhcmFtZXRlcnMgdGhlbiB0aGVzZSBuZWVkIHRvIGJlIHNwZWNpZmllZCB1c2luZyBgdW5kZWZpbmVkYC5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUHJvY2VkdXJlIG91dHB1dCBpZiBhbnkuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGNhbGxzIGEgcHJvY2VkdXJlIHdoaWNoIGV4cGVjdHMgdHdvIGlucHV0IHBhcmFtZXRlcnMgYW5kIG9uZSBvdXRwdXQgcGFyYW1ldGVyLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IGRiLmNhbGxQcm9jZWR1cmUoJ3Rlc3QnLCAzLCA0LCB1bmRlZmluZWQpO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNhbGxQcm9jZWR1cmUgPSBhc3luYyBmdW5jdGlvbihuYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24uY2FsbFByb2NlZHVyZShudWxsLCBudWxsLCBuYW1lLCBbLi4uYXJnc10pO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=
150
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSIsImNhbGxQcm9jZWR1cmUiLCJuYW1lIiwiYXJncyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBkYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIERhdGEgQmFzZXMgdGhyb3VnaCBPREJDLlxyXG4gKiBAbm90ZSBCZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUsIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGB1bml4b2RiY2A6ICBcclxuICogICAqIFdpbmRvd3MgLSBJbnN0YWxsIGBXaW5kb3dzIFNES2AgIFxyXG4gKiAgICogT1MgWCAtICBgYnJldyBpbnN0YWxsIHVuaXhvZGJjYCAgXHJcbiAqICAgKiBMaW51eCAtIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCB1bml4b2RiYyB1bml4b2RiYy1kZXZgIG9yIGBzdWRvIGRuZiBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldmVsYFxyXG4gKi9cclxuXHJcbnZhciBjb25uZWN0aW9uO1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAvLyBGSVhNRTogY2hhbmdlIHNldENvbm5lY3Rpb25TdHJpbmcgdG8gaW5pdCBhbmQgYWRkIGhhZG5saW5nIGluIGhlcmVcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fb3BlbkRiQ29ubiA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgJ05vIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZC4gVXNlIGRiLnNldENvbm5lY3Rpb25TdHJpbmcoKS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIG1vZHVsZSBpZiBvZGJjIHdhc24ndCBpbnN0YWxsZWRcclxuICAgICAgICAgICAgdmFyIGRiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGIgPSByZXF1aXJlKCdvZGJjJyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhcHBlbiBvbmx5IG9uIHVuaXggZHVlIHRvIG1pc3NpbmcgdW5peG9kYmMgYmluYXJpZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcnMvTW9kdWxlVW5hdmFpbGFibGVFcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IoJ1VuYWJsZSB0byBsb2FkIERCIG1vZHVsZS4gJytlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCh0aGlzLmNvbm5TdHJpbmcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9DT05ORUNUSU9OX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEBzdW1tYXJ5IFNldHMgREIgY29ubmVjdGlvbiBzdHJpbmcgdG8gYmUgdXNlZCBieSBvdGhlciBtZXRob2RzLlxyXG4gICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgZG9lc24ndCBhY3R1YWxseSBvcGVuIHRoZSBjb25uZWN0aW9uIGFzIGl0J3Mgb3BlbmVkL2Nsb3NlZFxyXG4gICAgKiAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSBxdWVyeSBtZXRob2RzLiAgXHJcbiAgICAqICAgICAgICAgICAgICBFeGFtcGxlIGNvbm5lY3Rpb24gc3RyaW5nczogIFxyXG4gICAgKiAgICAgICAgICAgICAgLSBgRHJpdmVyPXtNeVNRTCBPREJDIDUuMyBVTklDT0RFIERyaXZlcn07U2VydmVyPWxvY2FsaG9zdDtEYXRhYmFzZT1teURhdGFiYXNlO1xyXG4gICAgKiAgICAgICAgICAgICAgICBVc2VyPW15VXNlcm5hbWU7UGFzc3dvcmQ9bXlQYXNzd29yZDtPcHRpb249MztgICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17T3JhY2xlIGluIGluc3RhbnRjbGllbnRfMTFfMn07ZGJxPTEyNy4wLjAuMToxNTIxL1hFO3VpZD1teVVzZXJuYW1lO1xyXG4gICAgKiAgICAgICAgICAgICAgICBwd2Q9bXlQYXNzd29yZDtgXHJcbiAgICAqIEBmdW5jdGlvbiBzZXRDb25uZWN0aW9uU3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb25uU3RyaW5nIC0gT0RCQyBjb25uZWN0aW9uIHN0cmluZy5cclxuICAgICovXHJcbiAgICBtb2R1bGUuc2V0Q29ubmVjdGlvblN0cmluZyA9IGZ1bmN0aW9uKGNvbm5TdHJpbmcpIHtcclxuICAgICAgICBtb2R1bGUuY29ublN0cmluZyA9IGNvbm5TdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRTY2FsYXJcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQsIG9yIG51bGwgaWYgdGhlIHJlc3VsdFxyXG4gICAgICogICAgICAgICAgICAgICAgICBzZXQgaXMgZW1wdHkuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRTY2FsYXIgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFJvdyA9IHJlc3VsdFNldFswXTtcclxuICAgICAgICAgICAgdmFyIGZpcnN0Q29sID0gZmlyc3RSb3dbT2JqZWN0LmtleXMoZmlyc3RSb3cpWzBdXTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q29sO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0IHNldC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmV4ZWN1dGVRdWVyeSA9IGFzeW5jIGZ1bmN0aW9uKHF1ZXJ5KSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnlTeW5jUmV0dmFsID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVN5bmNSZXR2YWw7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX1FVRVJZX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHN0YXRlbWVudC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBBbnkgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSBhcmUgZGlzY2FyZGVkLlxyXG4gICAgICogQGZ1bmN0aW9uIGV4ZWN1dGVOb25RdWVyeVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIGV4ZWN1dGUuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlTm9uUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IENhbGxzIGEgc3RvcmVkIHByb2NlZHVyZS5cclxuICAgICAqIEBmdW5jdGlvbiBjYWxsUHJvY2VkdXJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHByb2NlZHVyZSB0byBjYWxsLlxyXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgLSBQcm9jZWR1cmUgYXJndW1lbnRzLiBJZiBwcm9jZWR1cmUgcHJvZHVjZXMgb3V0cHV0IHBhcmFtZXRlcnMgdGhlbiB0aGVzZSBuZWVkIHRvIGJlIHNwZWNpZmllZCB1c2luZyBgdW5kZWZpbmVkYC5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUHJvY2VkdXJlIG91dHB1dCBpZiBhbnkuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGNhbGxzIGEgcHJvY2VkdXJlIHdoaWNoIGV4cGVjdHMgdHdvIGlucHV0IHBhcmFtZXRlcnMgYW5kIG9uZSBvdXRwdXQgcGFyYW1ldGVyLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IGRiLmNhbGxQcm9jZWR1cmUoJ3Rlc3QnLCAzLCA0LCB1bmRlZmluZWQpO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNhbGxQcm9jZWR1cmUgPSBhc3luYyBmdW5jdGlvbihuYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24uY2FsbFByb2NlZHVyZShudWxsLCBudWxsLCBuYW1lLCBbLi4uYXJnc10pO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXSwibWFwcGluZ3MiOiI7OztBQW9CQTtBQUE0QztBQXBCNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLFVBQVU7QUFHZCxJQUFJQyxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUUzQ0MsTUFBTSxDQUFDQyxPQUFPLEdBQUcsWUFBVztFQUN4QjtFQUNBRCxNQUFNLENBQUNFLGFBQWEsR0FBRyxZQUFXO0lBQzlCLE9BQU8sSUFBSTtFQUNmLENBQUM7RUFFREYsTUFBTSxDQUFDRyxXQUFXLEdBQUcsa0JBQWlCO0lBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUNDLFVBQVUsRUFBRTtNQUNsQixNQUFNLElBQUlDLG9CQUFPLENBQUNQLFNBQVMsQ0FBQ1EsU0FBUyxDQUFDQyxtQkFBbUIsRUFBRSwrREFBK0QsQ0FBQztJQUMvSDtJQUVBLElBQUk7TUFDQTtNQUNBLElBQUlDLEVBQUU7TUFDTixJQUFJO1FBQ0FBLEVBQUUsR0FBR1QsT0FBTyxDQUFDLE1BQU0sQ0FBQztNQUN4QixDQUFDLENBQUMsT0FBT1UsQ0FBQyxF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