oxygen-cli 1.25.0-beta.1 → 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 +6 -47
  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 -16
  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
@@ -4,61 +4,42 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _lodash = _interopRequireDefault(require("lodash"));
13
-
14
10
  var _xlsx = _interopRequireDefault(require("xlsx"));
15
-
16
11
  var _FileReporterBase = _interopRequireDefault(require("../reporter/FileReporterBase"));
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  const DEFAULT_TEMPLATE_PATH = './excel/template.json';
21
14
  const DEFAULT_SHEET_NAME = 'Sheet1';
22
15
  const DEFAULT_EXTENSION = '.xlsx';
23
16
  const EXCEL_COLUMNS = generateExcelColumns();
24
-
25
17
  class ExcelReporter extends _FileReporterBase.default {
26
18
  constructor(options) {
27
19
  super(options);
28
20
  }
29
-
30
21
  generate(results) {
31
22
  var resultFilePath = this.createFolderStructureAndFilePath(DEFAULT_EXTENSION);
32
-
33
23
  var resultFolderPath = _path.default.dirname(resultFilePath);
34
-
35
24
  var rows = [];
36
25
  this.replaceScreenshotsWithFiles(results, resultFolderPath);
37
-
38
26
  for (let result of results) {
39
27
  for (let suiteResult of result.suites) {
40
28
  generateRowsForSuite(suiteResult, rows);
41
29
  }
42
30
  }
43
-
44
31
  var templatePath = this.options.template || DEFAULT_TEMPLATE_PATH;
45
32
  var workbook = generateWorksheetFromTemplate(templatePath, rows, this.options);
46
-
47
33
  _xlsx.default.writeFile(workbook, resultFilePath, {
48
34
  bookSST: false
49
35
  });
50
-
51
36
  return resultFilePath;
52
37
  }
53
-
54
38
  }
55
-
56
39
  exports.default = ExcelReporter;
