@appium/base-driver 8.5.3 → 8.5.4

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 (141) hide show
  1. package/build/lib/basedriver/capabilities.d.ts.map +1 -1
  2. package/build/lib/basedriver/capabilities.js +1 -1
  3. package/build/lib/basedriver/commands/event.js +1 -1
  4. package/build/lib/basedriver/commands/find.d.ts.map +1 -1
  5. package/build/lib/basedriver/commands/find.js +1 -1
  6. package/build/lib/basedriver/commands/index.js +1 -1
  7. package/build/lib/basedriver/commands/log.d.ts.map +1 -1
  8. package/build/lib/basedriver/commands/log.js +1 -1
  9. package/build/lib/basedriver/commands/session.js +1 -1
  10. package/build/lib/basedriver/commands/settings.d.ts.map +1 -1
  11. package/build/lib/basedriver/commands/settings.js +1 -1
  12. package/build/lib/basedriver/commands/timeout.d.ts.map +1 -1
  13. package/build/lib/basedriver/commands/timeout.js +1 -1
  14. package/build/lib/basedriver/core.d.ts +120 -139
  15. package/build/lib/basedriver/core.d.ts.map +1 -1
  16. package/build/lib/basedriver/core.js +1 -49
  17. package/build/lib/basedriver/desired-caps.d.ts +5 -2
  18. package/build/lib/basedriver/desired-caps.d.ts.map +1 -1
  19. package/build/lib/basedriver/desired-caps.js +14 -18
  20. package/build/lib/basedriver/device-settings.d.ts +9 -9
  21. package/build/lib/basedriver/device-settings.d.ts.map +1 -1
  22. package/build/lib/basedriver/device-settings.js +4 -4
  23. package/build/lib/basedriver/driver.d.ts +43 -38
  24. package/build/lib/basedriver/driver.d.ts.map +1 -1
  25. package/build/lib/basedriver/driver.js +58 -11
  26. package/build/lib/basedriver/helpers.d.ts +8 -3
  27. package/build/lib/basedriver/helpers.d.ts.map +1 -1
  28. package/build/lib/basedriver/helpers.js +4 -6
  29. package/build/lib/basedriver/logger.d.ts +1 -1
  30. package/build/lib/basedriver/logger.d.ts.map +1 -1
  31. package/build/lib/basedriver/logger.js +1 -1
  32. package/build/lib/constants.js +1 -1
  33. package/build/lib/express/crash.d.ts.map +1 -1
  34. package/build/lib/express/crash.js +1 -1
  35. package/build/lib/express/express-logging.d.ts.map +1 -1
  36. package/build/lib/express/express-logging.js +1 -1
  37. package/build/lib/express/idempotency.js +1 -1
  38. package/build/lib/express/logger.d.ts +1 -1
  39. package/build/lib/express/logger.d.ts.map +1 -1
  40. package/build/lib/express/logger.js +1 -1
  41. package/build/lib/express/middleware.d.ts.map +1 -1
  42. package/build/lib/express/middleware.js +1 -1
  43. package/build/lib/express/server.d.ts +21 -0
  44. package/build/lib/express/server.d.ts.map +1 -1
  45. package/build/lib/express/server.js +4 -9
  46. package/build/lib/express/static.d.ts.map +1 -1
  47. package/build/lib/express/static.js +2 -2
  48. package/build/lib/express/websocket.d.ts +14 -11
  49. package/build/lib/express/websocket.d.ts.map +1 -1
  50. package/build/lib/express/websocket.js +2 -2
  51. package/build/lib/helpers/capabilities.d.ts.map +1 -1
  52. package/build/lib/helpers/capabilities.js +1 -1
  53. package/build/lib/index.d.ts +2 -1
  54. package/build/lib/index.js +7 -1
  55. package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -1
  56. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -2
  57. package/build/lib/jsonwp-proxy/proxy.d.ts +30 -5
  58. package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -1
  59. package/build/lib/jsonwp-proxy/proxy.js +20 -4
  60. package/build/lib/jsonwp-status/status.d.ts.map +1 -1
  61. package/build/lib/jsonwp-status/status.js +2 -2
  62. package/build/lib/protocol/errors.d.ts +17 -8
  63. package/build/lib/protocol/errors.d.ts.map +1 -1
  64. package/build/lib/protocol/errors.js +9 -5
  65. package/build/lib/protocol/helpers.js +1 -1
  66. package/build/lib/protocol/index.js +1 -1
  67. package/build/lib/protocol/protocol.d.ts.map +1 -1
  68. package/build/lib/protocol/protocol.js +1 -1
  69. package/build/lib/protocol/routes.d.ts +17 -3
  70. package/build/lib/protocol/routes.d.ts.map +1 -1
  71. package/build/lib/protocol/routes.js +1 -1
  72. package/build/lib/protocol/validators.js +1 -1
  73. package/build/test/basedriver/driver-e2e-tests.js +1 -1
  74. package/build/test/basedriver/driver-tests.js +1 -1
  75. package/build/test/basedriver/index.js +1 -1
  76. package/build/test/e2e/basedriver/driver.e2e.spec.js +1 -1
  77. package/build/test/e2e/basedriver/helpers.e2e.spec.js +1 -1
  78. package/build/test/e2e/basedriver/websockets.e2e.spec.js +1 -1
  79. package/build/test/e2e/express/server.e2e.spec.js +1 -1
  80. package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +1 -1
  81. package/build/test/e2e/protocol/fake-driver.js +1 -1
  82. package/build/test/e2e/protocol/helpers.js +1 -1
  83. package/build/test/e2e/protocol/protocol.e2e.spec.js +13 -13
  84. package/build/test/helpers.js +1 -1
  85. package/build/test/unit/basedriver/capabilities.spec.js +12 -12
  86. package/build/test/unit/basedriver/capability.spec.js +15 -15
  87. package/build/test/unit/basedriver/commands/event.spec.js +1 -1
  88. package/build/test/unit/basedriver/commands/log.spec.js +1 -1
  89. package/build/test/unit/basedriver/device-settings.spec.js +1 -1
  90. package/build/test/unit/basedriver/driver.spec.js +1 -1
  91. package/build/test/unit/basedriver/helpers.spec.js +33 -33
  92. package/build/test/unit/basedriver/timeout.spec.js +1 -1
  93. package/build/test/unit/express/server.spec.js +1 -1
  94. package/build/test/unit/express/static.spec.js +2 -2
  95. package/build/test/unit/jsonwp-proxy/mock-request.js +1 -1
  96. package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +1 -1
  97. package/build/test/unit/jsonwp-proxy/proxy.spec.js +2 -2
  98. package/build/test/unit/jsonwp-proxy/url.spec.js +1 -1
  99. package/build/test/unit/jsonwp-status/status.spec.js +1 -1
  100. package/build/test/unit/protocol/errors.spec.js +1 -1
  101. package/build/test/unit/protocol/routes.spec.js +1 -1
  102. package/build/test/unit/protocol/validator.spec.js +1 -1
  103. package/build/tsconfig.tsbuildinfo +1 -1
  104. package/lib/basedriver/capabilities.js +95 -47
  105. package/lib/basedriver/commands/event.js +4 -4
  106. package/lib/basedriver/commands/find.js +12 -26
  107. package/lib/basedriver/commands/index.js +7 -7
  108. package/lib/basedriver/commands/log.js +5 -7
  109. package/lib/basedriver/commands/session.js +3 -3
  110. package/lib/basedriver/commands/settings.js +3 -5
  111. package/lib/basedriver/commands/timeout.js +18 -23
  112. package/lib/basedriver/core.js +150 -229
  113. package/lib/basedriver/desired-caps.js +30 -29
  114. package/lib/basedriver/device-settings.js +21 -20
  115. package/lib/basedriver/driver.js +131 -96
  116. package/lib/basedriver/helpers.js +124 -81
  117. package/lib/basedriver/logger.js +1 -1
  118. package/lib/constants.js +2 -6
  119. package/lib/express/crash.js +4 -6
  120. package/lib/express/express-logging.js +26 -24
  121. package/lib/express/idempotency.js +16 -16
  122. package/lib/express/logger.js +1 -1
  123. package/lib/express/middleware.js +49 -33
  124. package/lib/express/server.js +68 -44
  125. package/lib/express/static.js +11 -12
  126. package/lib/express/websocket.js +26 -16
  127. package/lib/helpers/capabilities.js +11 -16
  128. package/lib/index.js +50 -33
  129. package/lib/jsonwp-proxy/protocol-converter.js +85 -69
  130. package/lib/jsonwp-proxy/proxy.js +116 -53
  131. package/lib/jsonwp-status/status.js +36 -29
  132. package/lib/protocol/errors.js +469 -292
  133. package/lib/protocol/helpers.js +5 -8
  134. package/lib/protocol/index.js +22 -15
  135. package/lib/protocol/protocol.js +103 -55
  136. package/lib/protocol/routes.js +430 -273
  137. package/lib/protocol/validators.js +5 -5
  138. package/package.json +7 -6
  139. package/test/basedriver/driver-e2e-tests.js +92 -66
  140. package/test/basedriver/driver-tests.js +90 -33
  141. package/test/basedriver/index.js +1 -1