57
-
58
40
  function generateRowsForSuite(suiteResult, rows) {
59
41
  for (let caseResult of suiteResult.cases) {
60
42
  let lastFailedStep = null;
61
-
62
43
  for (let step of caseResult.steps) {
63
44
  if (step.status === 'failed') {
64
45
  lastFailedStep = step;
@@ -66,20 +47,16 @@ function generateRowsForSuite(suiteResult, rows) {
66
47
  lastFailedStep = null;
67
48
  }
68
49
  }
69
-
70
50
  rows.push(addValues(suiteResult, caseResult, lastFailedStep));
71
51
  }
72
52
  }
73
-
74
53
  function generateWorksheetFromTemplate(templatePath, rows, options) {
75
54
  var template = null;
76
-
77
55
  try {
78
56
  template = require(templatePath);
79
57
  } catch (e) {
80
58
  throw new Error('Excel reporter template file is not found or is in invalid format: ' + templatePath + '. Error: ' + e.message);
81
59
  }
82
-
83
60
  var wb = new Workbook();
84
61
  var ws = {};
85
62
  var wsName = options.sheetName || DEFAULT_SHEET_NAME;
@@ -89,13 +66,10 @@ function generateWorksheetFromTemplate(templatePath, rows, options) {
89
66
  var row;
90
67
  var header;
91
68
  var cellAddress;
92
-
93
69
  for (var h = 0; h < template.length; h++) {
94
70
  header = template[h];
95
-
96
71
  if (header.value === '${param.all}' && rows && rows.length && rows.length > 0) {
97
72
  row = rows[0];
98
-
99
73
  _lodash.default.each(row.param, function (value, name) {
100
74
  cellAddress = EXCEL_COLUMNS[column] + '1';
101
75
  ws[cellAddress] = {};
@@ -104,7 +78,6 @@ function generateWorksheetFromTemplate(templatePath, rows, options) {
104
78
  });
105
79
  } else if (header.value === '${var.all}' && rows && rows.length && rows.length > 0) {
106
80
  row = rows[0];
107
-
108
81
  _lodash.default.each(row.var, function (value, name) {
109
82
  cellAddress = EXCEL_COLUMNS[column] + '1';
110
83
  ws[cellAddress] = {};
@@ -118,21 +91,16 @@ function generateWorksheetFromTemplate(templatePath, rows, options) {
118
91
  column++;
119
92
  }
120
93
  }
121
-
122
94
  var totalColumns = column;
123
-
124
95
  for (var r = 0; r < rows.length; r++) {
125
96
  column = 0;
126
-
127
97
  for (var c = 0; c < template.length; c++) {
128
98
  row = rows[r];
129
99
  header = template[c];
130
-
131
100
  if (header.value === '${param.all}') {
132
101
  if (!row.param || !row.param) {
133
102
  continue;
134
103
  }
135
-
136
104
  _lodash.default.each(row.param, function (value, name) {
137
105
  cellAddress = EXCEL_COLUMNS[column] + (r + 2);
138
106
  ws[cellAddress] = {};
@@ -143,7 +111,6 @@ function generateWorksheetFromTemplate(templatePath, rows, options) {
143
111
  if (!row.var || !row.var) {
144
112
  continue;
145
113
  }
146
-
147
114
  _lodash.default.each(row.var, function (value, name) {
148
115
  cellAddress = EXCEL_COLUMNS[column] + (r + 2);
149
116
  ws[cellAddress] = {};
@@ -158,24 +125,18 @@ function generateWorksheetFromTemplate(templatePath, rows, options) {
158
125
  }
159
126
  }
160
127
  }
161
-
162
128
  if (template.length > 0 && rows.length > 0) {
163
129
  ws['!ref'] = 'A1:' + EXCEL_COLUMNS[template.length - 1 + totalColumns] + (rows.length + 1);
164
130
  }
165
-
166
131
  return wb;
167
132
  }
168
-
169
133
  function substractParameter(valueDef, data) {
170
134
  if (!valueDef || !valueDef.length || valueDef.length == 0) return valueDef;
171
-
172
135
  if (valueDef.indexOf('${') == 0 && valueDef.indexOf('}') == valueDef.length - 1) {
173
136
  var paramName = valueDef.substring(2, valueDef.length - 1);
174
-
175
137
  if (paramName.length == 0) {
176
138
  return valueDef;
177
139
  }
178
-
179
140
  if (paramName.indexOf('param.') == 0) {
180
141
  return data.param[paramName.substring('param.'.length)];
181
142
  } else if (paramName.indexOf('var.') == 0) {
@@ -183,13 +144,10 @@ function substractParameter(valueDef, data) {
183
144
  } else if (paramName.indexOf('cap.') == 0) {
184
145
  return data.cap[paramName.substring('cap.'.length)];
185
146
  }
186
-
187
147
  return data[paramName];
188
148
  }
189
-
190
149
  return valueDef;
191
150
  }
192
-
193
151
  function addValues(suiteResult, caseResult, lastFailedStep) {
194
152
  var values = {};
195
153
  values['suite.name'] = suiteResult.name;
@@ -198,55 +156,40 @@ function addValues(suiteResult, caseResult, lastFailedStep) {
198
156
  values['case.name'] = caseResult.name;
199
157
  values['case.iteration'] = caseResult.iterationNum;
200
158
  values['case.status'] = caseResult.status;
201
-
202
159
  if (lastFailedStep) {
203
160
  values['failure.step'] = lastFailedStep.name;
204
-
205
161
  if (lastFailedStep._screenshotFile) {
206
162
  values['failure.screenshot'] = lastFailedStep.screenshotFile;
207
163
  }
208
-
209
164
  if (lastFailedStep.failure) {
210
165
  values['failure.message'] = lastFailedStep.failure.message;
211
166
  values['failure.type'] = lastFailedStep.failure.type;
212
-
213
167
  if (lastFailedStep.failure.location) {
214
168
  values['failure.location'] = lastFailedStep.failure.location;
215
169
  }
216
170
  }
217
171
  }
218
-
219
172
  values.param = {};
220
-
221
173
  _lodash.default.each(caseResult.context.params, function (value, key) {
222
174
  values.param[key] = value;
223
175
  });
224
-
225
176
  values.var = {};
226
-
227
177
  _lodash.default.each(caseResult.context.vars, function (value, key) {
228
178
  values.var[key] = value;
229
179
  });
230
-
231
180
  values.cap = {};
232
-
233
181
  _lodash.default.each(caseResult.context.caps, function (value, key) {
234
182
  values.cap[key] = value;
235
183
  });
236
-
237
184
  return values;
238
185
  }
239
-
240
186
  function Workbook() {
241
187
  this.SheetNames = [];
242
188
  this.Sheets = {};
243
189
  }
244
-
245
190
  function generateExcelColumns() {
246
191
  var output = [];
247
-
248
192
  for (var i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) output.push(String.fromCharCode(i));
249
-
250
193
  return output;
251
194
  }
252
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9yZXBvcnRlcnMvcmVwb3J0ZXItZXhjZWwuanMiXSwibmFtZXMiOlsiREVGQVVMVF9URU1QTEFURV9QQVRIIiwiREVGQVVMVF9TSEVFVF9OQU1FIiwiREVGQVVMVF9FWFRFTlNJT04iLCJFWENFTF9DT0xVTU5TIiwiZ2VuZXJhdGVFeGNlbENvbHVtbnMiLCJFeGNlbFJlcG9ydGVyIiwiRmlsZVJlcG9ydGVyQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImdlbmVyYXRlIiwicmVzdWx0cyIsInJlc3VsdEZpbGVQYXRoIiwiY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgiLCJyZXN1bHRGb2xkZXJQYXRoIiwicGF0aCIsImRpcm5hbWUiLCJyb3dzIiwicmVwbGFjZVNjcmVlbnNob3RzV2l0aEZpbGVzIiwicmVzdWx0Iiwic3VpdGVSZXN1bHQiLCJzdWl0ZXMiLCJnZW5lcmF0ZVJvd3NGb3JTdWl0ZSIsInRlbXBsYXRlUGF0aCIsInRlbXBsYXRlIiwid29ya2Jvb2siLCJnZW5lcmF0ZVdvcmtzaGVldEZyb21UZW1wbGF0ZSIsInhsc3giLCJ3cml0ZUZpbGUiLCJib29rU1NUIiwiY2FzZVJlc3VsdCIsImNhc2VzIiwibGFzdEZhaWxlZFN0ZXAiLCJzdGVwIiwic3RlcHMiLCJzdGF0dXMiLCJwdXNoIiwiYWRkVmFsdWVzIiwicmVxdWlyZSIsImUiLCJFcnJvciIsIm1lc3NhZ2UiLCJ3YiIsIldvcmtib29rIiwid3MiLCJ3c05hbWUiLCJzaGVldE5hbWUiLCJTaGVldE5hbWVzIiwiU2hlZXRzIiwiY29sdW1uIiwicm93IiwiaGVhZGVyIiwiY2VsbEFkZHJlc3MiLCJoIiwibGVuZ3RoIiwidmFsdWUiLCJfIiwiZWFjaCIsInBhcmFtIiwibmFtZSIsInYiLCJ2YXIiLCJ0b3RhbENvbHVtbnMiLCJyIiwiYyIsInN1YnN0cmFjdFBhcmFtZXRlciIsInVuZGVmaW5lZCIsInZhbHVlRGVmIiwiZGF0YSIsImluZGV4T2YiLCJwYXJhbU5hbWUiLCJzdWJzdHJpbmciLCJjYXAiLCJ2YWx1ZXMiLCJpdGVyYXRpb25OdW0iLCJfc2NyZWVuc2hvdEZpbGUiLCJzY3JlZW5zaG90RmlsZSIsImZhaWx1cmUiLCJ0eXBlIiwibG9jYXRpb24iLCJjb250ZXh0IiwicGFyYW1zIiwia2V5IiwidmFycyIsImNhcHMiLCJvdXRwdXQiLCJpIiwiY2hhckNvZGVBdCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBWUE7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFFQSxNQUFNQSxxQkFBcUIsR0FBRyx1QkFBOUI7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxRQUEzQjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHLE9BQTFCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHQyxvQkFBb0IsRUFBMUM7O0FBRWUsTUFBTUMsYUFBTixTQUE0QkMseUJBQTVCLENBQTZDO0FBQ3hEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFBVTtBQUNqQixVQUFNQSxPQUFOO0FBQ0g7O0FBRURDLEVBQUFBLFFBQVEsQ0FBQ0MsT0FBRCxFQUFVO0FBQ2QsUUFBSUMsY0FBYyxHQUFHLEtBQUtDLGdDQUFMLENBQXNDVixpQkFBdEMsQ0FBckI7O0FBQ0EsUUFBSVcsZ0JBQWdCLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUosY0FBYixDQUF2Qjs7QUFDQSxRQUFJSyxJQUFJLEdBQUcsRUFBWDtBQUVBLFNBQUtDLDJCQUFMLENBQWlDUCxPQUFqQyxFQUEwQ0csZ0JBQTFDOztBQUNBLFNBQUssSUFBSUssTUFBVCxJQUFtQlIsT0FBbkIsRUFBNEI7QUFDeEIsV0FBSyxJQUFJUyxXQUFULElBQXdCRCxNQUFNLENBQUNFLE1BQS9CLEVBQXVDO0FBQ25DQyxRQUFBQSxvQkFBb0IsQ0FBQ0YsV0FBRCxFQUFjSCxJQUFkLENBQXBCO0FBQ0g7QUFDSjs7QUFFRCxRQUFJTSxZQUFZLEdBQUcsS0FBS2QsT0FBTCxDQUFhZSxRQUFiLElBQXlCdkIscUJBQTVDO0FBQ0EsUUFBSXdCLFFB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RFQsSUFBQUEsTUFBTSxDQUFDWixHQUFQLENBQVdxQixHQUFYLElBQWtCM0IsS0FBbEI7QUFDSCxHQUZEOztBQUdBa0IsRUFBQUEsTUFBTSxDQUFDRCxHQUFQLEdBQWEsRUFBYjs7QUFDQWhCLGtCQUFFQyxJQUFGLENBQU8zQixVQUFVLENBQUNrRCxPQUFYLENBQW1CSSxJQUExQixFQUFnQyxVQUFTN0IsS0FBVCxFQUFnQjJCLEdBQWhCLEVBQXFCO0FBQ2pEVCxJQUFBQSxNQUFNLENBQUNELEdBQVAsQ0FBV1UsR0FBWCxJQUFrQjNCLEtBQWxCO0FBQ0gsR0FGRDs7QUFJQSxTQUFPa0IsTUFBUDtBQUNIOztBQUdELFNBQVM5QixRQUFULEdBQW9CO0FBQ2hCLE9BQUtJLFVBQUwsR0FBa0IsRUFBbEI7QUFDQSxPQUFLQyxNQUFMLEdBQWMsRUFBZDtBQUNIOztBQUVELFNBQVMzQyxvQkFBVCxHQUFnQztBQUM1QixNQUFJZ0YsTUFBTSxHQUFHLEVBQWI7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUMsSUFBSUMsVUFBSixDQUFlLENBQWYsQ0FBWCxFQUE4QkQsQ0FBQyxJQUFJLElBQUlDLFVBQUosQ0FBZSxDQUFmLENBQW5DLEVBQXNERCxDQUFDLEVBQXZELEVBQ0lELE1BQU0sQ0FBQ2pELElBQVAsQ0FBWW9ELE1BQU0sQ0FBQ0MsWUFBUCxDQUFvQkgsQ0FBcEIsQ0FBWjs7QUFDSixTQUFPRCxNQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qXHJcbiAqIE94eWdlbiBFeGNlbCBSZXBvcnRlclxyXG4gKi9cclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB4bHN4IGZyb20gJ3hsc3gnO1xyXG5cclxuaW1wb3J0IEZpbGVSZXBvcnRlckJhc2UgZnJvbSAnLi4vcmVwb3J0ZXIvRmlsZVJlcG9ydGVyQmFzZSc7XHJcblxyXG5jb25zdCBERUZBVUxUX1RFTVBMQVRFX1BBVEggPSAnLi9leGNlbC90ZW1wbGF0ZS5qc29uJztcclxuY29uc3QgREVGQVVMVF9TSEVFVF9OQU1FID0gJ1NoZWV0MSc7XHJcbmNvbnN0IERFRkFVTFRfRVhURU5TSU9OID0gJy54bHN4JztcclxuY29uc3QgRVhDRUxfQ09MVU1OUyA9IGdlbmVyYXRlRXhjZWxDb2x1bW5zKCk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeGNlbFJlcG9ydGVyIGV4dGVuZHMgRmlsZVJlcG9ydGVyQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGUocmVzdWx0cykge1xyXG4gICAgICAgIHZhciByZXN1bHRGaWxlUGF0aCA9IHRoaXMuY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgoREVGQVVMVF9FWFRFTlNJT04pO1xyXG4gICAgICAgIHZhciByZXN1bHRGb2xkZXJQYXRoID0gcGF0aC5kaXJuYW1lKHJlc3VsdEZpbGVQYXRoKTtcclxuICAgICAgICB2YXIgcm93cyA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLnJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCByZXN1bHRGb2xkZXJQYXRoKTtcclxuICAgICAgICBmb3IgKGxldCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBzdWl0ZVJlc3VsdCBvZiByZXN1bHQuc3VpdGVzKSB7XHJcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZVJvd3NGb3JTdWl0ZShzdWl0ZVJlc3VsdCwgcm93cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgd29ya2Jvb2sgYmFzZWQgb24gZWl0aGVyIHVzZXItZGVmaW5lZCBvciBkZWZhdWx0IHRlbXBsYXRlXHJcbiAgICAgICAgdmFyIHRlbXBsYXRlUGF0aCA9IHRoaXMub3B0aW9ucy50ZW1wbGF0ZSB8fCBERUZBVUxUX1RFTVBMQVRFX1BBVEg7XHJcbiAgICAgICAgdmFyIHdvcmtib29rID0gZ2VuZXJhdGVXb3Jrc2hlZXRGcm9tVGVtcGxhdGUodGVtcGxhdGVQYXRoLCByb3dzLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgICAgIC8vIHdyaXRlIHRvIGZpbGVcclxuICAgICAgICB4bHN4LndyaXRlRmlsZSh3b3JrYm9vaywgcmVzdWx0RmlsZVBhdGgsIHsgYm9va1NTVDogZmFsc2UgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRGaWxlUGF0aDtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVSb3dzRm9yU3VpdGUoc3VpdGVSZXN1bHQsIHJvd3MpIHtcclxuICAgIGZvciAobGV0IGNhc2VSZXN1bHQgb2Ygc3VpdGVSZXN1bHQuY2FzZXMpIHtcclxuICAgICAgICBsZXQgbGFzdEZhaWxlZFN0ZXAgPSBudWxsO1xyXG4gICAgICAgIGZvciAobGV0IHN0ZXAgb2YgY2FzZVJlc3VsdC5zdGVwcykge1xyXG4gICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBsYXN0RmFpbGVkU3RlcCA9IHN0ZXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsYXN0RmFpbGVkU3RlcCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29udmVydCBlYWNoIGl0ZXJhdGlvbiB0byBhIHJvdyBpbiBFeGNlbCBmaWxlXHJcbiAgICAgICAgcm93cy5wdXNoKGFkZFZhbHVlcyhzdWl0ZVJlc3VsdCwgY2FzZVJlc3VsdCwgbGFzdEZhaWxlZFN0ZXApKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVXb3Jrc2hlZXRGcm9tVGVtcGxhdGUodGVtcGxhdGVQYXRoLCByb3dzLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgdGVtcGxhdGUgPSBudWxsO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB0ZW1wbGF0ZSA9IHJlcXVpcmUodGVtcGxhdGVQYXRoKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VsIHJlcG9ydGVyIHRlbXBsYXRlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGluIGludmFsaWQgZm9ybWF0OiAnICsgdGVtcGxhdGVQYXRoICsgJy4gRXJyb3I6ICcgKyBlLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgdmFyIHdiID0gbmV3IFdvcmtib29rKCk7XHJcbiAgICB2YXIgd3MgPSB7fTtcclxuICAgIHZhciB3c05hbWUgPSBvcHRpb25zLnNoZWV0TmFtZSB8fCBERUZBVUxUX1NIRUVUX05BTUU7XHJcbiAgICB3Yi5TaGVldE5hbWVzLnB1c2god3NOYW1lKTtcclxuICAgIHdiLlNoZWV0c1t3c05hbWVdID0gd3M7XHJcbiAgICB2YXIgY29sdW1uID0gMDtcclxuICAgIHZhciByb3c7XHJcbiAgICB2YXIgaGVhZGVyO1xyXG4gICAgdmFyIGNlbGxBZGRyZXNzO1xyXG5cclxuICAgIC8vIGdlbmVyYXRlIGhlYWRlcnMgcm93ICAgICAgICAgXHJcbiAgICBmb3IgKHZhciBoID0gMDsgaCA8IHRlbXBsYXRlLmxlbmd0aDsgaCsrKSB7XHJcbiAgICAgICAgaGVhZGVyID0gdGVtcGxhdGVbaF07XHJcblxyXG4gICAgICAgIC8vIGlmIGhlYWRlcidzIHZhbHVlIGlzIHBhcmFtLmFsbCBvciB2YXIuYWxsIHRoZW4gZ2VuZXJhdGUgY29sdW1ucyBmb3IgZWFjaCBwYXJhbWV0ZXIvdmFyaWFibGUgYXV0b21hdGljYWxseVxyXG4gICAgICAgIGlmIChoZWFkZXIudmFsdWUgPT09ICcke3BhcmFtLmFsbH0nICYmIHJvd3MgJiYgcm93cy5sZW5ndGggJiYgcm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHJlYWQgcGFyYW1ldGVyIG5hbWVzIGZyb20gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgYXNzdW1pbmcgcGFyYW1ldGVyIG5hbWVzIHJlbWFpbiB0aGUgc2FtZSBmb3IgYWxsIGl0ZXJhdGlvbnNcclxuICAgICAgICAgICAgcm93ID0gcm93c1swXTtcclxuICAgICAgICAgICAgXy5lYWNoKHJvdy5wYXJhbSwgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNlbGxBZGRyZXNzID0gRVhDRUxfQ09MVU1OU1tjb2x1bW5dICsgJzEnO1xyXG4gICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4rKztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIudmFsdWUgPT09ICcke3Zhci5hbGx9JyAmJiByb3dzICYmIHJvd3MubGVuZ3RoICYmIHJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyByZWFkIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgYXNzdW1pbmcgdmFyaWFibGUgbmFtZXMgcmVtYWluIHRoZSBzYW1lIGZvciBhbGwgaXRlcmF0aW9uc1xyXG4gICAgICAgICAgICByb3cgPSByb3dzWzBdO1xyXG4gICAgICAgICAgICBfLmVhY2gocm93LnZhciwgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNlbGxBZGRyZXNzID0gRVhDRUxfQ09MVU1OU1tjb2x1bW5dICsgJzEnO1xyXG4gICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4rKztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2VsbEFkZHJlc3MgPSBFWENFTF9DT0xVTU5TW2NvbHVtbl0gKyAnMSc7XHJcbiAgICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXSA9IHt9O1xyXG4gICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IGhlYWRlci5oZWFkZXI7XHJcbiAgICAgICAgICAgIGNvbHVtbisrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgdG90YWxDb2x1bW5zID0gY29sdW1uO1xyXG5cclxuICAgIC8vIGdlbmVyYXRlIGRhdGEgcm93c1xyXG4gICAgZm9yICh2YXIgciA9IDA7IHIgPCByb3dzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgY29sdW1uID0gMDtcclxuICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IHRlbXBsYXRlLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgIHJvdyA9IHJvd3Nbcl07XHJcbiAgICAgICAgICAgIGhlYWRlciA9IHRlbXBsYXRlW2NdO1xyXG4gICAgICAgICAgICAvLyBpZiBoZWFkZXIncyB2YWx1ZSBpcyBwYXJhbS5hbGwgb3IgdmFyLmFsbCB0aGVuIGdlbmVyYXRlIGNvbHVtbnMgZm9yIGVhY2ggcGFyYW1ldGVyL3ZhcmlhYmxlIGF1dG9tYXRpY2FsbHlcclxuICAgICAgICAgICAgaWYgKGhlYWRlci52YWx1ZSA9PT0gJyR7cGFyYW0uYWxsfScpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcm93LnBhcmFtIHx8ICFyb3cucGFyYW0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF8uZWFjaChyb3cucGFyYW0sIGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2VsbEFkZHJlc3MgPSBFWENFTF9DT0xVTU5TW2NvbHVtbl0gKyAociArIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXS52ID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uKys7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIudmFsdWUgPT09ICcke3Zhci5hbGx9Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyb3cudmFyIHx8ICFyb3cudmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfLmVhY2gocm93LnZhciwgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjZWxsQWRkcmVzcyA9IEVYQ0VMX0NPTFVNTlNbY29sdW1uXSArIChyICsgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdLnYgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4rKztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2VsbEFkZHJlc3MgPSBFWENFTF9DT0xVTU5TW2NvbHVtbl0gKyAociArIDIpO1xyXG4gICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IHN1YnN0cmFjdFBhcmFtZXRlcihoZWFkZXIudmFsdWUsIHJvdykgfHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzZXQgd29ya3NoZWV0IHJhbmdlXHJcbiAgICBpZiAodGVtcGxhdGUubGVuZ3RoID4gMCAmJiByb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB3c1snIXJlZiddID0gJ0ExOicgKyBFWENFTF9DT0xVTU5TW3RlbXBsYXRlLmxlbmd0aCAtIDEgKyB0b3RhbENvbHVtbnNdICsgKHJvd3MubGVuZ3RoICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdiO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdWJzdHJhY3RQYXJhbWV0ZXIodmFsdWVEZWYsIGRhdGEpIHtcclxuICAgIGlmICghdmFsdWVEZWYgfHwgIXZhbHVlRGVmLmxlbmd0aCB8fCB2YWx1ZURlZi5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm4gdmFsdWVEZWY7XHJcbiAgICAvLyBjaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBwYXJhbXRlclxyXG4gICAgaWYgKHZhbHVlRGVmLmluZGV4T2YoJyR7JykgPT0gMCAmJiB2YWx1ZURlZi5pbmRleE9mKCd9JykgPT0gdmFsdWVEZWYubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHZhciBwYXJhbU5hbWUgPSB2YWx1ZURlZi5zdWJzdHJpbmcoMiwgdmFsdWVEZWYubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgaWYgKHBhcmFtTmFtZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVEZWY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJhbU5hbWUuaW5kZXhPZigncGFyYW0uJykgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YS5wYXJhbVtwYXJhbU5hbWUuc3Vic3RyaW5nKCdwYXJhbS4nLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJhbU5hbWUuaW5kZXhPZigndmFyLicpID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGEudmFyW3BhcmFtTmFtZS5zdWJzdHJpbmcoJ3Zhci4nLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJhbU5hbWUuaW5kZXhPZignY2FwLicpID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGEuY2FwW3BhcmFtTmFtZS5zdWJzdHJpbmcoJ2NhcC4nLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0YVtwYXJhbU5hbWVdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlRGVmO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRWYWx1ZXMoc3VpdGVSZXN1bHQsIGNhc2VSZXN1bHQsIGxhc3RGYWlsZWRTdGVwKSB7XHJcbiAgICB2YXIgdmFsdWVzID0ge307XHJcbiAgICB2YWx1ZXNbJ3N1aXRlLm5hbWUnXSA9IHN1aXRlUmVzdWx0Lm5hbWU7XHJcbiAgICB2YWx1ZXNbJ3N1aXRlLml0ZXJhdGlvbiddID0gc3VpdGVSZXN1bHQuaXRlcmF0aW9uTnVtO1xyXG4gICAgdmFsdWVzWydzdWl0ZS5zdGF0dXMnXSA9IHN1aXRlUmVzdWx0LnN0YXR1cztcclxuICAgIHZhbHVlc1snY2FzZS5uYW1lJ10gPSBjYXNlUmVzdWx0Lm5hbWU7XHJcbiAgICB2YWx1ZXNbJ2Nhc2UuaXRlcmF0aW9uJ10gPSBjYXNlUmVzdWx0Lml0ZXJhdGlvbk51bTtcclxuICAgIHZhbHVlc1snY2FzZS5zdGF0dXMnXSA9IGNhc2VSZXN1bHQuc3RhdHVzO1xyXG5cclxuICAgIGlmIChsYXN0RmFpbGVkU3RlcCkge1xyXG4gICAgICAgIHZhbHVlc1snZmFpbHVyZS5zdGVwJ10gPSBsYXN0RmFpbGVkU3RlcC5uYW1lO1xyXG4gICAgICAgIGlmIChsYXN0RmFpbGVkU3RlcC5fc2NyZWVuc2hvdEZpbGUpIHtcclxuICAgICAgICAgICAgdmFsdWVzWydmYWlsdXJlLnNjcmVlbnNob3QnXSA9IGxhc3RGYWlsZWRTdGVwLnNjcmVlbnNob3RGaWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFzdEZhaWxlZFN0ZXAuZmFpbHVyZSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNbJ2ZhaWx1cmUubWVzc2FnZSddID0gbGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICB2YWx1ZXNbJ2ZhaWx1cmUudHlwZSddID0gbGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS50eXBlO1xyXG4gICAgICAgICAgICBpZiAobGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS5sb2NhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzWydmYWlsdXJlLmxvY2F0aW9uJ10gPSBsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLmxvY2F0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHZhbHVlcy5wYXJhbSA9IHt9O1xyXG4gICAgXy5lYWNoKGNhc2VSZXN1bHQuY29udGV4dC5wYXJhbXMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcclxuICAgICAgICB2YWx1ZXMucGFyYW1ba2V5XSA9IHZhbHVlO1xyXG4gICAgfSk7XHJcbiAgICB2YWx1ZXMudmFyID0ge307XHJcbiAgICBfLmVhY2goY2FzZVJlc3VsdC5jb250ZXh0LnZhcnMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcclxuICAgICAgICB2YWx1ZXMudmFyW2tleV0gPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gICAgdmFsdWVzLmNhcCA9IHt9O1xyXG4gICAgXy5lYWNoKGNhc2VSZXN1bHQuY29udGV4dC5jYXBzLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XHJcbiAgICAgICAgdmFsdWVzLmNhcFtrZXldID0gdmFsdWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG59XHJcblxyXG4vKiBkdW1teSB3b3JrYm9vayBjb25zdHJ1Y3RvciAqL1xyXG5mdW5jdGlvbiBXb3JrYm9vaygpIHtcclxuICAgIHRoaXMuU2hlZXROYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5TaGVldHMgPSB7fTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVFeGNlbENvbHVtbnMoKSB7XHJcbiAgICB2YXIgb3V0cHV0ID0gW107XHJcbiAgICBmb3IgKHZhciBpPSdBJy5jaGFyQ29kZUF0KDApOyBpIDw9ICdaJy5jaGFyQ29kZUF0KDApOyBpKyspXHJcbiAgICAgICAgb3V0cHV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7XHJcbiAgICByZXR1cm4gb3V0cHV0O1xyXG59XHJcblxyXG4iXX0=
195
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1RFTVBMQVRFX1BBVEgiLCJERUZBVUxUX1NIRUVUX05BTUUiLCJERUZBVUxUX0VYVEVOU0lPTiIsIkVYQ0VMX0NPTFVNTlMiLCJnZW5lcmF0ZUV4Y2VsQ29sdW1ucyIsIkV4Y2VsUmVwb3J0ZXIiLCJGaWxlUmVwb3J0ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiZ2VuZXJhdGUiLCJyZXN1bHRzIiwicmVzdWx0RmlsZVBhdGgiLCJjcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aCIsInJlc3VsdEZvbGRlclBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInJvd3MiLCJyZXBsYWNlU2NyZWVuc2hvdHNXaXRoRmlsZXMiLCJyZXN1bHQiLCJzdWl0ZVJlc3VsdCIsInN1aXRlcyIsImdlbmVyYXRlUm93c0ZvclN1aXRlIiwidGVtcGxhdGVQYXRoIiwidGVtcGxhdGUiLCJ3b3JrYm9vayIsImdlbmVyYXRlV29ya3NoZWV0RnJvbVRlbXBsYXRlIiwieGxzeCIsIndyaXRlRmlsZSIsImJvb2tTU1QiLCJjYXNlUmVzdWx0IiwiY2FzZXMiLCJsYXN0RmFpbGVkU3RlcCIsInN0ZXAiLCJzdGVwcyIsInN0YXR1cyIsInB1c2giLCJhZGRWYWx1ZXMiLCJyZXF1aXJlIiwiZSIsIkVycm9yIiwibWVzc2FnZSIsIndiIiwiV29ya2Jvb2siLCJ3cyIsIndzTmFtZSIsInNoZWV0TmFtZSIsIlNoZWV0TmFtZXMiLCJTaGVldHMiLCJjb2x1bW4iLCJyb3ciLCJoZWFkZXIiLCJjZWxsQWRkcmVzcyIsImgiLCJsZW5ndGgiLCJ2YWx1ZSIsIl8iLCJlYWNoIiwicGFyYW0iLCJuYW1lIiwidiIsInZhciIsInRvdGFsQ29sdW1ucyIsInIiLCJjIiwic3Vic3RyYWN0UGFyYW1ldGVyIiwidW5kZWZpbmVkIiwidmFsdWVEZWYiLCJkYXRhIiwiaW5kZXhPZiIsInBhcmFtTmFtZSIsInN1YnN0cmluZyIsImNhcCIsInZhbHVlcyIsIml0ZXJhdGlvbk51bSIsIl9zY3JlZW5zaG90RmlsZSIsInNjcmVlbnNob3RGaWxlIiwiZmFpbHVyZSIsInR5cGUiLCJsb2NhdGlvbiIsImNvbnRleHQiLCJwYXJhbXMiLCJrZXkiLCJ2YXJzIiwiY2FwcyIsIm91dHB1dCIsImkiLCJjaGFyQ29kZUF0IiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL294X3JlcG9ydGVycy9yZXBvcnRlci1leGNlbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qXHJcbiAqIE94eWdlbiBFeGNlbCBSZXBvcnRlclxyXG4gKi9cclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB4bHN4IGZyb20gJ3hsc3gnO1xyXG5cclxuaW1wb3J0IEZpbGVSZXBvcnRlckJhc2UgZnJvbSAnLi4vcmVwb3J0ZXIvRmlsZVJlcG9ydGVyQmFzZSc7XHJcblxyXG5jb25zdCBERUZBVUxUX1RFTVBMQVRFX1BBVEggPSAnLi9leGNlbC90ZW1wbGF0ZS5qc29uJztcclxuY29uc3QgREVGQVVMVF9TSEVFVF9OQU1FID0gJ1NoZWV0MSc7XHJcbmNvbnN0IERFRkFVTFRfRVhURU5TSU9OID0gJy54bHN4JztcclxuY29uc3QgRVhDRUxfQ09MVU1OUyA9IGdlbmVyYXRlRXhjZWxDb2x1bW5zKCk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeGNlbFJlcG9ydGVyIGV4dGVuZHMgRmlsZVJlcG9ydGVyQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGUocmVzdWx0cykge1xyXG4gICAgICAgIHZhciByZXN1bHRGaWxlUGF0aCA9IHRoaXMuY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgoREVGQVVMVF9FWFRFTlNJT04pO1xyXG4gICAgICAgIHZhciByZXN1bHRGb2xkZXJQYXRoID0gcGF0aC5kaXJuYW1lKHJlc3VsdEZpbGVQYXRoKTtcclxuICAgICAgICB2YXIgcm93cyA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLnJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCByZXN1bHRGb2xkZXJQYXRoKTtcclxuICAgICAgICBmb3IgKGxldCByZXN1bHQgb2YgcmVzdWx0cykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBzdWl0ZVJlc3VsdCBvZiByZXN1bHQuc3VpdGVzKSB7XHJcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZVJvd3NGb3JTdWl0ZShzdWl0ZVJlc3VsdCwgcm93cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZ2VuZXJhdGUgd29ya2Jvb2sgYmFzZWQgb24gZWl0aGVyIHVzZXItZGVmaW5lZCBvciBkZWZhdWx0IHRlbXBsYXRlXHJcbiAgICAgICAgdmFyIHRlbXBsYXRlUGF0aCA9IHRoaXMub3B0aW9ucy50ZW1wbGF0ZSB8fCBERUZBVUxUX1RFTVBMQVRFX1BBVEg7XHJcbiAgICAgICAgdmFyIHdvcmtib29rID0gZ2VuZXJhdGVXb3Jrc2hlZXRGcm9tVGVtcGxhdGUodGVtcGxhdGVQYXRoLCByb3dzLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgICAgIC8vIHdyaXRlIHRvIGZpbGVcclxuICAgICAgICB4bHN4LndyaXRlRmlsZSh3b3JrYm9vaywgcmVzdWx0RmlsZVBhdGgsIHsgYm9va1NTVDogZmFsc2UgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRGaWxlUGF0aDtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVSb3dzRm9yU3VpdGUoc3VpdGVSZXN1bHQsIHJvd3MpIHtcclxuICAgIGZvciAobGV0IGNhc2VSZXN1bHQgb2Ygc3VpdGVSZXN1bHQuY2FzZXMpIHtcclxuICAgICAgICBsZXQgbGFzdEZhaWxlZFN0ZXAgPSBudWxsO1xyXG4gICAgICAgIGZvciAobGV0IHN0ZXAgb2YgY2FzZVJlc3VsdC5zdGVwcykge1xyXG4gICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09ICdmYWlsZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBsYXN0RmFpbGVkU3RlcCA9IHN0ZXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsYXN0RmFpbGVkU3RlcCA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29udmVydCBlYWNoIGl0ZXJhdGlvbiB0byBhIHJvdyBpbiBFeGNlbCBmaWxlXHJcbiAgICAgICAgcm93cy5wdXNoKGFkZFZhbHVlcyhzdWl0ZVJlc3VsdCwgY2FzZVJlc3VsdCwgbGFzdEZhaWxlZFN0ZXApKTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVXb3Jrc2hlZXRGcm9tVGVtcGxhdGUodGVtcGxhdGVQYXRoLCByb3dzLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgdGVtcGxhdGUgPSBudWxsO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB0ZW1wbGF0ZSA9IHJlcXVpcmUodGVtcGxhdGVQYXRoKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4Y2VsIHJlcG9ydGVyIHRlbXBsYXRlIGZpbGUgaXMgbm90IGZvdW5kIG9yIGlzIGluIGludmFsaWQgZm9ybWF0OiAnICsgdGVtcGxhdGVQYXRoICsgJy4gRXJyb3I6ICcgKyBlLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gICAgdmFyIHdiID0gbmV3IFdvcmtib29rKCk7XHJcbiAgICB2YXIgd3MgPSB7fTtcclxuICAgIHZhciB3c05hbWUgPSBvcHRpb25zLnNoZWV0TmFtZSB8fCBERUZBVUxUX1NIRUVUX05BTUU7XHJcbiAgICB3Yi5TaGVldE5hbWVzLnB1c2god3NOYW1lKTtcclxuICAgIHdiLlNoZWV0c1t3c05hbWVdID0gd3M7XHJcbiAgICB2YXIgY29sdW1uID0gMDtcclxuICAgIHZhciByb3c7XHJcbiAgICB2YXIgaGVhZGVyO1xyXG4gICAgdmFyIGNlbGxBZGRyZXNzO1xyXG5cclxuICAgIC8vIGdlbmVyYXRlIGhlYWRlcnMgcm93ICAgICAgICAgXHJcbiAgICBmb3IgKHZhciBoID0gMDsgaCA8IHRlbXBsYXRlLmxlbmd0aDsgaCsrKSB7XHJcbiAgICAgICAgaGVhZGVyID0gdGVtcGxhdGVbaF07XHJcblxyXG4gICAgICAgIC8vIGlmIGhlYWRlcidzIHZhbHVlIGlzIHBhcmFtLmFsbCBvciB2YXIuYWxsIHRoZW4gZ2VuZXJhdGUgY29sdW1ucyBmb3IgZWFjaCBwYXJhbWV0ZXIvdmFyaWFibGUgYXV0b21hdGljYWxseVxyXG4gICAgICAgIGlmIChoZWFkZXIudmFsdWUgPT09ICcke3BhcmFtLmFsbH0nICYmIHJvd3MgJiYgcm93cy5sZW5ndGggJiYgcm93cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIC8vIHJlYWQgcGFyYW1ldGVyIG5hbWVzIGZyb20gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgYXNzdW1pbmcgcGFyYW1ldGVyIG5hbWVzIHJlbWFpbiB0aGUgc2FtZSBmb3IgYWxsIGl0ZXJhdGlvbnNcclxuICAgICAgICAgICAgcm93ID0gcm93c1swXTtcclxuICAgICAgICAgICAgXy5lYWNoKHJvdy5wYXJhbSwgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNlbGxBZGRyZXNzID0gRVhDRUxfQ09MVU1OU1tjb2x1bW5dICsgJzEnO1xyXG4gICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4rKztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIudmFsdWUgPT09ICcke3Zhci5hbGx9JyAmJiByb3dzICYmIHJvd3MubGVuZ3RoICYmIHJvd3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAvLyByZWFkIHZhcmlhYmxlIG5hbWVzIGZyb20gdGhlIGZpcnN0IGl0ZXJhdGlvbiwgYXNzdW1pbmcgdmFyaWFibGUgbmFtZXMgcmVtYWluIHRoZSBzYW1lIGZvciBhbGwgaXRlcmF0aW9uc1xyXG4gICAgICAgICAgICByb3cgPSByb3dzWzBdO1xyXG4gICAgICAgICAgICBfLmVhY2gocm93LnZhciwgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIGNlbGxBZGRyZXNzID0gRVhDRUxfQ09MVU1OU1tjb2x1bW5dICsgJzEnO1xyXG4gICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4rKztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY2VsbEFkZHJlc3MgPSBFWENFTF9DT0xVTU5TW2NvbHVtbl0gKyAnMSc7XHJcbiAgICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXSA9IHt9O1xyXG4gICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IGhlYWRlci5oZWFkZXI7XHJcbiAgICAgICAgICAgIGNvbHVtbisrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgdG90YWxDb2x1bW5zID0gY29sdW1uO1xyXG5cclxuICAgIC8vIGdlbmVyYXRlIGRhdGEgcm93c1xyXG4gICAgZm9yICh2YXIgciA9IDA7IHIgPCByb3dzLmxlbmd0aDsgcisrKSB7XHJcbiAgICAgICAgY29sdW1uID0gMDtcclxuICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IHRlbXBsYXRlLmxlbmd0aDsgYysrKSB7XHJcbiAgICAgICAgICAgIHJvdyA9IHJvd3Nbcl07XHJcbiAgICAgICAgICAgIGhlYWRlciA9IHRlbXBsYXRlW2NdO1xyXG4gICAgICAgICAgICAvLyBpZiBoZWFkZXIncyB2YWx1ZSBpcyBwYXJhbS5hbGwgb3IgdmFyLmFsbCB0aGVuIGdlbmVyYXRlIGNvbHVtbnMgZm9yIGVhY2ggcGFyYW1ldGVyL3ZhcmlhYmxlIGF1dG9tYXRpY2FsbHlcclxuICAgICAgICAgICAgaWYgKGhlYWRlci52YWx1ZSA9PT0gJyR7cGFyYW0uYWxsfScpIHtcclxuICAgICAgICAgICAgICAgIGlmICghcm93LnBhcmFtIHx8ICFyb3cucGFyYW0pIHtcclxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF8uZWFjaChyb3cucGFyYW0sIGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2VsbEFkZHJlc3MgPSBFWENFTF9DT0xVTU5TW2NvbHVtbl0gKyAociArIDIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIHdzW2NlbGxBZGRyZXNzXS52ID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uKys7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChoZWFkZXIudmFsdWUgPT09ICcke3Zhci5hbGx9Jykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFyb3cudmFyIHx8ICFyb3cudmFyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBfLmVhY2gocm93LnZhciwgZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjZWxsQWRkcmVzcyA9IEVYQ0VMX0NPTFVNTlNbY29sdW1uXSArIChyICsgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdLnYgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4rKztcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2VsbEFkZHJlc3MgPSBFWENFTF9DT0xVTU5TW2NvbHVtbl0gKyAociArIDIpO1xyXG4gICAgICAgICAgICAgICAgd3NbY2VsbEFkZHJlc3NdID0ge307XHJcbiAgICAgICAgICAgICAgICB3c1tjZWxsQWRkcmVzc10udiA9IHN1YnN0cmFjdFBhcmFtZXRlcihoZWFkZXIudmFsdWUsIHJvdykgfHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uKys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBzZXQgd29ya3NoZWV0IHJhbmdlXHJcbiAgICBpZiAodGVtcGxhdGUubGVuZ3RoID4gMCAmJiByb3dzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB3c1snIXJlZiddID0gJ0ExOicgKyBFWENFTF9DT0xVTU5TW3RlbXBsYXRlLmxlbmd0aCAtIDEgKyB0b3RhbENvbHVtbnNdICsgKHJvd3MubGVuZ3RoICsgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdiO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzdWJzdHJhY3RQYXJhbWV0ZXIodmFsdWVEZWYsIGRhdGEpIHtcclxuICAgIGlmICghdmFsdWVEZWYgfHwgIXZhbHVlRGVmLmxlbmd0aCB8fCB2YWx1ZURlZi5sZW5ndGggPT0gMClcclxuICAgICAgICByZXR1cm4gdmFsdWVEZWY7XHJcbiAgICAvLyBjaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBwYXJhbXRlclxyXG4gICAgaWYgKHZhbHVlRGVmLmluZGV4T2YoJyR7JykgPT0gMCAmJiB2YWx1ZURlZi5pbmRleE9mKCd9JykgPT0gdmFsdWVEZWYubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHZhciBwYXJhbU5hbWUgPSB2YWx1ZURlZi5zdWJzdHJpbmcoMiwgdmFsdWVEZWYubGVuZ3RoIC0gMSk7XHJcbiAgICAgICAgaWYgKHBhcmFtTmFtZS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWVEZWY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwYXJhbU5hbWUuaW5kZXhPZigncGFyYW0uJykgPT0gMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0YS5wYXJhbVtwYXJhbU5hbWUuc3Vic3RyaW5nKCdwYXJhbS4nLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJhbU5hbWUuaW5kZXhPZigndmFyLicpID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGEudmFyW3BhcmFtTmFtZS5zdWJzdHJpbmcoJ3Zhci4nLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwYXJhbU5hbWUuaW5kZXhPZignY2FwLicpID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGRhdGEuY2FwW3BhcmFtTmFtZS5zdWJzdHJpbmcoJ2NhcC4nLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZGF0YVtwYXJhbU5hbWVdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlRGVmO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhZGRWYWx1ZXMoc3VpdGVSZXN1bHQsIGNhc2VSZXN1bHQsIGxhc3RGYWlsZWRTdGVwKSB7XHJcbiAgICB2YXIgdmFsdWVzID0ge307XHJcbiAgICB2YWx1ZXNbJ3N1aXRlLm5hbWUnXSA9IHN1aXRlUmVzdWx0Lm5hbWU7XHJcbiAgICB2YWx1ZXNbJ3N1aXRlLml0ZXJhdGlvbiddID0gc3VpdGVSZXN1bHQuaXRlcmF0aW9uTnVtO1xyXG4gICAgdmFsdWVzWydzdWl0ZS5zdGF0dXMnXSA9IHN1aXRlUmVzdWx0LnN0YXR1cztcclxuICAgIHZhbHVlc1snY2FzZS5uYW1lJ10gPSBjYXNlUmVzdWx0Lm5hbWU7XHJcbiAgICB2YWx1ZXNbJ2Nhc2UuaXRlcmF0aW9uJ10gPSBjYXNlUmVzdWx0Lml0ZXJhdGlvbk51bTtcclxuICAgIHZhbHVlc1snY2FzZS5zdGF0dXMnXSA9IGNhc2VSZXN1bHQuc3RhdHVzO1xyXG5cclxuICAgIGlmIChsYXN0RmFpbGVkU3RlcCkge1xyXG4gICAgICAgIHZhbHVlc1snZmFpbHVyZS5zdGVwJ10gPSBsYXN0RmFpbGVkU3RlcC5uYW1lO1xyXG4gICAgICAgIGlmIChsYXN0RmFpbGVkU3RlcC5fc2NyZWVuc2hvdEZpbGUpIHtcclxuICAgICAgICAgICAgdmFsdWVzWydmYWlsdXJlLnNjcmVlbnNob3QnXSA9IGxhc3RGYWlsZWRTdGVwLnNjcmVlbnNob3RGaWxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFzdEZhaWxlZFN0ZXAuZmFpbHVyZSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNbJ2ZhaWx1cmUubWVzc2FnZSddID0gbGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICB2YWx1ZXNbJ2ZhaWx1cmUudHlwZSddID0gbGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS50eXBlO1xyXG4gICAgICAgICAgICBpZiAobGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS5sb2NhdGlvbikge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzWydmYWlsdXJlLmxvY2F0aW9uJ10gPSBsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLmxvY2F0aW9uO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuICAgIHZhbHVlcy5wYXJhbSA9IHt9O1xyXG4gICAgXy5lYWNoKGNhc2VSZXN1bHQuY29udGV4dC5wYXJhbXMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcclxuICAgICAgICB2YWx1ZXMucGFyYW1ba2V5XSA9IHZhbHVlO1xyXG4gICAgfSk7XHJcbiAgICB2YWx1ZXMudmFyID0ge307XHJcbiAgICBfLmVhY2goY2FzZVJlc3VsdC5jb250ZXh0LnZhcnMsIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcclxuICAgICAgICB2YWx1ZXMudmFyW2tleV0gPSB2YWx1ZTtcclxuICAgIH0pO1xyXG4gICAgdmFsdWVzLmNhcCA9IHt9O1xyXG4gICAgXy5lYWNoKGNhc2VSZXN1bHQuY29udGV4dC5jYXBzLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7XHJcbiAgICAgICAgdmFsdWVzLmNhcFtrZXldID0gdmFsdWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG59XHJcblxyXG4vKiBkdW1teSB3b3JrYm9vayBjb25zdHJ1Y3RvciAqL1xyXG5mdW5jdGlvbiBXb3JrYm9vaygpIHtcclxuICAgIHRoaXMuU2hlZXROYW1lcyA9IFtdO1xyXG4gICAgdGhpcy5TaGVldHMgPSB7fTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhdGVFeGNlbENvbHVtbnMoKSB7XHJcbiAgICB2YXIgb3V0cHV0ID0gW107XHJcbiAgICBmb3IgKHZhciBpPSdBJy5jaGFyQ29kZUF0KDApOyBpIDw9ICdaJy5jaGFyQ29kZUF0KDApOyBpKyspXHJcbiAgICAgICAgb3V0cHV0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7XHJcbiAgICByZXR1cm4g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
@@ -4,26 +4,17 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _fs = _interopRequireDefault(require("fs"));
13
-
14
10
  var _moment = _interopRequireDefault(require("moment"));
15
-
16
11
  var _FileReporterBase = _interopRequireDefault(require("../reporter/FileReporterBase"));
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  const ejs = require('ejs');
21
-
22
14
  class HtmlReporter extends _FileReporterBase.default {
23
15
  constructor(options) {
24
16
  super(options);
25
17
  }
26
-
27
18
  generateSummary(results) {
28
19
  const summary = {
29
20
  status: 'passed',
@@ -48,36 +39,27 @@ class HtmlReporter extends _FileReporterBase.default {
48
39
  summary.endTime = Math.max.apply(null, results.map(res => res.endTime));
49
40
  summary.duration = summary.endTime - summary.startTime;
50
41
  summary.duration = this.formatDuration(summary.duration);
51
-
52
42
  for (let result of results) {
53
43
  summary.status = result.status === 'failed' ? 'failed' : summary.status;
54
-
55
44
  if (!Array.isArray(result.suites)) {
56
45
  continue;
57
46
  }
58
-
59
47
  summary.totalSuites += result.suites.length;
60
-
61
48
  for (let suiteResult of result.suites) {
62
49
  if (!Array.isArray(suiteResult.cases)) {
63
50
  continue;
64
51
  }
65
-
66
52
  summary.totalCases += suiteResult.cases.length;
67
53
  summary.passedSuites += suiteResult.status === 'passed' ? 1 : 0;
68
54
  summary.failedSuites += suiteResult.status === 'failed' ? 1 : 0;
69
-
70
55
  for (let caseResult of suiteResult.cases) {
71
56
  summary.passedCases += caseResult.status === 'passed' ? 1 : 0;
72
57
  summary.failedCases += caseResult.status === 'failed' ? 1 : 0;
73
58
  summary.skippedCases += caseResult.status === 'skipped' ? 1 : 0;
74
-
75
59
  if (!Array.isArray(caseResult.steps)) {
76
60
  continue;
77
61
  }
78
-
79
62
  summary.totalSteps += caseResult.steps.length;
80
-
81
63
  for (let stepResult of caseResult.steps) {
82
64
  summary.passedSteps += stepResult.status === 'passed' ? 1 : 0;
83
65
  summary.failedSteps += stepResult.status === 'failed' ? 1 : 0;
@@ -86,23 +68,17 @@ class HtmlReporter extends _FileReporterBase.default {
86
68
  }
87
69
  }
88
70
  }
89
-
90
71
  summary.startDate = (0, _moment.default)(summary.startTime).format('MMM DD');
91
72
  summary.startTime = (0, _moment.default)(summary.startTime).format('HH:mm');
92
73
  summary.endTime = (0, _moment.default)(summary.endTime).format('HH:mm');
93
74
  return summary;
94
75
  }
95
-
96
76
  generate(results) {
97
77
  const resultFilePath = this.createFolderStructureAndFilePath('.html');
98
-
99
78
  const resultFolderPath = _path.default.dirname(resultFilePath);
100
-
101
79
  this.replaceScreenshotsWithFiles(results, resultFolderPath);
102
80
  this.formatTotalDuration(results);
103
-
104
81
  const templatePath = _path.default.join(__dirname, '../ox_reporters/html/index.ejs');
105
-
106
82
  const summary = this.generateSummary(results);
107
83
  ejs.renderFile(templatePath, {
108
84
  summary: summary,
@@ -111,13 +87,10 @@ class HtmlReporter extends _FileReporterBase.default {
111
87
  if (err) {
112
88
  throw err;
113
89
  }
114
-
115
90
  _fs.default.writeFileSync(resultFilePath, html);
116
91
  });
117
92
  return resultFilePath;
118
93
  }
119
-
120
94
  }
121
-
122
95
  exports.default = HtmlReporter;
123
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9yZXBvcnRlcnMvcmVwb3J0ZXItaHRtbC5qcyJdLCJuYW1lcyI6WyJlanMiLCJyZXF1aXJlIiwiSHRtbFJlcG9ydGVyIiwiRmlsZVJlcG9ydGVyQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImdlbmVyYXRlU3VtbWFyeSIsInJlc3VsdHMiLCJzdW1tYXJ5Iiwic3RhdHVzIiwic3RhcnREYXRlIiwic3RhcnRUaW1lIiwiZHVyYXRpb24iLCJlbmRUaW1lIiwidG90YWxUZXN0cyIsImxlbmd0aCIsInRvdGFsU3VpdGVzIiwicGFzc2VkU3VpdGVzIiwiZmFpbGVkU3VpdGVzIiwidG90YWxDYXNlcyIsInBhc3NlZENhc2VzIiwiZmFpbGVkQ2FzZXMiLCJza2lwcGVkQ2FzZXMiLCJ0b3RhbFN0ZXBzIiwicGFzc2VkU3RlcHMiLCJmYWlsZWRTdGVwcyIsInNraXBwZWRTdGVwcyIsIk1hdGgiLCJtaW4iLCJhcHBseSIsIm1hcCIsInJlcyIsIm1heCIsImZvcm1hdER1cmF0aW9uIiwicmVzdWx0IiwiQXJyYXkiLCJpc0FycmF5Iiwic3VpdGVzIiwic3VpdGVSZXN1bHQiLCJjYXNlcyIsImNhc2VSZXN1bHQiLCJzdGVwcyIsInN0ZXBSZXN1bHQiLCJmb3JtYXQiLCJnZW5lcmF0ZSIsInJlc3VsdEZpbGVQYXRoIiwiY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgiLCJyZXN1bHRGb2xkZXJQYXRoIiwicGF0aCIsImRpcm5hbWUiLCJyZXBsYWNlU2NyZWVuc2hvdHNXaXRoRmlsZXMiLCJmb3JtYXRUb3RhbER1cmF0aW9uIiwidGVtcGxhdGVQYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsInJlbmRlckZpbGUiLCJlcnIiLCJodG1sIiwiZnMiLCJ3cml0ZUZpbGVTeW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFhQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUpBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7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QWYsRUFBMEJnQyxNQUExQixDQUFpQyxPQUFqQyxDQUFwQjtBQUNBbkMsSUFBQUEsT0FBTyxDQUFDSyxPQUFSLEdBQWtCLHFCQUFPTCxPQUFPLENBQUNLLE9BQWYsRUFBd0I4QixNQUF4QixDQUErQixPQUEvQixDQUFsQjtBQUNBLFdBQU9uQyxPQUFQO0FBQ0g7O0FBRURvQyxFQUFBQSxRQUFRLENBQUNyQyxPQUFELEVBQVU7QUFDZCxVQUFNc0MsY0FBYyxHQUFHLEtBQUtDLGdDQUFMLENBQXNDLE9BQXRDLENBQXZCOztBQUNBLFVBQU1DLGdCQUFnQixHQUFHQyxjQUFLQyxPQUFMLENBQWFKLGNBQWIsQ0FBekI7O0FBRUEsU0FBS0ssMkJBQUwsQ0FBaUMzQyxPQUFqQyxFQUEwQ3dDLGdCQUExQztBQUNBLFNBQUtJLG1CQUFMLENBQXlCNUMsT0FBekI7O0FBRUEsVUFBTTZDLFlBQVksR0FBR0osY0FBS0ssSUFBTCxDQUFVQyxTQUFWLEVBQXFCLGdDQUFyQixDQUFyQjs7QUFDQSxVQUFNOUMsT0FBTyxHQUFHLEtBQUtGLGVBQUwsQ0FBcUJDLE9BQXJCLENBQWhCO0FBR0FQLElBQUFBLEdBQUcsQ0FBQ3VELFVBQUosQ0FBZUgsWUFBZixFQUE2QjtBQUFDNUMsTUFBQUEsT0FBTyxFQUFFQSxPQUFWO0FBQW1CRCxNQUFBQSxPQUFPLEVBQUVBO0FBQTVCLEtBQTdCLEVBQW1FLElBQW5FLEVBQXlFLFVBQVNpRCxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDekYsVUFBSUQsR0FBSixFQUFTO0FBQ0wsY0FBTUEsR0FBTjtBQUNIOztBQUNERSxrQkFBR0MsYUFBSCxDQUFpQmQsY0FBakIsRUFBaUNZLElBQWpDO0FBQ0gsS0FMRDtBQU1BLFdBQU9aLGNBQVA7QUFDSDs7QUF4RnNEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKlxyXG4gKiBPeHlnZW4gSFRNTCBSZXBvcnRlclxyXG4gKi9cclxuY29uc3QgZWpzID0gcmVxdWlyZSgnZWpzJyk7XHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcbmltcG9ydCBGaWxlUmVwb3J0ZXJCYXNlIGZyb20gJy4uL3JlcG9ydGVyL0ZpbGVSZXBvcnRlckJhc2UnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHRtbFJlcG9ydGVyIGV4dGVuZHMgRmlsZVJlcG9ydGVyQmFzZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVTdW1tYXJ5KHJlc3VsdHMpIHtcclxuICAgICAgICBjb25zdCBzdW1tYXJ5ID0ge1xyXG4gICAgICAgICAgICBzdGF0dXM6ICdwYXNzZWQnLFxyXG4gICAgICAgICAgICBzdGFydERhdGU6IG51bGwsXHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTogbnVsbCxcclxuICAgICAgICAgICAgZHVyYXRpb246IG51bGwsXHJcbiAgICAgICAgICAgIGVuZFRpbWU6IG51bGwsXHJcbiAgICAgICAgICAgIHRvdGFsVGVzdHM6IHJlc3VsdHMubGVuZ3RoLFxyXG4gICAgICAgICAgICB0b3RhbFN1aXRlczogMCxcclxuICAgICAgICAgICAgcGFzc2VkU3VpdGVzOiAwLFxyXG4gICAgICAgICAgICBmYWlsZWRTdWl0ZXM6IDAsXHJcbiAgICAgICAgICAgIHRvdGFsQ2FzZXM6IDAsXHJcbiAgICAgICAgICAgIHBhc3NlZENhc2VzOiAwLFxyXG4gICAgICAgICAgICBmYWlsZWRDYXNlczogMCxcclxuICAgICAgICAgICAgc2tpcHBlZENhc2VzOiAwLFxyXG4gICAgICAgICAgICB0b3RhbFN0ZXBzOiAwLFxyXG4gICAgICAgICAgICBwYXNzZWRTdGVwczogMCxcclxuICAgICAgICAgICAgZmFpbGVkU3RlcHM6IDAsXHJcbiAgICAgICAgICAgIHNraXBwZWRTdGVwczogMCxcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgZWFybGllc3QgdGVzdCBzdGFydCB0aW1lXHJcbiAgICAgICAgc3VtbWFyeS5zdGFydFRpbWUgPSBNYXRoLm1pbi5hcHBseShudWxsLCByZXN1bHRzLm1hcChyZXMgPT4gcmVzLnN0YXJ0VGltZSkpO1xyXG4gICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgbGF0ZXN0IHRlc3QgZW5kIHRpbWVcclxuICAgICAgICBzdW1tYXJ5LmVuZFRpbWUgPSBNYXRoLm1heC5hcHBseShudWxsLCByZXN1bHRzLm1hcChyZXMgPT4gcmVzLmVuZFRpbWUpKTtcclxuICAgICAgICAvLyBjYWxjdWxhdGUgb3ZlcmFsbCBkdXJhdGlvblxyXG4gICAgICAgIHN1bW1hcnkuZHVyYXRpb24gPSBzdW1tYXJ5LmVuZFRpbWUgLSBzdW1tYXJ5LnN0YXJ0VGltZTtcclxuICAgICAgICAvLyBjb252ZXJ0IGR1cmF0aW9uIGZyb20gbXMgdG8gc2VjXHJcbiAgICAgICAgc3VtbWFyeS5kdXJhdGlvbiA9IHRoaXMuZm9ybWF0RHVyYXRpb24oc3VtbWFyeS5kdXJhdGlvbik7XHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgLy8gY2hlY2sgaWYgYW55IHRlc3QgaGFzIGZhaWxlZFxyXG4gICAgICAgICAgICBzdW1tYXJ5LnN0YXR1cyA9IHJlc3VsdC5zdGF0dXMgPT09ICdmYWlsZWQnID8gJ2ZhaWxlZCcgOiBzdW1tYXJ5LnN0YXR1cztcclxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHJlc3VsdC5zdWl0ZXMpKSB7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzdW1tYXJ5LnRvdGFsU3VpdGVzICs9IHJlc3VsdC5zdWl0ZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBzdWl0ZVJlc3VsdCBvZiByZXN1bHQuc3VpdGVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoc3VpdGVSZXN1bHQuY2FzZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBzdW1tYXJ5LnRvdGFsQ2FzZXMgKz0gc3VpdGVSZXN1bHQuY2FzZXMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgc3VtbWFyeS5wYXNzZWRTdWl0ZXMgKz0gc3VpdGVSZXN1bHQuc3RhdHVzID09PSAncGFzc2VkJyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgc3VtbWFyeS5mYWlsZWRTdWl0ZXMgKz0gc3VpdGVSZXN1bHQuc3RhdHVzID09PSAnZmFpbGVkJyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgY2FzZVJlc3VsdCBvZiBzdWl0ZVJlc3VsdC5jYXNlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcnkucGFzc2VkQ2FzZXMgKz0gY2FzZVJlc3VsdC5zdGF0dXMgPT09ICdwYXNzZWQnID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeS5mYWlsZWRDYXNlcyArPSBjYXNlUmVzdWx0LnN0YXR1cyA9PT0gJ2ZhaWxlZCcgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnNraXBwZWRDYXNlcyArPSBjYXNlUmVzdWx0LnN0YXR1cyA9PT0gJ3NraXBwZWQnID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNhc2VSZXN1bHQuc3RlcHMpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnRvdGFsU3RlcHMgKz0gY2FzZVJlc3VsdC5zdGVwcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3RlcFJlc3VsdCBvZiBjYXNlUmVzdWx0LnN0ZXBzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkucGFzc2VkU3RlcHMgKz0gc3RlcFJlc3VsdC5zdGF0dXMgPT09ICdwYXNzZWQnID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkuZmFpbGVkU3RlcHMgKz0gc3RlcFJlc3VsdC5zdGF0dXMgPT09ICdmYWlsZWQnID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkuc2tpcHBlZFN0ZXBzICs9IHN0ZXBSZXN1bHQuc3RhdHVzID09PSAnc2tpcHBlZCcgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZm9ybWF0IGRhdGUgYW5kIHRpbWVcclxuICAgICAgICBzdW1tYXJ5LnN0YXJ0RGF0ZSA9IG1vbWVudChzdW1tYXJ5LnN0YXJ0VGltZSkuZm9ybWF0KCdNTU0gREQnKTtcclxuICAgICAgICBzdW1tYXJ5LnN0YXJ0VGltZSA9IG1vbWVudChzdW1tYXJ5LnN0YXJ0VGltZSkuZm9ybWF0KCdISDptbScpO1xyXG4gICAgICAgIHN1bW1hcnkuZW5kVGltZSA9IG1vbWVudChzdW1tYXJ5LmVuZFRpbWUpLmZvcm1hdCgnSEg6bW0nKTtcclxuICAgICAgICByZXR1cm4gc3VtbWFyeTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZShyZXN1bHRzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0RmlsZVBhdGggPSB0aGlzLmNyZWF0ZUZvbGRlclN0cnVjdHVyZUFuZEZpbGVQYXRoKCcuaHRtbCcpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEZvbGRlclBhdGggPSBwYXRoLmRpcm5hbWUocmVzdWx0RmlsZVBhdGgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCByZXN1bHRGb2xkZXJQYXRoKTtcclxuICAgICAgICB0aGlzLmZvcm1hdFRvdGFsRHVyYXRpb24ocmVzdWx0cyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9veF9yZXBvcnRlcnMvaHRtbC9pbmRleC5lanMnKTtcclxuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5nZW5lcmF0ZVN1bW1hcnkocmVzdWx0cyk7XHJcblxyXG4gICAgICAgIC8vIHJlbmRlciBIVE1MIGFuZCB3cml0ZSBpdCB0byBmaWxlXHJcbiAgICAgICAgZWpzLnJlbmRlckZpbGUodGVtcGxhdGVQYXRoLCB7c3VtbWFyeTogc3VtbWFyeSwgcmVzdWx0czogcmVzdWx0c30sIG51bGwsIGZ1bmN0aW9uKGVyciwgaHRtbCkge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyZXN1bHRGaWxlUGF0aCwgaHRtbCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdEZpbGVQYXRoO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlanMiLCJyZXF1aXJlIiwiSHRtbFJlcG9ydGVyIiwiRmlsZVJlcG9ydGVyQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImdlbmVyYXRlU3VtbWFyeSIsInJlc3VsdHMiLCJzdW1tYXJ5Iiwic3RhdHVzIiwic3RhcnREYXRlIiwic3RhcnRUaW1lIiwiZHVyYXRpb24iLCJlbmRUaW1lIiwidG90YWxUZXN0cyIsImxlbmd0aCIsInRvdGFsU3VpdGVzIiwicGFzc2VkU3VpdGVzIiwiZmFpbGVkU3VpdGVzIiwidG90YWxDYXNlcyIsInBhc3NlZENhc2VzIiwiZmFpbGVkQ2FzZXMiLCJza2lwcGVkQ2FzZXMiLCJ0b3RhbFN0ZXBzIiwicGFzc2VkU3RlcHMiLCJmYWlsZWRTdGVwcyIsInNraXBwZWRTdGVwcyIsIk1hdGgiLCJtaW4iLCJhcHBseSIsIm1hcCIsInJlcyIsIm1heCIsImZvcm1hdER1cmF0aW9uIiwicmVzdWx0IiwiQXJyYXkiLCJpc0FycmF5Iiwic3VpdGVzIiwic3VpdGVSZXN1bHQiLCJjYXNlcyIsImNhc2VSZXN1bHQiLCJzdGVwcyIsInN0ZXBSZXN1bHQiLCJtb21lbnQiLCJmb3JtYXQiLCJnZW5lcmF0ZSIsInJlc3VsdEZpbGVQYXRoIiwiY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgiLCJyZXN1bHRGb2xkZXJQYXRoIiwicGF0aCIsImRpcm5hbWUiLCJyZXBsYWNlU2NyZWVuc2hvdHNXaXRoRmlsZXMiLCJmb3JtYXRUb3RhbER1cmF0aW9uIiwidGVtcGxhdGVQYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsInJlbmRlckZpbGUiLCJlcnIiLCJodG1sIiwiZnMiLCJ3cml0ZUZpbGVTeW5jIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL294X3JlcG9ydGVycy9yZXBvcnRlci1odG1sLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEhUTUwgUmVwb3J0ZXJcclxuICovXHJcbmNvbnN0IGVqcyA9IHJlcXVpcmUoJ2VqcycpO1xyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuaW1wb3J0IGZzIGZyb20gJ2ZzJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgRmlsZVJlcG9ydGVyQmFzZSBmcm9tICcuLi9yZXBvcnRlci9GaWxlUmVwb3J0ZXJCYXNlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh0bWxSZXBvcnRlciBleHRlbmRzIEZpbGVSZXBvcnRlckJhc2Uge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlU3VtbWFyeShyZXN1bHRzKSB7XHJcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHtcclxuICAgICAgICAgICAgc3RhdHVzOiAncGFzc2VkJyxcclxuICAgICAgICAgICAgc3RhcnREYXRlOiBudWxsLFxyXG4gICAgICAgICAgICBzdGFydFRpbWU6IG51bGwsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBudWxsLFxyXG4gICAgICAgICAgICBlbmRUaW1lOiBudWxsLFxyXG4gICAgICAgICAgICB0b3RhbFRlc3RzOiByZXN1bHRzLmxlbmd0aCxcclxuICAgICAgICAgICAgdG90YWxTdWl0ZXM6IDAsXHJcbiAgICAgICAgICAgIHBhc3NlZFN1aXRlczogMCxcclxuICAgICAgICAgICAgZmFpbGVkU3VpdGVzOiAwLFxyXG4gICAgICAgICAgICB0b3RhbENhc2VzOiAwLFxyXG4gICAgICAgICAgICBwYXNzZWRDYXNlczogMCxcclxuICAgICAgICAgICAgZmFpbGVkQ2FzZXM6IDAsXHJcbiAgICAgICAgICAgIHNraXBwZWRDYXNlczogMCxcclxuICAgICAgICAgICAgdG90YWxTdGVwczogMCxcclxuICAgICAgICAgICAgcGFzc2VkU3RlcHM6IDAsXHJcbiAgICAgICAgICAgIGZhaWxlZFN0ZXBzOiAwLFxyXG4gICAgICAgICAgICBza2lwcGVkU3RlcHM6IDAsXHJcbiAgICAgICAgfTtcclxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIGVhcmxpZXN0IHRlc3Qgc3RhcnQgdGltZVxyXG4gICAgICAgIHN1bW1hcnkuc3RhcnRUaW1lID0gTWF0aC5taW4uYXBwbHkobnVsbCwgcmVzdWx0cy5tYXAocmVzID0+IHJlcy5zdGFydFRpbWUpKTtcclxuICAgICAgICAvLyBjYWxjdWxhdGUgdGhlIGxhdGVzdCB0ZXN0IGVuZCB0aW1lXHJcbiAgICAgICAgc3VtbWFyeS5lbmRUaW1lID0gTWF0aC5tYXguYXBwbHkobnVsbCwgcmVzdWx0cy5tYXAocmVzID0+IHJlcy5lbmRUaW1lKSk7XHJcbiAgICAgICAgLy8gY2FsY3VsYXRlIG92ZXJhbGwgZHVyYXRpb25cclxuICAgICAgICBzdW1tYXJ5LmR1cmF0aW9uID0gc3VtbWFyeS5lbmRUaW1lIC0gc3VtbWFyeS5zdGFydFRpbWU7XHJcbiAgICAgICAgLy8gY29udmVydCBkdXJhdGlvbiBmcm9tIG1zIHRvIHNlY1xyXG4gICAgICAgIHN1bW1hcnkuZHVyYXRpb24gPSB0aGlzLmZvcm1hdER1cmF0aW9uKHN1bW1hcnkuZHVyYXRpb24pO1xyXG4gICAgICAgIGZvciAobGV0IHJlc3VsdCBvZiByZXN1bHRzKSB7XHJcbiAgICAgICAgICAgIC8vIGNoZWNrIGlmIGFueSB0ZXN0IGhhcyBmYWlsZWRcclxuICAgICAgICAgICAgc3VtbWFyeS5zdGF0dXMgPSByZXN1bHQuc3RhdHVzID09PSAnZmFpbGVkJyA/ICdmYWlsZWQnIDogc3VtbWFyeS5zdGF0dXM7XHJcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyZXN1bHQuc3VpdGVzKSkge1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3VtbWFyeS50b3RhbFN1aXRlcyArPSByZXN1bHQuc3VpdGVzLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGVSZXN1bHQgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHN1aXRlUmVzdWx0LmNhc2VzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgc3VtbWFyeS50b3RhbENhc2VzICs9IHN1aXRlUmVzdWx0LmNhc2VzLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHN1bW1hcnkucGFzc2VkU3VpdGVzICs9IHN1aXRlUmVzdWx0LnN0YXR1cyA9PT0gJ3Bhc3NlZCcgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgIHN1bW1hcnkuZmFpbGVkU3VpdGVzICs9IHN1aXRlUmVzdWx0LnN0YXR1cyA9PT0gJ2ZhaWxlZCcgPyAxIDogMDtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGNhc2VSZXN1bHQgb2Ygc3VpdGVSZXN1bHQuY2FzZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnBhc3NlZENhc2VzICs9IGNhc2VSZXN1bHQuc3RhdHVzID09PSAncGFzc2VkJyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcnkuZmFpbGVkQ2FzZXMgKz0gY2FzZVJlc3VsdC5zdGF0dXMgPT09ICdmYWlsZWQnID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeS5za2lwcGVkQ2FzZXMgKz0gY2FzZVJlc3VsdC5zdGF0dXMgPT09ICdza2lwcGVkJyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjYXNlUmVzdWx0LnN0ZXBzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeS50b3RhbFN0ZXBzICs9IGNhc2VSZXN1bHQuc3RlcHMubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0ZXBSZXN1bHQgb2YgY2FzZVJlc3VsdC5zdGVwcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnBhc3NlZFN0ZXBzICs9IHN0ZXBSZXN1bHQuc3RhdHVzID09PSAncGFzc2VkJyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LmZhaWxlZFN0ZXBzICs9IHN0ZXBSZXN1bHQuc3RhdHVzID09PSAnZmFpbGVkJyA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LnNraXBwZWRTdGVwcyArPSBzdGVwUmVzdWx0LnN0YXR1cyA9PT0gJ3NraXBwZWQnID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGZvcm1hdCBkYXRlIGFuZCB0aW1lXHJcbiAgICAgICAgc3VtbWFyeS5zdGFydERhdGUgPSBtb21lbnQoc3VtbWFyeS5zdGFydFRpbWUpLmZvcm1hdCgnTU1NIEREJyk7XHJcbiAgICAgICAgc3VtbWFyeS5zdGFydFRpbWUgPSBtb21lbnQoc3VtbWFyeS5zdGFydFRpbWUpLmZvcm1hdCgnSEg6bW0nKTtcclxuICAgICAgICBzdW1tYXJ5LmVuZFRpbWUgPSBtb21lbnQoc3VtbWFyeS5lbmRUaW1lKS5mb3JtYXQoJ0hIOm1tJyk7XHJcbiAgICAgICAgcmV0dXJuIHN1bW1hcnk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGUocmVzdWx0cykge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEZpbGVQYXRoID0gdGhpcy5jcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aCgnLmh0bWwnKTtcclxuICAgICAgICBjb25zdCByZXN1bHRGb2xkZXJQYXRoID0gcGF0aC5kaXJuYW1lKHJlc3VsdEZpbGVQYXRoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZXBsYWNlU2NyZWVuc2hvdHNXaXRoRmlsZXMocmVzdWx0cywgcmVzdWx0Rm9sZGVyUGF0aCk7XHJcbiAgICAgICAgdGhpcy5mb3JtYXRUb3RhbER1cmF0aW9uKHJlc3VsdHMpO1xyXG5cclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vb3hfcmVwb3J0ZXJzL2h0bWwvaW5kZXguZWpzJyk7XHJcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuZ2VuZXJhdGVTdW1tYXJ5KHJlc3VsdHMpO1xyXG5cclxuICAgICAgICAvLyByZW5kZXIgSFRNTCBhbmQgd3JpdGUgaXQgdG8gZmlsZVxyXG4gICAgICAgIGVqcy5yZW5kZXJGaWxlKHRlbXBsYXRlUGF0aCwge3N1bW1hcnk6IHN1bW1hcnksIHJlc3VsdHM6IHJlc3VsdHN9LCBudWxsLCBmdW5jdGlvbihlcnIsIGh0bWwpIHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0RmlsZVBhdGgsIGh0bWwpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybiByZXN1bHRGaWxlUGF0aDtcclxuICAg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
@@ -4,35 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  var _path = _interopRequireDefault(require("path"));
11
-
12
9
  var _fs = _interopRequireDefault(require("fs"));
13
-
14
10
  var _FileReporterBase = _interopRequireDefault(require("../reporter/FileReporterBase"));
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  class JSONReporter extends _FileReporterBase.default {
19
13
  constructor(options) {
20
14
  super(options);
21
15
  }
22
-
23
16
  generate(results) {
24
17
  const resultFilePath = this.createFolderStructureAndFilePath('.json');
25
-
26
18
  const resultFolderPath = _path.default.dirname(resultFilePath);
27
-
28
19
  this.replaceScreenshotsWithFiles(results, resultFolderPath);
29
-
30
20
  _fs.default.writeFileSync(resultFilePath, JSON.stringify(results, null, 4));
31
-
32
21
  return resultFilePath;
33
22
  }
34
-
35
23
  }
36
-
37
24
  exports.default = JSONReporter;
38
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9yZXBvcnRlcnMvcmVwb3J0ZXItanNvbi5qcyJdLCJuYW1lcyI6WyJKU09OUmVwb3J0ZXIiLCJGaWxlUmVwb3J0ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiZ2VuZXJhdGUiLCJyZXN1bHRzIiwicmVzdWx0RmlsZVBhdGgiLCJjcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aCIsInJlc3VsdEZvbGRlclBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyIsImZzIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVlBOztBQUNBOztBQUVBOzs7O0FBRWUsTUFBTUEsWUFBTixTQUEyQkMseUJBQTNCLENBQTRDO0FBQ3ZEQyxFQUFBQSxXQUFXLENBQUNDLE9BQUQsRUFBVTtBQUNqQixVQUFNQSxPQUFOO0FBQ0g7O0FBRURDLEVBQUFBLFFBQVEsQ0FBQ0MsT0FBRCxFQUFVO0FBQ2QsVUFBTUMsY0FBYyxHQUFHLEtBQUtDLGdDQUFMLENBQXNDLE9BQXRDLENBQXZCOztBQUNBLFVBQU1DLGdCQUFnQixHQUFHQyxjQUFLQyxPQUFMLENBQWFKLGNBQWIsQ0FBekI7O0FBRUEsU0FBS0ssMkJBQUwsQ0FBaUNOLE9BQWpDLEVBQTBDRyxnQkFBMUM7O0FBQ0FJLGdCQUFHQyxhQUFILENBQWlCUCxjQUFqQixFQUFpQ1EsSUFBSSxDQUFDQyxTQUFMLENBQWVWLE9BQWYsRUFBd0IsSUFBeEIsRUFBOEIsQ0FBOUIsQ0FBakM7O0FBRUEsV0FBT0MsY0FBUDtBQUNIOztBQWJzRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEpTT04gUmVwb3J0ZXJcclxuICovXHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xyXG5cclxuaW1wb3J0IEZpbGVSZXBvcnRlckJhc2UgZnJvbSAnLi4vcmVwb3J0ZXIvRmlsZVJlcG9ydGVyQmFzZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBKU09OUmVwb3J0ZXIgZXh0ZW5kcyBGaWxlUmVwb3J0ZXJCYXNlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcclxuICAgICAgICBzdXBlcihvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZShyZXN1bHRzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0RmlsZVBhdGggPSB0aGlzLmNyZWF0ZUZvbGRlclN0cnVjdHVyZUFuZEZpbGVQYXRoKCcuanNvbicpO1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdEZvbGRlclBhdGggPSBwYXRoLmRpcm5hbWUocmVzdWx0RmlsZVBhdGgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCByZXN1bHRGb2xkZXJQYXRoKTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHJlc3VsdEZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShyZXN1bHRzLCBudWxsLCA0KSk7XHJcblxyXG4gICAgICAgIHJldHVybiByZXN1bHRGaWxlUGF0aDtcclxuICAgIH1cclxufVxyXG5cclxuIl19
25
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJKU09OUmVwb3J0ZXIiLCJGaWxlUmVwb3J0ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiZ2VuZXJhdGUiLCJyZXN1bHRzIiwicmVzdWx0RmlsZVBhdGgiLCJjcmVhdGVGb2xkZXJTdHJ1Y3R1cmVBbmRGaWxlUGF0aCIsInJlc3VsdEZvbGRlclBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyIsImZzIiwid3JpdGVGaWxlU3luYyIsIkpTT04iLCJzdHJpbmdpZnkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfcmVwb3J0ZXJzL3JlcG9ydGVyLWpzb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKlxyXG4gKiBPeHlnZW4gSlNPTiBSZXBvcnRlclxyXG4gKi9cclxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XHJcbmltcG9ydCBmcyBmcm9tICdmcyc7XHJcblxyXG5pbXBvcnQgRmlsZVJlcG9ydGVyQmFzZSBmcm9tICcuLi9yZXBvcnRlci9GaWxlUmVwb3J0ZXJCYXNlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEpTT05SZXBvcnRlciBleHRlbmRzIEZpbGVSZXBvcnRlckJhc2Uge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlKHJlc3VsdHMpIHtcclxuICAgICAgICBjb25zdCByZXN1bHRGaWxlUGF0aCA9IHRoaXMuY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgoJy5qc29uJyk7XHJcbiAgICAgICAgY29uc3QgcmVzdWx0Rm9sZGVyUGF0aCA9IHBhdGguZGlybmFtZShyZXN1bHRGaWxlUGF0aCk7XHJcblxyXG4gICAgICAgIHRoaXMucmVwbGFjZVNjcmVlbnNob3RzV2l0aEZpbGVzKHJlc3VsdHMsIHJlc3VsdEZvbGRlclBhdGgpO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0RmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHJlc3VsdHMsIG51bGwsIDQpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdEZpbGVQYXRoO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFZQTtBQUNBO0FBRUE7QUFBNEQ7QUFFN0MsTUFBTUEsWUFBWSxTQUFTQyx5QkFBZ0IsQ0FBQztFQUN2REMsV0FBVyxDQUFDQyxPQUFPLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxPQUFPLENBQUM7RUFDbEI7RUFFQUMsUUFBUSxDQUFDQyxPQUFPLEVBQUU7SUFDZCxNQUFNQyxjQUFjLEdBQUcsSUFBSSxDQUFDQyxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUM7SUFDckUsTUFBTUMsZ0JBQWdCLEdBQUdDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDSixjQUFjLENBQUM7SUFFckQsSUFBSSxDQUFDSywyQkFBMkIsQ0FBQ04sT0FBTyxFQUFFRyxnQkFBZ0IsQ0FBQztJQUMzREksV0FBRSxDQUFDQyxhQUFhLENBQUNQLGNBQWMsRUFBRVEsSUFBSSxDQUFDQyxTQUFTLENBQUNWLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbEUsT0FBT0MsY0FBYztFQUN6QjtBQUNKO0FBQUMifQ==
@@ -4,54 +4,37 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  require("source-map-support/register");
9
-
10
8
  var _junitReportBuilder = _interopRequireDefault(require("junit-report-builder"));
11
-
12
9
  var _path = _interopRequireDefault(require("path"));
13
-
14
10
  var _FileReporterBase = _interopRequireDefault(require("../reporter/FileReporterBase"));
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  class JUnitXmlReporter extends _FileReporterBase.default {
19
13
  constructor(options) {
20
14
  super(options);
21
15
  }
22
-
23
16
  generate(results) {
24
17
  var resultFilePath = this.createFolderStructureAndFilePath('.xml');
25
-
26
18
  var resultFolderPath = _path.default.dirname(resultFilePath);
27
-
28
19
  this.replaceScreenshotsWithFiles(results, resultFolderPath);
29
-
30
20
  for (let result of results) {
31
21
  for (let suite of result.suites) {
32
22
  this._populateSuiteResults(suite, _junitReportBuilder.default);
33
23
  }
34
24
  }
35
-
36
25
  _junitReportBuilder.default.writeTo(resultFilePath);
37
-
38
26
  return resultFilePath;
39
27
  }
40
-
41
28
  _populateSuiteResults(suiteResult, builder) {
42
29
  var suite = builder.testSuite().name(suiteResult.name);
43
-
44
30
  for (let caseResult of suiteResult.cases) {
45
31
  let testCase = suite.testCase().name(caseResult.name);
46
32
  testCase.className(caseResult.location);
47
33
  testCase.time(caseResult.duration ? caseResult.duration / 1000 : 0);
48
-
49
34
  if (testCase._attributes && typeof testCase._attributes === 'object') {
50
35
  testCase._attributes.status = caseResult.status;
51
36
  }
52
-
53
37
  let lastFailedStep = null;
54
-
55
38
  for (let step of caseResult.steps) {
56
39
  if (step.status === 'failed') {
57
40
  lastFailedStep = step;
@@ -59,26 +42,20 @@ class JUnitXmlReporter extends _FileReporterBase.default {
59
42
  lastFailedStep = null;
60
43
  }
61
44
  }
62
-
63
45
  if (lastFailedStep) {
64
46
  const type = lastFailedStep.failure.type || null;
65
47
  let message = lastFailedStep.failure.message || '';
66
48
  message += lastFailedStep.failure.line ? ' at line ' + lastFailedStep.failure.line : '';
67
-
68
49
  if (message === '') {
69
50
  message = null;
70
51
  }
71
-
72
52
  testCase.failure(message, type);
73
-
74
53
  if (lastFailedStep.failure.data) {
75
54
  testCase.stacktrace(lastFailedStep.failure.data);
76
55
  }
77
56
  }
78
57
  }
79
58
  }
80
-
81
59
  }
82
-
83
60
  exports.default = JUnitXmlReporter;
84
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9yZXBvcnRlcnMvcmVwb3J0ZXItanVuaXQuanMiXSwibmFtZXMiOlsiSlVuaXRYbWxSZXBvcnRlciIsIkZpbGVSZXBvcnRlckJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJnZW5lcmF0ZSIsInJlc3VsdHMiLCJyZXN1bHRGaWxlUGF0aCIsImNyZWF0ZUZvbGRlclN0cnVjdHVyZUFuZEZpbGVQYXRoIiwicmVzdWx0Rm9sZGVyUGF0aCIsInBhdGgiLCJkaXJuYW1lIiwicmVwbGFjZVNjcmVlbnNob3RzV2l0aEZpbGVzIiwicmVzdWx0Iiwic3VpdGUiLCJzdWl0ZXMiLCJfcG9wdWxhdGVTdWl0ZVJlc3VsdHMiLCJidWlsZGVyIiwid3JpdGVUbyIsInN1aXRlUmVzdWx0IiwidGVzdFN1aXRlIiwibmFtZSIsImNhc2VSZXN1bHQiLCJjYXNlcyIsInRlc3RDYXNlIiwiY2xhc3NOYW1lIiwibG9jYXRpb24iLCJ0aW1lIiwiZHVyYXRpb24iLCJfYXR0cmlidXRlcyIsInN0YXR1cyIsImxhc3RGYWlsZWRTdGVwIiwic3RlcCIsInN0ZXBzIiwidHlwZSIsImZhaWx1cmUiLCJtZXNzYWdlIiwibGluZSIsImRhdGEiLCJzdGFja3RyYWNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFZQTs7QUFDQTs7QUFFQTs7OztBQUVlLE1BQU1BLGdCQUFOLFNBQStCQyx5QkFBL0IsQ0FBZ0Q7QUFDM0RDLEVBQUFBLFdBQVcsQ0FBQ0MsT0FBRCxFQUFVO0FBQ2pCLFVBQU1BLE9BQU47QUFDSDs7QUFFREMsRUFBQUEsUUFBUSxDQUFDQyxPQUFELEVBQVU7QUFDZCxRQUFJQyxjQUFjLEdBQUcsS0FBS0MsZ0NBQUwsQ0FBc0MsTUFBdEMsQ0FBckI7O0FBQ0EsUUFBSUMsZ0JBQWdCLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUosY0FBYixDQUF2Qjs7QUFFQSxTQUFLSywyQkFBTCxDQUFpQ04sT0FBakMsRUFBMENHLGdCQUExQzs7QUFFQSxTQUFLLElBQUlJLE1BQVQsSUFBbUJQLE9BQW5CLEVBQTRCO0FBQ3hCLFdBQUssSUFBSVEsS0FBVCxJQUFrQkQsTUFBTSxDQUFDRSxNQUF6QixFQUFpQztBQUM3QixhQUFLQyxxQkFBTCxDQUEyQkYsS0FBM0IsRUFBa0NHLDJCQUFsQztBQUNIO0FBQ0o7O0FBRURBLGdDQUFRQyxPQUFSLENBQWdCWCxjQUFoQjs7QUFFQSxXQUFPQSxjQUFQO0FBQ0g7O0FBRURTLEVBQUFBLHFCQUFxQixDQUFDRyxXQUFELEVBQWNGLE9BQWQsRUFBdUI7QUFDeEMsUUFBSUgsS0FBSyxHQUFHRyxPQUFPLENBQUNHLFNBQVIsR0FBb0JDLElBQXBCLENBQXlCRixXQUFXLENBQUNFLElBQXJDLENBQVo7O0FBQ0EsU0FBSyxJQUFJQyxVQUFULElBQXVCSCxXQUFXLENBQUNJLEtBQW5DLEVBQTBDO0FBQ3RDLFVBQUlDLFFBQVEsR0FBR1YsS0FBSyxDQUFDVSxRQUFOLEdBQWlCSCxJQUFqQixDQUFzQkMsVUFBVSxDQUFDRCxJQUFqQyxDQUFmO0FBQ0FHLE1BQUFBLFFBQVEsQ0FBQ0MsU0FBVCxDQUFtQkgsVUFBVSxDQUFDSSxRQUE5QjtBQUNBRixNQUFBQSxRQUFRLENBQUNHLElBQVQsQ0FBY0wsVUFBVSxDQUFDTSxRQUFYLEdBQXNCTixVQUFVLENBQUNNLFFBQVgsR0FBc0IsSUFBNUMsR0FBbUQsQ0FBakU7O0FBQ0EsVUFBSUosUUFBUSxDQUFDSyxXQUFULElBQXdCLE9BQU9MLFFBQVEsQ0FBQ0ssV0FBaEIsS0FBZ0MsUUFBNUQsRUFBc0U7QUFDbEVMLFFBQUFBLFFBQVEsQ0FBQ0ssV0FBVCxDQUFxQkMsTUFBckIsR0FBOEJSLFVBQVUsQ0FBQ1EsTUFBekM7QUFDSDs7QUFDRCxVQUFJQyxjQUFjLEdBQUcsSUFBckI7O0FBQ0EsV0FBSyxJQUFJQyxJQUFULElBQWlCVixVQUFVLENBQUNXLEtBQTVCLEVBQW1DO0FBQy9CLFlBQUlELElBQUksQ0FBQ0YsTUFBTCxLQUFnQixRQUFwQixFQUE4QjtBQUMxQkMsVUFBQUEsY0FBYyxHQUFHQyxJQUFqQjtBQUNILFNBRkQsTUFHSztBQUNERCxVQUFBQSxjQUFjLEdBQUcsSUFBakI7QUFDSDtBQUNKOztBQUNELFVBQUlBLGNBQUosRUFBb0I7QUFDaEIsY0FBTUcsSUFBSSxHQUFHSCxjQUFjLENBQUNJLE9BQWYsQ0FBdUJELElBQXZCLElBQStCLElBQTVDO0FBQ0EsWUFBSUUsT0FBTyxHQUFJTCxjQUFjLENBQUNJLE9BQWYsQ0FBdUJDLE9BQXZCLElBQWtDLEVBQWpEO0FBQ0FBLFFBQUFBLE9BQU8sSUFBSUwsY0FBYyxDQUFDSSxPQUFmLENBQXVCRSxJQUF2QixHQUE4QixjQUFjTixjQUFjLENBQUNJLE9BQWYsQ0FBdUJFLElBQW5FLEdBQTBFLEVBQXJGOztBQUNBLFlBQUlELE9BQU8sS0FBSyxFQUFoQixFQUFvQjtBQUNoQkEsVUFBQUEsT0FBTyxHQUFHLElBQVY7QUFDSDs7QUFDRFosUUFBQUEsUUFBUSxDQUFDVyxPQUFULENBQWlCQyxPQUFqQixFQUEwQkYsSUFBMUI7O0FBQ0EsWUFBSUgsY0FBYyxDQUFDSSxPQUFmLENBQXVCRyxJQUEzQixFQUFpQztBQUM3QmQsVUFBQUEsUUFBUSxDQUFDZSxVQUFULENBQW9CUixjQUFjLENBQUNJLE9BQWYsQ0FBdUJHLElBQTNDO0FBQ0g7QUFDSjtBQUNKO0FBQ0o7O0FBckQwRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEpVbml0IFhNTCBSZXBvcnRlclxyXG4gKi9cclxuaW1wb3J0IGJ1aWxkZXIgZnJvbSAnanVuaXQtcmVwb3J0LWJ1aWxkZXInO1xyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuXHJcbmltcG9ydCBGaWxlUmVwb3J0ZXJCYXNlIGZyb20gJy4uL3JlcG9ydGVyL0ZpbGVSZXBvcnRlckJhc2UnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSlVuaXRYbWxSZXBvcnRlciBleHRlbmRzIEZpbGVSZXBvcnRlckJhc2Uge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlKHJlc3VsdHMpIHtcclxuICAgICAgICB2YXIgcmVzdWx0RmlsZVBhdGggPSB0aGlzLmNyZWF0ZUZvbGRlclN0cnVjdHVyZUFuZEZpbGVQYXRoKCcueG1sJyk7XHJcbiAgICAgICAgdmFyIHJlc3VsdEZvbGRlclBhdGggPSBwYXRoLmRpcm5hbWUocmVzdWx0RmlsZVBhdGgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCByZXN1bHRGb2xkZXJQYXRoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGUgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdWl0ZVJlc3VsdHMoc3VpdGUsIGJ1aWxkZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidWlsZGVyLndyaXRlVG8ocmVzdWx0RmlsZVBhdGgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0RmlsZVBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgX3BvcHVsYXRlU3VpdGVSZXN1bHRzKHN1aXRlUmVzdWx0LCBidWlsZGVyKSB7XHJcbiAgICAgICAgdmFyIHN1aXRlID0gYnVpbGRlci50ZXN0U3VpdGUoKS5uYW1lKHN1aXRlUmVzdWx0Lm5hbWUpO1xyXG4gICAgICAgIGZvciAobGV0IGNhc2VSZXN1bHQgb2Ygc3VpdGVSZXN1bHQuY2FzZXMpIHtcclxuICAgICAgICAgICAgbGV0IHRlc3RDYXNlID0gc3VpdGUudGVzdENhc2UoKS5uYW1lKGNhc2VSZXN1bHQubmFtZSk7XHJcbiAgICAgICAgICAgIHRlc3RDYXNlLmNsYXNzTmFtZShjYXNlUmVzdWx0LmxvY2F0aW9uKTtcclxuICAgICAgICAgICAgdGVzdENhc2UudGltZShjYXNlUmVzdWx0LmR1cmF0aW9uID8gY2FzZVJlc3VsdC5kdXJhdGlvbiAvIDEwMDAgOiAwKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RDYXNlLl9hdHRyaWJ1dGVzICYmIHR5cGVvZiB0ZXN0Q2FzZS5fYXR0cmlidXRlcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHRlc3RDYXNlLl9hdHRyaWJ1dGVzLnN0YXR1cyA9IGNhc2VSZXN1bHQuc3RhdHVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBsYXN0RmFpbGVkU3RlcCA9IG51bGw7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgb2YgY2FzZVJlc3VsdC5zdGVwcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSAnZmFpbGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RGYWlsZWRTdGVwID0gc3RlcDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RGYWlsZWRTdGVwID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobGFzdEZhaWxlZFN0ZXApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLnR5cGUgfHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIGxhc3RGYWlsZWRTdGVwLmZhaWx1cmUubWVzc2FnZSB8fCAnJztcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gbGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS5saW5lID8gJyBhdCBsaW5lICcgKyBsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLmxpbmUgOiAnJztcclxuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGVzdENhc2UuZmFpbHVyZShtZXNzYWdlLCB0eXBlKTtcclxuICAgICAgICAgICAgICAgIGlmIChsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FzZS5zdGFja3RyYWNlKGxhc3RGYWlsZWRTdGVwLmZhaWx1cmUuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
61
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJKVW5pdFhtbFJlcG9ydGVyIiwiRmlsZVJlcG9ydGVyQmFzZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImdlbmVyYXRlIiwicmVzdWx0cyIsInJlc3VsdEZpbGVQYXRoIiwiY3JlYXRlRm9sZGVyU3RydWN0dXJlQW5kRmlsZVBhdGgiLCJyZXN1bHRGb2xkZXJQYXRoIiwicGF0aCIsImRpcm5hbWUiLCJyZXBsYWNlU2NyZWVuc2hvdHNXaXRoRmlsZXMiLCJyZXN1bHQiLCJzdWl0ZSIsInN1aXRlcyIsIl9wb3B1bGF0ZVN1aXRlUmVzdWx0cyIsImJ1aWxkZXIiLCJ3cml0ZVRvIiwic3VpdGVSZXN1bHQiLCJ0ZXN0U3VpdGUiLCJuYW1lIiwiY2FzZVJlc3VsdCIsImNhc2VzIiwidGVzdENhc2UiLCJjbGFzc05hbWUiLCJsb2NhdGlvbiIsInRpbWUiLCJkdXJhdGlvbiIsIl9hdHRyaWJ1dGVzIiwic3RhdHVzIiwibGFzdEZhaWxlZFN0ZXAiLCJzdGVwIiwic3RlcHMiLCJ0eXBlIiwiZmFpbHVyZSIsIm1lc3NhZ2UiLCJsaW5lIiwiZGF0YSIsInN0YWNrdHJhY2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvb3hfcmVwb3J0ZXJzL3JlcG9ydGVyLWp1bml0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLypcclxuICogT3h5Z2VuIEpVbml0IFhNTCBSZXBvcnRlclxyXG4gKi9cclxuaW1wb3J0IGJ1aWxkZXIgZnJvbSAnanVuaXQtcmVwb3J0LWJ1aWxkZXInO1xyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuXHJcbmltcG9ydCBGaWxlUmVwb3J0ZXJCYXNlIGZyb20gJy4uL3JlcG9ydGVyL0ZpbGVSZXBvcnRlckJhc2UnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSlVuaXRYbWxSZXBvcnRlciBleHRlbmRzIEZpbGVSZXBvcnRlckJhc2Uge1xyXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlKHJlc3VsdHMpIHtcclxuICAgICAgICB2YXIgcmVzdWx0RmlsZVBhdGggPSB0aGlzLmNyZWF0ZUZvbGRlclN0cnVjdHVyZUFuZEZpbGVQYXRoKCcueG1sJyk7XHJcbiAgICAgICAgdmFyIHJlc3VsdEZvbGRlclBhdGggPSBwYXRoLmRpcm5hbWUocmVzdWx0RmlsZVBhdGgpO1xyXG5cclxuICAgICAgICB0aGlzLnJlcGxhY2VTY3JlZW5zaG90c1dpdGhGaWxlcyhyZXN1bHRzLCByZXN1bHRGb2xkZXJQYXRoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgc3VpdGUgb2YgcmVzdWx0LnN1aXRlcykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVTdWl0ZVJlc3VsdHMoc3VpdGUsIGJ1aWxkZXIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBidWlsZGVyLndyaXRlVG8ocmVzdWx0RmlsZVBhdGgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0RmlsZVBhdGg7XHJcbiAgICB9XHJcblxyXG4gICAgX3BvcHVsYXRlU3VpdGVSZXN1bHRzKHN1aXRlUmVzdWx0LCBidWlsZGVyKSB7XHJcbiAgICAgICAgdmFyIHN1aXRlID0gYnVpbGRlci50ZXN0U3VpdGUoKS5uYW1lKHN1aXRlUmVzdWx0Lm5hbWUpO1xyXG4gICAgICAgIGZvciAobGV0IGNhc2VSZXN1bHQgb2Ygc3VpdGVSZXN1bHQuY2FzZXMpIHtcclxuICAgICAgICAgICAgbGV0IHRlc3RDYXNlID0gc3VpdGUudGVzdENhc2UoKS5uYW1lKGNhc2VSZXN1bHQubmFtZSk7XHJcbiAgICAgICAgICAgIHRlc3RDYXNlLmNsYXNzTmFtZShjYXNlUmVzdWx0LmxvY2F0aW9uKTtcclxuICAgICAgICAgICAgdGVzdENhc2UudGltZShjYXNlUmVzdWx0LmR1cmF0aW9uID8gY2FzZVJlc3VsdC5kdXJhdGlvbiAvIDEwMDAgOiAwKTtcclxuICAgICAgICAgICAgaWYgKHRlc3RDYXNlLl9hdHRyaWJ1dGVzICYmIHR5cGVvZiB0ZXN0Q2FzZS5fYXR0cmlidXRlcyA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIHRlc3RDYXNlLl9hdHRyaWJ1dGVzLnN0YXR1cyA9IGNhc2VSZXN1bHQuc3RhdHVzO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCBsYXN0RmFpbGVkU3RlcCA9IG51bGw7XHJcbiAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgb2YgY2FzZVJlc3VsdC5zdGVwcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSAnZmFpbGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RGYWlsZWRTdGVwID0gc3RlcDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhc3RGYWlsZWRTdGVwID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAobGFzdEZhaWxlZFN0ZXApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLnR5cGUgfHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gIGxhc3RGYWlsZWRTdGVwLmZhaWx1cmUubWVzc2FnZSB8fCAnJztcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gbGFzdEZhaWxlZFN0ZXAuZmFpbHVyZS5saW5lID8gJyBhdCBsaW5lICcgKyBsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLmxpbmUgOiAnJztcclxuICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlID09PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGVzdENhc2UuZmFpbHVyZShtZXNzYWdlLCB0eXBlKTtcclxuICAgICAgICAgICAgICAgIGlmIChsYXN0RmFpbGVkU3RlcC5mYWlsdXJlLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FzZS5zdGFja3RyYWNlKGxhc3RGYWlsZWRTdGVwLmZhaWx1cmUuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBWUE7QUFDQTtBQUVBO0FBQTREO0FBRTdDLE1BQU1BLGdCQUFnQixTQUFTQyx5QkFBZ0IsQ0FBQztFQUMzREMsV0FBVyxDQUFDQyxPQUFPLEVBQUU7SUFDakIsS0FBSyxDQUFDQSxPQUFPLENBQUM7RUFDbEI7RUFFQUMsUUFBUSxDQUFDQyxPQUFPLEVBQUU7SUFDZCxJQUFJQyxjQUFjLEdBQUcsSUFBSSxDQUFDQyxnQ0FBZ0MsQ0FBQyxNQUFNLENBQUM7SUFDbEUsSUFBSUMsZ0JBQWdCLEdBQUdDLGFBQUksQ0FBQ0MsT0FBTyxDQUFDSixjQUFjLENBQUM7SUFFbkQsSUFBSSxDQUFDSywyQkFBMkIsQ0FBQ04sT0FBTyxFQUFFRyxnQkFBZ0IsQ0FBQztJQUUzRCxLQUFLLElBQUlJLE1BQU0sSUFBSVAsT0FBTyxFQUFFO01BQ3hCLEtBQUssSUFBSVEsS0FBSyxJQUFJRCxNQUFNLENBQUNFLE1BQU0sRUFBRTtRQUM3QixJQUFJLENBQUNDLHFCQUFxQixDQUFDRixLQUFLLEVBQUVHLDJCQUFPLENBQUM7TUFDOUM7SUFDSjtJQUVBQSwyQkFBTyxDQUFDQyxPQUFPLENBQUNYLGNBQWMsQ0FBQztJQUUvQixPQUFPQSxjQUFjO0VBQ3pCO0VBRUFTLHFCQUFxQixDQUFDRyxXQUFXLEVBQUVGLE9BQU8sRUFBRTtJQUN4QyxJQUFJSCxLQUFLLEdBQUdHLE9BQU8sQ0FBQ0csU0FBUyxFQUFFLENBQUNDLElBQUksQ0FBQ0YsV0FBVyxDQUFDRSxJQUFJLENBQUM7SUFDdEQsS0FBSyxJQUFJQyxVQUFVLElBQUlILFdBQVcsQ0FBQ0ksS0FBSyxFQUFFO01BQ3RDLElBQUlDLFFBQVEsR0FBR1YsS0FBSyxDQUFDVSxRQUFRLEVBQUUsQ0FBQ0gsSUFBSSxDQUFDQyxVQUFVLENBQUNELElBQUksQ0FBQztNQUNyREcsUUFBUSxDQUFDQyxTQUFTLENBQUNILFVBQVUsQ0FBQ0ksUUFBUSxDQUFDO01BQ3ZDRixRQUFRLENBQUNHLElBQUksQ0FBQ0wsVUFBVSxDQUFDTSxRQUFRLEdBQUdOLFVBQVUsQ0FBQ00sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUM7TUFDbkUsSUFBSUosUUFBUSxDQUFDSyxXQUFXLElBQUksT0FBT0wsUUFBUSxDQUFDSyxXQUFXLEtBQUssUUFBUSxFQUFFO1FBQ2xFTCxRQUFRLENBQUNLLFdBQVcsQ0FBQ0MsTUFBTSxHQUFHUixVQUFVLENBQUNRLE1BQU07TUFDbkQ7TUFDQSxJQUFJQyxjQUFjLEdBQUcsSUFBSTtNQUN6QixLQUFLLElBQUlDLElBQUksSUFBSVYsVUFBVSxDQUFDVyxLQUFLLEVBQUU7UUFDL0IsSUFBSUQsSUFBSSxDQUFDRixNQUFNLEtBQUssUUFBUSxFQUFFO1VBQzFCQyxjQUFjLEdBQUdDLElBQUk7UUFDekIsQ0FBQyxNQUNJO1VBQ0RELGNBQWMsR0FBRyxJQUFJO1FBQ3pCO01BQ0o7TUFDQSxJQUFJQSxjQUFjLEVBQUU7UUFDaEIsTUFBTUcsSUFBSSxHQUFHSCxjQUFjLENBQUNJLE9BQU8sQ0FBQ0QsSUFBSSxJQUFJLElBQUk7UUFDaEQsSUFBSUUsT0FBTyxHQUFJTCxjQUFjLENBQUNJLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJLEVBQUU7UUFDbkRBLE9BQU8sSUFBSUwsY0FBYyxDQUFDSSxPQUFPLENBQUNFLElBQUksR0FBRyxXQUFXLEdBQUdOLGNBQWMsQ0FBQ0ksT0FBTyxDQUFDRSxJQUFJLEdBQUcsRUFBRTtRQUN2RixJQUFJRCxPQUFPLEtBQUssRUFBRSxFQUFFO1VBQ2hCQSxPQUFPLEdBQUcsSUFBSTtRQUNsQjtRQUNBWixRQUFRLENBQUNXLE9BQU8sQ0FBQ0MsT0FBTyxFQUFFRixJQUFJLENBQUM7UUFDL0IsSUFBSUgsY0FBYyxDQUFDSSxPQUFPLENBQUNHLElBQUksRUFBRTtVQUM3QmQsUUFBUSxDQUFDZSxVQUFVLENBQUNSLGNBQWMsQ0FBQ0ksT0FBTyxDQUFDRyxJQUFJLENBQUM7UUFDcEQ7TUFDSjtJQUNKO0VBQ0o7QUFDSjtBQUFDIn0=