@@ -346,11 +346,11 @@ describe('caps', function () {
346
346
  (0, _capabilities.processCapabilities)({
347
347
  alwaysMatch: {
348
348
  'appium:platformName': 'Foo',
349
- 'platformName': 'Bar'
349
+ platformName: 'Bar'
350
350
  },
351
351
  firstMatch: [{
352
352
  'appium:browserName': 'FOO',
353
- 'browserName': 'BAR'
353
+ browserName: 'BAR'
354
354
  }]
355
355
  }).should.deep.equal({
356
356
  platformName: 'Bar',
@@ -360,7 +360,7 @@ describe('caps', function () {
360
360
  it('should throw exception if duplicates in alwaysMatch and firstMatch', function () {
361
361
  (() => (0, _capabilities.processCapabilities)({
362
362
  alwaysMatch: {
363
- 'platformName': 'Fake',
363
+ platformName: 'Fake',
364
364
  'appium:fakeCap': 'foobar'
365
365
  },
366
366
  firstMatch: [{
@@ -371,7 +371,7 @@ describe('caps', function () {
371
371
  it('should not throw an exception if presence constraint is not met on a firstMatch capability', function () {
372
372
  const caps = (0, _capabilities.processCapabilities)({
373
373
  alwaysMatch: {
374
- 'platformName': 'Fake',
374
+ platformName: 'Fake',
375
375
  'appium:fakeCap': 'foobar'
376
376
  },
377
377
  firstMatch: [{
@@ -392,7 +392,7 @@ describe('caps', function () {
392
392
  it('should throw an exception if no matching caps were found', function () {
393
393
  (() => (0, _capabilities.processCapabilities)({
394
394
  alwaysMatch: {
395
- 'platformName': 'Fake',
395
+ platformName: 'Fake',
396
396
  'appium:fakeCap': 'foobar'
397
397
  },
398
398
  firstMatch: [{
@@ -414,15 +414,15 @@ describe('caps', function () {
414
414
  const constraints = { ..._desiredCaps.desiredCapabilityConstraints
415
415
  };
416
416
  const expectedMatchingCaps = {
417
- 'platformName': 'Fake',
418
- 'automationName': 'Fake',
419
- 'deviceName': 'Fake'
417
+ platformName: 'Fake',
418
+ automationName: 'Fake',
419
+ deviceName: 'Fake'
420
420
  };
421
421
  let matchingCaps;
422
422
  let caps;
423
423
  beforeEach(function () {
424
424
  matchingCaps = {
425
- 'platformName': 'Fake',
425
+ platformName: 'Fake',
426
426
  'appium:automationName': 'Fake',
427
427
  'appium:deviceName': 'Fake'
428
428
  };
@@ -498,7 +498,7 @@ describe('caps', function () {
498
498
  it('should not find a standard cap in alwaysMatch', function () {
499
499
  (0, _capabilities.findNonPrefixedCaps)({
500
500
  alwaysMatch: {
501
- 'platformName': 'Any'
501
+ platformName: 'Any'
502
502
  }
503
503
  }).should.eql([]);
504
504
  });
@@ -514,7 +514,7 @@ describe('caps', function () {
514
514
  (0, _capabilities.findNonPrefixedCaps)({
515
515
  alwaysMatch: {},
516
516
  firstMatch: [{
517
- 'platformName': 'Any'
517
+ platformName: 'Any'
518
518
  }]
519
519
  }).should.eql([]);
520
520
  });
@@ -669,4 +669,4 @@ describe('caps', function () {
669
669
  });
670
670
  });
671
671
  });
672
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiYXJnIiwidW5kZWZpbmVkIiwic2hvdWxkIiwidGhyb3ciLCJkZWVwIiwiZXF1YWwiLCJmb28iLCJwcmVzZW5jZSIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1N0cmluZyIsImlzTnVtYmVyIiwiaXNCb29sZWFuIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiaW5jbHVzaW9uIiwiY2FwcyIsIm51bWJlciIsInN0cmluZyIsInByZXNlbnQiLCJleHRyYSIsImNvbnN0cmFpbnRzIiwibm90UHJlc2VudCIsImhlbGxvIiwicHJpbWFyeSIsImEiLCJiIiwic2Vjb25kYXJ5IiwiYyIsImQiLCJiZWZvcmVFYWNoIiwiYWx3YXlzTWF0Y2giLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImZpcnN0TWF0Y2giLCJ2YWxpZGF0ZWRGaXJzdE1hdGNoQ2FwcyIsIm1hdGNoZWRDYXBzIiwiZ29vZGJ5ZSIsInNvbWVBdHRyaWJ1dGUiLCJwbGF0Zm9ybU5hbWUiLCJicm93c2VyTmFtZSIsImZha2VDYXAiLCJtaXNzaW5nQ2FwIiwiZGVzaXJlZENhcGFiaWxpdHlDb25zdHJhaW50cyIsImV4cGVjdGVkTWF0Y2hpbmdDYXBzIiwibWF0Y2hpbmdDYXBzIiwiXyIsIm9taXQiLCJlcWwiLCJub25TdGFuZGFyZE9uZSIsIm5vblN0YW5kYXJkVHdvIiwibm9uU3RhbmRhcmRUaHJlZSIsIm5vblN0YW5kYXJkRm91ciIsIm5vblN0YW5kYXJkRml2ZSIsImJyb3dzZXJWZXJzaW9uIiwiYXBwaXVtQ2FwcyIsIm5vbkFwcGl1bUNhcHMiLCJhcHBpdW1VbnByZWZpeGVkQ2FwcyIsImNsb25lIiwic2ltcGxlQ2FwcyIsIkFQUElVTV9PUFRTX0NBUCIsImdvb2dDYXBzIiwiaW52YWxpZENhcHMiLCJmaXJ0TWF0Y2giLCJiZSIsImZhbHNlIiwidmFsaWRDYXBzIiwiYWxheXNNYXRjaCIsInRydWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvYmFzZWRyaXZlci9jYXBhYmlsaXRpZXMuc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBwYXJzZUNhcHMsIHZhbGlkYXRlQ2FwcywgbWVyZ2VDYXBzLCBwcm9jZXNzQ2FwYWJpbGl0aWVzLCBmaW5kTm9uUHJlZml4ZWRDYXBzLFxuICBwcm9tb3RlQXBwaXVtT3B0aW9ucywgQVBQSVVNX09QVFNfQ0FQLCBzdHJpcEFwcGl1bVByZWZpeGVzXG59IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZGVzaXJlZENhcGFiaWxpdHlDb25zdHJhaW50cyB9IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2Rlc2lyZWQtY2Fwcyc7XG5pbXBvcnQgeyBpc1czY0NhcHMgfSBmcm9tICcuLi8uLi8uLi9saWIvaGVscGVycy9jYXBhYmlsaXRpZXMnO1xuXG5cbmRlc2NyaWJlKCdjYXBzJywgZnVuY3Rpb24gKCkge1xuXG4gIC8vIFRlc3RzIGJhc2VkIG9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tdmFsaWRhdGUtY2Fwc1xuICBkZXNjcmliZSgnI3ZhbGlkYXRlQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIFwiY2FwYWJpbGl0eVwiIGlzIG5vdCBhIEpTT04gb2JqZWN0ICgxKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAobGV0IGFyZyBvZiBbdW5kZWZpbmVkLCBudWxsLCAxLCB0cnVlLCAnc3RyaW5nJ10pIHtcbiAgICAgICAgKGZ1bmN0aW9uICgpIHsgdmFsaWRhdGVDYXBzKGFyZyk7IH0pLnNob3VsZC50aHJvdygvbXVzdCBiZSBhIEpTT04gb2JqZWN0Lyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyByZXN1bHQge30gYnkgZGVmYXVsdCBpZiBjYXBzIGlzIGVtcHR5IG9iamVjdCBhbmQgbm8gY29uc3RyYWludHMgcHJvdmlkZWQgKDIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsaWRhdGVDYXBzKHt9KS5zaG91bGQuZGVlcC5lcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGhyb3dzIGVycm9ycyBpZiBjb25zdHJhaW50cyBhcmUgbm90IG1ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJwcmVzZW50XCIgY29uc3RyYWludCBub3QgbWV0IG9uIHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4gdmFsaWRhdGVDYXBzKHt9LCB7Zm9vOiB7cHJlc2VuY2U6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgY2FuJ3QgYmUgYmxhbmsvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyB0aGUgY2FwYWJpbGl0eSB0aGF0IHdhcyBwYXNzZWQgaW4gaWYgXCJza2lwUHJlc2VuY2VDb25zdHJhaW50XCIgaXMgZmFsc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhbGlkYXRlQ2Fwcyh7fSwge2Zvbzoge3ByZXNlbmNlOiB0cnVlfX0sIHtza2lwUHJlc2VuY2VDb25zdHJhaW50OiB0cnVlfSkuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc1N0cmluZ1wiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAxfSwge2Zvbzoge2lzU3RyaW5nOiB0cnVlfX0pKS5zaG91bGQudGhyb3coLydmb28nIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIFwiaXNOdW1iZXJcIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2Jhcid9LCB7Zm9vOiB7aXNOdW1iZXI6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgbXVzdCBiZSBvZiB0eXBlIG51bWJlci8pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc0Jvb2xlYW5cIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2Jhcid9LCB7Zm9vOiB7aXNCb29sZWFuOiB0cnVlfX0pKS5zaG91bGQudGhyb3coLydmb28nIG11c3QgYmUgb2YgdHlwZSBib29sZWFuLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImluY2x1c2lvblwiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnMyd9LCB7Zm9vOiB7aW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJzEnLCAnMiddfX0pKS5zaG91bGQudGhyb3coLydmb28nIDMgbm90IHBhcnQgb2YgMSwyLyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZVwiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnYSd9LCB7Zm9vOiB7aW5jbHVzaW9uOiBbJ0EnLCAnQicsICdDJ119fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgYSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgZXJyb3JzIGlmIGNvbnN0cmFpbnRzIGFyZSBtZXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgY2FwcyA9IHtcbiAgICAgICAgbnVtYmVyOiAxLFxuICAgICAgICBzdHJpbmc6ICdzdHJpbmcnLFxuICAgICAgICBwcmVzZW50OiAncHJlc2VudCcsXG4gICAgICAgIGV4dHJhOiAnZXh0cmEnLFxuICAgICAgfTtcblxuICAgICAgbGV0IGNvbnN0cmFpbnRzID0ge1xuICAgICAgICBudW1iZXI6IHtpc051bWJlcjogdHJ1ZX0sXG4gICAgICAgIHN0cmluZzoge2lzU3RyaW5nOiB0cnVlfSxcbiAgICAgICAgcHJlc2VudDoge3ByZXNlbmNlOiB0cnVlfSxcbiAgICAgICAgbm90UHJlc2VudDoge3ByZXNlbmNlOiBmYWxzZX0sXG4gICAgICB9O1xuXG4gICAgICB2YWxpZGF0ZUNhcHMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMpO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBUZXN0cyBiYXNlZCBvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLW1lcmdpbmctY2Fwc1xuICBkZXNjcmliZSgnI21lcmdlQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgncmV0dXJucyBhIHJlc3VsdCB0aGF0IGlzIHt9IGJ5IGRlZmF1bHQgKDEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgbWVyZ2VDYXBzKCkuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgYSByZXN1bHQgdGhhdCBtYXRjaGVzIHByaW1hcnkgYnkgZGVmYXVsdCAoMiwgMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBtZXJnZUNhcHMoe2hlbGxvOiAnd29ybGQnfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnfSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIHByaW1hcnkgYW5kIHNlY29uZGFyeSBoYXZlIG1hdGNoaW5nIHByb3BlcnRpZXMgKDQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IG1lcmdlQ2Fwcyh7aGVsbG86ICd3b3JsZCd9LCB7aGVsbG86ICd3aGlybCd9KSkuc2hvdWxkLnRocm93KC9wcm9wZXJ0eSAnaGVsbG8nIHNob3VsZCBub3QgZXhpc3Qgb24gYm90aCBwcmltYXJ5IFtcXHdcXFddKiBhbmQgc2Vjb25kYXJ5IFtcXHdcXFddKi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgYSByZXN1bHQgd2l0aCBrZXlzIGZyb20gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IHRvZ2V0aGVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHByaW1hcnkgPSB7XG4gICAgICAgIGE6ICdhJyxcbiAgICAgICAgYjogJ2InLFxuICAgICAgfTtcbiAgICAgIGxldCBzZWNvbmRhcnkgPSB7XG4gICAgICAgIGM6ICdjJyxcbiAgICAgICAgZDogJ2QnLFxuICAgICAgfTtcbiAgICAgIG1lcmdlQ2FwcyhwcmltYXJ5LCBzZWNvbmRhcnkpLnNob3VsZC5kZWVwLmVxdWFsKHtcbiAgICAgICAgYTogJ2EnLCBiOiAnYicsIGM6ICdjJywgZDogJ2QnLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFRlc3RzIGJhc2VkIG9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNwcm9jZXNzaW5nLWNhcGFiaWxpdGllc1xuICBkZXNjcmliZSgnI3BhcnNlQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgY2FwcztcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY2FwcyA9IHt9O1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gaW52YWxpZCBhcmd1bWVudCBpZiBubyBjYXBzIG9iamVjdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PiBwYXJzZUNhcHMoKSkuc2hvdWxkLnRocm93KC9tdXN0IGJlIGEgSlNPTiBvYmplY3QvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXRzIFwicmVxdWlyZWRDYXBzXCIgdG8gcHJvcGVydHkgbmFtZWQgXCJhbHdheXNNYXRjaFwiICgyKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9O1xuICAgICAgcGFyc2VDYXBzKGNhcHMpLnJlcXVpcmVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChjYXBzLmFsd2F5c01hdGNoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXRzIFwicmVxdWlyZWRDYXBzXCIgdG8gZW1wdHkgSlNPTiBvYmplY3QgaWYgXCJhbHdheXNNYXRjaFwiIGlzIG5vdCBhbiBvYmplY3QgKDIuMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZUNhcHMoY2FwcykucmVxdWlyZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJyZXF1aXJlZENhcHNcIiBkb25cXCd0IG1hdGNoIFwiY29uc3RyYWludHNcIiAoMi4yKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7J2FwcGl1bTpmb28nOiAxfTtcbiAgICAgICgoKSA9PiBwYXJzZUNhcHMoY2Fwcywge2Zvbzoge2lzU3RyaW5nOiB0cnVlfX0pKS5zaG91bGQudGhyb3coLydmb28nIG11c3QgYmUgb2YgdHlwZSBzdHJpbmcvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzZXRzIFwiYWxsRmlyc3RNYXRjaENhcHNcIiB0byBwcm9wZXJ0eSBuYW1lZCBcImZpcnN0TWF0Y2hcIiAoMyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZUNhcHMoe30sIFt7fV0pLmFsbEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKFt7fV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJhbGxGaXJzdE1hdGNoQ2Fwc1wiIHRvIFt7fV0gaWYgXCJmaXJzdE1hdGNoXCIgaXMgdW5kZWZpbmVkICgzLjEpJywgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2VDYXBzKHt9KS5hbGxGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChbe31dKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJmaXJzdE1hdGNoXCIgaXMgbm90IGFuIGFycmF5IGFuZCBpcyBub3QgdW5kZWZpbmVkICgzLjIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChsZXQgYXJnIG9mIFtudWxsLCAxLCB0cnVlLCAnc3RyaW5nJ10pIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gYXJnO1xuICAgICAgICAoZnVuY3Rpb24gKCkgeyBwYXJzZUNhcHMoY2Fwcyk7IH0pLnNob3VsZC50aHJvdygvbXVzdCBiZSBhIEpTT04gYXJyYXkgb3IgdW5kZWZpbmVkLyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnaGFzIFwidmFsaWRhdGVkRmlyc3RNYXRjaENhcHNcIiBwcm9wZXJ0eSB0aGF0IGlzIGVtcHR5IGJ5IGRlZmF1bHQgaWYgbm8gdmFsaWQgZmlyc3RNYXRjaCBjYXBzIHdlcmUgZm91bmQgKDQpJywgZnVuY3Rpb24gKCkge1xuICAgICAgcGFyc2VDYXBzKGNhcHMsIHtmb286IHtwcmVzZW5jZTogdHJ1ZX19KS52YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgncmV0dXJucyBhIFwidmFsaWRhdGVkRmlyc3RNYXRjaENhcHNcIiBhcnJheSAoNSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgndGhhdCBlcXVhbHMgXCJmaXJzdE1hdGNoXCIgaWYgZmlyc3RNYXRjaCBpcyBvbmUgZW1wdHkgb2JqZWN0IGFuZCB0aGVyZSBhcmUgbm8gY29uc3RyYWludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFt7fV07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzKS52YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChjYXBzLmZpcnN0TWF0Y2gpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIFwibnVsbFwiIG1hdGNoZWRDYXBzIGlmIG5vdGhpbmcgbWF0Y2hlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3t9XTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlQ2FwcyhjYXBzLCB7Zm9vOiB7cHJlc2VuY2U6IHRydWV9fSkubWF0Y2hlZENhcHMsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBzaG91bGQgcmV0dXJuIGNhcGFiaWxpdGllcyBpZiBwcmVzZW5jZSBjb25zdHJhaW50IGlzIG1hdGNoZWQgaW4gYXQgbGVhc3Qgb25lIG9mIHRoZSAnZmlyc3RNYXRjaCcgY2FwYWJpbGl0aWVzIG9iamVjdHNgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnYmFyJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3tcbiAgICAgICAgICAnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJyxcbiAgICAgICAgfSwge1xuICAgICAgICAgICdhcHBpdW06Z29vZGJ5ZSc6ICd3b3JsZCcsXG4gICAgICAgIH1dO1xuICAgICAgICBwYXJzZUNhcHMoY2Fwcywge2dvb2RieWU6IHtwcmVzZW5jZTogdHJ1ZX19KS5tYXRjaGVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgICBnb29kYnllOiAnd29ybGQnLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdChgdGhyb3dzIGludmFsaWQgYXJndW1lbnQgaWYgcHJlc2VuY2UgY29uc3RyYWludCBpcyBub3QgbWV0IG9uIGFueSBjYXBhYmlsaXRpZXNgLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnYmFyJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3tcbiAgICAgICAgICAnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJyxcbiAgICAgICAgfSwge1xuICAgICAgICAgICdhcHBpdW06Z29vZGJ5ZSc6ICd3b3JsZCcsXG4gICAgICAgIH1dO1xuICAgICAgICBzaG91bGQuZXF1YWwocGFyc2VDYXBzKGNhcHMsIHtzb21lQXR0cmlidXRlOiB7cHJlc2VuY2U6IHRydWV9fSkubWF0Y2hlZENhcHMsIG51bGwpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0aGF0IGVxdWFscyBmaXJzdE1hdGNoIGlmIGZpcnN0TWF0Y2ggY29udGFpbnMgdHdvIG9iamVjdHMgdGhhdCBwYXNzIHRoZSBwcm92aWRlZCBjb25zdHJhaW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHtcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6ICdiYXInXG4gICAgICAgIH07XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFtcbiAgICAgICAgICB7J2FwcGl1bTpmb28nOiAnYmFyMSd9LFxuICAgICAgICAgIHsnYXBwaXVtOmZvbyc6ICdiYXIyJ30sXG4gICAgICAgIF07XG5cbiAgICAgICAgbGV0IGNvbnN0cmFpbnRzID0ge1xuICAgICAgICAgIGZvbzoge1xuICAgICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcGFyc2VDYXBzKGNhcHMsIGNvbnN0cmFpbnRzKS52YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbChjYXBzLmZpcnN0TWF0Y2gpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIG5vIHZlbmRvciBwcmVmaXggZXJyb3IgaWYgdGhlIGZpcnN0TWF0Y2hbMl0gZG9lcyBub3QgaGF2ZSBpdCBiZWNhdXNlIG9mIG5vIGJqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0ge307XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFt7J2FwcGl1bTpmb28nOiAnYmFyJ30sICdmb28nXTtcbiAgICAgICAgKCgpID0+IHBhcnNlQ2FwcyhjYXBzLCB7fSkpLnNob3VsZC50aHJvdygvQWxsIG5vbi1zdGFuZGFyZCBjYXBhYmlsaXRpZXMgc2hvdWxkIGhhdmUgYSB2ZW5kb3IgcHJlZml4Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXR1cm5zIGEgbWF0Y2hlZENhcHMgb2JqZWN0ICg2KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0geydhcHBpdW06aGVsbG8nOiAnd29ybGQnfTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2hpY2ggaXMgc2FtZSBhcyBhbHdheXNNYXRjaCBpZiBmaXJzdE1hdGNoIGFycmF5IGlzIG5vdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLm1hdGNoZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHtoZWxsbzogJ3dvcmxkJ30pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdtZXJnZXMgY2FwcyB0b2dldGhlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXInfV07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzKS5tYXRjaGVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbCh7aGVsbG86ICd3b3JsZCcsIGZvbzogJ2Jhcid9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2l0aCBtZXJnZWQgY2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmhlbGxvJzogJ2JhcicsICdhcHBpdW06Zm9vJzogJ2Zvbyd9LCB7J2FwcGl1bTpmb28nOiAnYmFyJ31dO1xuICAgICAgICBwYXJzZUNhcHMoY2FwcykubWF0Y2hlZENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNwcm9jZXNzQ2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBcImFsd2F5c01hdGNoXCIgaWYgXCJmaXJzdE1hdGNoXCIgYW5kIFwiY29uc3RyYWludHNcIiB3ZXJlIG5vdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoe30pLnNob3VsZC5kZWVwLmVxdWFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIG1lcmdlZCBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XVxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0cmlwIG91dCB0aGUgXCJhcHBpdW06XCIgcHJlZml4IGZvciBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XVxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0aWxsIGFjY2VwdCBwcmVmaXhlZCBjYXBzIGV2ZW4gaWYgdGhleSBhcmUgc3RhbmRhcmQgY2FwYWJpbGl0aWVzIChodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tdGFibGUtb2Ytc3RhbmRhcmQtY2FwYWJpbGl0aWVzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoe1xuICAgICAgICBhbHdheXNNYXRjaDogeydhcHBpdW06cGxhdGZvcm1OYW1lJzogJ1doYXRldnonfSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmJyb3dzZXJOYW1lJzogJ0FueXRoaW5nJ31dLFxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe3BsYXRmb3JtTmFtZTogJ1doYXRldnonLCBicm93c2VyTmFtZTogJ0FueXRoaW5nJ30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcmVmZXIgc3RhbmRhcmQgY2FwcyB0aGF0IGFyZSBub24tcHJlZml4ZWQgdG8gcHJlZml4ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsnYXBwaXVtOnBsYXRmb3JtTmFtZSc6ICdGb28nLCAncGxhdGZvcm1OYW1lJzogJ0Jhcid9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06YnJvd3Nlck5hbWUnOiAnRk9PJywgJ2Jyb3dzZXJOYW1lJzogJ0JBUid9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtwbGF0Zm9ybU5hbWU6ICdCYXInLCBicm93c2VyTmFtZTogJ0JBUid9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGVzIGluIGFsd2F5c01hdGNoIGFuZCBmaXJzdE1hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHByb2Nlc3NDYXBhYmlsaXRpZXMoe1xuICAgICAgICBhbHdheXNNYXRjaDogeydwbGF0Zm9ybU5hbWUnOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOnBsYXRmb3JtTmFtZSc6ICdiYXInfV0sXG4gICAgICB9KSkuc2hvdWxkLnRocm93KC9zaG91bGQgbm90IGV4aXN0IG9uIGJvdGggcHJpbWFyeS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHByZXNlbmNlIGNvbnN0cmFpbnQgaXMgbm90IG1ldCBvbiBhIGZpcnN0TWF0Y2ggY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsncGxhdGZvcm1OYW1lJzogJ0Zha2UnLCAnYXBwaXVtOmZha2VDYXAnOiAnZm9vYmFyJ30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpmb28nOiAnYmFyJ31dLFxuICAgICAgfSwge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6IHtcbiAgICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmFrZUNhcDoge1xuICAgICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgY2Fwcy5wbGF0Zm9ybU5hbWUuc2hvdWxkLmVxdWFsKCdGYWtlJyk7XG4gICAgICBjYXBzLmZha2VDYXAuc2hvdWxkLmVxdWFsKCdmb29iYXInKTtcbiAgICAgIGNhcHMuZm9vLnNob3VsZC5lcXVhbCgnYmFyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBubyBtYXRjaGluZyBjYXBzIHdlcmUgZm91bmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J3BsYXRmb3JtTmFtZSc6ICdGYWtlJywgJ2FwcGl1bTpmYWtlQ2FwJzogJ2Zvb2Jhcid9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XSxcbiAgICAgIH0sIHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiB7XG4gICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZha2VDYXA6IHtcbiAgICAgICAgICBwcmVzZW5jZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBtaXNzaW5nQ2FwOiB7XG4gICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KSkuc2hvdWxkLnRocm93KC8nbWlzc2luZ0NhcCcgY2FuJ3QgYmUgYmxhbmsvKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd2YWxpZGF0ZSBBcHBpdW0gY29uc3RyYWludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjb25zdHJhaW50cyA9IHsuLi5kZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzfTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTWF0Y2hpbmdDYXBzID0geydwbGF0Zm9ybU5hbWUnOiAnRmFrZScsICdhdXRvbWF0aW9uTmFtZSc6ICdGYWtlJywgJ2RldmljZU5hbWUnOiAnRmFrZSd9O1xuXG4gICAgICBsZXQgbWF0Y2hpbmdDYXBzO1xuICAgICAgbGV0IGNhcHM7XG5cbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBtYXRjaGluZ0NhcHMgPSB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmF1dG9tYXRpb25OYW1lJzogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdGYWtlJ1xuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiBhbHdheXNNYXRjaCBoYXMgdGhlIHByb3BlciBjYXBzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBtYXRjaGluZ0NhcHMsXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cblxuICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3aGVuIGZpcnN0TWF0Y2hbMF0gaGFzIHRoZSBwcm9wZXIgY2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW21hdGNoaW5nQ2Fwc10sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gYWx3YXlzTWF0Y2ggYW5kIGZpcnN0TWF0Y2hbMF0gaGF2ZSB0aGUgcHJvcGVyIGNhcHMgd2hlbiBtZXJnZWQgdG9nZXRoZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IF8ub21pdChtYXRjaGluZ0NhcHMsIFsnYXBwaXVtOmRldmljZU5hbWUnXSksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZSd9XSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiBhdXRvbWF0aW9uTmFtZSBpcyBvbWl0dGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBfLm9taXQobWF0Y2hpbmdDYXBzLCBbJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSddKSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoXy5vbWl0KGV4cGVjdGVkTWF0Y2hpbmdDYXBzLCAnYXV0b21hdGlvbk5hbWUnKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBwYXNzIGlmIGZpcnN0IGVsZW1lbnQgaW4gXCJmaXJzdE1hdGNoXCIgZG9lcyB2YWxpZGF0ZSBhbmQgc2Vjb25kIGVsZW1lbnQgZG9lcyBub3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IHt9LFxuICAgICAgICAgIGZpcnN0TWF0Y2g6IFtcbiAgICAgICAgICAgIG1hdGNoaW5nQ2FwcyxcbiAgICAgICAgICAgIHsnYXBwaXVtOmJhZENhcHMnOiAnYmFkQ2Fwcyd9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHBhc3MgaWYgZmlyc3QgZWxlbWVudCBpbiBcImZpcnN0TWF0Y2hcIiBkb2VzIG5vdCB2YWxpZGF0ZSBhbmQgc2Vjb25kIGVsZW1lbnQgZG9lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgICAgeydhcHBpdW06YmFkQ2Fwcyc6ICdiYWRDYXBzJ30sXG4gICAgICAgICAgICBtYXRjaGluZ0NhcHMsXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGJhZCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgaW4gbW9yZSB0aGFuIG9uZSBmaXJzdE1hdGNoIGNhcGFiaWxpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IHt9LFxuICAgICAgICAgIGZpcnN0TWF0Y2g6IFt7XG4gICAgICAgICAgICAnYXBwaXVtOmJhZCc6ICdwYXJhbXMnLFxuICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICdhcHBpdW06bW9yZSc6ICdiYWQtcGFyYW1zJyxcbiAgICAgICAgICB9XSxcbiAgICAgICAgfTtcbiAgICAgICAgKCgpID0+IHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpKS5zaG91bGQudGhyb3coL0NvdWxkIG5vdCBmaW5kIG1hdGNoaW5nIGNhcGFiaWxpdGllcy8pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnLmZpbmROb25QcmVmaXhlZENhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGFsd2F5c01hdGNoIGNhcHMgd2l0aCBubyBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHthbHdheXNNYXRjaDoge1xuICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgIH19KS5zaG91bGQuZXFsKFsnbm9uLXN0YW5kYXJkJ10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgYSBzdGFuZGFyZCBjYXAgaW4gYWx3YXlzTWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHthbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ0FueScsXG4gICAgICB9fSkuc2hvdWxkLmVxbChbXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGZpcnN0TWF0Y2ggY2FwcyB3aXRoIG5vIHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe2Fsd2F5c01hdGNoOiB7fSwgZmlyc3RNYXRjaDogW3tcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICB9XX0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBub3QgZmluZCBhIHN0YW5kYXJkIGNhcCBpbiBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHthbHdheXNNYXRjaDoge30sIGZpcnN0TWF0Y2g6IFt7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnQW55JyxcbiAgICAgIH1dfSkuc2hvdWxkLmVxbChbXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGZpcnN0TWF0Y2ggY2FwcyBpbiBzZWNvbmQgaXRlbSBvZiBmaXJzdE1hdGNoIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7YWx3YXlzTWF0Y2g6IHt9LCBmaXJzdE1hdGNoOiBbe30sIHtcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICB9XX0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgZHVwbGljYXRlcyBmcm9tIGFsd2F5c01hdGNoIGFuZCBmaXJzdE1hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7YWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdzb21ldGhpbmcnLFxuICAgICAgfSwgZmlyc3RNYXRjaDogW3tcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICB9XX0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZW1vdmUgZHVwbGljYXRlcyBmcm9tIGZpcnN0TWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHtmaXJzdE1hdGNoOiBbe1xuICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgIH0sIHtcbiAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teSAyJyxcbiAgICAgIH1dfSkuc2hvdWxkLmVxbChbJ25vbi1zdGFuZGFyZCddKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBkdXBsaWNhdGVzIGFuZCBrZWVwIHN0YW5kYXJkIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFsd2F5c01hdGNoID0ge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgbm9uU3RhbmRhcmRPbmU6ICdub24tc3RhbmRhcmQnLFxuICAgICAgICBub25TdGFuZGFyZFR3bzogJ25vbi1zdGFuZGFyZCcsXG4gICAgICB9O1xuICAgICAgY29uc3QgZmlyc3RNYXRjaCA9IFtcbiAgICAgICAge25vblN0YW5kYXJkVGhyZWU6ICdub24tc3RhbmRhcmQnLCBub25TdGFuZGFyZEZvdXI6ICdub24tc3RhbmRhcmQnLCBicm93c2VyTmFtZTogJ0Zha2VCcm93c2VyJ30sXG4gICAgICAgIHtub25TdGFuZGFyZFRocmVlOiAnbm9uLXN0YW5kYXJkJywgbm9uU3RhbmRhcmRGb3VyOiAnbm9uLXN0YW5kYXJkJywgbm9uU3RhbmRhcmRGaXZlOiAnbm9uLXN0YW5kYXJkJywgYnJvd3NlclZlcnNpb246ICd3aGF0ZXZhJ30sXG4gICAgICBdO1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7YWx3YXlzTWF0Y2gsIGZpcnN0TWF0Y2h9KS5zaG91bGQuZXFsKFsnbm9uU3RhbmRhcmRPbmUnLCAnbm9uU3RhbmRhcmRUd28nLCAnbm9uU3RhbmRhcmRUaHJlZScsICdub25TdGFuZGFyZEZvdXInLCAnbm9uU3RhbmRhcmRGaXZlJ10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3Byb21vdGVBcHBpdW1PcHRpb25zJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGFwcGl1bUNhcHMgPSB7XG4gICAgICAnYXBwaXVtOnBsYXRmb3JtVmVyc2lvbic6ICcxNC40JyxcbiAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdpUGhvbmUgMTEnLFxuICAgICAgJ2FwcGl1bTphcHAnOiAnL2Zvby9iYXIuYXBwLnppcCcsXG4gICAgICAnYXBwaXVtOmF1dG9tYXRpb25OYW1lJzogJ1hDVUlUZXN0JyxcbiAgICB9O1xuICAgIGNvbnN0IG5vbkFwcGl1bUNhcHMgPSB7XG4gICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgIH07XG4gICAgY29uc3QgYXBwaXVtVW5wcmVmaXhlZENhcHMgPSBfLmNsb25lKGFwcGl1bUNhcHMpO1xuICAgIHN0cmlwQXBwaXVtUHJlZml4ZXMoYXBwaXVtVW5wcmVmaXhlZENhcHMpO1xuICAgIGNvbnN0IHNpbXBsZUNhcHMgPSB7XG4gICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgLi4uYXBwaXVtVW5wcmVmaXhlZENhcHMsXG4gICAgfTtcbiAgICBpdCgnc2hvdWxkIGRvIG5vdGhpbmcgdG8gY2FwcyB0aGF0IGRvbnQgaW5jbHVkZSB0aGUgb3B0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb21vdGVBcHBpdW1PcHRpb25zKHNpbXBsZUNhcHMpLnNob3VsZC5lcWwoc2ltcGxlQ2Fwcyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBwcm9tb3RlIG9wdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bVVucHJlZml4ZWRDYXBzLFxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCByaWQgb2YgcHJlZml4ZXMgaWYgY2FwcyBpbnNpZGUgb3B0aW9ucyBhcmUgcHJlZml4ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBwcm9tb3RlQXBwaXVtT3B0aW9ucyhjYXBzKS5zaG91bGQuZXFsKHNpbXBsZUNhcHMpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcHJlc2VydmUgbm9uLWFwcGl1bSB2ZW5kb3IgcHJlZml4ZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBnb29nQ2FwcyA9IHsnZ29vZzpjaHJvbWVPcHRpb25zJzoge2ZvbzogJ2Jhcid9fTtcbiAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgIC4uLm5vbkFwcGl1bUNhcHMsXG4gICAgICAgIFtBUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgLi4uYXBwaXVtQ2FwcyxcbiAgICAgICAgICAuLi5nb29nQ2FwcyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBwcm9tb3RlQXBwaXVtT3B0aW9ucyhjYXBzKS5zaG91bGQuZXFsKHtcbiAgICAgICAgLi4uc2ltcGxlQ2FwcyxcbiAgICAgICAgLi4uZ29vZ0NhcHMsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG92ZXJ3cml0ZSBjYXBzIGZvdW5kIG9uIHRoZSB0b3AgbGV2ZWwnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBmb286ICdiYXInLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgICAgZm9vOiAnYmF6JyxcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHByb21vdGVBcHBpdW1PcHRpb25zKGNhcHMpLnNob3VsZC5lcWwoe1xuICAgICAgICAuLi5zaW1wbGVDYXBzLFxuICAgICAgICBmb286ICdiYXonLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjaXNXM2NDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgZHJvcCBpbnZhbGlkIFczQyBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGNvbnN0IGludmFsaWRDYXBzIG9mIFtcbiAgICAgICAgbnVsbCwgdW5kZWZpbmVkLCBbXSwge30sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBudWxsfSxcbiAgICAgICAge2ZpcnRNYXRjaDogW3t9XX0sXG4gICAgICAgIHthbHdheXNNYXRjaDogbnVsbH0sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBbe31dLCBhbHdheXNNYXRjaDogbnVsbH0sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBbXSwgYWx3YXlzTWF0Y2g6IHt9fSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFtdfSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IHt9fSxcbiAgICAgICAge2Fsd2F5c01hdGNoOiBbXX0sXG4gICAgICBdKSB7XG4gICAgICAgIGlzVzNjQ2FwcyhpbnZhbGlkQ2Fwcykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdmFsaWQgVzNDIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsaWRDYXBzIG9mIFtcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFt7fV19LFxuICAgICAgICB7Zmlyc3RNYXRjaDogW3t9XSwgYWxheXNNYXRjaDoge319LFxuICAgICAgICB7ZmlydE1hdGNoOiBbe31dLCBhbHdheXNNYXRjaDoge319LFxuICAgICAgICB7YWx3YXlzTWF0Y2g6IHt9fSxcbiAgICAgIF0pIHtcbiAgICAgICAgaXNXM2NDYXBzKHZhbGlkQ2Fwcykuc2hvdWxkLmJlLnRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUlBOztBQUNBOztBQUNBOztBQUdBQSxRQUFRLENBQUMsTUFBRCxFQUFTLFlBQVk7RUFHM0JBLFFBQVEsQ0FBQyxlQUFELEVBQWtCLFlBQVk7SUFDcENDLEVBQUUsQ0FBQyx5RUFBRCxFQUE0RSxZQUFZO01BQ3hGLEtBQUssSUFBSUMsR0FBVCxJQUFnQixDQUFDQyxTQUFELEVBQVksSUFBWixFQUFrQixDQUFsQixFQUFxQixJQUFyQixFQUEyQixRQUEzQixDQUFoQixFQUFzRDtRQUNwRCxDQUFDLFlBQVk7VUFBRSxnQ0FBYUQsR0FBYjtRQUFvQixDQUFuQyxFQUFxQ0UsTUFBckMsQ0FBNENDLEtBQTVDLENBQWtELHVCQUFsRDtNQUNEO0lBQ0YsQ0FKQyxDQUFGO0lBTUFKLEVBQUUsQ0FBQyxzRkFBRCxFQUF5RixZQUFZO01BQ3JHLGdDQUFhLEVBQWIsRUFBaUJHLE1BQWpCLENBQXdCRSxJQUF4QixDQUE2QkMsS0FBN0IsQ0FBbUMs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
672
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiYXJnIiwidW5kZWZpbmVkIiwidmFsaWRhdGVDYXBzIiwic2hvdWxkIiwidGhyb3ciLCJkZWVwIiwiZXF1YWwiLCJmb28iLCJwcmVzZW5jZSIsInNraXBQcmVzZW5jZUNvbnN0cmFpbnQiLCJpc1N0cmluZyIsImlzTnVtYmVyIiwiaXNCb29sZWFuIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiaW5jbHVzaW9uIiwiY2FwcyIsIm51bWJlciIsInN0cmluZyIsInByZXNlbnQiLCJleHRyYSIsImNvbnN0cmFpbnRzIiwibm90UHJlc2VudCIsIm1lcmdlQ2FwcyIsImhlbGxvIiwicHJpbWFyeSIsImEiLCJiIiwic2Vjb25kYXJ5IiwiYyIsImQiLCJiZWZvcmVFYWNoIiwicGFyc2VDYXBzIiwiYWx3YXlzTWF0Y2giLCJyZXF1aXJlZENhcHMiLCJhbGxGaXJzdE1hdGNoQ2FwcyIsImZpcnN0TWF0Y2giLCJ2YWxpZGF0ZWRGaXJzdE1hdGNoQ2FwcyIsIm1hdGNoZWRDYXBzIiwiZ29vZGJ5ZSIsInNvbWVBdHRyaWJ1dGUiLCJwcm9jZXNzQ2FwYWJpbGl0aWVzIiwicGxhdGZvcm1OYW1lIiwiYnJvd3Nlck5hbWUiLCJmYWtlQ2FwIiwibWlzc2luZ0NhcCIsImRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHMiLCJleHBlY3RlZE1hdGNoaW5nQ2FwcyIsImF1dG9tYXRpb25OYW1lIiwiZGV2aWNlTmFtZSIsIm1hdGNoaW5nQ2FwcyIsIl8iLCJvbWl0IiwiZmluZE5vblByZWZpeGVkQ2FwcyIsImVxbCIsIm5vblN0YW5kYXJkT25lIiwibm9uU3RhbmRhcmRUd28iLCJub25TdGFuZGFyZFRocmVlIiwibm9uU3RhbmRhcmRGb3VyIiwibm9uU3RhbmRhcmRGaXZlIiwiYnJvd3NlclZlcnNpb24iLCJhcHBpdW1DYXBzIiwibm9uQXBwaXVtQ2FwcyIsImFwcGl1bVVucHJlZml4ZWRDYXBzIiwiY2xvbmUiLCJzdHJpcEFwcGl1bVByZWZpeGVzIiwic2ltcGxlQ2FwcyIsInByb21vdGVBcHBpdW1PcHRpb25zIiwiQVBQSVVNX09QVFNfQ0FQIiwiZ29vZ0NhcHMiLCJpbnZhbGlkQ2FwcyIsImZpcnRNYXRjaCIsImlzVzNjQ2FwcyIsImJlIiwiZmFsc2UiLCJ2YWxpZENhcHMiLCJhbGF5c01hdGNoIiwidHJ1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcy5zcGVjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHBhcnNlQ2FwcyxcbiAgdmFsaWRhdGVDYXBzLFxuICBtZXJnZUNhcHMsXG4gIHByb2Nlc3NDYXBhYmlsaXRpZXMsXG4gIGZpbmROb25QcmVmaXhlZENhcHMsXG4gIHByb21vdGVBcHBpdW1PcHRpb25zLFxuICBBUFBJVU1fT1BUU19DQVAsXG4gIHN0cmlwQXBwaXVtUHJlZml4ZXMsXG59IGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2NhcGFiaWxpdGllcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtkZXNpcmVkQ2FwYWJpbGl0eUNvbnN0cmFpbnRzfSBmcm9tICcuLi8uLi8uLi9saWIvYmFzZWRyaXZlci9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IHtpc1czY0NhcHN9IGZyb20gJy4uLy4uLy4uL2xpYi9oZWxwZXJzL2NhcGFiaWxpdGllcyc7XG5cbmRlc2NyaWJlKCdjYXBzJywgZnVuY3Rpb24gKCkge1xuICAvLyBUZXN0cyBiYXNlZCBvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLXZhbGlkYXRlLWNhcHNcbiAgZGVzY3JpYmUoJyN2YWxpZGF0ZUNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImNhcGFiaWxpdHlcIiBpcyBub3QgYSBKU09OIG9iamVjdCAoMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGxldCBhcmcgb2YgW3VuZGVmaW5lZCwgbnVsbCwgMSwgdHJ1ZSwgJ3N0cmluZyddKSB7XG4gICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgdmFsaWRhdGVDYXBzKGFyZyk7XG4gICAgICAgIH0uc2hvdWxkLnRocm93KC9tdXN0IGJlIGEgSlNPTiBvYmplY3QvKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyByZXN1bHQge30gYnkgZGVmYXVsdCBpZiBjYXBzIGlzIGVtcHR5IG9iamVjdCBhbmQgbm8gY29uc3RyYWludHMgcHJvdmlkZWQgKDIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFsaWRhdGVDYXBzKHt9KS5zaG91bGQuZGVlcC5lcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGhyb3dzIGVycm9ycyBpZiBjb25zdHJhaW50cyBhcmUgbm90IG1ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJwcmVzZW50XCIgY29uc3RyYWludCBub3QgbWV0IG9uIHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAoKCkgPT4gdmFsaWRhdGVDYXBzKHt9LCB7Zm9vOiB7cHJlc2VuY2U6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgY2FuJ3QgYmUgYmxhbmsvKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyB0aGUgY2FwYWJpbGl0eSB0aGF0IHdhcyBwYXNzZWQgaW4gaWYgXCJza2lwUHJlc2VuY2VDb25zdHJhaW50XCIgaXMgZmFsc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhbGlkYXRlQ2Fwcyh7fSwge2Zvbzoge3ByZXNlbmNlOiB0cnVlfX0sIHtza2lwUHJlc2VuY2VDb25zdHJhaW50OiB0cnVlfSkuc2hvdWxkLmRlZXAuZXF1YWwoXG4gICAgICAgICAge31cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgncmV0dXJucyBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIGlmIFwiaXNTdHJpbmdcIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogMX0sIHtmb286IHtpc1N0cmluZzogdHJ1ZX19KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAgIC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc051bWJlclwiIGNvbnN0cmFpbnQgbm90IG1ldCBvbiBwcm9wZXJ0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgKCgpID0+IHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnYmFyJ30sIHtmb286IHtpc051bWJlcjogdHJ1ZX19KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAgIC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpc0Jvb2xlYW5cIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2Jhcid9LCB7Zm9vOiB7aXNCb29sZWFuOiB0cnVlfX0pKS5zaG91bGQudGhyb3coXG4gICAgICAgICAgLydmb28nIG11c3QgYmUgb2YgdHlwZSBib29sZWFuL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpbmNsdXNpb25cIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PlxuICAgICAgICAgIHZhbGlkYXRlQ2Fwcyh7Zm9vOiAnMyd9LCB7Zm9vOiB7aW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlOiBbJzEnLCAnMiddfX0pKS5zaG91bGQudGhyb3coXG4gICAgICAgICAgLydmb28nIDMgbm90IHBhcnQgb2YgMSwyL1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgXCJpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmVcIiBjb25zdHJhaW50IG5vdCBtZXQgb24gcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICgoKSA9PiB2YWxpZGF0ZUNhcHMoe2ZvbzogJ2EnfSwge2Zvbzoge2luY2x1c2lvbjogWydBJywgJ0InLCAnQyddfX0pKS5zaG91bGQudGhyb3coXG4gICAgICAgICAgLydmb28nIGEgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBsaXN0L1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCB0aHJvdyBlcnJvcnMgaWYgY29uc3RyYWludHMgYXJlIG1ldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBjYXBzID0ge1xuICAgICAgICBudW1iZXI6IDEsXG4gICAgICAgIHN0cmluZzogJ3N0cmluZycsXG4gICAgICAgIHByZXNlbnQ6ICdwcmVzZW50JyxcbiAgICAgICAgZXh0cmE6ICdleHRyYScsXG4gICAgICB9O1xuXG4gICAgICBsZXQgY29uc3RyYWludHMgPSB7XG4gICAgICAgIG51bWJlcjoge2lzTnVtYmVyOiB0cnVlfSxcbiAgICAgICAgc3RyaW5nOiB7aXNTdHJpbmc6IHRydWV9LFxuICAgICAgICBwcmVzZW50OiB7cHJlc2VuY2U6IHRydWV9LFxuICAgICAgICBub3RQcmVzZW50OiB7cHJlc2VuY2U6IGZhbHNlfSxcbiAgICAgIH07XG5cbiAgICAgIHZhbGlkYXRlQ2FwcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoY2Fwcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFRlc3RzIGJhc2VkIG9uOiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViZHJpdmVyLyNkZm4tbWVyZ2luZy1jYXBzXG4gIGRlc2NyaWJlKCcjbWVyZ2VDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdyZXR1cm5zIGEgcmVzdWx0IHRoYXQgaXMge30gYnkgZGVmYXVsdCAoMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBtZXJnZUNhcHMoKS5zaG91bGQuZGVlcC5lcXVhbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhIHJlc3VsdCB0aGF0IG1hdGNoZXMgcHJpbWFyeSBieSBkZWZhdWx0ICgyLCAzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIG1lcmdlQ2Fwcyh7aGVsbG86ICd3b3JsZCd9KS5zaG91bGQuZGVlcC5lcXVhbCh7aGVsbG86ICd3b3JsZCd9KTtcbiAgICB9KTtcblxuICAgIGl0KCdyZXR1cm5zIGludmFsaWQgYXJndW1lbnQgZXJyb3IgaWYgcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGhhdmUgbWF0Y2hpbmcgcHJvcGVydGllcyAoNCknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAoKCkgPT4gbWVyZ2VDYXBzKHtoZWxsbzogJ3dvcmxkJ30sIHtoZWxsbzogJ3doaXJsJ30pKS5zaG91bGQudGhyb3coXG4gICAgICAgIC9wcm9wZXJ0eSAnaGVsbG8nIHNob3VsZCBub3QgZXhpc3Qgb24gYm90aCBwcmltYXJ5IFtcXHdcXFddKiBhbmQgc2Vjb25kYXJ5IFtcXHdcXFddKi9cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBhIHJlc3VsdCB3aXRoIGtleXMgZnJvbSBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgdG9nZXRoZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgcHJpbWFyeSA9IHtcbiAgICAgICAgYTogJ2EnLFxuICAgICAgICBiOiAnYicsXG4gICAgICB9O1xuICAgICAgbGV0IHNlY29uZGFyeSA9IHtcbiAgICAgICAgYzogJ2MnLFxuICAgICAgICBkOiAnZCcsXG4gICAgICB9O1xuICAgICAgbWVyZ2VDYXBzKHByaW1hcnksIHNlY29uZGFyeSkuc2hvdWxkLmRlZXAuZXF1YWwoe1xuICAgICAgICBhOiAnYScsXG4gICAgICAgIGI6ICdiJyxcbiAgICAgICAgYzogJ2MnLFxuICAgICAgICBkOiAnZCcsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgLy8gVGVzdHMgYmFzZWQgb246IGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJkcml2ZXIvI3Byb2Nlc3NpbmctY2FwYWJpbGl0aWVzXG4gIGRlc2NyaWJlKCcjcGFyc2VDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBjYXBzO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjYXBzID0ge307XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBpbnZhbGlkIGFyZ3VtZW50IGlmIG5vIGNhcHMgb2JqZWN0IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+IHBhcnNlQ2FwcygpKS5zaG91bGQudGhyb3coL211c3QgYmUgYSBKU09OIG9iamVjdC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJyZXF1aXJlZENhcHNcIiB0byBwcm9wZXJ0eSBuYW1lZCBcImFsd2F5c01hdGNoXCIgKDIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHsnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJ307XG4gICAgICBwYXJzZUNhcHMoY2FwcykucmVxdWlyZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMuYWx3YXlzTWF0Y2gpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJyZXF1aXJlZENhcHNcIiB0byBlbXB0eSBKU09OIG9iamVjdCBpZiBcImFsd2F5c01hdGNoXCIgaXMgbm90IGFuIG9iamVjdCAoMi4xKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlQ2FwcyhjYXBzKS5yZXF1aXJlZENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcInJlcXVpcmVkQ2Fwc1wiIGRvblxcJ3QgbWF0Y2ggXCJjb25zdHJhaW50c1wiICgyLjIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHsnYXBwaXVtOmZvbyc6IDF9O1xuICAgICAgKCgpID0+IHBhcnNlQ2FwcyhjYXBzLCB7Zm9vOiB7aXNTdHJpbmc6IHRydWV9fSkpLnNob3VsZC50aHJvdygvJ2ZvbycgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NldHMgXCJhbGxGaXJzdE1hdGNoQ2Fwc1wiIHRvIHByb3BlcnR5IG5hbWVkIFwiZmlyc3RNYXRjaFwiICgzKScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlQ2Fwcyh7fSwgW3t9XSkuYWxsRmlyc3RNYXRjaENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoW3t9XSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2V0cyBcImFsbEZpcnN0TWF0Y2hDYXBzXCIgdG8gW3t9XSBpZiBcImZpcnN0TWF0Y2hcIiBpcyB1bmRlZmluZWQgKDMuMSknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwYXJzZUNhcHMoe30pLmFsbEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKFt7fV0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgaW52YWxpZCBhcmd1bWVudCBlcnJvciBpZiBcImZpcnN0TWF0Y2hcIiBpcyBub3QgYW4gYXJyYXkgYW5kIGlzIG5vdCB1bmRlZmluZWQgKDMuMiknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKGxldCBhcmcgb2YgW251bGwsIDEsIHRydWUsICdzdHJpbmcnXSkge1xuICAgICAgICBjYXBzLmZpcnN0TWF0Y2ggPSBhcmc7XG4gICAgICAgIChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGFyc2VDYXBzKGNhcHMpO1xuICAgICAgICB9LnNob3VsZC50aHJvdygvbXVzdCBiZSBhIEpTT04gYXJyYXkgb3IgdW5kZWZpbmVkLykpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ2hhcyBcInZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzXCIgcHJvcGVydHkgdGhhdCBpcyBlbXB0eSBieSBkZWZhdWx0IGlmIG5vIHZhbGlkIGZpcnN0TWF0Y2ggY2FwcyB3ZXJlIGZvdW5kICg0KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHBhcnNlQ2FwcyhjYXBzLCB7XG4gICAgICAgIGZvbzoge3ByZXNlbmNlOiB0cnVlfSxcbiAgICAgIH0pLnZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXR1cm5zIGEgXCJ2YWxpZGF0ZWRGaXJzdE1hdGNoQ2Fwc1wiIGFycmF5ICg1KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCd0aGF0IGVxdWFscyBcImZpcnN0TWF0Y2hcIiBpZiBmaXJzdE1hdGNoIGlzIG9uZSBlbXB0eSBvYmplY3QgYW5kIHRoZXJlIGFyZSBubyBjb25zdHJhaW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3t9XTtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLnZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMuZmlyc3RNYXRjaCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgXCJudWxsXCIgbWF0Y2hlZENhcHMgaWYgbm90aGluZyBtYXRjaGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmZpcnN0TWF0Y2ggPSBbe31dO1xuICAgICAgICBzaG91bGQuZXF1YWwocGFyc2VDYXBzKGNhcHMsIHtmb286IHtwcmVzZW5jZTogdHJ1ZX19KS5tYXRjaGVkQ2FwcywgbnVsbCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYHNob3VsZCByZXR1cm4gY2FwYWJpbGl0aWVzIGlmIHByZXNlbmNlIGNvbnN0cmFpbnQgaXMgbWF0Y2hlZCBpbiBhdCBsZWFzdCBvbmUgb2YgdGhlICdmaXJzdE1hdGNoJyBjYXBhYmlsaXRpZXMgb2JqZWN0c2AsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5hbHdheXNNYXRjaCA9IHtcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6ICdiYXInLFxuICAgICAgICB9O1xuICAgICAgICBjYXBzLmZpcnN0TWF0Y2ggPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ2FwcGl1bTpoZWxsbyc6ICd3b3JsZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYXBwaXVtOmdvb2RieWUnOiAnd29ybGQnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzLCB7XG4gICAgICAgICAgZ29vZGJ5ZToge3ByZXNlbmNlOiB0cnVlfSxcbiAgICAgICAgfSkubWF0Y2hlZENhcHMuc2hvdWxkLmRlZXAuZXF1YWwoe1xuICAgICAgICAgIGZvbzogJ2JhcicsXG4gICAgICAgICAgZ29vZGJ5ZTogJ3dvcmxkJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoYHRocm93cyBpbnZhbGlkIGFyZ3VtZW50IGlmIHByZXNlbmNlIGNvbnN0cmFpbnQgaXMgbm90IG1ldCBvbiBhbnkgY2FwYWJpbGl0aWVzYCwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0ge1xuICAgICAgICAgICdhcHBpdW06Zm9vJzogJ2JhcicsXG4gICAgICAgIH07XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgICdhcHBpdW06Z29vZGJ5ZSc6ICd3b3JsZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKHBhcnNlQ2FwcyhjYXBzLCB7c29tZUF0dHJpYnV0ZToge3ByZXNlbmNlOiB0cnVlfX0pLm1hdGNoZWRDYXBzLCBudWxsKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgndGhhdCBlcXVhbHMgZmlyc3RNYXRjaCBpZiBmaXJzdE1hdGNoIGNvbnRhaW5zIHR3byBvYmplY3RzIHRoYXQgcGFzcyB0aGUgcHJvdmlkZWQgY29uc3RyYWludHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnYmFyJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXIxJ30sIHsnYXBwaXVtOmZvbyc6ICdiYXIyJ31dO1xuXG4gICAgICAgIGxldCBjb25zdHJhaW50cyA9IHtcbiAgICAgICAgICBmb286IHtcbiAgICAgICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcblxuICAgICAgICBwYXJzZUNhcHMoY2FwcywgY29uc3RyYWludHMpLnZhbGlkYXRlZEZpcnN0TWF0Y2hDYXBzLnNob3VsZC5kZWVwLmVxdWFsKGNhcHMuZmlyc3RNYXRjaCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3JldHVybnMgbm8gdmVuZG9yIHByZWZpeCBlcnJvciBpZiB0aGUgZmlyc3RNYXRjaFsyXSBkb2VzIG5vdCBoYXZlIGl0IGJlY2F1c2Ugb2Ygbm8gYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuYWx3YXlzTWF0Y2ggPSB7fTtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXInfSwgJ2ZvbyddO1xuICAgICAgICAoKCkgPT4gcGFyc2VDYXBzKGNhcHMsIHt9KSkuc2hvdWxkLnRocm93KFxuICAgICAgICAgIC9BbGwgbm9uLXN0YW5kYXJkIGNhcGFiaWxpdGllcyBzaG91bGQgaGF2ZSBhIHZlbmRvciBwcmVmaXgvXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXR1cm5zIGEgbWF0Y2hlZENhcHMgb2JqZWN0ICg2KScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzLmFsd2F5c01hdGNoID0geydhcHBpdW06aGVsbG8nOiAnd29ybGQnfTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnd2hpY2ggaXMgc2FtZSBhcyBhbHdheXNNYXRjaCBpZiBmaXJzdE1hdGNoIGFycmF5IGlzIG5vdCBwcm92aWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLm1hdGNoZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHtoZWxsbzogJ3dvcmxkJ30pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdtZXJnZXMgY2FwcyB0b2dldGhlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2Fwcy5maXJzdE1hdGNoID0gW3snYXBwaXVtOmZvbyc6ICdiYXInfV07XG4gICAgICAgIHBhcnNlQ2FwcyhjYXBzKS5tYXRjaGVkQ2Fwcy5zaG91bGQuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaGVsbG86ICd3b3JsZCcsXG4gICAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3dpdGggbWVyZ2VkIGNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMuZmlyc3RNYXRjaCA9IFt7J2FwcGl1bTpoZWxsbyc6ICdiYXInLCAnYXBwaXVtOmZvbyc6ICdmb28nfSwgeydhcHBpdW06Zm9vJzogJ2Jhcid9XTtcbiAgICAgICAgcGFyc2VDYXBzKGNhcHMpLm1hdGNoZWRDYXBzLnNob3VsZC5kZWVwLmVxdWFsKHtcbiAgICAgICAgICBoZWxsbzogJ3dvcmxkJyxcbiAgICAgICAgICBmb286ICdiYXInLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI3Byb2Nlc3NDYXBzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIFwiYWx3YXlzTWF0Y2hcIiBpZiBcImZpcnN0TWF0Y2hcIiBhbmQgXCJjb25zdHJhaW50c1wiIHdlcmUgbm90IHByb3ZpZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7fSkuc2hvdWxkLmRlZXAuZXF1YWwoe30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gbWVyZ2VkIGNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsnYXBwaXVtOmhlbGxvJzogJ3dvcmxkJ30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpmb28nOiAnYmFyJ31dLFxuICAgICAgfSkuc2hvdWxkLmRlZXAuZXF1YWwoe2hlbGxvOiAnd29ybGQnLCBmb286ICdiYXInfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHN0cmlwIG91dCB0aGUgXCJhcHBpdW06XCIgcHJlZml4IGZvciBub24tc3RhbmRhcmQgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpoZWxsbyc6ICd3b3JsZCd9LFxuICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtoZWxsbzogJ3dvcmxkJywgZm9vOiAnYmFyJ30pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzdGlsbCBhY2NlcHQgcHJlZml4ZWQgY2FwcyBldmVuIGlmIHRoZXkgYXJlIHN0YW5kYXJkIGNhcGFiaWxpdGllcyAoaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmRyaXZlci8jZGZuLXRhYmxlLW9mLXN0YW5kYXJkLWNhcGFiaWxpdGllcyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHsnYXBwaXVtOnBsYXRmb3JtTmFtZSc6ICdXaGF0ZXZ6J30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpicm93c2VyTmFtZSc6ICdBbnl0aGluZyd9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtwbGF0Zm9ybU5hbWU6ICdXaGF0ZXZ6JywgYnJvd3Nlck5hbWU6ICdBbnl0aGluZyd9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJlZmVyIHN0YW5kYXJkIGNhcHMgdGhhdCBhcmUgbm9uLXByZWZpeGVkIHRvIHByZWZpeGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7J2FwcGl1bTpwbGF0Zm9ybU5hbWUnOiAnRm9vJywgcGxhdGZvcm1OYW1lOiAnQmFyJ30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpicm93c2VyTmFtZSc6ICdGT08nLCBicm93c2VyTmFtZTogJ0JBUid9XSxcbiAgICAgIH0pLnNob3VsZC5kZWVwLmVxdWFsKHtwbGF0Zm9ybU5hbWU6ICdCYXInLCBicm93c2VyTmFtZTogJ0JBUid9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBpZiBkdXBsaWNhdGVzIGluIGFsd2F5c01hdGNoIGFuZCBmaXJzdE1hdGNoJywgZnVuY3Rpb24gKCkge1xuICAgICAgKCgpID0+XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoe1xuICAgICAgICAgIGFsd2F5c01hdGNoOiB7cGxhdGZvcm1OYW1lOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06cGxhdGZvcm1OYW1lJzogJ2Jhcid9XSxcbiAgICAgICAgfSkpLnNob3VsZC50aHJvdygvc2hvdWxkIG5vdCBleGlzdCBvbiBib3RoIHByaW1hcnkvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IHRocm93IGFuIGV4Y2VwdGlvbiBpZiBwcmVzZW5jZSBjb25zdHJhaW50IGlzIG5vdCBtZXQgb24gYSBmaXJzdE1hdGNoIGNhcGFiaWxpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0gcHJvY2Vzc0NhcGFiaWxpdGllcyhcbiAgICAgICAge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiB7cGxhdGZvcm1OYW1lOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbeydhcHBpdW06Zm9vJzogJ2Jhcid9XSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZToge1xuICAgICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmYWtlQ2FwOiB7XG4gICAgICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBjYXBzLnBsYXRmb3JtTmFtZS5zaG91bGQuZXF1YWwoJ0Zha2UnKTtcbiAgICAgIGNhcHMuZmFrZUNhcC5zaG91bGQuZXF1YWwoJ2Zvb2JhcicpO1xuICAgICAgY2Fwcy5mb28uc2hvdWxkLmVxdWFsKCdiYXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIG5vIG1hdGNoaW5nIGNhcHMgd2VyZSBmb3VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICgoKSA9PlxuICAgICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFsd2F5c01hdGNoOiB7cGxhdGZvcm1OYW1lOiAnRmFrZScsICdhcHBpdW06ZmFrZUNhcCc6ICdmb29iYXInfSxcbiAgICAgICAgICAgIGZpcnN0TWF0Y2g6IFt7J2FwcGl1bTpmb28nOiAnYmFyJ31dLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiB7XG4gICAgICAgICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZha2VDYXA6IHtcbiAgICAgICAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWlzc2luZ0NhcDoge1xuICAgICAgICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICApKS5zaG91bGQudGhyb3coLydtaXNzaW5nQ2FwJyBjYW4ndCBiZSBibGFuay8pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3ZhbGlkYXRlIEFwcGl1bSBjb25zdHJhaW50cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gey4uLmRlc2lyZWRDYXBhYmlsaXR5Q29uc3RyYWludHN9O1xuICAgICAgY29uc3QgZXhwZWN0ZWRNYXRjaGluZ0NhcHMgPSB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICBhdXRvbWF0aW9uTmFtZTogJ0Zha2UnLFxuICAgICAgICBkZXZpY2VOYW1lOiAnRmFrZScsXG4gICAgICB9O1xuXG4gICAgICBsZXQgbWF0Y2hpbmdDYXBzO1xuICAgICAgbGV0IGNhcHM7XG5cbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICBtYXRjaGluZ0NhcHMgPSB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZScsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3aGVuIGFsd2F5c01hdGNoIGhhcyB0aGUgcHJvcGVyIGNhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IG1hdGNoaW5nQ2FwcyxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKGNhcHMsIGNvbnN0cmFpbnRzKS5zaG91bGQuZGVlcC5lcXVhbChleHBlY3RlZE1hdGNoaW5nQ2Fwcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB3aGVuIGZpcnN0TWF0Y2hbMF0gaGFzIHRoZSBwcm9wZXIgY2FwcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW21hdGNoaW5nQ2Fwc10sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHdoZW4gYWx3YXlzTWF0Y2ggYW5kIGZpcnN0TWF0Y2hbMF0gaGF2ZSB0aGUgcHJvcGVyIGNhcHMgd2hlbiBtZXJnZWQgdG9nZXRoZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IF8ub21pdChtYXRjaGluZ0NhcHMsIFsnYXBwaXVtOmRldmljZU5hbWUnXSksXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZSd9XSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRNYXRjaGluZ0NhcHMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgd2hlbiBhdXRvbWF0aW9uTmFtZSBpcyBvbWl0dGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBfLm9taXQobWF0Y2hpbmdDYXBzLCBbJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSddKSxcbiAgICAgICAgfTtcbiAgICAgICAgcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykuc2hvdWxkLmRlZXAuZXF1YWwoXG4gICAgICAgICAgXy5vbWl0KGV4cGVjdGVkTWF0Y2hpbmdDYXBzLCAnYXV0b21hdGlvbk5hbWUnKVxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcGFzcyBpZiBmaXJzdCBlbGVtZW50IGluIFwiZmlyc3RNYXRjaFwiIGRvZXMgdmFsaWRhdGUgYW5kIHNlY29uZCBlbGVtZW50IGRvZXMgbm90JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbbWF0Y2hpbmdDYXBzLCB7J2FwcGl1bTpiYWRDYXBzJzogJ2JhZENhcHMnfV0sXG4gICAgICAgIH07XG4gICAgICAgIHByb2Nlc3NDYXBhYmlsaXRpZXMoY2FwcywgY29uc3RyYWludHMpLnNob3VsZC5kZWVwLmVxdWFsKGV4cGVjdGVkTWF0Y2hpbmdDYXBzKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIHBhc3MgaWYgZmlyc3QgZWxlbWVudCBpbiBcImZpcnN0TWF0Y2hcIiBkb2VzIG5vdCB2YWxpZGF0ZSBhbmQgc2Vjb25kIGVsZW1lbnQgZG9lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW3snYXBwaXVtOmJhZENhcHMnOiAnYmFkQ2Fwcyd9LCBtYXRjaGluZ0NhcHNdLFxuICAgICAgICB9O1xuICAgICAgICBwcm9jZXNzQ2FwYWJpbGl0aWVzKGNhcHMsIGNvbnN0cmFpbnRzKS5zaG91bGQuZGVlcC5lcXVhbChleHBlY3RlZE1hdGNoaW5nQ2Fwcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gYmFkIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCBpbiBtb3JlIHRoYW4gb25lIGZpcnN0TWF0Y2ggY2FwYWJpbGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAnYXBwaXVtOmJhZCc6ICdwYXJhbXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgJ2FwcGl1bTptb3JlJzogJ2JhZC1wYXJhbXMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuICAgICAgICAoKCkgPT4gcHJvY2Vzc0NhcGFiaWxpdGllcyhjYXBzLCBjb25zdHJhaW50cykpLnNob3VsZC50aHJvdyhcbiAgICAgICAgICAvQ291bGQgbm90IGZpbmQgbWF0Y2hpbmcgY2FwYWJpbGl0aWVzL1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnLmZpbmROb25QcmVmaXhlZENhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBmaW5kIGFsd2F5c01hdGNoIGNhcHMgd2l0aCBubyBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgICAgfSxcbiAgICAgIH0pLnNob3VsZC5lcWwoWydub24tc3RhbmRhcmQnXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBub3QgZmluZCBhIHN0YW5kYXJkIGNhcCBpbiBhbHdheXNNYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0FueScsXG4gICAgICAgIH0sXG4gICAgICB9KS5zaG91bGQuZXFsKFtdKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZpbmQgZmlyc3RNYXRjaCBjYXBzIHdpdGggbm8gcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgICdub24tc3RhbmRhcmQnOiAnZHVtbXknLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KS5zaG91bGQuZXFsKFsnbm9uLXN0YW5kYXJkJ10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgYSBzdGFuZGFyZCBjYXAgaW4gcHJlZml4JywgZnVuY3Rpb24gKCkge1xuICAgICAgZmluZE5vblByZWZpeGVkQ2Fwcyh7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0FueScsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pLnNob3VsZC5lcWwoW10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZmluZCBmaXJzdE1hdGNoIGNhcHMgaW4gc2Vjb25kIGl0ZW0gb2YgZmlyc3RNYXRjaCBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe1xuICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFtcbiAgICAgICAgICB7fSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSkuc2hvdWxkLmVxbChbJ25vbi1zdGFuZGFyZCddKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBkdXBsaWNhdGVzIGZyb20gYWx3YXlzTWF0Y2ggYW5kIGZpcnN0TWF0Y2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmaW5kTm9uUHJlZml4ZWRDYXBzKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ3NvbWV0aGluZycsXG4gICAgICAgIH0sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSkuc2hvdWxkLmVxbChbJ25vbi1zdGFuZGFyZCddKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbW92ZSBkdXBsaWNhdGVzIGZyb20gZmlyc3RNYXRjaCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe1xuICAgICAgICBmaXJzdE1hdGNoOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgJ25vbi1zdGFuZGFyZCc6ICdkdW1teScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAnbm9uLXN0YW5kYXJkJzogJ2R1bW15IDInLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KS5zaG91bGQuZXFsKFsnbm9uLXN0YW5kYXJkJ10pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIGR1cGxpY2F0ZXMgYW5kIGtlZXAgc3RhbmRhcmQgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYWx3YXlzTWF0Y2ggPSB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICBub25TdGFuZGFyZE9uZTogJ25vbi1zdGFuZGFyZCcsXG4gICAgICAgIG5vblN0YW5kYXJkVHdvOiAnbm9uLXN0YW5kYXJkJyxcbiAgICAgIH07XG4gICAgICBjb25zdCBmaXJzdE1hdGNoID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbm9uU3RhbmRhcmRUaHJlZTogJ25vbi1zdGFuZGFyZCcsXG4gICAgICAgICAgbm9uU3RhbmRhcmRGb3VyOiAnbm9uLXN0YW5kYXJkJyxcbiAgICAgICAgICBicm93c2VyTmFtZTogJ0Zha2VCcm93c2VyJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5vblN0YW5kYXJkVGhyZWU6ICdub24tc3RhbmRhcmQnLFxuICAgICAgICAgIG5vblN0YW5kYXJkRm91cjogJ25vbi1zdGFuZGFyZCcsXG4gICAgICAgICAgbm9uU3RhbmRhcmRGaXZlOiAnbm9uLXN0YW5kYXJkJyxcbiAgICAgICAgICBicm93c2VyVmVyc2lvbjogJ3doYXRldmEnLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICAgIGZpbmROb25QcmVmaXhlZENhcHMoe2Fsd2F5c01hdGNoLCBmaXJzdE1hdGNofSkuc2hvdWxkLmVxbChbXG4gICAgICAgICdub25TdGFuZGFyZE9uZScsXG4gICAgICAgICdub25TdGFuZGFyZFR3bycsXG4gICAgICAgICdub25TdGFuZGFyZFRocmVlJyxcbiAgICAgICAgJ25vblN0YW5kYXJkRm91cicsXG4gICAgICAgICdub25TdGFuZGFyZEZpdmUnLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjcHJvbW90ZUFwcGl1bU9wdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYXBwaXVtQ2FwcyA9IHtcbiAgICAgICdhcHBpdW06cGxhdGZvcm1WZXJzaW9uJzogJzE0LjQnLFxuICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ2lQaG9uZSAxMScsXG4gICAgICAnYXBwaXVtOmFwcCc6ICcvZm9vL2Jhci5hcHAuemlwJyxcbiAgICAgICdhcHBpdW06YXV0b21hdGlvbk5hbWUnOiAnWENVSVRlc3QnLFxuICAgIH07XG4gICAgY29uc3Qgbm9uQXBwaXVtQ2FwcyA9IHtcbiAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgfTtcbiAgICBjb25zdCBhcHBpdW1VbnByZWZpeGVkQ2FwcyA9IF8uY2xvbmUoYXBwaXVtQ2Fwcyk7XG4gICAgc3RyaXBBcHBpdW1QcmVmaXhlcyhhcHBpdW1VbnByZWZpeGVkQ2Fwcyk7XG4gICAgY29uc3Qgc2ltcGxlQ2FwcyA9IHtcbiAgICAgIC4uLm5vbkFwcGl1bUNhcHMsXG4gICAgICAuLi5hcHBpdW1VbnByZWZpeGVkQ2FwcyxcbiAgICB9O1xuICAgIGl0KCdzaG91bGQgZG8gbm90aGluZyB0byBjYXBzIHRoYXQgZG9udCBpbmNsdWRlIHRoZSBvcHRpb25zJywgZnVuY3Rpb24gKCkge1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoc2ltcGxlQ2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHByb21vdGUgb3B0aW9ucycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgIC4uLm5vbkFwcGl1bUNhcHMsXG4gICAgICAgIFtBUFBJVU1fT1BUU19DQVBdOiB7XG4gICAgICAgICAgLi4uYXBwaXVtVW5wcmVmaXhlZENhcHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCByaWQgb2YgcHJlZml4ZXMgaWYgY2FwcyBpbnNpZGUgb3B0aW9ucyBhcmUgcHJlZml4ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbChzaW1wbGVDYXBzKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHByZXNlcnZlIG5vbi1hcHBpdW0gdmVuZG9yIHByZWZpeGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZ29vZ0NhcHMgPSB7J2dvb2c6Y2hyb21lT3B0aW9ucyc6IHtmb286ICdiYXInfX07XG4gICAgICBjb25zdCBjYXBzID0ge1xuICAgICAgICAuLi5ub25BcHBpdW1DYXBzLFxuICAgICAgICBbQVBQSVVNX09QVFNfQ0FQXToge1xuICAgICAgICAgIC4uLmFwcGl1bUNhcHMsXG4gICAgICAgICAgLi4uZ29vZ0NhcHMsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbCh7XG4gICAgICAgIC4uLnNpbXBsZUNhcHMsXG4gICAgICAgIC4uLmdvb2dDYXBzLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBvdmVyd3JpdGUgY2FwcyBmb3VuZCBvbiB0aGUgdG9wIGxldmVsJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FwcyA9IHtcbiAgICAgICAgLi4ubm9uQXBwaXVtQ2FwcyxcbiAgICAgICAgZm9vOiAnYmFyJyxcbiAgICAgICAgW0FQUElVTV9PUFRTX0NBUF06IHtcbiAgICAgICAgICAuLi5hcHBpdW1DYXBzLFxuICAgICAgICAgIGZvbzogJ2JheicsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcHJvbW90ZUFwcGl1bU9wdGlvbnMoY2Fwcykuc2hvdWxkLmVxbCh7XG4gICAgICAgIC4uLnNpbXBsZUNhcHMsXG4gICAgICAgIGZvbzogJ2JheicsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNpc1czY0NhcHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBkcm9wIGludmFsaWQgVzNDIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAoY29uc3QgaW52YWxpZENhcHMgb2YgW1xuICAgICAgICBudWxsLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFtdLFxuICAgICAgICB7fSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IG51bGx9LFxuICAgICAgICB7ZmlydE1hdGNoOiBbe31dfSxcbiAgICAgICAge2Fsd2F5c01hdGNoOiBudWxsfSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFt7fV0sIGFsd2F5c01hdGNoOiBudWxsfSxcbiAgICAgICAge2ZpcnN0TWF0Y2g6IFtdLCBhbHdheXNNYXRjaDoge319LFxuICAgICAgICB7Zmlyc3RNYXRjaDogW119LFxuICAgICAgICB7Zmlyc3RNYXRjaDoge319LFxuICAgICAgICB7YWx3YXlzTWF0Y2g6IFtdfSxcbiAgICAgIF0pIHtcbiAgICAgICAgaXNXM2NDYXBzKGludmFsaWRDYXBzKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBXM0MgY2FwYWJpbGl0aWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgZm9yIChjb25zdCB2YWxpZENhcHMgb2YgW1xuICAgICAgICB7Zmlyc3RNYXRjaDogW3t9XX0sXG4gICAgICAgIHtmaXJzdE1hdGNoOiBbe31dLCBhbGF5c01hdGNoOiB7fX0sXG4gICAgICAgIHtmaXJ0TWF0Y2g6IFt7fV0sIGFsd2F5c01hdGNoOiB7fX0sXG4gICAgICAgIHthbHdheXNNYXRjaDoge319LFxuICAgICAgXSkge1xuICAgICAgICBpc1czY0NhcHModmFsaWRDYXBzKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBw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
@@ -61,7 +61,7 @@ describe('Desired Capabilities', function () {
61
61
  };
62
62
  await d.createSession(null, null, {
63
63
  alwaysMatch: {
64
- 'platformName': 'iOS',
64
+ platformName: 'iOS',
65
65
  'appium:deviceName': 'Delorean'
66
66
  }
67
67
  }).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /necessary.*proper/);
@@ -86,7 +86,7 @@ describe('Desired Capabilities', function () {
86
86
  it('should accept extra capabilities', async function () {
87
87
  await d.createSession(null, null, {
88
88
  alwaysMatch: {
89
- 'platformName': 'iOS',
89
+ platformName: 'iOS',
90
90
  'appium:deviceName': 'Delorean',
91
91
  'appium:extra': 'cheese',
92
92
  'appium:hold the': 'sauce'
@@ -97,7 +97,7 @@ describe('Desired Capabilities', function () {
97
97
  this.timeout(500);
98
98
  await d.createSession(null, null, {
99
99
  alwaysMatch: {
100
- 'platformName': 'iOS',
100
+ platformName: 'iOS',
101
101
  'appium:deviceName': 'Delorean',
102
102
  'appium:extra': 'cheese',
103
103
  'appium:hold the': 'sauce'
@@ -108,7 +108,7 @@ describe('Desired Capabilities', function () {
108
108
  it('should be sensitive to the case of caps', async function () {
109
109
  await d.createSession(null, null, {
110
110
  alwaysMatch: {
111
- 'platformname': 'iOS',
111
+ platformname: 'iOS',
112
112
  'appium:deviceName': 'Delorean'
113
113
  }
114
114
  }).should.eventually.be.rejectedWith(_lib.errors.SessionNotCreatedError, /platformName/);
@@ -117,7 +117,7 @@ describe('Desired Capabilities', function () {
117
117
  it('should allow a string "false"', async function () {
118
118
  await d.createSession(null, null, {
119
119
  alwaysMatch: {
120
- 'platformName': 'iOS',
120
+ platformName: 'iOS',
121
121
  'appium:deviceName': 'Delorean',
122
122
  'appium:noReset': 'false'
123
123
  }
@@ -129,7 +129,7 @@ describe('Desired Capabilities', function () {
129
129
  it('should allow a string "true"', async function () {
130
130
  await d.createSession(null, null, {
131
131
  alwaysMatch: {
132
- 'platformName': 'iOS',
132
+ platformName: 'iOS',
133
133
  'appium:deviceName': 'Delorean',
134
134
  'appium:noReset': 'true'
135
135
  }
@@ -141,7 +141,7 @@ describe('Desired Capabilities', function () {
141
141
  it('should allow a string "true" in string capabilities', async function () {
142
142
  await d.createSession(null, null, {
143
143
  alwaysMatch: {
144
- 'platformName': 'iOS',
144
+ platformName: 'iOS',
145
145
  'appium:deviceName': 'Delorean',
146
146
  'appium:language': 'true'
147
147
  }
@@ -155,7 +155,7 @@ describe('Desired Capabilities', function () {
155
155
  it('should allow a string "1"', async function () {
156
156
  await d.createSession(null, null, {
157
157
  alwaysMatch: {
158
- 'platformName': 'iOS',
158
+ platformName: 'iOS',
159
159
  'appium:deviceName': 'Delorean',
160
160
  'appium:newCommandTimeout': '1'
161
161
  }
@@ -167,7 +167,7 @@ describe('Desired Capabilities', function () {
167
167
  it('should allow a string "1.1"', async function () {
168
168
  await d.createSession(null, null, {
169
169
  alwaysMatch: {
170
- 'platformName': 'iOS',
170
+ platformName: 'iOS',
171
171
  'appium:deviceName': 'Delorean',
172
172
  'appium:newCommandTimeout': '1.1'
173
173
  }
@@ -179,7 +179,7 @@ describe('Desired Capabilities', function () {
179
179
  it('should allow a string "1" in string capabilities', async function () {
180
180
  await d.createSession(null, null, {
181
181
  alwaysMatch: {
182
- 'platformName': 'iOS',
182
+ platformName: 'iOS',
183
183
  'appium:deviceName': 'Delorean',
184
184
  'appium:language': '1'
185
185
  }
@@ -192,7 +192,7 @@ describe('Desired Capabilities', function () {
192
192
  it('should error if objects in caps', async function () {
193
193
  await d.createSession(null, null, {
194
194
  alwaysMatch: {
195
- 'platformName': {
195
+ platformName: {
196
196
  a: 'iOS'
197
197
  },
198
198
  'appium:deviceName': 'Delorean'
@@ -208,7 +208,7 @@ describe('Desired Capabilities', function () {
208
208
  };
209
209
  await d.createSession(null, null, {
210
210
  alwaysMatch: {
211
- 'platformName': 'iOS',
211
+ platformName: 'iOS',
212
212
  'appium:deviceName': 'Delorean',
213
213
  'appium:lynx-version': 5
214
214
  }
@@ -224,7 +224,7 @@ describe('Desired Capabilities', function () {
224
224
  };
225
225
  await d.createSession(null, null, {
226
226
  alwaysMatch: {
227
- 'platformName': 'iOS',
227
+ platformName: 'iOS',
228
228
  'appium:deviceName': 'Delorean',
229
229
  'appium:lynx-version': 5
230
230
  }
@@ -233,7 +233,7 @@ describe('Desired Capabilities', function () {
233
233
  });
234
234
  it('should not validate against null/undefined caps', async function () {
235
235
  d.desiredCapConstraints = {
236
- 'foo': {
236
+ foo: {
237
237
  isString: true
238
238
  }
239
239
  };
@@ -350,4 +350,4 @@ describe('Desired Capabilities', function () {
350
350
  });
351
351
  });
352
352
  });
353
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsImQiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsIkJhc2VEcml2ZXIiLCJzcHkiLCJsb2ciLCJsb2dnZXIiLCJhZnRlckVhY2giLCJyZXN0b3JlIiwiaXQiLCJjcmVhdGVTZXNzaW9uIiwiZmlyc3RNYXRjaCIsInNob3VsZCIsImV2ZW50dWFsbHkiLCJiZSIsInJlamVjdGVkV2l0aCIsImVycm9ycyIsIlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IiLCJhbHdheXNNYXRjaCIsInBsYXRmb3JtTmFtZSIsImZ1bGZpbGxlZCIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsIm5lY2Vzc2FyeSIsInByZXNlbmNlIiwicHJvcGVyIiwiaXNTdHJpbmciLCJpbmNsdXNpb24iLCJ0aW1lb3V0Iiwid2FybiIsImhhdmUiLCJiZWVuIiwiY2FsbGVkIiwic2Vzc2lvbnMiLCJnZXRTZXNzaW9ucyIsImNhcGFiaWxpdGllcyIsIm5vUmVzZXQiLCJlcWwiLCJub3QiLCJsYW5ndWFnZSIsIm5ld0NvbW1hbmRUaW1lb3V0IiwiYSIsImRlcHJlY2F0ZWQiLCJkZWxldGVTZXNzaW9uIiwidW5kZWZpbmVkIiwiZm9vIiwic2Vzc2lvbklkIiwiY2FwcyIsImV4aXN0IiwiZGV2aWNlTmFtZSIsInRlc3RWYWx1ZXMiLCJCIiwibWFwIiwidmFsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2Jhc2Vkcml2ZXIvY2FwYWJpbGl0eS5zcGVjLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIEJhc2VEcml2ZXIsIGVycm9ycyB9IGZyb20gJy4uLy4uLy4uL2xpYic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uLy4uLy4uL2xpYi9iYXNlZHJpdmVyL2xvZ2dlcic7XG5pbXBvcnQgeyBjcmVhdGVTYW5kYm94IH0gZnJvbSAnc2lub24nO1xuXG5kZXNjcmliZSgnRGVzaXJlZCBDYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBkO1xuICBsZXQgc2FuZGJveDtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgIHNhbmRib3guc3B5KGQubG9nLCAnd2FybicpO1xuICAgIHNhbmRib3guc3B5KGxvZ2dlciwgJ3dhcm4nKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXF1aXJlIHBsYXRmb3JtTmFtZSBhbmQgZGV2aWNlTmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgZmlyc3RNYXRjaDogW3t9XVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL3BsYXRmb3JtTmFtZS8pO1xuICB9KTtcblxuXG4gIGl0KCdzaG91bGQgcmVxdWlyZSBwbGF0Zm9ybU5hbWUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY2FyZSBhYm91dCBjYXAgb3JkZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUydcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5mdWxmaWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgcmVxdWlyZWQgY2FwcyB3aGljaCBhcmUgYWRkZWQgdG8gZHJpdmVyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgbmVjZXNzYXJ5OiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICB9LFxuICAgICAgcHJvcGVyOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgaW5jbHVzaW9uOiBbJ0RlbG9yZWFuJywgJ1JldmVudG9uJ11cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL25lY2Vzc2FyeS4qcHJvcGVyLyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgYWRkZWQgcmVxdWlyZWQgY2FwcyBpbiBhZGRpdGlvbiB0byBiYXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgbmVjZXNzYXJ5OiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlXG4gICAgICB9LFxuICAgICAgcHJvcGVyOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgaW5jbHVzaW9uOiBbJ0RlbG9yZWFuJywgJ1JldmVudG9uJ11cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06bmVjZXNzYXJ5JzogJ3l1cCdcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgZXh0cmEgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06ZXh0cmEnOiAnY2hlZXNlJyxcbiAgICAgICAgJ2FwcGl1bTpob2xkIHRoZSc6ICdzYXVjZSdcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5mdWxmaWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbG9nIHRoZSB1c2Ugb2YgZXh0cmEgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06ZXh0cmEnOiAnY2hlZXNlJyxcbiAgICAgICAgJ2FwcGl1bTpob2xkIHRoZSc6ICdzYXVjZSdcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIHRoZSBjYXNlIG9mIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdwbGF0Zm9ybW5hbWUnOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL3BsYXRmb3JtTmFtZS8pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYm9vbGVhbiBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcImZhbHNlXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICdmYWxzZSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubm9SZXNldC5zaG91bGQuZXFsKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCJ0cnVlXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICd0cnVlJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5ub1Jlc2V0LnNob3VsZC5lcWwodHJ1ZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwidHJ1ZVwiIGluIHN0cmluZyBjYXBhYmlsaXRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgICdwbGF0Zm9ybU5hbWUnOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bGFuZ3VhZ2UnOiAndHJ1ZSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5ub3QuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLmxhbmd1YWdlLnNob3VsZC5lcWwoJ3RydWUnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ251bWJlciBjYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjFcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCc6ICcxJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5uZXdDb21tYW5kVGltZW91dC5zaG91bGQuZXFsKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjEuMVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0JzogJzEuMSdcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubmV3Q29tbWFuZFRpbWVvdXQuc2hvdWxkLmVxbCgxLjEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcIjFcIiBpbiBzdHJpbmcgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJzEnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQubm90LmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5sYW5ndWFnZS5zaG91bGQuZXFsKCcxJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0ICgnc2hvdWxkIGVycm9yIGlmIG9iamVjdHMgaW4gY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6IHthOiAnaU9TJ30sXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvaSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgZm9yIGRlcHJlY2F0ZWQgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2x5bngtdmVyc2lvbic6IHtcbiAgICAgICAgZGVwcmVjYXRlZDogdHJ1ZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgJ3BsYXRmb3JtTmFtZSc6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmx5bngtdmVyc2lvbic6IDVcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGxvZ2dlci53YXJuLnNob3VsZC5oYXZlLmJlZW4uY2FsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB3YXJuIGlmIGRlcHJlY2F0ZWQ9ZmFsc2UnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy50aW1lb3V0KDUwMCk7XG5cbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdseW54LXZlcnNpb24nOiB7XG4gICAgICAgIGRlcHJlY2F0ZWQ6IGZhbHNlXG4gICAgICB9XG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAncGxhdGZvcm1OYW1lJzogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICdhcHBpdW06bHlueC12ZXJzaW9uJzogNVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZC5sb2cud2Fybi5zaG91bGQubm90LmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHZhbGlkYXRlIGFnYWluc3QgbnVsbC91bmRlZmluZWQgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgICdmb28nOiB7XG4gICAgICAgIGlzU3RyaW5nOiB0cnVlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogbnVsbFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgJ2FwcGl1bTpmb28nOiAxXG4gICAgICB9XG4gICAgfSkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnJ1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIHN0aWxsIHZhbGlkYXRlIG51bGwvdW5kZWZpbmVkL2VtcHR5IGNhcHMgd2hvc2UgcHJlc2VuY2UgaXMgcmVxdWlyZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBmb286IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWVcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogbnVsbFxuICAgICAgfVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogJydcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgZmlyc3RNYXRjaDogW3tcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6IHt9XG4gICAgICB9XVxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbih7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICdhcHBpdW06Zm9vJzogW11cbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24oe1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAnYXBwaXVtOmZvbyc6ICcgICdcbiAgICAgIH1cbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3M2MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdzNjIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbidcbiAgICAgICAgfSwgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH0pO1xuICAgICAgdHJ5IHtcbiAgICAgICAgc2Vzc2lvbklkLnNob3VsZC5leGlzdDtcbiAgICAgICAgY2Fwcy5zaG91bGQuZXFsKHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgIGRldmljZU5hbWU6ICdEZWxvcmVhbicsXG4gICAgICAgIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJhaXNlIGFuIGVycm9yIGlmIHczYyBjYXBhYmlsaXRpZXMgaXMgbm90IGEgcGxhaW4gSlNPTiBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0ZXN0VmFsdWVzID0gW3RydWUsICdzdHJpbmcnLCBbXSwgMTAwXTtcbiAgICAgIC8vIHRoaXMgbG9vcCBydW5zIGluIHBhcmFsbGVsLCBhbmQgZG9lcyBub3QgZ3VhcmFudGVlIGFsbCBhc3NlcnRpb25zIHdpbGwgYmUgbWFkZVxuICAgICAgYXdhaXQgQi5tYXAodGVzdFZhbHVlcywgKHZhbCkgPT4gZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHZhbCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7RUFDM0MsSUFBSUMsQ0FBSjtFQUNBLElBQUlDLE9BQUo7RUFFQUMsVUFBVSxDQUFDLFlBQVk7SUFDckJGLENBQUMsR0FBRyxJQUFJRyxZQUFKLEVBQUo7SUFDQUYsT0FBTyxHQUFHLDJCQUFWO0lBQ0FBLE9BQU8sQ0FBQ0csR0FBUixDQUFZSixDQUFDLENBQUNLLEdBQWQsRUFBbUIsTUFBbkI7SUFDQUosT0FBTyxDQUFDRyxHQUFSLENBQVlFLGVBQVosRUFBb0IsTUFBcEI7RUFDRCxDQUxTLENBQVY7RUFPQUMsU0FBUyxDQUFDLFlBQVk7SUFDcEJOLE9BQU8sQ0FBQ08sT0FBUjtFQUNELENBRlEsQ0FBVDtFQUlBQyxFQUFFLENBQUMsNENBQUQsRUFBK0Msa0JBQWtCO0lBQ2pFLE1BQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQjtNQUNwQkMsVUFBVSxFQUFFLENBQUMsRUFBRDtJQURRLENBQWhCLEVBRUhDLE1BRkcsQ0FFSUMsVUFGSixDQUVlQyxFQUZmLENBRWtCQyxZQUZsQixDQUUrQkMsWUFBT0Msc0JBRnRDLEVBRThELGNBRjlELENBQU47RUFHRCxDQUpDLENBQUY7RUFPQVIsRUFBRSxDQUFDLDZCQUFELEVBQWdDLGtCQUFrQjtJQUNsRCxNQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0I7TUFDcEJRLFdBQVcsRUFBRTtRQUNYLHFCQUFxQjtNQURWO0lBRE8sQ0FBaEIsRUFJSE4sTUFKRyxDQUlJQyxVQUpKLENBSWVDLEVBSmYsQ0FJa0JDLFlBSmxCLENBSStCQyxZQUFPQyxzQkFKdEMsRUFJOEQsY0FKOUQsQ0FBTjtFQUtELENBTkMsQ0FBRjtFQVFBUixFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0lBQ3RELE1BQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtNQUNoQ1EsV0FBVyxFQUFFO1FBQ1gscUJBQXFCLFVBRFY7UUFFWEMsWUFBWSxFQUFFO01BRkg7SUFEbUIsQ0FBNUIsRUFLSFAsTUFMRyxDQUtJQyxVQUxKLENBS2VDLEVBTGYsQ0FLa0JNLFNBTHhCO0VBTUQsQ0FQQyxDQUFGO0VBU0FYLEVBQUUsQ0FBQyxzREFBRCxFQUF5RCxrQkFBa0I7SUFDM0VULENBQUMsQ0FBQ3FCLHFCQUFGLEdBQTBCO01BQ3hCQyxTQUFTLEVBQUU7UUFDVEMsUUFBUSxFQUFFO01BREQsQ0FEYTtNQUl4QkMsTUFBTSxFQUFFO1FBQ05ELFFBQVEsRUFBRSxJQURKO1FBRU5FLFFBQVEsRUFBRSxJQUZKO1FBR05DLFNBQVMsRUFBRSxDQUFDLFVBQUQsRUFBYSxVQUFiO01BSEw7SUFKZ0IsQ0FBMUI7SUFXQSxNQUFNMUIsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO01BQ2hDUSxXQUFXLEVBQUU7UUFDWCxnQkFBZ0IsS0FETDtRQUVYLHFCQUFxQjtNQUZWO0lBRG1CLENBQTVCLEVBS0hOLE1BTEcsQ0FLSUMsVUFMSixDQUtlQyxFQUxmLENBS2tCQyxZQUxsQixDQUsrQkMsWUFBT0Msc0JBTHRDLEVBSzhELG1CQUw5RCxDQUFOO0VBTUQsQ0FsQkMsQ0FBRjtFQW9CQVIsRUFBRSxDQUFDLHNEQUFELEVBQXlELGtCQUFrQjtJQUMzRVQsQ0FBQyxDQUFDcUIscUJBQUYsR0FBMEI7TUFDeEJDLFNBQVMsRUFBRTtRQUNUQyxRQUFRLEVBQUU7TUFERCxDQURhO01BSXhCQyxNQUFNLEVBQUU7UUFDTkQsUUFBUSxFQUFFLElBREo7UUFFTkUsUUFBUSxFQUFFLElBRko7UUFHTkMsU0FBUyxFQUFFLENBQUMsVUFBRCxFQUFhLFVBQWI7TUFITDtJQUpnQixDQUExQjtJQVdBLE1BQU0xQixDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7TUFDaENRLFdBQVcsRUFBRTtRQUNYLG9CQUFvQjtNQURUO0lBRG1CLENBQTVCLEVBSUhOLE1BSkcsQ0FJSUMsVUFKSixDQUllQyxFQUpmLENBSWtCQyxZQUpsQixDQUkrQkMsWUFBT0Msc0JBSnRDLEVBSThELGNBSjlELENBQU47RUFLRCxDQWpCQyxDQUFGO0VBbUJBUixFQUFFLENBQUMsa0NBQUQsRUFBcUMsa0JBQWtCO0lBQ3ZELE1BQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtNQUNoQ1EsV0FBVyxFQUFFO1FBQ1gsZ0JBQWdCLEtBREw7UUFFWCxxQkFBcUIsVUFGVjtRQUdYLGdCQUFnQixRQUhMO1FBSVgsbUJBQW1CO01BSlI7SUFEbUIsQ0FBNUIsRUFPSE4sTUFQRyxDQU9JQyxVQVBKLENBT2VDLEVBUGYsQ0FPa0JNLFNBUHhCO0VBUUQsQ0FUQyxDQUFGO0VBV0FYLEVBQUUsQ0FBQyxrQ0FBRCxFQUFxQyxrQkFBa0I7SUFDdkQsS0FBS2tCLE9BQUwsQ0FBYSxHQUFiO0lBRUEsTUFBTTNCLENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtNQUNoQ1EsV0FBVyxFQUFFO1FBQ1gsZ0JBQWdCLEtBREw7UUFFWCxxQkFBcUIsVUFGVjtRQUdYLGdCQUFnQixRQUhMO1FBSVgsbUJBQW1CO01BSlI7SUFEbUIsQ0FBNUIsQ0FBTjtJQVNBbEIsQ0FBQyxDQUFDSyxHQUFGLENBQU11QixJQUFOLENBQVdoQixNQUFYLENBQWtCaUIsSUFBbEIsQ0FBdUJDLElBQXZCLENBQTRCQyxNQUE1QjtFQUNELENBYkMsQ0FBRjtFQWVBdEIsRUFBRSxDQUFDLHlDQUFELEVBQTRDLGtCQUFrQjtJQUM5RCxNQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7TUFDaENRLFdBQVcsRUFBRTtRQUNYLGdCQUFnQixLQURMO1FBRVgscUJBQXFCO01BRlY7SUFEbUIsQ0FBNUIsRUFLSE4sTUFMRyxDQUtJQyxVQUxKLENBS2VDLEVBTGYsQ0FLa0JDLFlBTGxCLENBSytCQyxZQUFPQyxzQkFMdEMsRUFLOEQsY0FMOUQsQ0FBTjtFQU1ELENBUEMsQ0FBRjtFQVNBbEIsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7SUFDM0NVLEVBQUUsQ0FBQywrQkFBRCxFQUFrQyxrQkFBa0I7TUFDcEQsTUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO1FBQ2hDUSxXQUFXLEVBQUU7VUFDWCxnQkFBZ0IsS0FETDtVQUVYLHFCQUFxQixVQUZWO1VBR1gsa0JBQWtCO1FBSFA7TUFEbUIsQ0FBNUIsQ0FBTjtNQU9BbEIsQ0FBQyxDQUFDSyxHQUFGLENBQU11QixJQUFOLENBQVdoQixNQUFYLENBQWtCaUIsSUFBbEIsQ0FBdUJDLElBQXZCLENBQTRCQyxNQUE1QjtNQUVBLElBQUlDLFFBQVEsR0FBRyxNQUFNaEMsQ0FBQyxDQUFDaUMsV0FBRixFQUFyQjtNQUNBRCxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVlFLFlBQVosQ0FBeUJDLE9BQXpCLENBQWlDdkIsTUFBakMsQ0FBd0N3QixHQUF4QyxDQUE0QyxLQUE1QztJQUNELENBWkMsQ0FBRjtJQWNBM0IsRUFBRSxDQUFDLDhCQUFELEVBQWlDLGtCQUFrQjtNQUNuRCxNQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7UUFDaENRLFdBQVcsRUFBRTtVQUNYLGdCQUFnQixLQURMO1VBRVgscUJBQXFCLFVBRlY7VUFHWCxrQkFBa0I7UUFIUDtNQURtQixDQUE1QixDQUFOO01BT0FsQixDQUFDLENBQUNLLEdBQUYsQ0FBTXVCLElBQU4sQ0FBV2hCLE1BQVgsQ0FBa0JpQixJQUFsQixDQUF1QkMsSUFBdkIsQ0FBNEJDLE1BQTVCO01BRUEsSUFBSUMsUUFBUSxHQUFHLE1BQU1oQyxDQUFDLENBQUNpQyxXQUFGLEVBQXJCO01BQ0FELFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUUsWUFBWixDQUF5QkMsT0FBekIsQ0FBaUN2QixNQUFqQyxDQUF3Q3dCLEdBQXhDLENBQTRDLElBQTVDO0lBQ0QsQ0FaQyxDQUFGO0lBY0EzQixFQUFFLENBQUMscURBQUQsRUFBd0Qsa0JBQWtCO01BQzFFLE1BQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtRQUNoQ1EsV0FBVyxFQUFFO1VBQ1gsZ0JBQWdCLEtBREw7VUFFWCxxQkFBcUIsVUFGVjtVQUdYLG1CQUFtQjtRQUhSO01BRG1CLENBQTVCLENBQU47TUFPQWxCLENBQUMsQ0FBQ0ssR0FBRixDQUFNdUIsSUFBTixDQUFXaEIsTUFBWCxDQUFrQnlCLEdBQWxCLENBQXNCUixJQUF0QixDQUEyQkMsSUFBM0IsQ0FBZ0NDLE1BQWhDO01BRUEsSUFBSUMsUUFBUSxHQUFHLE1BQU1oQyxDQUFDLENBQUNpQyxXQUFGLEVBQXJCO01BQ0FELFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUUsWUFBWixDQUF5QkksUUFBekIsQ0FBa0MxQixNQUFsQyxDQUF5Q3dCLEdBQXpDLENBQTZDLE1BQTdDO0lBQ0QsQ0FaQyxDQUFGO0VBYUQsQ0ExQ08sQ0FBUjtFQTRDQXJDLFFBQVEsQ0FBQyxxQkFBRCxFQUF3QixZQUFZO0lBQzFDVSxFQUFFLENBQUMsMkJBQUQsRUFBOEIsa0JBQWtCO01BQ2hELE1BQU1ULENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtRQUNoQ1EsV0FBVyxFQUFFO1VBQ1gsZ0JBQWdCLEtBREw7VUFFWCxxQkFBcUIsVUFGVjtVQUdYLDRCQUE0QjtRQUhqQjtNQURtQixDQUE1QixDQUFOO01BT0FsQixDQUFDLENBQUNLLEdBQUYsQ0FBTXVCLElBQU4sQ0FBV2hCLE1BQVgsQ0FBa0JpQixJQUFsQixDQUF1QkMsSUFBdkIsQ0FBNEJDLE1BQTVCO01BRUEsSUFBSUMsUUFBUSxHQUFHLE1BQU1oQyxDQUFDLENBQUNpQyxXQUFGLEVBQXJCO01BQ0FELFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUUsWUFBWixDQUF5QkssaUJBQXpCLENBQTJDM0IsTUFBM0MsQ0FBa0R3QixHQUFsRCxDQUFzRCxDQUF0RDtJQUNELENBWkMsQ0FBRjtJQWNBM0IsRUFBRSxDQUFDLDZCQUFELEVBQWdDLGtCQUFrQjtNQUNsRCxNQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7UUFDaENRLFdBQVcsRUFBRTtVQUNYLGdCQUFnQixLQURMO1VBRVgscUJBQXFCLFVBRlY7VUFHWCw0QkFBNEI7UUFIakI7TUFEbUIsQ0FBNUIsQ0FBTjtNQU9BbEIsQ0FBQyxDQUFDSyxHQUFGLENBQU11QixJQUFOLENBQVdoQixNQUFYLENBQWtCaUIsSUFBbEIsQ0FBdUJDLElBQXZCLENBQTRCQyxNQUE1QjtNQUVBLElBQUlDLFFBQVEsR0FBRyxNQUFNaEMsQ0FBQyxDQUFDaUMsV0FBRixFQUFyQjtNQUNBRCxRQUFRLENBQUMsQ0FBRCxDQUFSLENBQVlFLFlBQVosQ0FBeUJLLGlCQUF6QixDQUEyQzNCLE1BQTNDLENBQWtEd0IsR0FBbEQsQ0FBc0QsR0FBdEQ7SUFDRCxDQVpDLENBQUY7SUFjQTNCLEVBQUUsQ0FBQyxrREFBRCxFQUFxRCxrQkFBa0I7TUFDdkUsTUFBTVQsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO1FBQ2hDUSxXQUFXLEVBQUU7VUFDWCxnQkFBZ0IsS0FETDtVQUVYLHFCQUFxQixVQUZWO1VBR1gsbUJBQW1CO1FBSFI7TUFEbUIsQ0FBNUIsQ0FBTjtNQU9BbEIsQ0FBQyxDQUFDSyxHQUFGLENBQU11QixJQUFOLENBQVdoQixNQUFYLENBQWtCeUIsR0FBbEIsQ0FBc0JSLElBQXRCLENBQTJCQyxJQUEzQixDQUFnQ0MsTUFBaEM7TUFFQSxJQUFJQyxRQUFRLEdBQUcsTUFBTWhDLENBQUMsQ0FBQ2lDLFdBQUYsRUFBckI7TUFDQUQsUUFBUSxDQUFDLENBQUQsQ0FBUixDQUFZRSxZQUFaLENBQXlCSSxRQUF6QixDQUFrQzFCLE1BQWxDLENBQXlDd0IsR0FBekMsQ0FBNkMsR0FBN0M7SUFDRCxDQVpDLENBQUY7RUFhRCxDQTFDTyxDQUFSO0VBNENBM0IsRUFBRSxDQUFFLGlDQUFGLEVBQXFDLGtCQUFrQjtJQUN2RCxNQUFNVCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7TUFDaENRLFdBQVcsRUFBRTtRQUNYLGdCQUFnQjtVQUFDc0IsQ0FBQyxFQUFFO1FBQUosQ0FETDtRQUVYLHFCQUFxQjtNQUZWO0lBRG1CLENBQTVCLEVBS0g1QixNQUxHLENBS0lDLFVBTEosQ0FLZUMsRUFMZixDQUtrQkMsWUFMbEIsQ0FLK0JDLFlBQU9DLHNCQUx0QyxFQUs4RCxlQUw5RCxDQUFOO0VBTUQsQ0FQQyxDQUFGO0VBU0FSLEVBQUUsQ0FBQyxrQ0FBRCxFQUFxQyxrQkFBa0I7SUFDdkQsS0FBS2tCLE9BQUwsQ0FBYSxHQUFiO0lBRUEzQixDQUFDLENBQUNxQixxQkFBRixHQUEwQjtNQUN4QixnQkFBZ0I7UUFDZG9CLFVBQVUsRUFBRTtNQURFO0lBRFEsQ0FBMUI7SUFNQSxNQUFNekMsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO01BQ2hDUSxXQUFXLEVBQUU7UUFDWCxnQkFBZ0IsS0FETDtRQUVYLHFCQUFxQixVQUZWO1FBR1gsdUJBQXVCO01BSFo7SUFEbUIsQ0FBNUIsQ0FBTjtJQVFBWixnQkFBT3NCLElBQVAsQ0FBWWhCLE1BQVosQ0FBbUJpQixJQUFuQixDQUF3QkMsSUFBeEIsQ0FBNkJDLE1BQTdCO0VBQ0QsQ0FsQkMsQ0FBRjtFQW9CQXRCLEVBQUUsQ0FBQyxxQ0FBRCxFQUF3QyxrQkFBa0I7SUFDMUQsS0FBS2tCLE9BQUwsQ0FBYSxHQUFiO0lBRUEzQixDQUFDLENBQUNxQixxQkFBRixHQUEwQjtNQUN4QixnQkFBZ0I7UUFDZG9CLFVBQVUsRUFBRTtNQURFO0lBRFEsQ0FBMUI7SUFNQSxNQUFNekMsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO01BQ2hDUSxXQUFXLEVBQUU7UUFDWCxnQkFBZ0IsS0FETDtRQUVYLHFCQUFxQixVQUZWO1FBR1gsdUJBQXVCO01BSFo7SUFEbUIsQ0FBNUIsQ0FBTjtJQVFBbEIsQ0FBQyxDQUFDSyxHQUFGLENBQU11QixJQUFOLENBQVdoQixNQUFYLENBQWtCeUIsR0FBbEIsQ0FBc0JSLElBQXRCLENBQTJCQyxJQUEzQixDQUFnQ0MsTUFBaEM7RUFDRCxDQWxCQyxDQUFGO0VBb0JBdEIsRUFBRSxDQUFDLGlEQUFELEVBQW9ELGtCQUFrQjtJQUN0RVQsQ0FBQyxDQUFDcUIscUJBQUYsR0FBMEI7TUFDeEIsT0FBTztRQUNMSSxRQUFRLEVBQUU7TUFETDtJQURpQixDQUExQjs7SUFNQSxJQUFJO01BQ0YsTUFBTXpCLENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtRQUNoQ1EsV0FBVyxFQUFFO1VBQ1hDLFlBQVksRUFBRSxLQURIO1VBRVgscUJBQXFCLE1BRlY7VUFHWCxjQUFjO1FBSEg7TUFEbUIsQ0FBNUIsQ0FBTjtJQU9ELENBUkQsU0FRVTtNQUNSLE1BQU1uQixDQUFDLENBQUMwQyxhQUFGLEVBQU47SUFDRDs7SUFFRCxNQUFNMUMsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO01BQ2hDUSxXQUFXLEVBQUU7UUFDWEMsWUFBWSxFQUFFLEtBREg7UUFFWCxxQkFBcUIsTUFGVjtRQUdYLGNBQWM7TUFISDtJQURtQixDQUE1QixFQU1IUCxNQU5HLENBTUlDLFVBTkosQ0FNZUMsRUFOZixDQU1rQkMsWUFObEIsQ0FNK0IsOEJBTi9CLENBQU47O0lBUUEsSUFBSTtNQUNGLE1BQU1mLENBQUMsQ0FBQ1UsYUFBRixDQUFnQixJQUFoQixFQUFzQixJQUF0QixFQUE0QjtRQUNoQ1EsV0FBVyxFQUFFO1VBQ1hDLFlBQVksRUFBRSxLQURIO1VBRVgscUJBQXFCLE1BRlY7VUFHWCxjQUFjd0I7UUFISDtNQURtQixDQUE1QixDQUFOO0lBT0QsQ0FSRCxTQVFVO01BQ1IsTUFBTTNDLENBQUMsQ0FBQzBDLGFBQUYsRUFBTjtJQUNEOztJQUVELElBQUk7TUFDRixNQUFNMUMsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCLElBQXRCLEVBQTRCO1FBQ2hDUSxXQUFXLEVBQUU7VUFDWEMsWUFBWSxFQUFFLEtBREg7VUFFWCxxQkFBcUIsTUFGVjtVQUdYLGNBQWM7UUFISDtNQURtQixDQUE1QixDQUFOO0lBT0QsQ0FSRCxTQVFVO01BQ1IsTUFBTW5CLENBQUMsQ0FBQzBDLGFBQUYsRUFBTjtJQUNEO0VBQ0YsQ0FsREMsQ0FBRjtFQW9EQWpDLEVBQUUsQ0FBQyw0RUFBRCxFQUErRSxrQkFBa0I7SUFDakdULENBQUMsQ0FBQ3FCLHFCQUFGLEdBQTBCO01BQ3hCdUIsR0FBRyxFQUFFO1FBQ0hyQixRQUFRLEVBQUU7TUFEUDtJQURtQixDQUExQjtJQU1BLE1BQU12QixDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7TUFDaENRLFdBQVcsRUFBRTtRQUNYQyxZQUFZLEVBQUUsS0FESDtRQUVYLHFCQUFxQixNQUZWO1FBR1gsY0FBYztNQUhIO0lBRG1CLENBQTVCLEVBTUhQLE1BTkcsQ0FNSUMsVUFOSixDQU1lQyxFQU5mLENBTWtCQyxZQU5sQixDQU0rQixPQU4vQixDQUFOO0lBUUEsTUFBTWYsQ0FBQyxDQUFDVSxhQUFGLENBQWdCLElBQWhCLEVBQXNCO01BQzFCUSxXQUFXLEVBQUU7UUFDWEMsWUFBWSxFQUFFLEtBREg7UUFFWCxxQkFBcUIsTUFGVjtRQUdYLGNBQWM7TUFISDtJQURhLENBQXRCLEVBTUhQLE1BTkcsQ0FNSUMsVUFOSixDQU1lQyxFQU5mLENBTWtCQyxZQU5sQixDQU0rQixPQU4vQixDQUFOO0lBUUEsTUFBTWYsQ0FBQyxDQUFDVSxhQUFGLENBQWdCO01BQ3BCQyxVQUFVLEVBQUUsQ0FBQztRQUNYUSxZQUFZLEVBQUUsS0FESDtRQUVYLHFCQUFxQixNQUZWO1FBR1gsY0FBYztNQUhILENBQUQ7SUFEUSxDQUFoQixFQU1IUCxNQU5HLENBTUlDLFVBTkosQ0FNZUMsRUFOZixDQU1rQkMsWUFObEIsQ0FNK0IsT0FOL0IsQ0FBTjtJQVFBLE1BQU1mLENBQUMsQ0FBQ1UsYUFBRixDQUFnQjtNQUNwQlEsV0FBVyxFQUFFO1FBQ1hDLFlBQVksRUFBRSxLQURIO1FBRVgscUJBQXFCLE1BRlY7UUFHWCxjQUFjO01BSEg7SUFETyxDQUFoQixFQU1IUCxNQU5HLENBTUlDLFVBTkosQ0FNZUMsRUFOZixDQU1rQkMsWUFObEIsQ0FNK0IsT0FOL0IsQ0FBTjtJQVFBLE1BQU1mLENBQUMsQ0FBQ1UsYUFBRixDQUFnQjtNQUNwQlEsV0FBVyxFQUFFO1FBQ1hDLFlBQVksRUFBRSxLQURIO1FBRVgscUJBQXFCLE1BRlY7UUFHWCxjQUFjO01BSEg7SUFETyxDQUFoQixFQU1IUCxNQU5HLENBTUlDLFVBTkosQ0FNZUMsRUFOZixDQU1rQkMsWUFObEIsQ0FNK0IsT0FOL0IsQ0FBTjtFQU9ELENBOUNDLENBQUY7RUFnREFoQixRQUFRLENBQUMsS0FBRCxFQUFRLFlBQVk7SUFDMUJVLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxrQkFBa0I7TUFDckQsTUFBTSxDQUFDb0MsU0FBRCxFQUFZQyxJQUFaLElBQW9CLE1BQU05QyxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEI7UUFDMURRLFdBQVcsRUFBRTtVQUNYQyxZQUFZLEVBQUUsS0FESDtVQUVYLHFCQUFxQjtRQUZWLENBRDZDO1FBSXZEUixVQUFVLEVBQUUsQ0FBQyxFQUFEO01BSjJDLENBQTVCLENBQWhDOztNQU1BLElBQUk7UUFDRmtDLFNBQVMsQ0FBQ2pDLE1BQVYsQ0FBaUJtQyxLQUFqQjtRQUNBRCxJQUFJLENBQUNsQyxNQUFMLENBQVl3QixHQUFaLENBQWdCO1VBQ2RqQixZQUFZLEVBQUUsS0FEQTtVQUVkNkIsVUFBVSxFQUFFO1FBRkUsQ0FBaEI7TUFJRCxDQU5ELFNBTVU7UUFDUixNQUFNaEQsQ0FBQyxDQUFDMEMsYUFBRixFQUFOO01BQ0Q7SUFDRixDQWhCQyxDQUFGO0lBa0JBakMsRUFBRSxDQUFDLHNFQUFELEVBQXlFLGtCQUFrQjtNQUMzRixNQUFNd0MsVUFBVSxHQUFHLENBQUMsSUFBRCxFQUFPLFFBQVAsRUFBaUIsRUFBakIsRUFBcUIsR0FBckIsQ0FBbkI7TUFFQSxNQUFNQyxrQkFBRUMsR0FBRixDQUFNRixVQUFOLEVBQW1CRyxHQUFELElBQVNwRCxDQUFDLENBQUNVLGFBQUYsQ0FBZ0IsSUFBaEIsRUFBc0IsSUFBdEIsRUFBNEIwQyxHQUE1QixFQUFpQ3hDLE1BQWpDLENBQXdDQyxVQUF4QyxDQUFtREMsRUFBbkQsQ0FBc0RDLFlBQXRELENBQW1FQyxZQUFPQyxzQkFBMUUsQ0FBM0IsQ0FBTjtJQUNELENBSkMsQ0FBRjtFQUtELENBeEJPLENBQVI7QUF5QkQsQ0F2WE8sQ0FBUiJ9
353
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsImQiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsIkJhc2VEcml2ZXIiLCJjcmVhdGVTYW5kYm94Iiwic3B5IiwibG9nIiwibG9nZ2VyIiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsIml0IiwiY3JlYXRlU2Vzc2lvbiIsImZpcnN0TWF0Y2giLCJzaG91bGQiLCJldmVudHVhbGx5IiwiYmUiLCJyZWplY3RlZFdpdGgiLCJlcnJvcnMiLCJTZXNzaW9uTm90Q3JlYXRlZEVycm9yIiwiYWx3YXlzTWF0Y2giLCJwbGF0Zm9ybU5hbWUiLCJmdWxmaWxsZWQiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJuZWNlc3NhcnkiLCJwcmVzZW5jZSIsInByb3BlciIsImlzU3RyaW5nIiwiaW5jbHVzaW9uIiwidGltZW91dCIsIndhcm4iLCJoYXZlIiwiYmVlbiIsImNhbGxlZCIsInBsYXRmb3JtbmFtZSIsInNlc3Npb25zIiwiZ2V0U2Vzc2lvbnMiLCJjYXBhYmlsaXRpZXMiLCJub1Jlc2V0IiwiZXFsIiwibm90IiwibGFuZ3VhZ2UiLCJuZXdDb21tYW5kVGltZW91dCIsImEiLCJkZXByZWNhdGVkIiwiZm9vIiwiZGVsZXRlU2Vzc2lvbiIsInVuZGVmaW5lZCIsInNlc3Npb25JZCIsImNhcHMiLCJleGlzdCIsImRldmljZU5hbWUiLCJ0ZXN0VmFsdWVzIiwiQiIsIm1hcCIsInZhbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NhcGFiaWxpdHkuc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtkZWZhdWx0IGFzIEJhc2VEcml2ZXIsIGVycm9yc30gZnJvbSAnLi4vLi4vLi4vbGliJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vLi4vLi4vbGliL2Jhc2Vkcml2ZXIvbG9nZ2VyJztcbmltcG9ydCB7Y3JlYXRlU2FuZGJveH0gZnJvbSAnc2lub24nO1xuXG5kZXNjcmliZSgnRGVzaXJlZCBDYXBhYmlsaXRpZXMnLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBkO1xuICBsZXQgc2FuZGJveDtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBzYW5kYm94ID0gY3JlYXRlU2FuZGJveCgpO1xuICAgIHNhbmRib3guc3B5KGQubG9nLCAnd2FybicpO1xuICAgIHNhbmRib3guc3B5KGxvZ2dlciwgJ3dhcm4nKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBzYW5kYm94LnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZXF1aXJlIHBsYXRmb3JtTmFtZSBhbmQgZGV2aWNlTmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBkXG4gICAgICAuY3JlYXRlU2Vzc2lvbih7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvciwgL3BsYXRmb3JtTmFtZS8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlcXVpcmUgcGxhdGZvcm1OYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgY2FyZSBhYm91dCBjYXAgb3JkZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICB9LFxuICAgIH0pLnNob3VsZC5ldmVudHVhbGx5LmJlLmZ1bGZpbGxlZDtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjaGVjayByZXF1aXJlZCBjYXBzIHdoaWNoIGFyZSBhZGRlZCB0byBkcml2ZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBuZWNlc3Nhcnk6IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICB9LFxuICAgICAgcHJvcGVyOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICAgICAgaW5jbHVzaW9uOiBbJ0RlbG9yZWFuJywgJ1JldmVudG9uJ10sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBkXG4gICAgICAuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9uZWNlc3NhcnkuKnByb3Blci8pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNoZWNrIGFkZGVkIHJlcXVpcmVkIGNhcHMgaW4gYWRkaXRpb24gdG8gYmFzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBkLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHtcbiAgICAgIG5lY2Vzc2FyeToge1xuICAgICAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBwcm9wZXI6IHtcbiAgICAgICAgcHJlc2VuY2U6IHRydWUsXG4gICAgICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgICAgICBpbmNsdXNpb246IFsnRGVsb3JlYW4nLCAnUmV2ZW50b24nXSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICAnYXBwaXVtOm5lY2Vzc2FyeSc6ICd5dXAnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBhY2NlcHQgZXh0cmEgY2FwYWJpbGl0aWVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnLFxuICAgICAgfSxcbiAgICB9KS5zaG91bGQuZXZlbnR1YWxseS5iZS5mdWxmaWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbG9nIHRoZSB1c2Ugb2YgZXh0cmEgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmV4dHJhJzogJ2NoZWVzZScsXG4gICAgICAgICdhcHBpdW06aG9sZCB0aGUnOiAnc2F1Y2UnLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgc2Vuc2l0aXZlIHRvIHRoZSBjYXNlIG9mIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtbmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKGVycm9ycy5TZXNzaW9uTm90Q3JlYXRlZEVycm9yLCAvcGxhdGZvcm1OYW1lLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdib29sZWFuIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiZmFsc2VcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICdmYWxzZScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5ub1Jlc2V0LnNob3VsZC5lcWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBhIHN0cmluZyBcInRydWVcIicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6ICd0cnVlJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5vUmVzZXQuc2hvdWxkLmVxbCh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgYSBzdHJpbmcgXCJ0cnVlXCIgaW4gc3RyaW5nIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAgICdhcHBpdW06bGFuZ3VhZ2UnOiAndHJ1ZScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLm5vdC5oYXZlLmJlZW4uY2FsbGVkO1xuXG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMubGFuZ3VhZ2Uuc2hvdWxkLmVxbCgndHJ1ZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbnVtYmVyIGNhcGFiaWxpdGllcycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiMVwiJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgICAgJ2FwcGl1bTpuZXdDb21tYW5kVGltZW91dCc6ICcxJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgZC5sb2cud2Fybi5zaG91bGQuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLm5ld0NvbW1hbmRUaW1lb3V0LnNob3VsZC5lcWwoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiMS4xXCInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOm5ld0NvbW1hbmRUaW1lb3V0JzogJzEuMScsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGQubG9nLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG5cbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5uZXdDb21tYW5kVGltZW91dC5zaG91bGQuZXFsKDEuMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGEgc3RyaW5nIFwiMVwiIGluIHN0cmluZyBjYXBhYmlsaXRpZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgICAnYXBwaXVtOmxhbmd1YWdlJzogJzEnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBkLmxvZy53YXJuLnNob3VsZC5ub3QuaGF2ZS5iZWVuLmNhbGxlZDtcblxuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnNbMF0uY2FwYWJpbGl0aWVzLmxhbmd1YWdlLnNob3VsZC5lcWwoJzEnKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBlcnJvciBpZiBvYmplY3RzIGluIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZToge2E6ICdpT1MnfSxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoZXJyb3JzLlNlc3Npb25Ob3RDcmVhdGVkRXJyb3IsIC9wbGF0Zm9ybU5hbWUvaSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2hlY2sgZm9yIGRlcHJlY2F0ZWQgY2FwcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2x5bngtdmVyc2lvbic6IHtcbiAgICAgICAgZGVwcmVjYXRlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7XG4gICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRGVsb3JlYW4nLFxuICAgICAgICAnYXBwaXVtOmx5bngtdmVyc2lvbic6IDUsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbG9nZ2VyLndhcm4uc2hvdWxkLmhhdmUuYmVlbi5jYWxsZWQ7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IHdhcm4gaWYgZGVwcmVjYXRlZD1mYWxzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRpbWVvdXQoNTAwKTtcblxuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgJ2x5bngtdmVyc2lvbic6IHtcbiAgICAgICAgZGVwcmVjYXRlZDogZmFsc2UsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJyxcbiAgICAgICAgJ2FwcGl1bTpseW54LXZlcnNpb24nOiA1LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGQubG9nLndhcm4uc2hvdWxkLm5vdC5oYXZlLmJlZW4uY2FsbGVkO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCB2YWxpZGF0ZSBhZ2FpbnN0IG51bGwvdW5kZWZpbmVkIGNhcHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZC5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7XG4gICAgICBmb286IHtcbiAgICAgICAgaXNTdHJpbmc6IHRydWUsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogMSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC8nZm9vJyBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLyk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IHVuZGVmaW5lZCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6ICcnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzdGlsbCB2YWxpZGF0ZSBudWxsL3VuZGVmaW5lZC9lbXB0eSBjYXBzIHdob3NlIHByZXNlbmNlIGlzIHJlcXVpcmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGQuZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge1xuICAgICAgZm9vOiB7XG4gICAgICAgIHByZXNlbmNlOiB0cnVlLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9ibGFuay8pO1xuXG4gICAgYXdhaXQgZFxuICAgICAgLmNyZWF0ZVNlc3Npb24obnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDoge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0R1bWInLFxuICAgICAgICAgICdhcHBpdW06Zm9vJzogJycsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgZmlyc3RNYXRjaDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ2lPUycsXG4gICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgICAnYXBwaXVtOmZvbyc6IHt9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvYmxhbmsvKTtcblxuICAgIGF3YWl0IGRcbiAgICAgIC5jcmVhdGVTZXNzaW9uKHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEdW1iJyxcbiAgICAgICAgICAnYXBwaXVtOmZvbyc6IFtdLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG5cbiAgICBhd2FpdCBkXG4gICAgICAuY3JlYXRlU2Vzc2lvbih7XG4gICAgICAgIGFsd2F5c01hdGNoOiB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRHVtYicsXG4gICAgICAgICAgJ2FwcGl1bTpmb28nOiAnICAnLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2JsYW5rLyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3M2MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgdzNjIGNhcGFiaWxpdGllcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdpT1MnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdEZWxvcmVhbicsXG4gICAgICAgIH0sXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNlc3Npb25JZC5zaG91bGQuZXhpc3Q7XG4gICAgICAgIGNhcHMuc2hvdWxkLmVxbCh7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgICAgICAgICBkZXZpY2VOYW1lOiAnRGVsb3JlYW4nLFxuICAgICAgICB9KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByYWlzZSBhbiBlcnJvciBpZiB3M2MgY2FwYWJpbGl0aWVzIGlzIG5vdCBhIHBsYWluIEpTT04gb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdGVzdFZhbHVlcyA9IFt0cnVlLCAnc3RyaW5nJywgW10sIDEwMF07XG4gICAgICAvLyB0aGlzIGxvb3AgcnVucyBpbiBwYXJhbGxlbCwgYW5kIGRvZXMgbm90IGd1YXJhbnRlZSBhbGwgYXNzZXJ0aW9ucyB3aWxsIGJlIG1hZGVcbiAgICAgIGF3YWl0IEIubWFwKHRlc3RWYWx1ZXMsICh2YWwpID0+XG4gICAgICAgIGRcbiAgICAgICAgICAuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB2YWwpXG4gICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChlcnJvcnMuU2Vzc2lvbk5vdENyZWF0ZWRFcnJvcilcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQUEsUUFBUSxDQUFDLHNCQUFELEVBQXlCLFlBQVk7RUFDM0MsSUFBSUMsQ0FBSjtFQUNBLElBQUlDLE9BQUo7RUFFQUMsVUFBVSxDQUFDLFlBQVk7SUFDckJGLENBQUMsR0FBRyxJQUFJRyxZQUFKLEVBQUo7SUFDQUYsT0FBTyxHQUFHLElBQUFHLG9CQUFBLEdBQVY7SUFDQUgsT0FBTyxDQUFDSSxHQUFSLENBQVlMLENBQUMsQ0FBQ00sR0FBZCxFQUFtQixNQUFuQjtJQUNBTCxPQUFPLENBQUNJLEdBQVIsQ0FBWUUsZUFBWixFQUFvQixNQUFwQjtFQUNELENBTFMsQ0FBVjtFQU9BQyxTQUFTLENBQUMsWUFBWTtJQUNwQlAsT0FBTyxDQUFDUSxPQUFSO0VBQ0QsQ0FGUSxDQUFUO0VBSUFDLEVBQUUsQ0FBQyw0Q0FBRCxFQUErQyxrQkFBa0I7SUFDakUsTUFBTVYsQ0FBQyxDQUNKVyxhQURHLENBQ1c7TUFDYkMsVUFBVSxFQUFFLENBQUMsRUFBRDtJQURDLENBRFgsRUFJSEMsTUFKRyxDQUlJQyxVQUpKLENBSWVDLEVBSmYsQ0FJa0JDLFlBSmxCLENBSStCQyxXQUFBLENBQU9DLHNCQUp0QyxFQUk4RCxjQUo5RCxDQUFOO0VBS0QsQ0FOQyxDQUFGO0VBUUFSLEVBQUUsQ0FBQyw2QkFBRCxFQUFnQyxrQkFBa0I7SUFDbEQsTUFBTVYsQ0FBQyxDQUNKVyxhQURHLENBQ1c7TUFDYlEsV0FBVyxFQUFFO1FBQ1gscUJBQXFCO01BRFY7SUFEQSxDQURYLEVBTUhOLE1BTkcsQ0FNSUMsVUFOSixDQU1lQyxFQU5mLENBTWtCQyxZQU5sQixDQU0rQkMsV0FBQSxDQUFPQyxzQkFOdEMsRUFNOEQsY0FOOUQsQ0FBTjtFQU9ELENBUkMsQ0FBRjtFQVVBUixFQUFFLENBQUMsaUNBQUQsRUFBb0Msa0JBQWtCO0lB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
@@ -107,4 +107,4 @@ describe('#getLogEvents', function () {
107
107
  (await d.getLogEvents(['noEventName'])).should.eql({});
108
108
  });
109
109
  });
110
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZCIsIkJhc2VEcml2ZXIiLCJfZXZlbnRIaXN0b3J5Iiwic2hvdWxkIiwiZXFsIiwiY29tbWFuZHMiLCJsb2dDdXN0b21FdmVudCIsIl8iLCJrZXlzIiwibG9nRXZlbnQiLCJldmVudHMiLCJnZXRMb2dFdmVudHMiLCJ0ZXN0Q29tbWFuZCIsInRlc3RDb21tYW5kMiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NvbW1hbmRzL2V2ZW50LnNwZWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9saWInO1xuXG5cblxuZGVzY3JpYmUoJ2xvZ2dpbmcgY3VzdG9tIGV2ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBsb2dnaW5nIG9mIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgYXdhaXQgZC5sb2dDdXN0b21FdmVudCgnbXlvcmcnLCAnbXlldmVudCcpO1xuICAgIF8ua2V5cyhkLl9ldmVudEhpc3RvcnkpLnNob3VsZC5lcWwoWydjb21tYW5kcycsICdteW9yZzpteWV2ZW50J10pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBnZXQgYWxsIGV2ZW50cyBpbmNsdWRpbmcgY3VzdG9tIG9uZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQubG9nRXZlbnQoJ2FwcGl1bUV2ZW50Jyk7XG4gICAgYXdhaXQgZC5sb2dDdXN0b21FdmVudCgnbXlvcmcnLCAnbXlldmVudCcpO1xuICAgIGNvbnN0IGV2ZW50cyA9IGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCk7XG4gICAgXy5rZXlzKGV2ZW50cykuc2hvdWxkLmVxbChbJ2NvbW1hbmRzJywgJ2FwcGl1bUV2ZW50JywgJ215b3JnOm15ZXZlbnQnXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCcjZ2V0TG9nRXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGFsbG93IHRvIGdldCBhbGwgZXZlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCkpLnNob3VsZC5lcWwoe1xuICAgICAgY29tbWFuZHM6IFtdLCB0ZXN0Q29tbWFuZDogWycxJywgJzInLCAnMyddXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmlsdGVyIHdpdGggdGVzdENvbW1hbmQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeS50ZXN0Q29tbWFuZCA9IFsnMScsICcyJywgJzMnXTtcbiAgICAoYXdhaXQgZC5nZXRMb2dFdmVudHMoJ3Rlc3RDb21tYW5kJykpLnNob3VsZC5lcWwoe1xuICAgICAgdGVzdENvbW1hbmQ6IFsnMScsICcyJywgJzMnXVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBmaWx0ZXIgd2l0aCB3cm9uZyBidXQgY2FuIGJlIGEgcGFydCBvZiB0aGUgZXZlbnQgbmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIChhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmREdW1teScpKS5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWx0ZXIgd2l0aCBtdWx0aXBsZSBldmVudCBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kMiA9IFsnNCcsICc1J107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsndGVzdENvbW1hbmQnLCAndGVzdENvbW1hbmQyJ10pKS5zaG91bGQuZXFsKHtcbiAgICAgIHRlc3RDb21tYW5kOiBbJzEnLCAnMicsICczJ10sIHRlc3RDb21tYW5kMjogWyc0JywgJzUnXVxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZpbHRlciB3aXRoIGN1c3RvbSBldmVudHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQuX2V2ZW50SGlzdG9yeVsnY3VzdG9tOmFwcGl1bUV2ZW50J10gPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsnY3VzdG9tOmFwcGl1bUV2ZW50J10pKS5zaG91bGQuZXFsKHtcbiAgICAgICdjdXN0b206YXBwaXVtRXZlbnQnOiBbJzEnLCAnMicsICczJ11cbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZmlsdGVyIHdpdGggbm8gZXhpc3RlZCBldmVudCBuYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsnbm9FdmVudE5hbWUnXSkpLnNob3VsZC5lcWwoe30pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFJQUEsUUFBUSxDQUFDLHVCQUFELEVBQTBCLFlBQVk7RUFDNUNDLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxrQkFBa0I7SUFDckQsTUFBTUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosRUFBVjs7SUFDQUQsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7TUFBQ0MsUUFBUSxFQUFFO0lBQVgsQ0FBM0I7O0lBQ0EsTUFBTUwsQ0FBQyxDQUFDTSxjQUFGLENBQWlCLE9BQWpCLEVBQTBCLFNBQTFCLENBQU47O0lBQ0FDLGdCQUFFQyxJQUFGLENBQU9SLENBQUMsQ0FBQ0UsYUFBVCxFQUF3QkMsTUFBeEIsQ0FBK0JDLEdBQS9CLENBQW1DLENBQUMsVUFBRCxFQUFhLGVBQWIsQ0FBbkM7RUFDRCxDQUxDLENBQUY7RUFNQUwsRUFBRSxDQUFDLDZDQUFELEVBQWdELGtCQUFrQjtJQUNsRSxNQUFNQyxDQUFDLEdBQUcsSUFBSUMsZUFBSixFQUFWOztJQUNBRCxDQUFDLENBQUNFLGFBQUYsQ0FBZ0JDLE1BQWhCLENBQXVCQyxHQUF2QixDQUEyQjtNQUFDQyxRQUFRLEVBQUU7SUFBWCxDQUEzQjs7SUFDQUwsQ0FBQyxDQUFDUyxRQUFGLENBQVcsYUFB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
110
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZCIsIkJhc2VEcml2ZXIiLCJfZXZlbnRIaXN0b3J5Iiwic2hvdWxkIiwiZXFsIiwiY29tbWFuZHMiLCJsb2dDdXN0b21FdmVudCIsIl8iLCJrZXlzIiwibG9nRXZlbnQiLCJldmVudHMiLCJnZXRMb2dFdmVudHMiLCJ0ZXN0Q29tbWFuZCIsInRlc3RDb21tYW5kMiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9iYXNlZHJpdmVyL2NvbW1hbmRzL2V2ZW50LnNwZWMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7QmFzZURyaXZlcn0gZnJvbSAnLi4vLi4vLi4vLi4vbGliJztcblxuZGVzY3JpYmUoJ2xvZ2dpbmcgY3VzdG9tIGV2ZW50cycsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ3Nob3VsZCBhbGxvdyBsb2dnaW5nIG9mIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgYXdhaXQgZC5sb2dDdXN0b21FdmVudCgnbXlvcmcnLCAnbXlldmVudCcpO1xuICAgIF8ua2V5cyhkLl9ldmVudEhpc3RvcnkpLnNob3VsZC5lcWwoWydjb21tYW5kcycsICdteW9yZzpteWV2ZW50J10pO1xuICB9KTtcbiAgaXQoJ3Nob3VsZCBnZXQgYWxsIGV2ZW50cyBpbmNsdWRpbmcgY3VzdG9tIG9uZXMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZCA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnNob3VsZC5lcWwoe2NvbW1hbmRzOiBbXX0pO1xuICAgIGQubG9nRXZlbnQoJ2FwcGl1bUV2ZW50Jyk7XG4gICAgYXdhaXQgZC5sb2dDdXN0b21FdmVudCgnbXlvcmcnLCAnbXlldmVudCcpO1xuICAgIGNvbnN0IGV2ZW50cyA9IGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCk7XG4gICAgXy5rZXlzKGV2ZW50cykuc2hvdWxkLmVxbChbJ2NvbW1hbmRzJywgJ2FwcGl1bUV2ZW50JywgJ215b3JnOm15ZXZlbnQnXSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCcjZ2V0TG9nRXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIGFsbG93IHRvIGdldCBhbGwgZXZlbnRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKCkpLnNob3VsZC5lcWwoe1xuICAgICAgY29tbWFuZHM6IFtdLFxuICAgICAgdGVzdENvbW1hbmQ6IFsnMScsICcyJywgJzMnXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWx0ZXIgd2l0aCB0ZXN0Q29tbWFuZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIChhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmQnKSkuc2hvdWxkLmVxbCh7XG4gICAgICB0ZXN0Q29tbWFuZDogWycxJywgJzInLCAnMyddLFxuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBmaWx0ZXIgd2l0aCB3cm9uZyBidXQgY2FuIGJlIGEgcGFydCBvZiB0aGUgZXZlbnQgbmFtZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kID0gWycxJywgJzInLCAnMyddO1xuICAgIChhd2FpdCBkLmdldExvZ0V2ZW50cygndGVzdENvbW1hbmREdW1teScpKS5zaG91bGQuZXFsKHt9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmaWx0ZXIgd2l0aCBtdWx0aXBsZSBldmVudCBrZXlzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgZC5fZXZlbnRIaXN0b3J5LnRlc3RDb21tYW5kMiA9IFsnNCcsICc1J107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsndGVzdENvbW1hbmQnLCAndGVzdENvbW1hbmQyJ10pKS5zaG91bGQuZXFsKHtcbiAgICAgIHRlc3RDb21tYW5kOiBbJzEnLCAnMicsICczJ10sXG4gICAgICB0ZXN0Q29tbWFuZDI6IFsnNCcsICc1J10sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmlsdGVyIHdpdGggY3VzdG9tIGV2ZW50cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICBkLl9ldmVudEhpc3Rvcnkuc2hvdWxkLmVxbCh7Y29tbWFuZHM6IFtdfSk7XG4gICAgZC5fZXZlbnRIaXN0b3J5WydjdXN0b206YXBwaXVtRXZlbnQnXSA9IFsnMScsICcyJywgJzMnXTtcbiAgICAoYXdhaXQgZC5nZXRMb2dFdmVudHMoWydjdXN0b206YXBwaXVtRXZlbnQnXSkpLnNob3VsZC5lcWwoe1xuICAgICAgJ2N1c3RvbTphcHBpdW1FdmVudCc6IFsnMScsICcyJywgJzMnXSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgZmlsdGVyIHdpdGggbm8gZXhpc3RlZCBldmVudCBuYW1lJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgIGQuX2V2ZW50SGlzdG9yeS5zaG91bGQuZXFsKHtjb21tYW5kczogW119KTtcbiAgICBkLl9ldmVudEhpc3RvcnkudGVzdENvbW1hbmQgPSBbJzEnLCAnMicsICczJ107XG4gICAgKGF3YWl0IGQuZ2V0TG9nRXZlbnRzKFsnbm9FdmVudE5hbWUnXSkpLnNob3VsZC5lcWwoe30pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQUEsUUFBUSxDQUFDLHVCQUFELEVBQTBCLFlBQVk7RUFDNUNDLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxrQkFBa0I7SUFDckQsTUFBTUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosRUFBVjs7SUFDQUQsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7TUFBQ0MsUUFBUSxFQUFFO0lBQVgsQ0FBM0I7O0lBQ0EsTUFBTUwsQ0FBQyxDQUFDTSxjQUFGLENBQWlCLE9BQWpCLEVBQTBCLFNBQTFCLENBQU47O0lBQ0FDLGVBQUEsQ0FBRUMsSUFBRixDQUFPUixDQUFDLENBQUNFLGFBQVQsRUFBd0JDLE1BQXhCLENBQStCQyxHQUEvQixDQUFtQyxDQUFDLFVBQUQsRUFBYSxlQUFiLENBQW5DO0VBQ0QsQ0FMQyxDQUFGO0VBTUFMLEVBQUUsQ0FBQyw2Q0FBRCxFQUFnRCxrQkFBa0I7SUFDbEUsTUFBTUMsQ0FBQyxHQUFHLElBQUlDLGVBQUosRUFBVjs7SUFDQUQsQ0FBQyxDQUFDRSxhQUFGLENBQWdCQyxNQUFoQixDQUF1QkMsR0FBdkIsQ0FBMkI7TUFBQ0MsUUFBUSxFQUFFO0lBQVgsQ0FBM0I7O0lBQ0FMLENBQUMsQ0FB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