@phenixrts/sdk 2025.2.3-beta.607 → 2025.2.3

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 (41) hide show
  1. package/channels/debug/channels.js +1084 -1084
  2. package/channels/debug/package.json +1 -1
  3. package/channels/debug.private/channels.js +1001 -1001
  4. package/channels/debug.private/package.json +1 -1
  5. package/channels/debug.provideGlobalScope/channels.js +1056 -1056
  6. package/channels/debug.provideGlobalScope/package.json +1 -1
  7. package/channels/es5.debug.private/channels.js +2 -2
  8. package/channels/es5.debug.private/package.json +1 -1
  9. package/channels/min/channels.js +1 -1
  10. package/channels/min/channels.js.map +1 -1
  11. package/channels/min/package.json +1 -1
  12. package/channels/min.private/channels.js +1 -1
  13. package/channels/min.private/channels.js.map +1 -1
  14. package/channels/min.private/package.json +1 -1
  15. package/channels/min.provideGlobalScope/channels.js +1 -1
  16. package/channels/min.provideGlobalScope/channels.js.map +1 -1
  17. package/channels/min.provideGlobalScope/package.json +1 -1
  18. package/channels/package.json +1 -1
  19. package/full/debug/full.js +1195 -1195
  20. package/full/debug/package.json +1 -1
  21. package/full/debug.private/full.js +1112 -1112
  22. package/full/debug.private/package.json +1 -1
  23. package/full/min/full.js +1 -1
  24. package/full/min/full.js.map +1 -1
  25. package/full/min/package.json +1 -1
  26. package/full/min.private/full.js +1 -1
  27. package/full/min.private/full.js.map +1 -1
  28. package/full/min.private/package.json +1 -1
  29. package/full/package.json +1 -1
  30. package/package.json +1 -1
  31. package/publish/debug/package.json +1 -1
  32. package/publish/debug/publish.js +772 -772
  33. package/publish/debug.private/package.json +1 -1
  34. package/publish/debug.private/publish.js +772 -772
  35. package/publish/min/package.json +1 -1
  36. package/publish/min/publish.js +1 -1
  37. package/publish/min/publish.js.map +1 -1
  38. package/publish/min.private/package.json +1 -1
  39. package/publish/min.private/publish.js +1 -1
  40. package/publish/min.private/publish.js.map +1 -1
  41. package/publish/package.json +1 -1
@@ -9684,7 +9684,7 @@ var VersionManager = /*#__PURE__*/function () {
9684
9684
  key: "sdkVersion",
9685
9685
  get: function get() {
9686
9686
  try {
9687
- return "2026-04-01T18:35:31.540Z (2025.2.3-beta.607)";
9687
+ return "2026-04-02T15:30:55.442Z (2025.2.3)";
9688
9688
  } catch (e) {
9689
9689
  return this._defaultVersion;
9690
9690
  }
@@ -11920,4 +11920,4 @@ __webpack_require__.r(__webpack_exports__);
11920
11920
  /******/ })()
11921
11921
  ;
11922
11922
  });
11923
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDaEU7RUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7RUFBRTtFQUN4TC9XLEdBQUcsRUFBRSxJQUFJSyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN6U0osR0FBRyxFQUFFLElBQUlJLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJ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QUF1QixJQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBQTU0QixvRkFBQSxDQUMxQzQ0QixvR0FBdUIsSUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBQTU0QixvRkFBQSxDQUFLLElBQUlraUIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDdnZCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUFxTixvRkFBQSxDQUN6RTQ0QixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUE1NEIsb0ZBQUEsQ0FBSyxJQUFJa2lCLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQ3Z2QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxH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QUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxxQ0FBcUMsNEJBQTRCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBCQUEwQixlQUFlO0FBQ3RFOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pvQkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNiOTJDLEdBQUcsRUFBSEEsNENBQUc7RUFDSDgyQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JoTyxZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9SZWFsVGltZVN0cmVhbVN1YnNjcmliZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1ZpZGVvRnJhbWVEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9EaW1lbnNpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmNvbnN0IHZpc2liaWxpdHlDaGFuZ2VFdmVudCA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG4gIHByaXZhdGUgX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb246IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uKCk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgbGV0IGJhY2tncm91bmRFbnRyeVRpbWU6IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGlzTm93Rm9yZWdyb3VuZCA9ICFHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudElzSGlkZGVuO1xuXG4gICAgICBpZiAoIWlzTm93Rm9yZWdyb3VuZCkge1xuICAgICAgICBiYWNrZ3JvdW5kRW50cnlUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGJhY2tncm91bmRFbnRyeVRpbWUpIHtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IERhdGUubm93KCkgLSBiYWNrZ3JvdW5kRW50cnlUaW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSBpc05vd0ZvcmVncm91bmQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVzZUV2ZW50Q2FwdHVyZVBoYXNlID0gZmFsc2U7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGREb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGUgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZpbGUgaXMgdXNlZCBpbiB0aGUgc2lsZW50IGJ1aWxkXG4vLyB0byBjb25zdHJhaW4gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LkhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBGb3JtRGF0YSgpOiB0eXBlb2YgRm9ybURhdGEge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuRm9ybURhdGE7XG4gIH1cblxuICBnZXQgSFRNTFZpZGVvRWxlbWVudCgpOiB0eXBlb2YgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5IVE1MVmlkZW9FbGVtZW50O1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtKCk6IHR5cGVvZiBNZWRpYVN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbVRyYWNrKCk6IHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtVHJhY2s7XG4gIH1cblxuICBnZXQgTWVkaWFTb3VyY2UoKTogdHlwZW9mIE1lZGlhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU291cmNlO1xuICB9XG5cbiAgZ2V0IFJUQ1BlZXJDb25uZWN0aW9uKCk6IHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBSVENTZXNzaW9uRGVzY3JpcHRpb24oKTogdHlwZW9mIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgUlRDSWNlQ2FuZGlkYXRlKCk6IHR5cGVvZiBSVENJY2VDYW5kaWRhdGUge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDSWNlQ2FuZGlkYXRlO1xuICB9XG5cbiAgZ2V0IFVSTCgpOiB0eXBlb2YgVVJMIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTDtcbiAgfVxuXG4gIGdldCBVUkxTZWFyY2hQYXJhbXMoKTogdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkxTZWFyY2hQYXJhbXM7XG4gIH1cblxuICBnZXQgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFySW50ZXJ2YWwoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFySW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFyVGltZW91dCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudENyZWF0ZUVsZW1lbnQoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50LmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SGFzRm9jdXMoKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Lmhhc0ZvY3VzLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZG9jdW1lbnQuaGlkZGVuO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50UXVlcnlTZWxlY3RvcigpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGZldGNoKCk6IChpbnB1dDogc3RyaW5nIHwgVVJMIHwgUmVxdWVzdCwgaW5pdD86IFJlcXVlc3RJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5mZXRjaC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25Ib3N0bmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvblNlYXJjaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2g7XG4gIH1cblxuICBnZXQgbmF2aWdhdG9yQ29ubmVjdGlvbigpOiBJTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgbmF2aWdhdG9ySXNPbkxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5vbkxpbmU7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB0aGlzLl93aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ107XG4gIH1cblxuICBnZXQgcXVldWVNaWNyb3Rhc2soKTogKG1pY3JvdGFzazogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5xdWV1ZU1pY3JvdGFzay5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTogKGNhbGxiYWNrOiBGcmFtZVJlcXVlc3RDYWxsYmFjaykgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZGlzcG9zYWJsZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihkaXNwb3NhYmxlOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlID0gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGUuY2FsbCh0aGlzKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ3Mge1xuICBzdGF0aWMgcmFuZG9tKGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20xM0NoYXJhY3RlcnMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMiwgMTUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb29wczogbnVtYmVyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDEzKTtcblxuICAgIHJldHVybiBuZXcgQXJyYXkobG9vcHMpLmZpbGwocmFuZG9tMTNDaGFyYWN0ZXJzKS5yZWR1Y2UoKHN0cmluZywgZnVuYykgPT4ge1xuICAgICAgcmV0dXJuIHN0cmluZyArIGZ1bmMoKTtcbiAgICB9LCAnJykuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyaW5ncyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc29sZUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxNZXNzYWdlID0gYCR7ZGF0ZS50b0lTT1N0cmluZygpfSBbJHtjYXRlZ29yeX1dIFske0xvZ2dpbmdMZXZlbFtsb2dMZXZlbF19XSAke21lc3NhZ2V9YDtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsTWVzc2FnZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGZ1bGxNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3I6IHN0cmluZywgY3VycmVudFZhbHVlOiBzdHJpbmcgfCBFcnJvciwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGU6IG9iamVjdFtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyLCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4vQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2Vyczoge1tjYXRlZ29yeTogc3RyaW5nXTogSUxvZ2dlcn0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGVuZGVyczogQXBwZW5kZXJzID0gbmV3IEFwcGVuZGVycygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkID0gbmV3IExvZ2dpbmdUaHJlc2hvbGQoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBuZXcgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2dnZXIoY2F0ZWdvcnk6IHN0cmluZyk6IElMb2dnZXIge1xuICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjYXRlZ29yeSA9ICdTREsnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV0gPSBuZXcgTG9nZ2VyKGNhdGVnb3J5LCB0aGlzLl9hcHBlbmRlcnMsIHRoaXMuX3RocmVzaG9sZCk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2luZ0xldmVsKCk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCdjb25zb2xlJywgTG9nZ2VyRmFjdG9yeS5hcHBseUNvbnNvbGVMb2dnZXIuYmluZCh0aGlzKSk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCd0ZWxlbWV0cnknLCBMb2dnZXJGYWN0b3J5LmFwcGx5VGVsZW1ldHJ5TG9nZ2VyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlMb2dnaW5nTGV2ZWwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbG9nZ2luZy1sZXZlbCcpIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKG5hbWU6IHN0cmluZywgYXBwbHlBcHBlbmRlcjogKGxldmVsOiBMb2dnaW5nTGV2ZWwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoYHBoZW5peC0ke25hbWV9LWxvZ2dpbmctbGV2ZWxgKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKHBhcmFtZXRlclZhbHVlID09PSAnT2ZmJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwcGx5QXBwZW5kZXIoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUNvbnNvbGVMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlUZWxlbWV0cnlMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gbGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5Mb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcbmNvbnN0IGdldFN0YXRzVGltZW91dER1cmF0aW9uID0gNTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSdGNDb25uZWN0aW9uTW9uaXRvcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJhY2tzVG9Nb25pdG9yOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfbW9uaXRvckdlbmVyYXRpb24gPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyLCBpc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgdGhpcy5fdHJhY2tzVG9Nb25pdG9yID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkubWFwKHRyYWNrID0+IHRyYWNrLmtpbmQpIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmdldEN1cnJlbnRPZmZlckRpc2FibGVkICYmIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgICBjb25zdCBwYXJzZWRTRFAgPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRTRFAuYXVkaW9Db2RlYztcbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFNEUC52aWRlb0NvZGVjO1xuICAgICAgfVxuXG4gICAgICBsZXQgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIGlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoZm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmb3JlZ3JvdW5kIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IHBvbGwgZnJvbSBiZWZvcmUgdGhlIGZyZWV6ZVxuICAgICAgICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG5cbiAgICAgICAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdSZXN0YXJ0aW5nIHN0YXRzIHBvbGxpbmcgYWZ0ZXIgZm9yZWdyb3VuZCB0cmFuc2l0aW9uJyk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5nZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTdGF0aXN0aWNMZWdhY3koKTtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICBsZXQgdGltZW91dEhhbmRsZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzUHJvbWlzZSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRTdGF0cyhudWxsKTtcblxuICAgICAgaWYgKCFzdGF0c1Byb21pc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlPG51bGw+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKG51bGwpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0cygpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICBsZXQgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnaW5ib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICBjb25zdCBraW5kID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNSZWNlaXZlZCB8fCAwO1xuICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0J5dGVzUmVjZWl2ZWQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNSZWNlaXZlZCA/PyAwO1xuICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVEZWx0YSA9IHJlcG9ydC50aW1lc3RhbXAgLSAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcCB8fCAwKTtcbiAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgIHBhY2tldHNMb3N0OiByZXBvcnQucGFja2V0c0xvc3QsXG4gICAgICAgICAgICAgICAgcGFja2V0c1JlY2VpdmVkOiByZXBvcnQucGFja2V0c1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNEZWNvZGVkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgIDEwMDA7XG5cbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdnZXRTdGF0cygpIHJlamVjdGVkJywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgJiYgZ2VuZXJhdGlvbiA9PT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb247XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHNMZWdhY3koKTtcblxuICAgICAgaWYgKCFzdGF0c1Byb21pc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlPG51bGw+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKG51bGwpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0c0xlZ2FjeSgpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuXG4gICAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICByZXBvcnQubmFtZXMoKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdnb29nUlRUJykge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgICAgY29uc3QgbWVkaWFUeXBlID0gcmVwb3J0LnN0YXQoJ21lZGlhVHlwZScpLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXSA9IHt0aW1lc3RhbXA6IERhdGUubm93KCl9O1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ21lZGlhVHlwZSddID0gbWVkaWFUeXBlO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydieXRlc1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgnYnl0ZXNSZWNlaXZlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNSZWNlaXZlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydjb2RlYyddID0gcmVwb3J0LnN0YXQoJ2dvb2dDb2RlY05hbWUnKS50b1N0cmluZygpIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUobWVkaWFUeXBlKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgICAgaWYgKG1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNEZWNvZGVkKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LnN0YXQoJ2ZyYW1lc0RlY29kZWQnKTtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgIDEwMDAgfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdnZXRTdGF0c0xlZ2FjeSgpIHJlamVjdGVkJywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgJiYgZ2VuZXJhdGlvbiA9PT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcnRtYXAgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYG09JHt0eXBlfWApKT8uc3BsaXQoJyAnKVszXSB8fCAnJztcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3J0bWFwfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lPy5zcGxpdCgnICcpWzFdIHx8ICcnO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5SVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5pY2VDb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldFRyYW5zY2VpdmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmdldFRyYW5zY2VpdmVyc0Rpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0VHJhbnNjZWl2ZXJzID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUcmFuc2NlaXZlcnMoKTogUlRDUnRwVHJhbnNjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ocmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlKG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikpO1xuICAgICAgICBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi9TdWJqZWN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZE9ubHlTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3RvcihzdWJqZWN0OiBTdWJqZWN0PFQ+KSB7XG4gICAgdGhpcy5fc3ViamVjdCA9IHN1YmplY3Q7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQge0dsb2JhbFNjb3BlfSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVNoYWthUGxheWVyJztcbmltcG9ydCB7SGxzUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSUhsc1BsYXllcic7XG5pbXBvcnQge1dlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lXZWJQbGF5ZXInO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZT8ucGFnZUxvYWRUaW1lIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlcjogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJykgYXMgVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBvbkxvYWQoZ2xvYmFsU2NvcGU6IElHbG9iYWxTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RLIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBTREsuZGlzcG9zZSgpO1xuICAgIH0pO1xuXG4gICAgU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGU6IElJbml0T3B0aW9ucyAmIHtnbG9iYWxTY29wZT86IElQcm92aWRlZEdsb2JhbFNjb3BlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKSB7XG4gICAgICBHbG9iYWxTY29wZS5zZXRJbnN0YW5jZShvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkdsb2JhbFNjb3BlLnN1YnNjcmliZShTREsub25Mb2FkLmJpbmQoU0RLKSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlVcmwge1xuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gYmFzZVVSTC5ob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gICAgICBzd2l0Y2ggKGJhc2VVUkwucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnd3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHA6JztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3c3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHBzOic7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAyIHx8XG4gICAgICAgICAgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMyAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAyXS5sZW5ndGggPD0gMiAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5sZW5ndGggPD0gMylcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50cy51bnNoaWZ0KCd0ZWxlbWV0cnknKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnc3RnLScpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctc3RnJykgfHwgc2VnbWVudHNbMF0uaW5jbHVkZXMoJy1zdGctJykgfHwgc2VnbWVudHNbMF0gPT09ICdzdGcnKSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeS1zdGcnO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdsb2NhbCcpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctbG9jYWwnKSkge1xuICAgICAgICAvLyBMZWF2ZSBVUkwgdW5jaGFuZ2VkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnknO1xuICAgICAgfVxuXG4gICAgICBiYXNlVVJMLmhvc3RuYW1lID0gc2VnbWVudHMuam9pbignLicpO1xuXG4gICAgICByZXR1cm4gYCR7YmFzZVVSTC5vcmlnaW59L3RlbGVtZXRyeWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lDaGFubmVsfSBmcm9tICcuL0lDaGFubmVsJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCwge0NoYW5uZWxDb250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgRW5jb2RlZFN0cmVhbVNpbmssIHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBTdHJlYW1UcmFja1RyYW5zZm9ybSwge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtJU3RyZWFtU3Vic2NyaWJlcn0gZnJvbSAnLi4vc3RyZWFtaW5nL0lTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCBTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtU3Vic2NyaWJlckZhY3RvcnknO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZvcmVncm91bmRSZXN0YXJ0UmVhc29uQmFja2dyb3VuZFRpbWVvdXQgPSAnY2xpZW50OmZvcmVncm91bmRlZDpiYWNrZ3JvdW5kLXRpbWVvdXQnO1xuY29uc3QgZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHkgPSAnY2xpZW50OmZvcmVncm91bmRlZDp1bmhlYWx0aHknO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5jb25zdCBiYWNrZ3JvdW5kUmVjb3ZlcnlGYWlsc2FmZUludGVydmFsSW5NaWxsaXNlY29uZHMgPSA1MDAwO1xuY29uc3Qgc3RyZWFtRGVsZXRpb25UaHJlc2hvbGRJbk1pbGxpc2Vjb25kcyA9IDMwMDAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsT3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbCBpbXBsZW1lbnRzIElDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NoYW5uZWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RXhpc3RzOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9NdXRlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9QYXVzZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQbGF5aW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUYXJnZXRMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TGFnOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlCaXRyYXRlTGltaXQ6IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZXNvbHV0aW9uOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9zdHJlYW1TdWJzY3JpYmVyOiBJU3RyZWFtU3Vic2NyaWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zKSB7XG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbik7XG4gICAgY29uc3QgY2hhbm5lbENvbnRleHRPcHRpb25zOiBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnM/LnRhcmdldExhZyxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2ssXG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2tcbiAgICB9O1xuICAgIGNvbnN0IHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIGhhc0luc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBuZXcgQ2hhbm5lbENvbnRleHQoY2hhbm5lbENvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlFeGlzdHMgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPih0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPih0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuXG4gICAgaWYgKFNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgLy8gU0RLLmluaXRpYWxpemUoKSBndWFyYW50ZWVzIGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGlzIGNyZWF0ZWQgYmVmb3JlIGFueSBDaGFubmVsIGNhbiBiZSBpbnN0YW50aWF0ZWRcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgICAgIGlmICghaXNGb3JlZ3JvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpO1xuICAgICAgICAgIGNvbnN0IHNob3VsZEZvcmNlUmVzdGFydCA9IEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlXG4gICAgICAgICAgICAmJiBsYXN0QmFja2dyb3VuZER1cmF0aW9uICE9PSBudWxsXG4gICAgICAgICAgICAmJiBsYXN0QmFja2dyb3VuZER1cmF0aW9uID4gYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgIC8vIFBsYXRmb3JtIGRlc3Ryb3lzIHN0cmVhbXMgYWZ0ZXIgMzBzIG9mIG5vIG1lZGlhIGRhdGEuIElmIHRoZSBjaGFubmVsIGlzIGFscmVhZHlcbiAgICAgICAgICAvLyByZWNvbm5lY3RpbmcgYW5kIHRoZSB0YWIgd2FzIGJhY2tncm91bmRlZCBsb25nZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlIHNlcnZlci1zaWRlXG4gICAgICAgICAgLy8gc3RyZWFtIGlzIGdvbmUgYW5kIHdlIG11c3QgZG8gYSBmdWxsIHJlc3RhcnQgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgdGhlIHJlY29ubmVjdC5cbiAgICAgICAgICBjb25zdCBpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtID0gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3RpbmdcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gIT09IG51bGxcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPiBzdHJlYW1EZWxldGlvblRocmVzaG9sZEluTWlsbGlzZWNvbmRzO1xuXG4gICAgICAgICAgaWYgKHNob3VsZEZvcmNlUmVzdGFydCB8fCBpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGb3JlZ3JvdW5kZWQgYWZ0ZXIgWyVzXSBtcyBpbiBiYWNrZ3JvdW5kLCBmb3JjaW5nIHJlc3RhcnQnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgbGFzdEJhY2tncm91bmREdXJhdGlvbik7XG4gICAgICAgICAgICB0aGlzLnJlc3RhcnRPbkZvcmVncm91bmQoZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25CYWNrZ3JvdW5kVGltZW91dCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5pc1JldHJ5YWJsZVN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdGFydE9uRm9yZWdyb3VuZChmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBUaGUgaGVhbHRoIGNoZWNrIGNhdGNoZXMgc3RyZWFtcyB0aGF0IGFyZSB1bmhlYWx0aHkgd2hpbGUgc3RpbGwgaW4gUGxheWluZyBzdGF0ZVxuICAgICAgICAgIC8vIChlLmcuLCB2aWRlbyBzdGFsbGVkIGJ1dCBubyBzdGF0ZSB0cmFuc2l0aW9uIHlldClcbiAgICAgICAgICBpZiAoIXRoaXMuX3N0cmVhbVN1YnNjcmliZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5pc1N1YnNjcmliZXJIZWFsdGh5KClcbiAgICAgICAgICAgIC50aGVuKGlzSGVhbHRoeSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0hlYWx0aHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBPbmx5IHJlc3RhcnQgZnJvbSBQbGF5aW5nIHN0YXRlIOKAlCB0ZXJtaW5hbCBzdGF0ZXMgKFVuYXV0aG9yaXplZCwgR2VvQmxvY2tlZCxcbiAgICAgICAgICAgICAgLy8gU3RvcHBlZCwgZXRjLikgc2hvdWxkIG5vdCB0cmlnZ2VyIGhlYWx0aC1jaGVjayByZXN0YXJ0c1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFJlc2V0IGZhaWx1cmVDb3VudCB0byAwIGFuZCByZXN0YXJ0aW5nIENoYW5uZWwgYWZ0ZXIgcmV0dXJuaW5nIHRvIGZvcmVncm91bmQnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgaWdub3JlZFN0YXJ0ID0gdGhpcy5zdGFydCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hlbiBjaGVja2luZyBzdWJzY3JpYmVyIGhlYWx0aCB3aGlsZSBmb3JlZ3JvdW5kaW5nJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBleGlzdHMoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RXhpc3RzO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBCaXRzUGVyU2Vjb25kIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBnZXQgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JldHJ5YWJsZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU3Vic2NyaWJlckhlYWx0aHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3Vic2NyaWJlci5pc1N0cmVhbUhlYWx0aHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdGFydE9uRm9yZWdyb3VuZChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFNraXBwaW5nIGZhaWx1cmVDb3VudCByZXNldCBhbmQgQ2hhbm5lbCByZXN0YXJ0IGR1ZSB0byBDaGFubmVsIGFscmVhZHkgc3RhcnRpbmcnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNSZXRyeWFibGVTdGF0ZSgpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgZmFpbHVyZUNvdW50IHJlc2V0IGFuZCBDaGFubmVsIHJlc3RhcnQgZHVlIHRvIENoYW5uZWxTdGF0ZSBbJXNdIHdoaWNoIGlzIG5vdCByZXRyeWFibGUnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBSZXNldCBmYWlsdXJlQ291bnQgdG8gMCBhbmQgcmVzdGFydGluZyBDaGFubmVsIGR1ZSB0byBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHJlYXNvbik7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNSZWNvdmVyeSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBpc1JlY292ZXJ5ID8gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcgOiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKGlzUmVjb3ZlcnkgPyAnY2xpZW50OnJlY292ZXInIDogJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPigndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPignYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSAmJiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIGluc2VydGFibGUtc3RyZWFtcyBhbmQgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgYXJlIGVuYWJsZWQsIG9ubHkgdXNlIG9uZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBoYXNFbmNvZGVkU3RyZWFtU2luayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayAmJiBoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gY2FsbGJhY2sgYW5kIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBzaW5rIGZ1bmN0aW9uIGZvdW5kLCBvbmx5IHVzZSBvbmUgdHlwZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1lZGlhIFN0cmVhbSBUcmFjayBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCEoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc1JldHJ5YWJsZVN0YXRlKCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIElnbm9yaW5nIHN0cmVhbSBmYWlsdXJlIGNhbGxiYWNrIGR1ZSB0byBDaGFubmVsU3RhdGUgYmVpbmcgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIERlZmVycmluZyBzdHJlYW0gZmFpbHVyZSBoYW5kbGluZyB0byBmb3JlZ3JvdW5kIHJlY292ZXJ5JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N0cmVhbVN1YnNjcmliZXIgPSBTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RyZWFtU3Vic2NyaWJlcik7XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3Vic2NyaWJlci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cCxcbiAgICAgIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQuYmluZCh0aGlzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IGNoYW5uZWwnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuUGxheWluZyB8fCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlBhdXNlZCB8fCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdGFydEFmdGVyU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgaW5pdGlhbGl6aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBsYXlpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwYXVzZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgaW52b2tlIHBsYXkoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3N0cmVhbVN1YnNjcmliZXIgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlO1xuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudCAmJiB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjYXBhYmlsaXRpZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkgPSBjYXBhYmlsaXRpZXMuZmluZChjYXBhYmlsaXR5ID0+IGNhcGFiaWxpdHkuc3RhcnRzV2l0aCgnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uPScpKTtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIWZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyBubyBjYXBhYmlsaXR5IHdhcyBmb3VuZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBpdCBbJXNdJywgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkuc3BsaXQoJz0nKVsxXVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvbi50cmltKCkpXG4gICAgICAuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgIGNhc2UgJ3RpbWVjb2RlJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RpbWVzdGFtcHMnOlxuICAgICAgICAgICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0lnbm9yaW5nIHVua25vd24gZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIG9wdGlvbiBbJXNdJywgb3B0aW9uKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBjb25maWd1cmF0aW9uIFsodGltZWNvZGUgWyVzXSwgdGltZXN0YW1wcyBbJXNdKV0nLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGF5UHJvbWlzZSA9IHZpZGVvRWxlbWVudC5wbGF5KCk7XG5cbiAgICBpZiAocGxheVByb21pc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxheVByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgIGNvbnN0IGhhc0F1ZGlvVHJhY2sgPSAhIW1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZpbHRlcih0cmFjayA9PiB7XG4gICAgICAgIHJldHVybiB0cmFjay5raW5kID09PSAnYXVkaW8nO1xuICAgICAgfSkubGVuZ3RoO1xuICAgICAgY29uc3QgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgPSAhU0RLLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuXG4gICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgfHwgdmlkZW9FbGVtZW50Lm11dGVkIHx8ICFoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGF1c2VkIHZpZGVvIGFmdGVyIHBsYXkgZmFpbGVkLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQXVkaW9UcmFjaykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSBtdXRlZCB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHZpZGVvRWxlbWVudC5wbGF5KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBsYXllZCB2aWRlbyBhZnRlciBhdXRvIG11dGluZy4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkIHRvIHVubXV0ZS4nLCB0aGlzLnN0cmVhbUlkKTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgICAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUGF1c2VkID0gMyxcbiAgUGxheWluZyA9IDQsXG4gIFJlY292ZXJpbmcgPSA1LFxuICBSZWNvbm5lY3RpbmcgPSA2LFxuICBTdGFuZEJ5ID0gNyxcbiAgU3RvcHBlZCA9IDgsXG4gIFVuYXV0aG9yaXplZCA9IDksXG4gIEdlb1Jlc3RyaWN0ZWQgPSAxMCxcbiAgR2VvQmxvY2tlZCA9IDExLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMixcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDE0LFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNSxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE2LFxuICBFcnJvciA9IDE3XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVDaGFubmVsT3B0aW9ucyA9IHtcbiAgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50O1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbHMge1xuICBzdGF0aWMgY3JlYXRlQ2hhbm5lbChvcHRpb25zOiBDcmVhdGVDaGFubmVsT3B0aW9ucyk6IENoYW5uZWwge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zOiBDaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucy50YXJnZXRMYWcsXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3M6IENoYW5uZWxPcHRpb25zICYge1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsKG9wdGlvbnMudmlkZW9FbGVtZW50LCBvcHRpb25zLnRva2VuLCBjaGFubmVsT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbHMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW0sIFN1YnNjcmliZVN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4uL2NoYW5uZWxzL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWMsIElSdGNTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbmNvbnN0IGRlZmF1bHRUYXJnZXRMYWcgPSAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IG51bWJlcjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxDb250ZXh0IHtcbiAgY2hhbm5lbEluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIGNoYW5uZWxEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHJlbmRlcmVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBzdGF0ZTogU3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBleGlzdHM6IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBhdXRvTXV0ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dG9QYXVzZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcGxheWluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgdGFyZ2V0TGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgbGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPjtcbiAgYml0cmF0ZUxpbWl0OiBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICByZXNvbHV0aW9uOiBTdWJqZWN0PERpbWVuc2lvbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB8IG51bGw7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgfCBudWxsO1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHZpZGVvVGVsZW1ldHJ5OiBWaWRlb1RlbGVtZXRyeSB8IG51bGw7XG4gIHJ0Y0F1ZGlvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgcnRjVmlkZW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWMgfCBudWxsO1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ2hhbm5lbENvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbERpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5yZW5kZXJlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsSW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gbmV3IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxDaGFubmVsU3RhdGU+KENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuZXhpc3RzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuYXV0b011dGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0b1BhdXNlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnBsYXlpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnRhcmdldExhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPihvcHRpb25zPy50YXJnZXRMYWcgPz8gZGVmYXVsdFRhcmdldExhZyk7XG4gICAgdGhpcy5sYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICB0aGlzLmJpdHJhdGVMaW1pdCA9IG5ldyBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+KDApO1xuICAgIHRoaXMucmVzb2x1dGlvbiA9IG5ldyBTdWJqZWN0PERpbWVuc2lvbj4oRGltZW5zaW9uLmVtcHR5KTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy52aWRlb1RlbGVtZXRyeSA9IG51bGw7XG4gICAgdGhpcy5ydGNBdWRpb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5ydGNWaWRlb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LnZhbHVlICYmIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YW5kQnk7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5leGlzdHMudmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZWNvZGU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZXN0YW1wczogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGlzRW5hYmxlZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZWNvZGUgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZXN0YW1wcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2sgPSB7XG4gIG1lZGlhU3RyZWFtVHJhY2s6IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsO1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIgfCBudWxsO1xuICBtaWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVjOiBWaWRlb0NvZGVjIHwgQXVkaW9Db2RlYyB8IG51bGw7XG4gIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBXb3JrZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIHwgbnVsbDtcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICByZWFkb25seSB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuYXVkaW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICAgIHRoaXMudmlkZW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIEF1ZGlvQ29kZWMge1xuICBPUFVTID0gMCxcbiAgQUFDID0gMVxufVxuXG5leHBvcnQgdHlwZSBBdWRpb0NvZGVjVHlwZSA9ICdPUFVTJyB8ICdBQUMnOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtBdWRpb0NvZGVjLCBBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi9BdWRpb0NvZGVjJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZShhdWRpb0NvZGVjOiBBdWRpb0NvZGVjKTogQXVkaW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAoYXVkaW9Db2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiAnT1BVUyc7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gJ0FBQyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhhdWRpb0NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGUpOiBBdWRpb0NvZGVjIHtcbiAgICBjb25zdCBhdWRpb0NvZGVjU3RyaW5nID0gYXVkaW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgQXVkaW9Db2RlYztcblxuICAgIHN3aXRjaCAoYXVkaW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnT1BVUyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLk9QVVM7XG4gICAgICBjYXNlICdBQUMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5BQUM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIFZpZGVvQ29kZWMge1xuICBIMjY0ID0gMCxcbiAgVlA4ID0gMSxcbiAgVlA5ID0gMlxufVxuXG5leHBvcnQgdHlwZSBWaWRlb0NvZGVjVHlwZSA9ICdIMjY0JyB8ICdWUDgnIHwgJ1ZQOSc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge1ZpZGVvQ29kZWMsIFZpZGVvQ29kZWNUeXBlfSBmcm9tICcuL1ZpZGVvQ29kZWMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb0NvZGVjTWFwcGluZyB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlKHZpZGVvQ29kZWM6IFZpZGVvQ29kZWMpOiBWaWRlb0NvZGVjVHlwZSB7XG4gICAgc3dpdGNoICh2aWRlb0NvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgcmV0dXJuICdIMjY0JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiAnVlA4JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiAnVlA5JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjKHZpZGVvQ29kZWNUeXBlOiBWaWRlb0NvZGVjVHlwZSk6IFZpZGVvQ29kZWMge1xuICAgIGNvbnN0IHZpZGVvQ29kZWNTdHJpbmcgPSB2aWRlb0NvZGVjVHlwZS50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBWaWRlb0NvZGVjO1xuXG4gICAgc3dpdGNoICh2aWRlb0NvZGVjU3RyaW5nKSB7XG4gICAgICBjYXNlICdIMjY0JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuSDI2NDtcbiAgICAgIGNhc2UgJ1ZQOCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQODtcbiAgICAgIGNhc2UgJ1ZQOSc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQOTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWNTdHJpbmcpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KSlcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dCkpXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtPy5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIG5ldyBFcnJvcihgU2V0IGxpbWl0IGJpdHJhdGUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgbmV3IEVycm9yKGBBZGQgaWNlIGNhbmRpZGF0ZXMgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWcsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJRGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJ0cFRpbWVzdGFtcH0gZnJvbSAnLi9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCB7TWV0YWRhdGFNZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbmV4cG9ydCB0eXBlIEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgY29kZWM6IFZpZGVvQ29kZWM7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHZpZGVvRWxlbWVudDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD47XG4gIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBpc0VuYWJsZWRTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXI7XG4gIG1pZDogc3RyaW5nO1xuICB0cmFja0lkOiBzdHJpbmc7XG4gIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90cmFuc2Zvcm1OYW1lID0gJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wOiBNYXA8UnRwVGltZXN0YW1wLCBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ3N0YWxsZWQnIHwgJ2VuZGVkJyB8ICdlcnJvcicgfCAnd2FpdGluZycgPSAnd2FpdGluZyc7XG4gIHByaXZhdGUgX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZShjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGNvbnRleHQuc3RyZWFtSWQsIGNvbnRleHQuY29kZWMsIGNvbnRleHQucmVjZWl2ZXIsIGNvbnRleHQubWlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyhjb250ZXh0LnZpZGVvRWxlbWVudCwgY29udGV4dC5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB0aGlzLnNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybShjb250ZXh0LmNvZGVjLCBjb250ZXh0Lm1pZCwgY29udGV4dC50cmFja0lkLCBjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIGNvbnRleHQudHJhbnNmb3JtRnVuY3Rpb25OYW1lcywgY29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIGNvbnRleHQuaXNFbmFibGVkU3ViamVjdC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uKHN0cmVhbUlkOiBzdHJpbmcsIGNvZGVjOiBWaWRlb0NvZGVjLCByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIsIG1pZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvZGVjICE9PSBWaWRlb0NvZGVjLkgyNjQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSB2aWRlbyBjb2RlYyBpcyBub3QgSDI2NCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghcmVjZWl2ZXIpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSBubyByZWNlaXZlciB3YXMgZm91bmQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIW1pZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIG1pZCB3YXMgZm91bmQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvZGVjOiBWaWRlb0NvZGVjLCBtaWQ6IHN0cmluZywgdHJhY2tJZDogc3RyaW5nLCB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyLCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXSwgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyLnJlZ2lzdGVyUm91dGU8VHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD4+KFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLCB0aGlzLmhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZS5iaW5kKHRoaXMsIFZpZGVvQ29kZWNbY29kZWNdLCBtaWQhLCB0cmFja0lkISwgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5wdXNoKEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLl90cmFuc2Zvcm1OYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlKGNvZGVjOiBzdHJpbmcsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+LCBtZXNzYWdlOiBNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkKTogdm9pZCB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcnRwVGltZXN0YW1wLCBtZXRhZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMobWVzc2FnZSkpIHtcbiAgICAgIGNvbnN0IHJ0cFRpbWVzdGFtcE51bWJlciA9IHBhcnNlSW50KHJ0cFRpbWVzdGFtcCwgMTApO1xuICAgICAgY29uc3QgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBtZXRhZGF0YVsnZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24nXTtcblxuICAgICAgaWYgKGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb246IERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0ge1xuICAgICAgICAgIHRpbWVjb2RlOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50aW1lY29kZSA/PyBudWxsLFxuICAgICAgICAgIHJlY2VpdmVUaW1lc3RhbXA6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnJlY2VpdmVUaW1lc3RhbXAgPz8gbnVsbCxcbiAgICAgICAgICBraW5kOiAndmlkZW8nLFxuICAgICAgICAgIGNvZGVjLFxuICAgICAgICAgIG1pZCxcbiAgICAgICAgICB0cmFja0lkLFxuICAgICAgICAgIHNvdXJjZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBpbmdlc3RUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgZW5jb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHRyYW5zY29kZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBwbGF5YmFja1N0YXRlOiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IGZyYW1lVGltaW5nSW5mb3JtYXRpb247XG5cbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgICAgICB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLnNldChydHBUaW1lc3RhbXBOdW1iZXIsIGZyYW1lVGltaW5nSW5mb3JtYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKHZpZGVvRWxlbWVudFN1YmplY3Q6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuY2xlYXIoKSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcyk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHZpZGVvRWxlbWVudFN1YmplY3Quc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG5vdzogRE9NSGlnaFJlc1RpbWVTdGFtcCwgbWV0YWRhdGE6IFZpZGVvRnJhbWVDYWxsYmFja01ldGFkYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmUtcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBhZ2FpblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuXG4gICAgY29uc3QgcnRwVGltZXN0YW1wID0gbWV0YWRhdGEucnRwVGltZXN0YW1wO1xuXG4gICAgaWYgKCFydHBUaW1lc3RhbXApIHtcbiAgICAgIC8vIFRPRE8gKE5IKTogQWRkIGEgdGhyb3R0bGVkIGxvZyBpbmRpY2F0aW5nIHRoYXQgbm8gUlRQIHRpbWVzdGFtcCB3YXMgZm91bmRcbiAgICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBpdCdzIG51bGxhYmxlLCBidXQgd2UgYWx3YXlzIGhhdmUgaXQgaW4gYSBXZWJSVEMgY29udGV4dFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRpbWVzdGFtcHNUb0RlbGV0ZTogUnRwVGltZXN0YW1wW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW3RpbWVzdGFtcCwgZnJhbWVUaW1pbmddIG9mIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXApIHtcbiAgICAgIGlmICh0aW1lc3RhbXAgPiBydHBUaW1lc3RhbXApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QudmFsdWUgPSB7XG4gICAgICAgIC4uLmZyYW1lVGltaW5nLFxuICAgICAgICByZW5kZXJUaW1lc3RhbXA6IG5ldyBEYXRlKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBub3cpLFxuICAgICAgICBwbGF5YmFja1N0YXRlOiAncGxheWluZydcbiAgICAgIH07XG5cbiAgICAgIHRpbWVzdGFtcHNUb0RlbGV0ZS5wdXNoKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0aW1lc3RhbXAgb2YgdGltZXN0YW1wc1RvRGVsZXRlKSB7XG4gICAgICB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLmRlbGV0ZSh0aW1lc3RhbXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIGNvbnN0IG9uUGxheWluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BsYXlpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZykpKTtcblxuICAgIGNvbnN0IG9uUGF1c2UgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdwYXVzZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpKSk7XG5cbiAgICBjb25zdCBvblN0YWxsZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdzdGFsbGVkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgb25TdGFsbGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpKSk7XG5cbiAgICBjb25zdCBvbldhaXRpbmcgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICd3YWl0aW5nJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgb25XYWl0aW5nKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpKSk7XG5cbiAgICBjb25zdCBvbkVuZGVkID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnZW5kZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIG9uRW5kZWQpKSk7XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnZXJyb3InO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpKSk7XG5cbiAgICB0aGlzLl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpIHtcbiAgICAgICAgdmlkZW9FbGVtZW50LmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkKTtcbiAgICAgIH1cbiAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgaWYgKCF2aWRlb0VsZW1lbnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQgPSB2aWRlb0VsZW1lbnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayh0aGlzLmhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjay5iaW5kKHRoaXMsIHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uLy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi4vLi4vcnRjL1NkcFBhcnNlcic7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UsIHtcbiAgZGVmYXVsdFRyYWNrS2luZHMsXG4gIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1xufSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IEVuZFBvaW50LCB7U3Vic2NyaWJlT3B0aW9ucywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIsIHtGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHR9IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQge0lTdHJlYW1TdWJzY3JpYmVyfSBmcm9tICcuL0lTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCBWaWRlb0ZyYW1lRGV0ZWN0b3IgZnJvbSAnLi9WaWRlb0ZyYW1lRGV0ZWN0b3InO1xuaW1wb3J0IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIsIHtFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlcic7XG5pbXBvcnQge0F1ZGlvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBWaWRlb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWNNYXBwaW5nJztcbmltcG9ydCBBdWRpb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nJztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0ID0gMzAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlciBpbXBsZW1lbnRzIElTdHJlYW1TdWJzY3JpYmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gY2hhbm5lbENvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lciwgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA/IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkIDogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigncmVjdm9ubHknLCBkZWZhdWx0VHJhY2tLaW5kcywgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpYmVPcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXMpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gdW5kZWZpbmVkIDtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICBpZiAoR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSBhcyBuZXZlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPE1lZGlhU3RyZWFtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQub25UcmFja0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpLCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKSkpO1xuXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub250cmFjayA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgdHJhY2tMaXN0ZW5lciA9IChlOiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwWyd0cmFjaycgfCAnYWRkc3RyZWFtJ10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcblxuICAgICAgICAgICAgICAgIGlmICgnc3RyZWFtcycgaW4gZSkge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpO1xuICAgICAgICAgICAgICB9LCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpKSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgYW5zd2VyIFslal0nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgYW5zd2VyKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSBhcyBFbmRQb2ludDtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbSwgYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCh7c3RhdHVzLCBzZXNzaW9uRGVzY3JpcHRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24gYXMgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuc3VjY2Vzcyh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG1lZGlhU3RyZWFtUHJvbWlzZTtcbiAgICAgICAgICAgIH0pLnRoZW4obWVkaWFTdHJlYW0gPT4ge1xuICAgICAgICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgJiYgcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHBlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLmNvZGVjID0gVmlkZW9Db2RlY01hcHBpbmcuY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjKHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWMgYXMgVmlkZW9Db2RlY1R5cGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5jb2RlYyA9IEF1ZGlvQ29kZWNNYXBwaW5nLmNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjIGFzIEF1ZGlvQ29kZWNUeXBlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVycyA9IHBlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2sgYW5kIG9uZSBhdWRpbyBNZWRpYVN0cmVhbVRyYWNrXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTtcbiAgICAgICAgICAgICAgICAvLyBCb3RoIGFyZSBleHBlY3RlZCB0byBiZSBwcmVzZW50LCBidXQgdGhlIHR5cGUgc3lzdGVtIG1ha2VzIHRoZW0gbnVsbGFibGUsIHNvIHdlIGhhdmUgdG8gYXNzZXJ0IHRoZSBwcmVzZW5jZVxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2tSZWNlaXZlciA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5yZWNlaXZlciA9IHJlY2VpdmVycy5maWx0ZXIocmVjZWl2ZXIgPT4gcmVjZWl2ZXIudHJhY2sgPT09IHZpZGVvVHJhY2spWzBdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1pZCA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzXG4gICAgICAgICAgICAgICAgICA/IHBlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpLmZpbHRlcih0cmFuc2NlaXZlciA9PiB0cmFuc2NlaXZlci5yZWNlaXZlciA9PT0gdmlkZW9UcmFja1JlY2VpdmVyKVswXT8ubWlkXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2tSZWNlaXZlciA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5yZWNlaXZlciA9IHJlY2VpdmVycy5maWx0ZXIocmVjZWl2ZXIgPT4gcmVjZWl2ZXIudHJhY2sgPT09IGF1ZGlvVHJhY2spWzBdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLm1pZCA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzXG4gICAgICAgICAgICAgICAgICA/IHBlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpLmZpbHRlcih0cmFuc2NlaXZlciA9PiB0cmFuc2NlaXZlci5yZWNlaXZlciA9PT0gYXVkaW9UcmFja1JlY2VpdmVyKVswXT8ubWlkXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoSW5zZXJ0YWJsZVN0cmVhbXMuY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW1JZDogdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgIGNvZGVjOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2suY29kZWMsXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudDogdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGlzRW5hYmxlZFN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZpZGVvVHJhY2tSZWNlaXZlcixcbiAgICAgICAgICAgICAgICAgICAgbWlkOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWlkISxcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tJZDogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2suaWQhLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyKGZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0OiBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFjazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLFxuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2ssXG4gICAgICAgICAgICAgICAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayEsXG4gICAgICAgICAgICAgICAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayFcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlcihlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEluc2VydGFibGVTdHJlYW1zLmNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZSh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qge3RyYW5zZm9ybWVkU3RyZWFtLCBkaXNwb3NhYmxlc30gPSBJbnNlcnRhYmxlU3RyZWFtcy5jb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24obWVkaWFTdHJlYW0sIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSB0cmFuc2Zvcm1lZFN0cmVhbTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yID0gbmV3IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKFxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbSxcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCxcbiAgICAgICAgICAgICAgICBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24gPSBydGNDb25uZWN0aW9uTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0aXN0aWNzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiAhdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhdWRpb1RyYWNrRmFpbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHZpZGVvVHJhY2tGYWlsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLmF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdWRpb1RyYWNrRmFpbGVkICYmIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBBdWRpbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MudmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MudmlkZW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvVHJhY2tGYWlsZWQgJiYgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIFZpZGVvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MudmlkZW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIUdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZpZGVvVHJhY2tGYWlsZWQgfHwgYXVkaW9UcmFja0ZhaWxlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcnRjQ29ubmVjdGlvbk1vbml0b3IuZGlzcG9zZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciB0cmFjayBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuT2ZmbGluZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA/IENoYW5uZWxTdGF0ZS5QbGF5aW5nIDogQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIHN0YXRlIHJlc3RvcmVkIHRvIFslc10gYWZ0ZXIgcmVjb25uZWN0aW5nJywgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICAgIGlmICghU0RLLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHN0cmVhbUlkOiBzdHJpbmcsIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAoIVNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgcGVlckNvbm5lY3Rpb24gcmVjb25uZWN0aW9uIGF0dGVtcHQgd2hpbGUgbm90IGluIGZvcmVncm91bmQgKHBlZXJDb25uZWN0aW9uIHN0YXRlIFslc10pJywgc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFNraXBwaW5nIHBlZXJDb25uZWN0aW9uIHJlY29ubmVjdGlvbiBpbiBkZWxpYmVyYXRlbHktdGVybWluYWwgc3RhdGUgWyVzXScsIHN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBpc1N0cmVhbUhlYWx0aHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuICAgIGNvbnN0IGhhc0FjdGl2ZVRyYWNrcyA9IG1lZGlhU3RyZWFtPy5nZXRUcmFja3MoKS5zb21lKHRyYWNrID0+IHRyYWNrLnJlYWR5U3RhdGUgPT09ICdsaXZlJykgPz8gZmFsc2U7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50LnBhdXNlZCB8fCAhaGFzQWN0aXZlVHJhY2tzKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gVmlkZW9GcmFtZURldGVjdG9yLmlzUmVuZGVyaW5nRnJhbWVzKHZpZGVvRWxlbWVudCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lTdHJlYW1TdWJzY3JpYmVyfSBmcm9tICcuL0lTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQgUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyIGZyb20gJy4vUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbWluZycpO1xuXG4gIHN0YXRpYyBjcmVhdGUodG9rZW46IHN0cmluZywgY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogSVN0cmVhbVN1YnNjcmliZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRva2VuQ2FwYWJpbGl0aWVzID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikuY2FwYWJpbGl0aWVzO1xuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdvbi1kZW1hbmQnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgT24tRGVtYW5kIFN0cmVhbSBwbGF5YmFjay4nKTtcbiAgICAgIGNoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnc3RyZWFtaW5nJykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IExpdmUgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWFsVGltZVN0cmVhbVN1YnNjcmliZXIoY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbVN1YnNjcmliZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZXRlY3Rpb25UaW1lb3V0SW5NaWxsaXNlY29uZHMgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb0ZyYW1lRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZpZGVvRnJhbWVEZXRlY3RvcicpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaXNSZW5kZXJpbmdGcmFtZXModmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygncmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayBub3Qgc3VwcG9ydGVkLCBhc3N1bWluZyByZW5kZXJpbmcnKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ3JlcXVlc3RBbmltYXRpb25GcmFtZSBub3Qgc3VwcG9ydGVkLCBhc3N1bWluZyByZW5kZXJpbmcnKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBPbiBkZXNrdG9wIGJyb3dzZXJzLCB0aGUgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayB2cyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmFjZVxuICAgIC8vIHByb2R1Y2VzIGZhbHNlIG5lZ2F0aXZlcyBhZnRlciByZXR1cm5pbmcgZnJvbSBhIGJhY2tncm91bmQgdGFiLiBUaGUgdmlkZW8gY29tcG9zaXRvclxuICAgIC8vIGlzIGluYWN0aXZlIHdoaWxlIHRoZSB0YWIgaXMgaGlkZGVuLCBzbyByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIGRvZXMgbm90IGZpcmVcbiAgICAvLyBwcm9tcHRseSBhZnRlciBmb3JlZ3JvdW5kaW5nIOKAlCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgd2lucyB0aGUgcmFjZSBldmVuIHdoZW4gdGhlXG4gICAgLy8gc3RyZWFtIGlzIGhlYWx0aHkuIFRoaXMgY2F1c2VzIHRoZSBmb3JlZ3JvdW5kIGhlYWx0aCBjaGVjayB0byB0cmlnZ2VyIHVubmVjZXNzYXJ5XG4gICAgLy8gUmVjb3ZlcmluZyB0cmFuc2l0aW9ucy4gT24gbW9iaWxlLCBicm93c2VycyBhcmUgbW9yZSBhZ2dyZXNzaXZlIGFib3V0IHBhdXNpbmcgb3JcbiAgICAvLyBkZXN0cm95aW5nIGJhY2tncm91bmQgbWVkaWEgcGlwZWxpbmVzLCBtYWtpbmcgZnJhbWUtbGV2ZWwgc3RhbGwgZGV0ZWN0aW9uIHZhbHVhYmxlXG4gICAgLy8gZGVzcGl0ZSB0aGUgcmFjZSByaXNrLiBEZXNrdG9wIHN0cmVhbXMgcmVseSBvbiB0aGUgUlRDIGNvbm5lY3Rpb24gbW9uaXRvcidzXG4gICAgLy8gYnl0ZXMtcmVjZWl2ZWQgc3RhdHMgdG8gZGV0ZWN0IGdlbnVpbmUgc3RhbGxzIGluc3RlYWQuXG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdTa2lwcGluZyBmcmFtZSBkZXRlY3Rpb24gb24gZGVza3RvcCwgYXNzdW1pbmcgcmVuZGVyaW5nJyk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIERldGVjdCB3aGV0aGVyIHRoZSB2aWRlbyBlbGVtZW50IGlzIGFjdGl2ZWx5IHJlbmRlcmluZyBkZWNvZGVkIGZyYW1lcyBieSByZXF1ZXN0aW5nXG4gICAgLy8gYm90aCBhIHZpZGVvIGZyYW1lIGNhbGxiYWNrIGFuZCBhbiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2sgc2ltdWx0YW5lb3VzbHkuXG4gICAgLy8gV2hlbiB0aGUgc3RyZWFtIGlzIGhlYWx0aHksIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgZmlyZXMgZmlyc3QgYmVjYXVzZSBhIGRlY29kZWRcbiAgICAvLyBmcmFtZSBpcyBhdmFpbGFibGUgZm9yIHByZXNlbnRhdGlvbi4gV2hlbiB0aGUgc3RyZWFtIGlzIHN0YWxsZWQsIG9ubHlcbiAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZmlyZXMgcHJvbXB0bHkgYmVjYXVzZSBpdCBpcyBkcml2ZW4gYnkgdGhlIGRpc3BsYXkgcmVmcmVzaFxuICAgIC8vIGN5Y2xlIHJlZ2FyZGxlc3Mgb2YgdmlkZW8gc3RhdGUuXG4gICAgLy8gQSBmYWxzZSBuZWdhdGl2ZSAocmVxdWVzdEFuaW1hdGlvbkZyYW1lIHdpbm5pbmcgZGVzcGl0ZSBhY3RpdmUgcmVuZGVyaW5nKSBpcyBwb3NzaWJsZVxuICAgIC8vIHdoZW4gYm90aCBjYWxsYmFja3MgbGFuZCBvbiB0aGUgc2FtZSBmcmFtZSwgYnV0IGlzIGJvdW5kZWQgdG8gYSBzaW5nbGUgdW5uZWNlc3NhcnlcbiAgICAvLyByZXN0YXJ0LlxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcbiAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZyYW1lIGRldGVjdGlvbiB0aW1lZCBvdXQgYWZ0ZXIgWyVzXSBtcywgYXNzdW1pbmcgcmVuZGVyaW5nJywgZGV0ZWN0aW9uVGltZW91dEluTWlsbGlzZWNvbmRzKTtcblxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGRldGVjdGlvblRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG5cbiAgICAgIHZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1ZpZGVvIGZyYW1lIHJlbmRlcmVkIHdpdGhpbiBbJXNdIG1zIOKAlCBzdHJlYW0gaXMgaGVhbHRoeScsIERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmaXJlcyBiZWZvcmUgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaywgbm8gdmlkZW8gZnJhbWVzXG4gICAgICAvLyBhcmUgYmVpbmcgZGVjb2RlZCDigJQgdGhlIHN0cmVhbSBpcyBzdGFsbGVkLlxuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ05vIHZpZGVvIGZyYW1lIHJlbmRlcmVkIHdpdGhpbiBbJXNdIG1zIOKAlCBzdHJlYW0gaXMgc3RhbGxlZCcsIERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdWaWRlb0ZyYW1lRGV0ZWN0b3IgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+IHtcbiAgICAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIGNodW5rOiBUKTogYm9vbGVhbiB8IFByb21pc2VMaWtlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmNvZGVkU3RyZWFtU2luayB7XG4gIHN0YXRpYyB2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rPFQgZXh0ZW5kcyBSVENFbmNvZGVkQXVkaW9GcmFtZSB8IFJUQ0VuY29kZWRWaWRlb0ZyYW1lPihtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSUVuY29kZWRTdHJlYW1TaW5rPFQ+KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gRW5jb2RlZCBTdHJlYW0gU2luayBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDIuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbmNvZGVkU3RyZWFtU2luayBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB7U3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIGZyb20gJy4vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VUeXBlfSBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgZnJvbSAnLi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbnR5cGUgTWVkaWFTdHJlYW1UcmFja0tpbmQgPSAndmlkZW8nIHwgJ2F1ZGlvJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBzdGF0aWMgY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBEaXNwb3NhYmxlTGlzdCB7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICBjb25zdCBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrID0gKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZSAtIFVzaW5nIFdlYnBhY2sncyB3b3JrZXIgbG9hZGVyIHRvIGlubGluZSB3b3JrZXJcbiAgICAgIGNvbnN0IHdvcmtlciA9IGNvbnRleHQudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIoKTtcblxuICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHdvcmtlci50ZXJtaW5hdGUoKSkpO1xuICAgICAgZGlzcG9zYWJsZXMuYWRkKGNvbnRleHQudHJhbnNmb3JtTWVzc2FnZVJvdXRlciA9IG5ldyBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyKHdvcmtlcikpO1xuICAgIH07XG5cbiAgICBjb25zdCB7cmVjZWl2ZXI6IHZpZGVvVHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2t9ID0gdmlkZW9UcmFjaztcblxuICAgIGlmICh2aWRlb1RyYWNrUmVjZWl2ZXIgJiYgdmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2sodmlkZW9UcmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qge3JlY2VpdmVyOiBhdWRpb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IGF1ZGlvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IGF1ZGlvVHJhY2s7XG5cbiAgICBpZiAoYXVkaW9UcmFja1JlY2VpdmVyICYmIGF1ZGlvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKGF1ZGlvVHJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwb3NhYmxlcztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgYWRkVHJhY2tUcmFuc2Zvcm1zID0gKHRyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIGlmICh0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBpZiAodHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZSBvZiB0cmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzKSB7XG4gICAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgZGF0YTogdHJhbnNmb3JtRnVuY3Rpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVxdWlyZWQgZm9yIHNhZmFyaSB0byBwcm9wZXJseSB3b3JrIHdoZW4gb25seSB2aWRlbyB0cmFuc2Zvcm1hdGlvbiBpcyBhZGRlZCAoaS5lLiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uKVxuICAgICAgICAgIHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybSxcbiAgICAgICAgICAgIGRhdGE6ICdwYXNzLXRocm91Z2gnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYWRkVHJhY2tUcmFuc2Zvcm1zKHZpZGVvVHJhY2spO1xuICAgIGFkZFRyYWNrVHJhbnNmb3JtcyhhdWRpb1RyYWNrKTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybSA9IGFzeW5jKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpID0+IHtcbiAgICAgIC8vIFNhZmFyaSBhbmQgRmlyZWZveCAuLi5cbiAgICAgIGNvbnN0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrID0gYXN5bmMoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWNlaXZlcjogdHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdHJhY2tNZWRpYVN0cmVhbVRyYWNrLCB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcn0gPSBjb250ZXh0O1xuXG4gICAgICAgIGlmICh0cmFja1JlY2VpdmVyICYmIHRyYWNrTWVkaWFTdHJlYW1UcmFjayAmJiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgICAgdHJhY2tSZWNlaXZlci50cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIsIHtuYW1lOiBgJHt0cmFja01lZGlhU3RyZWFtVHJhY2sua2luZH0tdHJhbnNmb3JtLXBpcGVsaW5lYH0pO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayh2aWRlb1RyYWNrKSwgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2soYXVkaW9UcmFjayldKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXMgPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrID0gKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gY3JlYXRlRW5jb2RlZFN0cmVhbXMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGluIGxpYi5kb20uZC50c1xuICAgICAgICAgIGNvbnN0IGVuY29kZWRSZWNlaXZlclN0cmVhbXMgPSB0cmFja1JlY2VpdmVyLmNyZWF0ZUVuY29kZWRTdHJlYW1zKCk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7b25jZTogdHJ1ZX0pO1xuXG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmUsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgc291cmNlOiBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlLFxuICAgICAgICAgICAgICAgICAgc2luazogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy53cml0YWJsZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge3RyYW5zZmVyOiBbZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSwgZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy53cml0YWJsZV19XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICAgIGNvbnN0IGFjdGlvbnM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXG4gICAgICBpZiAodmlkZW9UcmFjay5yZWNlaXZlciAmJiB2aWRlb1RyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrKHZpZGVvVHJhY2spKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF1ZGlvVHJhY2sucmVjZWl2ZXIgJiYgYXVkaW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayhhdWRpb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGlvbnMpO1xuICAgIH07XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpIHtcbiAgICAgIC8vIFNhZmFyaSBhbmQgRmlyZWZveC4uLlxuICAgICAgYXdhaXQgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hyb21lLCBDaHJvbWl1bS4uLlxuICAgIGF3YWl0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIGNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbihcbiAgICBzdHJlYW06IE1lZGlhU3RyZWFtLFxuICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZCxcbiAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZFxuICApOiB7dHJhbnNmb3JtZWRTdHJlYW06IE1lZGlhU3RyZWFtOyBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3R9IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgY29uc3Qga2luZDogTWVkaWFTdHJlYW1UcmFja0tpbmQgPSB0cmFjay5raW5kIGFzIE1lZGlhU3RyZWFtVHJhY2tLaW5kO1xuXG4gICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSAndmlkZW8nOiB7XG4gICAgICAgICAgaWYgKHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxWaWRlb0ZyYW1lLCBWaWRlb0ZyYW1lPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1WaWRlb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiB2aWRlb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogdmlkZW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2UucGlwZVRocm91Z2godHJhbnNmb3JtZXIpLnBpcGVUbyhzaW5rKTtcblxuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgICAgICAgbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdhdWRpbyc6IHtcbiAgICAgICAgICBpZiAoYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSwgQXVkaW9EYXRhPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1BdWRpb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiBhdWRpb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogYXVkaW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2UucGlwZVRocm91Z2godHJhbnNmb3JtZXIpLnBpcGVUbyhzaW5rKTtcblxuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2soZ2VuZXJhdG9yKTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvUHVtcGVyID0gbmV3IEF1ZGlvKCk7XG5cbiAgICAgICAgICAgIG1lZGlhU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICAgIGF1ZGlvUHVtcGVyLnNyY09iamVjdCA9IG1lZGlhU3RyZWFtO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShraW5kKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB0cmFuc2Zvcm1lZFN0cmVhbSxcbiAgICAgIGRpc3Bvc2FibGVzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5zZXJ0YWJsZVN0cmVhbXMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNklGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2SUZyYW1lJztcbmltcG9ydCBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWUgZnJvbSAnLi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZSc7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2NywgMHhmNCwgMHgwMCwgMHgwYSwgMHg5MSwgMHg5YiwgMHgyYiwgMHhmMSwgMHhmMSwgMHhmOCwgMHgwOCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwNywgMHg4OSwgMHgxMiwgMHhjYiwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg0MSwgMHg5YSwgMHg2OCwgMHg0OSwgMHhhOCwgMHg0MSwgMHg2OCwgMHg5OSwgMHg0YywgMHgwZiwgMHhmZiwgMHg5MiwgMHg4MV0pLCAvLyBTbGljZSBsYXllcjogbm9uIGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHgzMSwgMHgwMywgMHgwMCwgMHhlNCwgMHhlMCwgMHhhOCwgMHg5YiwgMHgzNywgMHhhZiwgMHgxMCwgMHg0ZiwgMHg0ZiwgMHhiMSwgMHgwYSwgMHgyZiwgMHhlNCwgMHg5MiwgMHhjMCwgMHgxZiwgMHhlNywgMHg0ZiwgMHg0NiwgMHhmZiwgMHhlZSwgMHg1MSwgMHhjMSwgMHg1ZCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODYsIDB4MDAsIDB4NDAsIDB4OTIsIDB4OWMsIDB4MjQsIDB4NDgsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NzAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lID0gc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lID0gc3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0ID0gMTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMoY29kZWM6IEF1ZGlvQ29kZWMpOiBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjb2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMuT1BVUy5idWZmZXI7XG5cbiAgICAgIC8vIFRPRE8gKEFaKTogQWRkIGEgZHVtbXkgQUFDIHNpbGVudCBmcmFtZSB3aGVuIEFBQyBzdXBwb3J0IGlzIGFkZGVkXG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTogQXJyYXlCdWZmZXIge1xuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyhjb2RlYzogVmlkZW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpKSB7XG4gICAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2SDI2NElGcmFtZS5idWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA5LmJ1ZmZlcjtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoY29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUoY29kZWM6IFZpZGVvQ29kZWMpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMgPT09IFZpZGVvQ29kZWMuSDI2NCkgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0O1xuXG4gICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogVmlkZW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDoge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSgpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi8uLi8uLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFtcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwMywgNjYsIDE5MiwgNDIsIDIxOCwgNCwgNCwgMjMyLCA2NCwgMCwgMCwgMywgMCwgNjQsIDAsIDAsIDE1LCAzNSwgMTk4LCAxMiwgMTY4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTA0LCAyMDYsIDYwLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2LCAzLCAxNjcsIC4uLm5ldyBVaW50OEFycmF5KDE1MCkuZmlsbCgyNTUpLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDEsIDEzNiwgMTMyLCA2LCAxOTEsIDI1NSwgMjU1LCAxNSwgNjksIDAsIDEsIDg3LCAxNTksIC4uLm5ldyBVaW50OEFycmF5KDE1KS5maWxsKDM5KSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDEyOFxuXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2LCAzLCAyNTUsIDYxLCAuLi5uZXcgVWludDhBcnJheSgzMTYpLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNjUsIDE1NCwgMzIsIDI2LCAyNDAsIDE4LCA0OFxuXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIFRyYW5zZm9ybU1lc3NhZ2UsIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkLCBUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VSb3V0ZXM6IE1hcDxUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3Rvcih3b3JrZXI6IFdvcmtlcikge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSh3b3JrZXIpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUm91dGU8VD4obWVzc2FnZVR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgcm91dGVNZXNzYWdlOiAobWVzc2FnZTogVCkgPT4gdm9pZCk6IERpc3Bvc2FibGUge1xuICAgIHRoaXMuX21lc3NhZ2VSb3V0ZXMuc2V0KG1lc3NhZ2VUeXBlLCByb3V0ZU1lc3NhZ2UgYXMgPFQ+KG1lc3NhZ2U6IFQpID0+IHZvaWQpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlKCgpID0+IHRoaXMuX21lc3NhZ2VSb3V0ZXMuZGVsZXRlKG1lc3NhZ2VUeXBlKSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUod29ya2VyOiBXb3JrZXIpOiB2b2lkIHtcbiAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudDxUcmFuc2Zvcm1NZXNzYWdlPikgPT4ge1xuICAgICAgY29uc3Qgcm91dGVNZXNzYWdlRGF0YSA9IDxUPih7dHlwZSwgZGF0YX06IFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VSb3V0ZXMuZ2V0KHR5cGUpO1xuXG4gICAgICAgIGlmICghcm91dGVNZXNzYWdlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcm91dGVNZXNzYWdlKGRhdGEpO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuazpcbiAgICAgICAgY2FzZSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YTpcbiAgICAgICAgICByb3V0ZU1lc3NhZ2VEYXRhKG1lc3NhZ2UuZGF0YSk7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH0sIHtvbmNlOiBmYWxzZX0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fQlVJTERfVkVSU0lPTl9fOiBzdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlcnNpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlZmF1bHRWZXJzaW9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIHN0YXRpYyBnZXQgc2RrVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gX19CVUlMRF9WRVJTSU9OX187XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWZXJzaW9uO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2UgZnJvbSAnLi9UZWxlbWV0cnlTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi4vbG9nZ2VyL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVuYW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3k7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQ7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQ7XG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZSA9IG5ldyBUZWxlbWV0cnlTZXJ2aWNlKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UucHVzaChsb2dMZXZlbCwgbWVzc2FnZSwgY2F0ZWdvcnksIGRhdGUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTnVtYmVycyBmcm9tICcuLi9sYW5nL051bWJlcnMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSA4MTkyO1xuXG5pbnRlcmZhY2UgSUxvZ0l0ZW0ge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBfbG9nczogQXJyYXk8SUxvZ0l0ZW0+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG51bWJlck9mTG9nc1RvU2VuZCA9IDA7XG4gICAgbGV0IHNpemVPZkxvZ3NUb1NlbmQgPSAwO1xuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGdldEl0ZW1TaXplID0gKGl0ZW06IG51bWJlciB8IHN0cmluZykgPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHVyYXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkdXJhdGlvbiA9IDApIHtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICB9XG5cbiAgdG9Jc29TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiAnUDBTJztcbiAgICB9XG5cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gdGhpcy5fZHVyYXRpb24gPCAwO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gaXNOZWdhdGl2ZSA/IE1hdGguYWJzKHRoaXMuX2R1cmF0aW9uKSA6IHRoaXMuX2R1cmF0aW9uO1xuICAgIGxldCBvZmZzZXQgPSBNYXRoLmZsb29yKGR1cmF0aW9uKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBvZmZzZXQgJSAxMDAwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyAxMDAwKTtcblxuICAgIGNvbnN0IHNlY29uZHMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgbWludXRlcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBob3VycyA9IG9mZnNldCAlIDI0O1xuICAgIGNvbnN0IHBhcnRzID0gWydQVCddO1xuXG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy0nKTtcbiAgICB9XG5cbiAgICBpZiAoaG91cnMpIHtcbiAgICAgIHBhcnRzLnB1c2goaG91cnMgKyAnSCcpO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKG1pbnV0ZXMgKyAnTScpO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmRzIHx8IG1pbGxpc2Vjb25kcykge1xuICAgICAgcGFydHMucHVzaChTdHJpbmcoc2Vjb25kcykpO1xuXG4gICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIHBhcnRzLnB1c2goJy4nICsgdGhpcy5wYWRTdGFydChtaWxsaXNlY29uZHMudG9TdHJpbmcoKSwgMywgJzAnKSk7XG4gICAgICB9XG5cbiAgICAgIHBhcnRzLnB1c2goJ1MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cblxuICBwYWRTdGFydChpdGVtOiBzdHJpbmcsIHRhcmdldExlbmd0aDogbnVtYmVyLCBwYWRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoID4+IDA7XG4gICAgcGFkU3RyaW5nID0gU3RyaW5nKCh0eXBlb2YgcGFkU3RyaW5nICE9PSAndW5kZWZpbmVkJyA/IHBhZFN0cmluZyA6ICcgJykpO1xuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gdGFyZ2V0TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggLSBpdGVtLmxlbmd0aDtcblxuICAgIGlmICh0YXJnZXRMZW5ndGggPiBwYWRTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBwYWRTdHJpbmcgKz0gcGFkU3RyaW5nLnJlcGVhdCh0YXJnZXRMZW5ndGggLyBwYWRTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFkU3RyaW5nLnNsaWNlKDAsIHRhcmdldExlbmd0aCkgKyBpdGVtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGltZW5zaW9uIGltcGxlbWVudHMgSUNvbXBhcmFibGU8RGltZW5zaW9uPiB7XG4gIHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7XG4gIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyO1xuXG4gIHN0YXRpYyBnZXQgZW1wdHkoKTogRGltZW5zaW9uIHtcbiAgICByZXR1cm4gbmV3IERpbWVuc2lvbigwLCAwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBEaW1lbnNpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3RoZXIgJiYgdGhpcy53aWR0aCA9PT0gb3RoZXIud2lkdGggJiYgdGhpcy5oZWlnaHQgPT09IG90aGVyLmhlaWdodDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMud2lkdGh9eCR7dGhpcy5oZWlnaHR9YDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE5ldHdvcmtNb25pdG9yIGZyb20gJy4uL2RvbS9OZXR3b3JrTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOZXR3b3JrU3RhdGlzdGljcyB7XG4gIHJ0dD86IG51bWJlcjtcbiAgZWZmZWN0aXZlVHlwZT86IHN0cmluZztcbiAgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTZXNzaW9uVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtNb25pdG9yOiBOZXR3b3JrTW9uaXRvciA9IG5ldyBOZXR3b3JrTW9uaXRvcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2xhc3ROZXR3b3JrU3RhdGlzdGljczogSU5ldHdvcmtTdGF0aXN0aWNzID0ge307XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gbWV0cmljc1NlcnZpY2U7XG5cbiAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb25UZWxlbWV0cnkgRmFpbGVkOiBObyBhcHBsaWNhdGlvbiBtb25pdG9yIGluaXRpYWxpemVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fbmV0d29ya01vbml0b3IuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5ydHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtSVFRVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZWZmZWN0aXZlVHlwZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdGVuT25TdHJlYW1TZXR1cCgpOiBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbVNldHVwTGlzdGVuZXIodGhpcy5fcGFnZUxvYWRUaW1lKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENoYW5nZSA9IHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5nZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk7XG5cbiAgICBpZiAoIXRpbWVTaW5jZUxhc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IGlzRm9yZWdyb3VuZCA/IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZCA6IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZCxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VMYXN0Q2hhbmdlfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnQXBwbGljYXRpb24gaGFzIGdvbmUgaW50byB0aGUgWyVzXSBhZnRlciBbJXNdIG1zJyxcbiAgICAgIGlzRm9yZWdyb3VuZCA/ICdmb3JlZ3JvdW5kJyA6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlTGFzdENoYW5nZSkudG9Jc29TdHJpbmcoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrUlRUVXBkYXRlKG5ld1JUVDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRSdHQgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dCA9IG5ld1JUVDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBuZXdSVFR9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkUnR0ID8ge3VpbnQ2NDogb2xkUnR0fSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlc291cmNlOiAnbmF2aWdhdG9yJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIFJUVCBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3UlRULFxuICAgICAgb2xkUnR0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUobmV3TmV0d29ya1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkTmV0d29ya1R5cGUgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlID0gbmV3TmV0d29ya1R5cGU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld05ldHdvcmtUeXBlfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZE5ldHdvcmtUeXBlID8ge3N0cmluZzogb2xkTmV0d29ya1R5cGV9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZWZmZWN0aXZlIHR5cGUgaGFzIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdOZXR3b3JrVHlwZSxcbiAgICAgIG9sZE5ldHdvcmtUeXBlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKG5ld0NhcGFjaXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZENhcGFjaXR5ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtmbG9hdDogbmV3Q2FwYWNpdHl9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkQ2FwYWNpdHkgPyB7ZmxvYXQ6IG9sZENhcGFjaXR5fSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGRvd25saW5rIHRocm91Z2hwdXQgY2FwYWNpdHkgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld0NhcGFjaXR5LFxuICAgICAgb2xkQ2FwYWNpdHlcbiAgICApO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoZnVuY3Rpb24oKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcXG4vKioqKioqLyBcXHRcXFwidXNlIHN0cmljdFxcXCI7XFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBhc3NlcnRVbnJlYWNoYWJsZSAqL1xcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbmZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHgpIHtcXG4gIHRocm93IG5ldyBFcnJvcihcXFwiVW5leHBlY3RlZCB2YWx1ZSBbXFxcIi5jb25jYXQoeCwgXFxcIl0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRcXFwiKSk7XFxufVxcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKGFzc2VydFVucmVhY2hhYmxlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTsgfSxcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VUeXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZVR5cGU7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG52YXIgVHJhbnNmb3JtTWVzc2FnZVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VUeXBlKSB7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiRXJyb3JcXFwiXSA9IC0xXSA9IFxcXCJFcnJvclxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQWRkVHJhbnNmb3JtXFxcIl0gPSAwXSA9IFxcXCJBZGRUcmFuc2Zvcm1cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIl0gPSAxXSA9IFxcXCJDb25maWd1cmVQaXBlbGluZVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiTWV0YWRhdGFcXFwiXSA9IDJdID0gXFxcIk1ldGFkYXRhXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJDaHVua1xcXCJdID0gM10gPSBcXFwiQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIlBpcGVsaW5lQ29uZmlndXJlZFxcXCJdID0gNF0gPSBcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIjtcXG4gIHJldHVybiBUcmFuc2Zvcm1NZXNzYWdlVHlwZTtcXG59KHt9KTtcXG52YXIgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiXSA9IDBdID0gXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiXSA9IDFdID0gXFxcIkVuY29kZWRWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIl0gPSAyXSA9IFxcXCJFbmNvZGVkQXVkaW9DaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIl0gPSAzXSA9IFxcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiXSA9IDRdID0gXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTtcXG59KHt9KTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIFdvcmtlclRyYW5zZm9ybXM7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9mcmFtZVRpbWluZ0luZm9ybWF0aW9uICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvZnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50c1xcXCIpO1xcblxcblxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciBXb3JrZXJUcmFuc2Zvcm1zID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFdvcmtlclRyYW5zZm9ybXMoKSB7XFxuICAgICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKSh0aGlzLCBXb3JrZXJUcmFuc2Zvcm1zKTtcXG4gIH1cXG4gIHJldHVybiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19bXFxcImRlZmF1bHRcXFwiXSkoV29ya2VyVHJhbnNmb3JtcywgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkge1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XFxuICAgICAgICAgICgwLF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoY2h1bmspO1xcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rIHx8IG1lc3NhZ2UuZGF0YS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLlN1cnJvZ2F0ZVZpZGVvQ2h1bmspIHtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhO1xcbiAgICAgICAgdmFyIF9tZXNzYWdlRGF0YSRkYXRhID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YS50aW1lc3RhbXA7XFxuICAgICAgICB2YXIgY2h1bmtQZW5kaW5nRW5xdWV1ZSA9IGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZ2V0KHRpbWVzdGFtcCk7XFxuICAgICAgICBpZiAoIWNodW5rUGVuZGluZ0VucXVldWUpIHtcXG4gICAgICAgICAgY29uc29sZS53YXJuKCdbV29ya2VyVHJhbnNmb3Jtc10gU3Vycm9nYXRlIHZpZGVvIGNodW5rIG5vdCBmb3VuZCBmb3IgdGltZXN0YW1wJywgdGltZXN0YW1wKTtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY2h1bmtQZW5kaW5nRW5xdWV1ZS5kYXRhID0gc3Vycm9nYXRlO1xcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rUGVuZGluZ0VucXVldWUpO1xcbiAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcFtcXFwiZGVsZXRlXFxcIl0odGltZXN0YW1wKTtcXG4gICAgICB9O1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydChjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlci5iaW5kKG51bGwsIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIpLCB7XFxuICAgICAgICAgICAgb25jZTogZmFsc2VcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmspIHtcXG4gICAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5zZXQoY2h1bmsudGltZXN0YW1wLCBjaHVuayk7XFxuICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLFxcbiAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcXG4gICAgICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSksXFxuICAgICAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGVcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0cmFuc2ZlcjogW2NodW5rLmRhdGFdXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYyKSB7XFxuICAgICAgICB2YXIgbWVzc2FnZSA9IF9yZWYyLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlQXVkaW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEyID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEyLnN1cnJvZ2F0ZSxcXG4gICAgICAgICAgdGltZXN0YW1wID0gX21lc3NhZ2VEYXRhJGRhdGEyLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgYXVkaW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwW1xcXCJkZWxldGVcXFwiXSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5ICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuXFxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIociwgZSkgeyB2YXIgdCA9IFxcXCJ1bmRlZmluZWRcXFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXFxcIkBAaXRlcmF0b3JcXFwiXTsgaWYgKCF0KSB7IGlmIChBcnJheS5pc0FycmF5KHIpIHx8ICh0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpKSB8fCBlICYmIHIgJiYgXFxcIm51bWJlclxcXCIgPT0gdHlwZW9mIHIubGVuZ3RoKSB7IHQgJiYgKHIgPSB0KTsgdmFyIF9uID0gMCwgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgcmV0dXJuIF9uID49IHIubGVuZ3RoID8geyBkb25lOiAhMCB9IDogeyBkb25lOiAhMSwgdmFsdWU6IHJbX24rK10gfTsgfSwgZTogZnVuY3Rpb24gZShyKSB7IHRocm93IHI7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXFxcIik7IH0gdmFyIG8sIGEgPSAhMCwgdSA9ICExOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyB0ID0gdC5jYWxsKHIpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgciA9IHQubmV4dCgpOyByZXR1cm4gYSA9IHIuZG9uZSwgcjsgfSwgZTogZnVuY3Rpb24gZShyKSB7IHUgPSAhMCwgbyA9IHI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGEgfHwgbnVsbCA9PSB0W1xcXCJyZXR1cm5cXFwiXSB8fCB0W1xcXCJyZXR1cm5cXFwiXSgpOyB9IGZpbmFsbHkgeyBpZiAodSkgdGhyb3cgbzsgfSB9IH07IH1cXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkgeyBpZiAocikgeyBpZiAoXFxcInN0cmluZ1xcXCIgPT0gdHlwZW9mIHIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKTsgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTsgcmV0dXJuIFxcXCJPYmplY3RcXFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcXFwiTWFwXFxcIiA9PT0gdCB8fCBcXFwiU2V0XFxcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcXFwiQXJndW1lbnRzXFxcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwOyB9IH1cXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7IChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTsgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07IHJldHVybiBuOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxudmFyIEgyNjRfQ09OU1RBTlRTID0ge1xcbiAgTkFMX1VOSVRfVFlQRV9TRUk6IDYsXFxuICBOQUxfVU5JVF9IRUFERVJfU0laRTogMSxcXG4gIFNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORzogMSxcXG4gIEVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEU6IDB4MDMsXFxuICBTVEFSVF9DT0RFX1BSRUZJWF8zQjogWzB4MDAsIDB4MDAsIDB4MDFdLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfNEI6IFsweDAwLCAweDAwLCAweDAwLCAweDAxXVxcbn07XFxudmFyIEJJVFNUUkVBTV9DT05TVEFOVFMgPSB7XFxuICBNSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QOiAxMCxcXG4gIE1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUDogMTcsXFxuICBNSU5fQklUU19GT1JfVElNRV9PRkZTRVQ6IDI0XFxufTtcXG5mdW5jdGlvbiBmaW5kTmV4dE5hbFN0YXJ0KGRhdGEsIHBvc2l0aW9uKSB7XFxuICB2YXIgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xcbiAgZm9yICh2YXIgaSA9IHBvc2l0aW9uOyBpIDwgZGF0YUxlbmd0aCAtIDM7IGkrKykge1xcbiAgICBpZiAoZGF0YVtpXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAxXSA9PT0gMHgwMCkge1xcbiAgICAgIGlmIChkYXRhW2kgKyAyXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICAgIGlmIChpICsgMyA8IGRhdGFMZW5ndGggJiYgZGF0YVtpICsgMl0gPT09IDB4MDAgJiYgZGF0YVtpICsgM10gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgcmV0dXJuIC0xO1xcbn1cXG5mdW5jdGlvbiBleHRyYWN0U2VpUGF5bG9hZChkYXRhLCBzdGFydEluZGV4KSB7XFxuICB2YXIgaW5kZXggPSBzdGFydEluZGV4O1xcbiAgdmFyIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkVHlwZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcblxcbiAgLy8gUGFyc2UgcGF5bG9hZCBzaXplXFxuICBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFNpemUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG4gIHJldHVybiB7XFxuICAgIHR5cGU6IHBheWxvYWRUeXBlLFxcbiAgICBwYXlsb2FkOiBkYXRhLnN1YmFycmF5KGluZGV4LCBpbmRleCArIHBheWxvYWRTaXplKSxcXG4gICAgbGVuZ3RoOiBpbmRleCArIHBheWxvYWRTaXplIC0gc3RhcnRJbmRleFxcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVtb3ZlRW11bGF0aW9uUHJldmVudGlvbkJ5dGVzKGRhdGEpIHtcXG4gIHZhciByZXN1bHQgPSBbXTtcXG4gIHZhciB6ZXJvQ291bnQgPSAwO1xcbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGRhdGEpLFxcbiAgICBfc3RlcDtcXG4gIHRyeSB7XFxuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XFxuICAgICAgdmFyIF9ieXRlID0gX3N0ZXAudmFsdWU7XFxuICAgICAgaWYgKHplcm9Db3VudCA9PT0gMiAmJiBfYnl0ZSA9PT0gSDI2NF9DT05TVEFOVFMuRU1VTEFUSU9OX1BSRVZFTlRJT05fQllURSkge1xcbiAgICAgICAgemVyb0NvdW50ID0gMDsgLy8gUmVzZXQgYWZ0ZXIgZmluZGluZyBlbXVsYXRpb24gcHJldmVudGlvbiBieXRlLlxcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoX2J5dGUgPT09IDB4MDApIHtcXG4gICAgICAgICAgemVyb0NvdW50Kys7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB6ZXJvQ291bnQgPSAwO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmVzdWx0LnB1c2goX2J5dGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBjYXRjaCAoZXJyKSB7XFxuICAgIF9pdGVyYXRvci5lKGVycik7XFxuICB9IGZpbmFsbHkge1xcbiAgICBfaXRlcmF0b3IuZigpO1xcbiAgfVxcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XFxufVxcbmZ1bmN0aW9uIGNvbnZlcnRQaWNTdHJ1Y3RUb051bUNsb2NrVFMocGljU3RydWN0KSB7XFxuICBzd2l0Y2ggKHBpY1N0cnVjdCkge1xcbiAgICBjYXNlIDA6XFxuICAgIGNhc2UgMTpcXG4gICAgY2FzZSAyOlxcbiAgICAgIHJldHVybiAxO1xcbiAgICBjYXNlIDM6XFxuICAgIGNhc2UgNDpcXG4gICAgY2FzZSA3OlxcbiAgICAgIHJldHVybiAyO1xcbiAgICBjYXNlIDU6XFxuICAgIGNhc2UgNjpcXG4gICAgY2FzZSA4OlxcbiAgICAgIHJldHVybiAzO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAwO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBjcmVhdGVCaXRzdHJlYW1SZWFkZXIoYnVmZmVyKSB7XFxuICB2YXIgYml0T2Zmc2V0ID0gMDtcXG4gIGZ1bmN0aW9uIHJlYWRCaXRzKGJpdHNUb1JlYWQpIHtcXG4gICAgaWYgKGJpdE9mZnNldCArIGJpdHNUb1JlYWQgPiBidWZmZXIubGVuZ3RoICogOCkge1xcbiAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiQ2Fubm90IHJlYWQgW1xcXCIuY29uY2F0KGJpdHNUb1JlYWQsIFxcXCJdIGJpdHMgLSBvdXQgb2YgYm91bmRzXFxcIikpO1xcbiAgICB9XFxuICAgIHZhciB2YWx1ZSA9IDA7XFxuICAgIHZhciBiaXRzUmVtYWluaW5nID0gYml0c1RvUmVhZDtcXG4gICAgd2hpbGUgKGJpdHNSZW1haW5pbmcgPiAwKSB7XFxuICAgICAgdmFyIGJ5dGVPZmZzZXQgPSBNYXRoLmZsb29yKGJpdE9mZnNldCAvIDgpO1xcbiAgICAgIHZhciBiaXRJbkJ5dGUgPSBiaXRPZmZzZXQgJSA4O1xcbiAgICAgIHZhciBiaXRzTGVmdEluQnl0ZSA9IDggLSBiaXRJbkJ5dGU7XFxuICAgICAgdmFyIHJlYWROb3cgPSBNYXRoLm1pbihiaXRzUmVtYWluaW5nLCBiaXRzTGVmdEluQnl0ZSk7XFxuICAgICAgdmFyIG1hc2sgPSAoMSA8PCByZWFkTm93KSAtIDE7XFxuICAgICAgdmFyIGJ5dGVWYWwgPSBidWZmZXJbYnl0ZU9mZnNldF0gPj4gYml0c0xlZnRJbkJ5dGUgLSByZWFkTm93O1xcbiAgICAgIHZhciBiaXRzID0gYnl0ZVZhbCAmIG1hc2s7XFxuICAgICAgdmFsdWUgPSB2YWx1ZSA8PCByZWFkTm93IHwgYml0cztcXG4gICAgICBiaXRPZmZzZXQgKz0gcmVhZE5vdztcXG4gICAgICBiaXRzUmVtYWluaW5nIC09IHJlYWROb3c7XFxuICAgIH1cXG4gICAgcmV0dXJuIHZhbHVlO1xcbiAgfVxcbiAgZnVuY3Rpb24gc2tpcEJpdHMobikge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgbiA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3Qgc2tpcCBbXFxcIi5jb25jYXQobiwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgYml0T2Zmc2V0ICs9IG47XFxuICB9XFxuICBmdW5jdGlvbiBnZXRSZW1haW5pbmdCaXRzKCkge1xcbiAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCAqIDggLSBiaXRPZmZzZXQ7XFxuICB9XFxuICByZXR1cm4ge1xcbiAgICByZWFkQml0czogcmVhZEJpdHMsXFxuICAgIHNraXBCaXRzOiBza2lwQml0cyxcXG4gICAgZ2V0UmVtYWluaW5nQml0czogZ2V0UmVtYWluaW5nQml0c1xcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIHNlY29uZHNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuc2Vjb25kcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIG1pbnV0ZXNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMubWludXRlcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIGhvdXJzX2ZsYWcsIHdlIGFyZSBkb25lLlxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCA1KSB7XFxuICAgIHJldHVybiBmYWxzZTtcXG4gIH1cXG4gIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgcmV0dXJuIHRydWU7XFxufVxcbmZ1bmN0aW9uIHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKSB7XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IEJJVFNUUkVBTV9DT05TVEFOVFMuTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHZhciB0cyA9IHtcXG4gICAgY3RUeXBlOiByZWFkZXIucmVhZEJpdHMoMiksXFxuICAgIG51aXRGaWVsZEJhc2VkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjb3VudGluZ1R5cGU6IHJlYWRlci5yZWFkQml0cyg1KSxcXG4gICAgZnVsbFRpbWVzdGFtcEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgZGlzY29udGludWl0eUZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgY250RHJvcHBlZEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgbkZyYW1lczogcmVhZGVyLnJlYWRCaXRzKDgpXFxuICB9O1xcbiAgaWYgKHRzLmZ1bGxUaW1lc3RhbXBGbGFnKSB7XFxuICAgIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVApIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5ob3VycyA9IHJlYWRlci5yZWFkQml0cyg1KTtcXG4gIH0gZWxzZSB7XFxuICAgIGlmICghcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpKSB7XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfVElNRV9PRkZTRVQpIHtcXG4gICAgcmV0dXJuIG51bGw7XFxuICB9XFxuICB0cy50aW1lT2Zmc2V0ID0gcmVhZGVyLnJlYWRCaXRzKDI0KTtcXG4gIHJldHVybiB0cztcXG59XFxuZnVuY3Rpb24gcGFyc2VQaWN0dXJlVGltaW5nKGRhdGEsIGNvbmZpZykge1xcbiAgdmFyIHJlYWRlciA9IGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihyZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkpO1xcbiAgdmFyIHJlc3VsdCA9IHtcXG4gICAgcGljU3RydWN0OiB1bmRlZmluZWRcXG4gIH07XFxuICBpZiAoY29uZmlnLmNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnICYmIGNvbmZpZy5jcGJSZW1vdmFsRGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCAmJiBjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCkge1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSArIDEpO1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmRwYk91dHB1dERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICB9XFxuICBpZiAoY29uZmlnLnBpY1N0cnVjdFByZXNlbnRGbGFnKSB7XFxuICAgIHZhciBwaWNTdHJ1Y3QgPSByZWFkZXIucmVhZEJpdHMoNCk7XFxuICAgIHZhciBudW1DbG9ja1RTID0gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpO1xcbiAgICB2YXIgY2xvY2tUaW1lc3RhbXBzID0gW107XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2xvY2tUUzsgaSsrKSB7XFxuICAgICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxKSB7XFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgICAgdmFyIGNsb2NrVGltZXN0YW1wRmxhZyA9IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMTtcXG4gICAgICBpZiAoIWNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgY2xvY2tUaW1lc3RhbXBzLnB1c2goe1xcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcEZsYWc6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG4gICAgICB2YXIgdHMgPSBwYXJzZUNsb2NrVGltZXN0YW1wKHJlYWRlcik7XFxuICAgICAgaWYgKHRzKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogdHJ1ZSxcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXA6IHRzXFxuICAgICAgICB9KTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8gTm90IGVub3VnaCBiaXRzLCBzdG9wIHByb2Nlc3NpbmcgU0VJXFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcmVzdWx0LnBpY1N0cnVjdCA9IHtcXG4gICAgICBudW1DbG9ja1RTOiBudW1DbG9ja1RTLFxcbiAgICAgIGNsb2NrVGltZXN0YW1wczogY2xvY2tUaW1lc3RhbXBzXFxuICAgIH07XFxuICB9XFxuICByZXR1cm4gcmVzdWx0O1xcbn1cXG5mdW5jdGlvbiBkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKGNodW5rKSB7XFxuICB2YXIgcmVjZWl2ZVRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XFxuICB2YXIgY2h1bmtEYXRhID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSk7XFxuICB2YXIgY3VycmVudEluZGV4ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIDApO1xcbiAgd2hpbGUgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcXG4gICAgdmFyIG5leHROYWxTdGFydCA9IGZpbmROZXh0TmFsU3RhcnQoY2h1bmtEYXRhLCBjdXJyZW50SW5kZXggKyAxKTtcXG4gICAgdmFyIG5hbFVuaXRFbmQgPSBuZXh0TmFsU3RhcnQgPT09IC0xID8gY2h1bmtEYXRhLmxlbmd0aCA6IG5leHROYWxTdGFydDtcXG4gICAgdmFyIHN0YXJ0Q29kZUxlbmd0aCA9IGNodW5rRGF0YVtjdXJyZW50SW5kZXggKyAyXSA9PT0gMHgwMSA/IDMgOiA0O1xcbiAgICB2YXIgbmFsVW5pdEhlYWRlckluZGV4ID0gY3VycmVudEluZGV4ICsgc3RhcnRDb2RlTGVuZ3RoO1xcbiAgICB2YXIgbmFsVW5pdFR5cGUgPSBjaHVua0RhdGFbbmFsVW5pdEhlYWRlckluZGV4XSAmIDB4MWY7XFxuICAgIGlmIChuYWxVbml0VHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuTkFMX1VOSVRfVFlQRV9TRUkpIHtcXG4gICAgICB2YXIgc2VpSW5kZXggPSBuYWxVbml0SGVhZGVySW5kZXggKyBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9IRUFERVJfU0laRTtcXG4gICAgICB2YXIgbmFsVW5pdERhdGEgPSBjaHVua0RhdGEuc3ViYXJyYXkoc2VpSW5kZXgsIG5hbFVuaXRFbmQpO1xcbiAgICAgIHZhciBzZWlPZmZzZXQgPSAwO1xcblxcbiAgICAgIC8vIFByb2Nlc3MgU0VJIG1lc3NhZ2VzIHVudGlsIGVuZCBvZiBOQUwgdW5pdFxcbiAgICAgIHdoaWxlIChzZWlPZmZzZXQgPCBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgIC8vIFN0b3AgaWYgcmVtYWluaW5nIGRhdGEgaXMgdG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgU0VJIG1lc3NhZ2VcXG4gICAgICAgIGlmIChzZWlPZmZzZXQgKyAyID4gbmFsVW5pdERhdGEubGVuZ3RoKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHNlaVBheWxvYWQgPSBleHRyYWN0U2VpUGF5bG9hZChuYWxVbml0RGF0YSwgc2VpT2Zmc2V0KTtcXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLnR5cGUgPT09IEgyNjRfQ09OU1RBTlRTLlNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORykge1xcbiAgICAgICAgICB2YXIgX3BhcnNlZFBpY3R1cmVUaW1pbmckO1xcbiAgICAgICAgICB2YXIgcGFyc2VkUGljdHVyZVRpbWluZyA9IHBhcnNlUGljdHVyZVRpbWluZyhzZWlQYXlsb2FkLnBheWxvYWQsIHtcXG4gICAgICAgICAgICBjcGJEcGJEZWxheXNQcmVzZW50RmxhZzogZmFsc2UsXFxuICAgICAgICAgICAgcGljU3RydWN0UHJlc2VudEZsYWc6IHRydWVcXG4gICAgICAgICAgfSk7XFxuICAgICAgICAgIHZhciBmaXJzdENsb2NrVGltZXN0YW1wID0gKF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9IHBhcnNlZFBpY3R1cmVUaW1pbmcucGljU3RydWN0KSA9PT0gbnVsbCB8fCBfcGFyc2VkUGljdHVyZVRpbWluZyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9wYXJzZWRQaWN0dXJlVGltaW5nJC5jbG9ja1RpbWVzdGFtcHNbMF07XFxuICAgICAgICAgIGlmIChmaXJzdENsb2NrVGltZXN0YW1wICE9PSBudWxsICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IHZvaWQgMCAmJiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgICAgIHZhciBfZmlyc3RDbG9ja1RpbWVzdGFtcCQsIF9maXJzdENsb2NrVGltZXN0YW1wJDIsIF9maXJzdENsb2NrVGltZXN0YW1wJDMsIF9maXJzdENsb2NrVGltZXN0YW1wJDQ7XFxuICAgICAgICAgICAgdmFyIHJ0cFRpbWVzdGFtcCA9IGNodW5rLnRpbWVzdGFtcDtcXG4gICAgICAgICAgICB2YXIgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XFxuICAgICAgICAgICAgICB0aW1lY29kZTogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcCA/IHtcXG4gICAgICAgICAgICAgICAgaG91cnM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLmhvdXJzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJCA6IG51bGwsXFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQyID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5taW51dGVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgc2Vjb25kczogKF9maXJzdENsb2NrVGltZXN0YW1wJDMgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLnNlY29uZHMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDMgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDMgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBmcmFtZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5uRnJhbWVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0IDogbnVsbCxcXG4gICAgICAgICAgICAgICAgaXNGcmFtZURyb3A6IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuY250RHJvcHBlZEZsYWdcXG4gICAgICAgICAgICAgIH0gOiBudWxsLFxcbiAgICAgICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogcmVjZWl2ZVRpbWVzdGFtcFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcXG4gICAgICAgICAgICAgICAgZGF0YTogKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHt9LCBydHBUaW1lc3RhbXAsIHtcXG4gICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc2VpT2Zmc2V0ICs9IHNlaVBheWxvYWQubGVuZ3RoO1xcblxcbiAgICAgICAgLy8gU3RvcCBpZiBhbiBpbnZhbGlkIHBheWxvYWQgbGVuZ3RoIHdhcyBkZXRlY3RlZC5cXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gICAgY3VycmVudEluZGV4ID0gbmV4dE5hbFN0YXJ0O1xcbiAgfVxcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2FzeW5jVG9HZW5lcmF0b3I7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xcbiAgdHJ5IHtcXG4gICAgdmFyIGkgPSBuW2FdKGMpLFxcbiAgICAgIHUgPSBpLnZhbHVlO1xcbiAgfSBjYXRjaCAobikge1xcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xcbiAgfVxcbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xcbn1cXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XFxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xcbiAgICB2YXIgdCA9IHRoaXMsXFxuICAgICAgZSA9IGFyZ3VtZW50cztcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XFxuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwibmV4dFxcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJ0aHJvd1xcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBfbmV4dCh2b2lkIDApO1xcbiAgICB9KTtcXG4gIH07XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2NsYXNzQ2FsbENoZWNrOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcXG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXFxcIik7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2NyZWF0ZUNsYXNzOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XFxuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcXG4gICAgdmFyIG8gPSByW3RdO1xcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFxcXCJ2YWx1ZVxcXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICgwLF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoby5rZXkpLCBvKTtcXG4gIH1cXG59XFxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcXG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFxcXCJwcm90b3R5cGVcXFwiLCB7XFxuICAgIHdyaXRhYmxlOiAhMVxcbiAgfSksIGU7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2RlZmluZVByb3BlcnR5OyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xcbiAgcmV0dXJuIChyID0gKDAsX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XFxuICAgIHZhbHVlOiB0LFxcbiAgICBlbnVtZXJhYmxlOiAhMCxcXG4gICAgY29uZmlndXJhYmxlOiAhMCxcXG4gICAgd3JpdGFibGU6ICEwXFxuICB9KSA6IGVbcl0gPSB0LCBlO1xcbn1cXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIHRvUHJpbWl0aXZlOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XFxuICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gKDAsX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHQpIHx8ICF0KSByZXR1cm4gdDtcXG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFxcXCJkZWZhdWx0XFxcIik7XFxuICAgIGlmIChcXFwib2JqZWN0XFxcIiAhPSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoaSkpIHJldHVybiBpO1xcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlxcXCIpO1xcbiAgfVxcbiAgcmV0dXJuIChcXFwic3RyaW5nXFxcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyB0b1Byb3BlcnR5S2V5OyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJpbWl0aXZlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJpbWl0aXZlLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qc1xcXCIpO1xcblxcblxcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xcbiAgdmFyIGkgPSAoMCxfdG9QcmltaXRpdmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKSh0LCBcXFwic3RyaW5nXFxcIik7XFxuICByZXR1cm4gXFxcInN5bWJvbFxcXCIgPT0gKDAsX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKGkpID8gaSA6IGkgKyBcXFwiXFxcIjtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX3R5cGVvZjsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbmZ1bmN0aW9uIF90eXBlb2Yobykge1xcbiAgXFxcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXFxcIjtcXG5cXG4gIHJldHVybiBfdHlwZW9mID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIFxcXCJzeW1ib2xcXFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gdHlwZW9mIG87XFxuICB9IDogZnVuY3Rpb24gKG8pIHtcXG4gICAgcmV0dXJuIG8gJiYgXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXFxcInN5bWJvbFxcXCIgOiB0eXBlb2YgbztcXG4gIH0sIF90eXBlb2Yobyk7XFxufVxcblxcblxcbi8qKiovIH0pXFxuXFxuLyoqKioqKi8gXFx0fSk7XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvLyBUaGUgbW9kdWxlIGNhY2hlXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXFxuLyoqKioqKi8gXFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xcbi8qKioqKiovIFxcdFxcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxcbi8qKioqKiovIFxcdFxcdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xcbi8qKioqKiovIFxcdFxcdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xcbi8qKioqKiovIFxcdFxcdFxcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcXG4vKioqKioqLyBcXHRcXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXFxuLyoqKioqKi8gXFx0XFx0XFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHRleHBvcnRzOiB7fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0XFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0XFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcXG4vKioqKioqLyBcXHRcXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XFxuLyoqKioqKi8gXFx0fVxcbi8qKioqKiovIFxcdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKi8gXFx0Lyogd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovXFxuLyoqKioqKi8gXFx0IWZ1bmN0aW9uKCkge1xcbi8qKioqKiovIFxcdFxcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdH0oKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kICovXFxuLyoqKioqKi8gXFx0IWZ1bmN0aW9uKCkge1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH1cXG4vKioqKioqLyBcXHR9KCk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IHt9O1xcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2UhLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXIudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2sgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlICovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3JtcyAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiKTtcXG5cXG5cXG5cXG5cXG52YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgLyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL21haW4vcGFja2FnZXMvYmFiZWwtaGVscGVycy9MSUNFTlNFICovIHZhciBlLCB0LCByID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sIG4gPSByLml0ZXJhdG9yIHx8IFxcXCJAQGl0ZXJhdG9yXFxcIiwgbyA9IHIudG9TdHJpbmdUYWcgfHwgXFxcIkBAdG9TdHJpbmdUYWdcXFwiOyBmdW5jdGlvbiBpKHIsIG4sIG8sIGkpIHsgdmFyIGMgPSBuICYmIG4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gbiA6IEdlbmVyYXRvciwgdSA9IE9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpOyByZXR1cm4gX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiX2ludm9rZVxcXCIsIGZ1bmN0aW9uIChyLCBuLCBvKSB7IHZhciBpLCBjLCB1LCBmID0gMCwgcCA9IG8gfHwgW10sIHkgPSAhMSwgRyA9IHsgcDogMCwgbjogMCwgdjogZSwgYTogZCwgZjogZC5iaW5kKGUsIDQpLCBkOiBmdW5jdGlvbiBkKHQsIHIpIHsgcmV0dXJuIGkgPSB0LCBjID0gMCwgdSA9IGUsIEcubiA9IHIsIGE7IH0gfTsgZnVuY3Rpb24gZChyLCBuKSB7IGZvciAoYyA9IHIsIHUgPSBuLCB0ID0gMDsgIXkgJiYgZiAmJiAhbyAmJiB0IDwgcC5sZW5ndGg7IHQrKykgeyB2YXIgbywgaSA9IHBbdF0sIGQgPSBHLnAsIGwgPSBpWzJdOyByID4gMyA/IChvID0gbCA9PT0gbikgJiYgKHUgPSBpWyhjID0gaVs0XSkgPyA1IDogKGMgPSAzLCAzKV0sIGlbNF0gPSBpWzVdID0gZSkgOiBpWzBdIDw9IGQgJiYgKChvID0gciA8IDIgJiYgZCA8IGlbMV0pID8gKGMgPSAwLCBHLnYgPSBuLCBHLm4gPSBpWzFdKSA6IGQgPCBsICYmIChvID0gciA8IDMgfHwgaVswXSA+IG4gfHwgbiA+IGwpICYmIChpWzRdID0gciwgaVs1XSA9IG4sIEcubiA9IGwsIGMgPSAwKSk7IH0gaWYgKG8gfHwgciA+IDEpIHJldHVybiBhOyB0aHJvdyB5ID0gITAsIG47IH0gcmV0dXJuIGZ1bmN0aW9uIChvLCBwLCBsKSB7IGlmIChmID4gMSkgdGhyb3cgVHlwZUVycm9yKFxcXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXFxcIik7IGZvciAoeSAmJiAxID09PSBwICYmIGQocCwgbCksIGMgPSBwLCB1ID0gbDsgKHQgPSBjIDwgMiA/IGUgOiB1KSB8fCAheTspIHsgaSB8fCAoYyA/IGMgPCAzID8gKGMgPiAxICYmIChHLm4gPSAtMSksIGQoYywgdSkpIDogRy5uID0gdSA6IEcudiA9IHUpOyB0cnkgeyBpZiAoZiA9IDIsIGkpIHsgaWYgKGMgfHwgKG8gPSBcXFwibmV4dFxcXCIpLCB0ID0gaVtvXSkgeyBpZiAoISh0ID0gdC5jYWxsKGksIHUpKSkgdGhyb3cgVHlwZUVycm9yKFxcXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFxcXCIpOyBpZiAoIXQuZG9uZSkgcmV0dXJuIHQ7IHUgPSB0LnZhbHVlLCBjIDwgMiAmJiAoYyA9IDApOyB9IGVsc2UgMSA9PT0gYyAmJiAodCA9IGlbXFxcInJldHVyblxcXCJdKSAmJiB0LmNhbGwoaSksIGMgPCAyICYmICh1ID0gVHlwZUVycm9yKFxcXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcXFwiICsgbyArIFxcXCInIG1ldGhvZFxcXCIpLCBjID0gMSk7IGkgPSBlOyB9IGVsc2UgaWYgKCh0ID0gKHkgPSBHLm4gPCAwKSA/IHUgOiByLmNhbGwobiwgRykpICE9PSBhKSBicmVhazsgfSBjYXRjaCAodCkgeyBpID0gZSwgYyA9IDEsIHUgPSB0OyB9IGZpbmFsbHkgeyBmID0gMTsgfSB9IHJldHVybiB7IHZhbHVlOiB0LCBkb25lOiB5IH07IH07IH0ociwgbywgaSksICEwKSwgdTsgfSB2YXIgYSA9IHt9OyBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fSBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge30gdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgdmFyIGMgPSBbXVtuXSA/IHQodChbXVtuXSgpKSkgOiAoX3JlZ2VuZXJhdG9yRGVmaW5lMih0ID0ge30sIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCB0KSwgdSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGMpOyBmdW5jdGlvbiBmKGUpIHsgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAoZS5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSksIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh1KSwgZTsgfSByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcImNvbnN0cnVjdG9yXFxcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiwgX3JlZ2VuZXJhdG9yRGVmaW5lMihHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbywgXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbywgXFxcIkdlbmVyYXRvclxcXCIpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJ0b1N0cmluZ1xcXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFxcXCJbb2JqZWN0IEdlbmVyYXRvcl1cXFwiOyB9KSwgKF9yZWdlbmVyYXRvciA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgcmV0dXJuIHsgdzogaSwgbTogZiB9OyB9KSgpOyB9XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBuLCB0KSB7IHZhciBpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5OyB0cnkgeyBpKHt9LCBcXFwiXFxcIiwge30pOyB9IGNhdGNoIChlKSB7IGkgPSAwOyB9IF9yZWdlbmVyYXRvckRlZmluZTIgPSBmdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUoZSwgciwgbiwgdCkgeyBmdW5jdGlvbiBvKHIsIG4pIHsgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5faW52b2tlKHIsIG4sIGUpOyB9KTsgfSByID8gaSA/IGkoZSwgciwgeyB2YWx1ZTogbiwgZW51bWVyYWJsZTogIXQsIGNvbmZpZ3VyYWJsZTogIXQsIHdyaXRhYmxlOiAhdCB9KSA6IGVbcl0gPSBuIDogKG8oXFxcIm5leHRcXFwiLCAwKSwgbyhcXFwidGhyb3dcXFwiLCAxKSwgbyhcXFwicmV0dXJuXFxcIiwgMikpOyB9LCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxuXFxuXFxudmFyIHdvcmtlciA9IHNlbGY7XFxuLy8gVGhpcyBpcyBob3cgdGhlIGRvY3VtZW50YXRpb24gaW5zdHJ1Y3RzIHRvIGRvIGl0IC0gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvd29ya2VyLWxvYWRlclxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG52YXIgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xcbiAgZnVuY3Rpb24gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIoKSB7XFxuICAgICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKSh0aGlzLCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcik7XFxuICB9XFxuICByZXR1cm4gKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJoYW5kbGVBZGRUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVHJhbnNmb3JtKHR5cGUpIHtcXG4gICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkKSB7XFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBQaXBlbGluZSBpcyBsb2NrZWQuIEEgdHJhbnNmb3JtIGNhbm5vdCBiZSBhZGRlZCBvbmNlIHRoZSBwaXBlbGluZSBoYXMgYmVlbiBjb25maWd1cmVkJyk7XFxuICAgICAgfVxcbiAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgY2FzZSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC12aWRlbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC1hdWRpbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Bhc3MtdGhyb3VnaCc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJFcnJvcjogVW5rbm93biB0cmFuc2Zvcm0gdHlwZSBbXFxcIi5jb25jYXQodHlwZSwgXFxcIl1cXFwiKSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNvbmZpZ3VyZVBpcGVsaW5lXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcXG4gICAgICB2YXIgX2NvbmZpZ3VyZVBpcGVsaW5lID0gKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoLyojX19QVVJFX18qL19yZWdlbmVyYXRvcigpLm0oZnVuY3Rpb24gX2NhbGxlZShzb3VyY2UsIHNpbmspIHtcXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dCkge1xcbiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5uKSB7XFxuICAgICAgICAgICAgY2FzZSAwOlxcbiAgICAgICAgICAgICAgaWYgKHNvdXJjZSAmJiBzaW5rKSB7XFxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm4gPSAxO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IENvbmZpZ3VyYXRpb24gb2YgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUgcmVxdWlyZXMgYm90aCBhIHJlYWRiYWxlIHNvdXJjZSBhbmQgd3JpdGFibGUgc2luaycpO1xcbiAgICAgICAgICAgIGNhc2UgMTpcXG4gICAgICAgICAgICAgIGlmIChUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5sZW5ndGggPT09IDApIHtcXG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaCgpO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDI7XFxuICAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucmVkdWNlUmlnaHQoZnVuY3Rpb24gKHBpcGVsaW5lLCB0cmFuc2Zvcm0pIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpcGVsaW5lLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSk7XFxuICAgICAgICAgICAgICB9LCBzb3VyY2UpLnBpcGVUbyhzaW5rKTtcXG4gICAgICAgICAgICBjYXNlIDI6XFxuICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5faXNQaXBlbGluZUNvbmZpZ3VyZWQgPSB0cnVlO1xcbiAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCxcXG4gICAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGNhc2UgMzpcXG4gICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hKDIpO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9LCBfY2FsbGVlKTtcXG4gICAgICB9KSk7XFxuICAgICAgZnVuY3Rpb24gY29uZmlndXJlUGlwZWxpbmUoX3gsIF94Mikge1xcbiAgICAgICAgcmV0dXJuIF9jb25maWd1cmVQaXBlbGluZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gY29uZmlndXJlUGlwZWxpbmU7XFxuICAgIH0oKVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJoYW5kbGVNZXNzYWdlXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoX3JlZikge1xcbiAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgIHZhciB0eXBlID0gbWVzc2FnZS50eXBlO1xcbiAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVBZGRUcmFuc2Zvcm0obWVzc2FnZS5kYXRhKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5Db25maWd1cmVQaXBlbGluZTpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuY29uZmlndXJlUGlwZWxpbmUobWVzc2FnZS5kYXRhLnNvdXJjZSwgbWVzc2FnZS5kYXRhLnNpbmspO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhOlxcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rOlxcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICgwLF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19bXFxcImRlZmF1bHRcXFwiXSkodHlwZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XSk7XFxufSgpO1xcbl9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl90cmFuc2Zvcm1zXFxcIiwgW10pO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl9pc1BpcGVsaW5lQ29uZmlndXJlZFxcXCIsIGZhbHNlKTtcXG4oMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIFxcXCJfd29ya2VyTmFtZVxcXCIsIHZvaWQgMCk7XFxuKGZ1bmN0aW9uICgpIHtcXG4gIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XFxuICAgIHJldHVybiBjb25zb2xlLmVycm9yKCdbVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJdIEVycm9yOiBbJXNdJywgZXJyb3IpO1xcbiAgfTtcXG4gIHdvcmtlci5vbm1lc3NhZ2UgPSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuaGFuZGxlTWVzc2FnZS5iaW5kKF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcik7XFxuICBpZiAod29ya2VyLlJUQ1RyYW5zZm9ybUV2ZW50KSB7XFxuICAgIHdvcmtlci5vbnJ0Y3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChfcmVmMikge1xcbiAgICAgIHZhciB0cmFuc2Zvcm1lciA9IF9yZWYyLnRyYW5zZm9ybWVyO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fd29ya2VyTmFtZSA9IHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZTtcXG4gICAgICB2YXIgc291cmNlID0gdHJhbnNmb3JtZXIucmVhZGFibGU7XFxuICAgICAgdmFyIHNpbmsgPSB0cmFuc2Zvcm1lci53cml0YWJsZTtcXG4gICAgICBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuY29uZmlndXJlUGlwZWxpbmUoc291cmNlLCBzaW5rKTtcXG4gICAgfTtcXG4gIH1cXG59KSgpO1xcbi8qIHVudXNlZCBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBfX1dFQlBBQ0tfREVGQVVMVF9FWFBPUlRfXyA9IChudWxsKTtcXG4vKioqKioqLyB9KSgpXFxuO1xcblwiLCBcIldvcmtlclwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmLCBuby11c2UtYmVmb3JlLWRlZmluZSwgbmV3LWNhcCAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGVudCwgd29ya2VyQ29uc3RydWN0b3IsIHdvcmtlck9wdGlvbnMsIHVybCkge1xuICB2YXIgZ2xvYmFsU2NvcGUgPSBzZWxmIHx8IHdpbmRvdztcblxuICB0cnkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgYmxvYjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTmV3IEFQSVxuICAgICAgICBibG9iID0gbmV3IGdsb2JhbFNjb3BlLkJsb2IoW2NvbnRlbnRdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQmxvYkJ1aWxkZXIgPSBEZXByZWNhdGVkLCBidXQgd2lkZWx5IGltcGxlbWVudGVkXG4gICAgICAgIHZhciBCbG9iQnVpbGRlciA9IGdsb2JhbFNjb3BlLkJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLldlYktpdEJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1vekJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1TQmxvYkJ1aWxkZXI7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYkJ1aWxkZXIoKTtcbiAgICAgICAgYmxvYi5hcHBlbmQoY29udGVudCk7XG4gICAgICAgIGJsb2IgPSBibG9iLmdldEJsb2IoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIFVSTCA9IGdsb2JhbFNjb3BlLlVSTCB8fCBnbG9iYWxTY29wZS53ZWJraXRVUkw7XG4gICAgICB2YXIgb2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKG9iamVjdFVSTCwgd29ya2VyT3B0aW9ucyk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVSTCk7XG4gICAgICByZXR1cm4gd29ya2VyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0LFwiLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoY29udGVudCkpLCB3b3JrZXJPcHRpb25zKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJJbmxpbmUgd29ya2VyIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0odXJsLCB3b3JrZXJPcHRpb25zKTtcbiAgfVxufTsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxuZXhwb3J0IHsgX2FycmF5TGlrZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhIb2xlcyBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aG91dEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxuZXhwb3J0IHsgX2FzeW5jVG9HZW5lcmF0b3IgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbmV4cG9ydCB7IF9jbGFzc0NhbGxDaGVjayBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbmV4cG9ydCB7IF9jcmVhdGVDbGFzcyBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbmV4cG9ydCB7IF9kZWZpbmVQcm9wZXJ0eSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbmV4cG9ydCB7IF9nZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfaW5oZXJpdHMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheUxpbWl0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlUmVzdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVNwcmVhZCBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgbyA9IG5bcl0sIHQuaW5kZXhPZihvKSA+PSAwIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmRleE9mKG4pID49IDApIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IGFzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIjtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxuZXhwb3J0IHsgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfc2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbmV4cG9ydCB7IF9zbGljZWRUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuZXhwb3J0IHsgX3RvQ29uc3VtYWJsZUFycmF5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5leHBvcnQgeyB0b1ByaW1pdGl2ZSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgdG9QcmltaXRpdmUgZnJvbSBcIi4vdG9QcmltaXRpdmUuanNcIjtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxuZXhwb3J0IHsgdG9Qcm9wZXJ0eUtleSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxuZXhwb3J0IHsgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbnZhciBnID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKSB8fFxuICB7fVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZyAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZyAmJlxuICAgICdCbG9iJyBpbiBnICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdIZWFkZXJzIGNvbnN0cnVjdG9yOiBleHBlY3RlZCBuYW1lL3ZhbHVlIHBhaXIgdG8gYmUgbGVuZ3RoIDIsIGZvdW5kJyArIGhlYWRlci5sZW5ndGgpXG4gICAgICB9XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5fbm9Cb2R5KSByZXR1cm5cbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICB2YXIgbWF0Y2ggPSAvY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKGJsb2IudHlwZSlcbiAgdmFyIGVuY29kaW5nID0gbWF0Y2ggPyBtYXRjaFsxXSA6ICd1dGYtOCdcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fbm9Cb2R5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgYXMgQXJyYXlCdWZmZXInKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydDT05ORUNUJywgJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BPU1QnLCAnUFVUJywgJ1RSQUNFJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWwgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ0Fib3J0Q29udHJvbGxlcicgaW4gZykge1xuICAgICAgdmFyIGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICByZXR1cm4gY3RybC5zaWduYWw7XG4gICAgfVxuICB9KCkpO1xuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdSZXNwb25zZSAnICsgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgaWYgKHRoaXMuc3RhdHVzIDwgMjAwIHx8IHRoaXMuc3RhdHVzID4gNTk5KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXNwb25zZSc6IFRoZSBzdGF0dXMgcHJvdmlkZWQgKDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIFsyMDAsIDU5OV0uXCIpXG4gIH1cbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLm9rID0gZmFsc2VcbiAgcmVzcG9uc2Uuc3RhdHVzID0gMFxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGcuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICAvLyBUaGlzIGNoZWNrIGlmIHNwZWNpZmljYWxseSBmb3Igd2hlbiBhIHVzZXIgZmV0Y2hlcyBhIGZpbGUgbG9jYWxseSBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICAgICAgLy8gT25seSBpZiB0aGUgc3RhdHVzIGlzIG91dCBvZiBhIG5vcm1hbCByYW5nZVxuICAgICAgaWYgKHJlcXVlc3QudXJsLmluZGV4T2YoJ2ZpbGU6Ly8nKSA9PT0gMCAmJiAoeGhyLnN0YXR1cyA8IDIwMCB8fCB4aHIuc3RhdHVzID4gNTk5KSkge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IDIwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0geGhyLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgdGltZWQgb3V0JykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGcubG9jYXRpb24uaHJlZiA/IGcubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXJcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyB8fCAoZy5IZWFkZXJzICYmIGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIGcuSGVhZGVycykpKSB7XG4gICAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIG5hbWVzLnB1c2gobm9ybWFsaXplTmFtZShuYW1lKSlcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAobmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnLmZldGNoKSB7XG4gIGcuZmV0Y2ggPSBmZXRjaFxuICBnLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGcuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZy5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBDaGFubmVscyBmcm9tICcuL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIENoYW5uZWxzLFxuICBDaGFubmVsU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJiYWNrZ3JvdW5kRW50cnlUaW1lIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImlzTm93Rm9yZWdyb3VuZCIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsInVuZGVmaW5lZCIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsIlVSTFNlYXJjaFBhcmFtcyIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwidXJsIiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIl9jb250ZXh0IiwiYXBwZW5kIiwicmVjb3JkcyIsIm1ldGhvZCIsImJvZHkiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiZGVmYXVsdFRyYWNrS2luZHMiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJ0cmFja0tpbmRzIiwiZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiY29uZmlndXJhdGlvbiIsIl9hcmdzMyIsIl9jb250ZXh0MyIsIkRpc2FibGVkIiwiaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQiLCJFbmFibGVkIiwiY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdXBwb3J0c0FkZFRyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlcnMiLCJ2aWRlb1RyYW5zY2VpdmVycyIsIm9wdGlvbnMiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl90NiIsImFkZFRyYW5zY2VpdmVyIiwiY3JlYXRlT2ZmZXIiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0cmFja3NLaW5kcyIsImNvdW50VHJhY2tLaW5kcyIsInRyYWNrS2luZENvdW50IiwiYXVkaW8iLCJ2aWRlbyIsImNvdW50ZWRUcmFja0tpbmRzIiwiY291bnRlZERlZmF1bHRUcmFja0tpbmRzIiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiIsIlJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwibWVkaWFTdHJlYW0iLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiaXNGb3JlZ3JvdW5kIiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfdHJhY2tzVG9Nb25pdG9yIiwiZ2V0VHJhY2tzIiwibWFwIiwidHJhY2siLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24yIiwiZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJzZHAiLCJwYXJzZWRTRFAiLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayIsImZvcmVncm91bmQiLCJfaXNNb25pdG9yUnVubmluZyIsIl9tb25pdG9yR2VuZXJhdGlvbiIsIl91cGRhdGVUaW1lb3V0IiwidXBkYXRlU3RhdGlzdGljIiwiX3J0Y1N0YXRpc3RpYyIsIl91cGRhdGVTdGF0aXN0aWMiLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJnZW5lcmF0aW9uIiwidGltZW91dEhhbmRsZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJzdGF0c1Byb21pc2UiLCJ0aW1lb3V0UHJvbWlzZSIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAiLCJnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkIiwidXBkYXRlU3RhdGlzdGljTGVnYWN5IiwiaWQiLCJnZXRTdGF0cyIsInJlc29sdmUiLCJyYWNlIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDIiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQzIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ2IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNyIsImJ5dGVzIiwiYnl0ZXNSZWNlaXZlZCIsInByZXZpb3VzQnl0ZXNSZWNlaXZlZCIsImJ5dGVzRGVsdGEiLCJ0aW1lRGVsdGEiLCJiaXRyYXRlIiwic3NyYyIsInBhY2tldHNMb3N0IiwicGFja2V0c1JlY2VpdmVkIiwiZ2V0Q29kZWNCeVR5cGUiLCJmcmFtZXNEZWNvZGVkIiwiZnBzIiwiX3VwZGF0ZVN0YXRpc3RpY0xlZ2FjeSIsIl90aGlzMyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjQiLCJnZXRTdGF0c0xlZ2FjeSIsInJlc3VsdCIsIm5hbWVzIiwic3RhdCIsIl90aGlzMyRfcnRjU3RhdGlzdGljJCIsIl90aGlzMyRfcnRjU3RhdGlzdGljJDIiLCJfc2RwIiwic2RwU3BsaXRCeUxpbmVzIiwic2RwU3BsaXRCeVRyYWNrcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2lzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1RyYWNrQnlUeXBlRW5hYmxlZCIsIl9pc1ZpZGVvVHJhY2tFbmFibGVkIiwic2RwU2VjdGlvbkZvclR5cGUiLCJmaW5kIiwic2RwVHJhY2siLCJfc2RwU3BsaXRCeUxpbmVzJGZpbmQiLCJydG1hcCIsInNkcExpbmUiLCJ1c2VkQ29kZWNMaW5lIiwidXNlZENvZGVjIiwiY29kZWNOYW1lIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb24iLCJjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIsImNvbm5lY3Rpb25TdGF0ZSIsImljZUNvbm5lY3Rpb25TdGF0ZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjUiLCJnZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNiIsInNldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb243IiwiZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQiLCJnZXRUcmFuc2NlaXZlcnMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb244IiwiX2NyZWF0ZU9mZmVyIiwicHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQiLCJyZWplY3QiLCJfY3JlYXRlQW5zd2VyIiwiY3JlYXRlQW5zd2VyIiwiX3gyIiwiX3NldExvY2FsRGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldExvY2FsRGVzY3JpcHRpb24iLCJfeDMiLCJfc2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlNCIsIl9kZXNjcmlwdGlvbiRzZHAiLCJoYXNDcnlwdG8iLCJfY29udGV4dDQiLCJzZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94NCIsImdldFNlbmRlcnMiLCJnZXRSZWNlaXZlcnMiLCJzZWxlY3RvciIsImFkZFN0cmVhbSIsIl90aGlzNCIsImFkZFRyYWNrIiwib250cmFjayIsImhhbmRsZXIiLCJvbmljZWNhbmRpZGF0ZSIsIm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwib25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJjbG9zZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjkiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlIiwic3ViamVjdCIsIl9zdWJqZWN0IiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsIl92YWx1ZSIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiX2kiLCJfYXJyIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9HbG9iYWxTY29wZSRnZXRJbnN0YSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwib25Mb2FkIiwiX2luaXRpYWxpemVkIiwiYWRkV2luZG93RXZlbnRMaXN0ZW5lciIsImluaXQiLCJvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUiLCJwZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJjb25zb2xlTG9nZ2luZ0xldmVsIiwiY29uc29sZUFwcGVuZGVyIiwiYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwid2ViUGxheWVyTG9hZGVyIiwic2hha2FQbGF5ZXJMb2FkZXIiLCJobHNKc0xvYWRlciIsIl90aGlzJF9hcHBsaWNhdGlvbkFjdCIsIl9TREsiLCJzZWdtZW50cyIsInByb3RvY29sIiwidW5zaGlmdCIsImVuZHNXaXRoIiwiam9pbiIsIkJpdHJhdGVTdGF0ZSIsIkJpdHJhdGVNb2RlIiwiRGltZW5zaW9uIiwiQ2hhbm5lbFN0YXRlIiwiVmlkZW9UZWxlbWV0cnkiLCJTZXNzaW9uVGVsZW1ldHJ5IiwiVG9rZW5Db250ZXh0IiwiQ2hhbm5lbENvbnRleHQiLCJFbmNvZGVkU3RyZWFtU2luayIsIlN0cmVhbVRyYWNrVHJhbnNmb3JtIiwiU3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsIlN0YXRlQ29udGV4dCIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwiU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkiLCJEaXNjb3ZlcnkiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmb3JlZ3JvdW5kUmVzdGFydFJlYXNvbkJhY2tncm91bmRUaW1lb3V0IiwiZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHkiLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsImJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0cmVhbURlbGV0aW9uVGhyZXNob2xkSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwib25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5RXhpc3RzIiwiZXhpc3RzIiwiX3JlYWRPbmx5QXV0b011dGVkIiwiYXV0b011dGVkIiwiX3JlYWRPbmx5QXV0b1BhdXNlZCIsImF1dG9QYXVzZWQiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwidG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQbGF5aW5nIiwicGxheWluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlUYXJnZXRMYWciLCJfcmVhZE9ubHlMYWciLCJsYWciLCJfcmVhZE9ubHlCaXRyYXRlTGltaXQiLCJiaXRyYXRlTGltaXQiLCJfcmVhZE9ubHlSZXNvbHV0aW9uIiwicmVzb2x1dGlvbiIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsImZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiZW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJzdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsImNoYW5uZWxEaXNwb3NhYmxlcyIsIl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIiLCJoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCIsIl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsImNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkIiwiaXNFbmFibGVkIiwiX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVyRGlzcG9zYWJsZXMiLCJ2aWRlb1RlbGVtZXRyeSIsImRhdGFzZXQiLCJzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lIiwic2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nIiwiU3RvcHBlZCIsInJlc3RhcnRBZnRlclN0b3AiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQbGF5aW5nIiwib25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzIiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiY2hhbm5lbEluaXRpYWxpemF0aW9uIiwiZ2V0VGltZSIsImxpbWl0Qml0cmF0ZSIsIktlZXAiLCJOb3JtYWwiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsInN0YXJ0IiwiYXV0b21hdGljUmV0cnlPbkZhaWx1cmUiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsImxhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJzaG91bGRGb3JjZVJlc3RhcnQiLCJpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtIiwiUmVjb25uZWN0aW5nIiwicmVzdGFydE9uRm9yZWdyb3VuZCIsImlzUmV0cnlhYmxlU3RhdGUiLCJfc3RyZWFtU3Vic2NyaWJlciIsImlzU3Vic2NyaWJlckhlYWx0aHkiLCJpc0hlYWx0aHkiLCJpc1N0YXJ0aW5nIiwiaWdub3JlZFN0YXJ0IiwicGF1c2UiLCJzcmNPYmplY3QiLCJJbml0aWFsaXppbmciLCJ3aWR0aCIsInZpZGVvV2lkdGgiLCJoZWlnaHQiLCJ2aWRlb0hlaWdodCIsImVtcHR5IiwiZGlzcG9zYWJsZXMiLCJzZXRCaXRyYXRlTGltaXQiLCJjbGVhckJpdHJhdGVMaW1pdCIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJSZXNldCIsInVwZGF0ZVRhcmdldExhZyIsIl9zdG9wIiwicmVhc29uIiwicHJvY2Vzc1N0b3AiLCJzdG9wIiwiY2xlYW5VcFJlc291cmNlcyIsIl9yZXN1bWUiLCJwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsInJlc3VtZSIsIm11dGUiLCJtdXRlZCIsInVubXV0ZSIsIl9kaXNwb3NlIiwiaXNEaXNwb3NlZCIsImdldFVyaSIsIl9zdGFydCIsInByb2Nlc3NTdGFydCIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiUmVjb3ZlcmluZyIsIlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIkNsaWVudFN0YXJ0RXJyb3IiLCJVbmF1dGhvcml6ZWQiLCJHZW9SZXN0cmljdGVkIiwiR2VvQmxvY2tlZCIsIlBhdXNlZCIsIlN0YXJ0aW5nIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiQ29uZmlndXJhdGlvbkVycm9yIiwiaXNTdHJlYW1IZWFsdGh5IiwiX3Byb2Nlc3NTdGFydCIsIl9jYWxsZWU1IiwiX3RoaXM1IiwiaXNSZWNvdmVyeSIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJ2YWxpZCIsInZhbGlkYXRpb25SZXN1bHQiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0yIiwiX3ZhbGlkIiwiX3ZhbGlkYXRpb25SZXN1bHQiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEiLCJfdmFsaWQyIiwiX3ZhbGlkYXRpb25SZXN1bHQyIiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhMiIsIl92YWxpZDMiLCJfdmFsaWRhdGlvblJlc3VsdDMiLCJoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayIsImhhc0VuY29kZWRTdHJlYW1TaW5rIiwiaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrIiwiX2NvbnRleHQ1IiwidmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luayIsImlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsInRpbWVvdXRJZCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJnZXRSZXRyeUludGVydmFsIiwiX3Jlc3RhcnRBZnRlclN0b3AiLCJfY2FsbGVlNiIsIl9jb250ZXh0NiIsIl9wbGF5IiwiX2NhbGxlZTciLCJfY29udGV4dDciLCJwbGF5IiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsIl90aGlzNiIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJkZXN0cm95U3RyZWFtIiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsIl90aGlzNyIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5IiwiY2FwYWJpbGl0eSIsInNob3VsZEV4dHJhY3RUaW1lY29kZSIsInNob3VsZEV4dHJhY3RUaW1lc3RhbXBzIiwiaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCIsIm9wdGlvbiIsInRyaW0iLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzOCIsInBsYXlQcm9taXNlIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsIm9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3MiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiX29wdGlvbnMkb25SZWFsVGltZVN1IiwiX29wdGlvbnMkb25SZWFsVGltZVN1MiIsInJ0Y0F1ZGlvU3RhdGlzdGljIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzIiwiYXVkaW9UcmFjayIsIm1lZGlhU3RyZWFtVHJhY2siLCJyZWNlaXZlciIsIm1pZCIsInRyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMiLCJ2aWRlb1RyYWNrIiwiQXVkaW9Db2RlYyIsIkF1ZGlvQ29kZWNNYXBwaW5nIiwiY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlIiwiT1BVUyIsIkFBQyIsImNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWNUeXBlIiwiYXVkaW9Db2RlY1N0cmluZyIsInRvVXBwZXJDYXNlIiwiVmlkZW9Db2RlYyIsIlZpZGVvQ29kZWNNYXBwaW5nIiwiY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlIiwiSDI2NCIsIlZQOCIsIlZQOSIsImNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyIsInZpZGVvQ29kZWNUeXBlIiwidmlkZW9Db2RlY1N0cmluZyIsIlVpbnQ4QXJyYXkiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJvayIsInRleHQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJhcGlWZXJzaW9uIiwiX3RpbWVvdXQiLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwiZmluaXNoZWQiLCJidWlsZFBpbmdVcmwiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiaHR0cFJlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwiYm9keVdpdGhPZmZlciIsImJvZHlXaXRob3V0T2ZmZXIiLCJtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwicHVibGlzaCIsIl94NSIsIl94NiIsIl94NyIsInNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJzaGFyZWRTZWNyZXQiLCJtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl94MTYiLCJfeDE3IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzZW5kQmVhY29uIiwiX3gxOCIsIl94MTkiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsIm90aGVyUHJvcGVydGllcyIsImpzb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfb2JqZWN0U3ByZWFkIiwiY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uIiwiX3gyMCIsIl94MjEiLCJfY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwiX2NhbGxlZTAiLCJwdWJsaXNoUmVzcG9uc2UiLCJfY29udGV4dDAiLCJfeDIyIiwiX3gyMyIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJfeDI0IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9jYWxsZWUxMCIsIl9jb250ZXh0MTAiLCJfeDI1IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jYWxsZWUxMSIsIl9jb250ZXh0MTEiLCJfeDI2IiwiVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlIiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIiLCJjb250ZXh0IiwiTWFwIiwiY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsInNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSIsInRyYWNrSWQiLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJpc0VuYWJsZWRTdWJqZWN0IiwicmVnaXN0ZXJSb3V0ZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UiLCJfdHJhbnNmb3JtTmFtZSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInJ0cFRpbWVzdGFtcCIsIm1ldGFkYXRhIiwicnRwVGltZXN0YW1wTnVtYmVyIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luMiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJ0aW1lY29kZSIsInJlY2VpdmVUaW1lc3RhbXAiLCJzb3VyY2VUaW1lc3RhbXAiLCJpbmdlc3RUaW1lc3RhbXAiLCJlbmNvZGVUaW1lc3RhbXAiLCJ0cmFuc2NvZGVUaW1lc3RhbXAiLCJwbGF5YmFja1N0YXRlIiwiX2N1cnJlbnRQbGF5YmFja1N0YXRlIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAiLCJ2aWRlb0VsZW1lbnRTdWJqZWN0IiwiY2xlYXIiLCJfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMiLCJzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnMiLCJoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfYXJtVmlkZW9GcmFtZUNhbGxiYWNrIiwidGltZXN0YW1wc1RvRGVsZXRlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJfc3RlcCR2YWx1ZSIsImZyYW1lVGltaW5nIiwicmVuZGVyVGltZXN0YW1wIiwicGVyZm9ybWFuY2UiLCJ0aW1lT3JpZ2luIiwiZXJyIiwiX2kyIiwiX3RpbWVzdGFtcHNUb0RlbGV0ZSIsIm9uUGxheWluZyIsIm9uUGF1c2UiLCJvblN0YWxsZWQiLCJvbldhaXRpbmciLCJvbkVuZGVkIiwib25FcnJvciIsIl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkIiwiY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkluc2VydGFibGVTdHJlYW1zIiwiVmlkZW9GcmFtZURldGVjdG9yIiwiRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwiZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCIsIlJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlciIsImNoYW5uZWxDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0Iiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwicmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJhbGwiLCJfcmVmMyIsIl9yZWYzJCIsInN1YnNjcmliZU9wdGlvbnMiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfY2hhbm5lbENvbnRleHQiLCJfcmVmNCIsInJldHJ5Q2FsbGJhY2siLCJuYXZpZ2F0b3JJc09uTGluZSIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwibWVkaWFTdHJlYW1Qcm9taXNlIiwib25UcmFja0Rpc2FibGVkIiwic3RyZWFtcyIsInRyYWNrTGlzdGVuZXIiLCJhbnN3ZXIiLCJfcmVmNSIsIm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0MiIsIl9wZWVyQ29ubmVjdGlvbiRnZXRUciIsIl9wZWVyQ29ubmVjdGlvbiRnZXRUcjIiLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsInJlY2VpdmVycyIsImdldFZpZGVvVHJhY2tzIiwidmlkZW9UcmFja1JlY2VpdmVyIiwic3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMiLCJ0cmFuc2NlaXZlciIsImdldEF1ZGlvVHJhY2tzIiwiYXVkaW9UcmFja1JlY2VpdmVyIiwiY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwicmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0IiwicmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0iLCJlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCIsImNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsIl9JbnNlcnRhYmxlU3RyZWFtcyRjbyIsImNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWVkU3RyZWFtIiwicnRjQ29ubmVjdGlvbk1vbml0b3IiLCJydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiIsInJ0Y1N0YXRpc3RpYyIsInN0YXRpc3RpY3MiLCJhdWRpb1RyYWNrRmFpbGVkIiwidmlkZW9UcmFja0ZhaWxlZCIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUyIiwiaXNDbGllbnRPZmZlckZsb3ciLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJfbWVkaWFTdHJlYW0kZ2V0VHJhY2siLCJoYXNBY3RpdmVUcmFja3MiLCJzb21lIiwicmVhZHlTdGF0ZSIsInBhdXNlZCIsImlzUmVuZGVyaW5nRnJhbWVzIiwiUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSIsInRva2VuQ2FwYWJpbGl0aWVzIiwiZGV0ZWN0aW9uVGltZW91dEluTWlsbGlzZWNvbmRzIiwiaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQiLCJzdGFydFRpbWUiLCJyZXNvbHZlZCIsIlN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJTa2lwRnJhbWUiLCJFbmNvZGVkVmlkZW9DaHVuayIsImNodW5rIiwiZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2siLCJFbmNvZGVkQXVkaW9DaHVuayIsImVuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrIiwiX2VuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSIsImdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMiLCJfZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2siLCJzdXJyb2dhdGUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUiLCJnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjIiwiZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyIsIm1vZGUiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwiY29uc3RydWN0b3IiLCJmcm9tIiwiVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIiLCJUcmFuc2Zvcm1NZXNzYWdlVHlwZSIsIlRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIiLCJjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrIiwid29ya2VyIiwidGVybWluYXRlIiwidmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjayIsIl9jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJhZGRUcmFja1RyYW5zZm9ybXMiLCJjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtcyIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZSIsInBvc3RNZXNzYWdlIiwiQWRkVHJhbnNmb3JtIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2siLCJ0cmFja1JlY2VpdmVyIiwidHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwidHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlciIsInRyYW5zZm9ybSIsIlBpcGVsaW5lQ29uZmlndXJlZCIsIm9uY2UiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrIiwiYWN0aW9ucyIsImVuY29kZWRSZWNlaXZlclN0cmVhbXMiLCJDb25maWd1cmVQaXBlbGluZSIsInNvdXJjZSIsInJlYWRhYmxlIiwic2luayIsInRyYW5zZmVyIiwiaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiY29udHJvbGxlciIsInRyYW5zZm9ybWVyIiwiVHJhbnNmb3JtU3RyZWFtIiwicHJvY2Vzc29yIiwiZ2VuZXJhdG9yIiwicGlwZVRocm91Z2giLCJwaXBlVG8iLCJyZW1vdmVUcmFjayIsImF1ZGlvUHVtcGVyIiwiQXVkaW8iLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYW5uZXhCRm91ckJ5dGVTdGFydENvZGUiLCJzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWUiLCJzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWUiLCJfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjIiwiYnVmZmVyIiwiX3NpbmdsZVplcm9CeXRlIiwiX2lzU2FmYXJpIiwiX3N1cnJvZ2F0ZTI4eDE2SDI2NElGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJfaXNBbmRyb2lkQ2hyb21lIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIiLCJfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0IiwiX3N1cnJvZ2F0ZTI4eDE2SDI2NFBGcmFtZSIsIl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMiLCJfU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsImlzQW5kcm9pZCIsIlRyYW5zZm9ybVBpcGVsaW5lTWVzc2FnZVJvdXRlciIsIm1lc3NhZ2VUeXBlIiwicm91dGVNZXNzYWdlIiwiX21lc3NhZ2VSb3V0ZXMiLCJyb3V0ZU1lc3NhZ2VEYXRhIiwiQ2h1bmsiLCJNZXRhZGF0YSIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIm90aGVyIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsIm5vb3AiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0cmVhbUlkIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJldmVudCIsIm9uQ29udGludWF0aW9uIiwiX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciIsInB1c2hUaW1lVG9GaXJzdEZyYW1lIiwicHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdGltZVRvRmlyc3RGcmFtZSIsImR1cmF0aW9uU2luY2VQYWdlTG9hZCIsIl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3ZpZGVvU3RhbGxlZCIsImJ1ZmZlcmVkIiwiYnVmZmVyTGVuZ3RoIiwiaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQiLCJlbmQiLCJfbGFzdFByb2dyZXNzIiwidGltZVNpbmNlU3RvcCIsIm5ld1Jlc29sdXRpb24iLCJfdmlkZW9SZXNvbHV0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==
11923
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0VBQUU7RUFDaEU7RUFBTSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUM7RUFBRTtFQUN4TC9XLEdBQUcsRUFBRSxJQUFJSyxVQUFVLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztFQUN6U0osR0FBRyxFQUFFLElBQUlJLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxJ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QUF1QixJQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBQTU0QixvRkFBQSxDQUMxQzQ0QixvR0FBdUIsSUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsR0FBQTU0QixvRkFBQSxDQUFLLElBQUlraUIsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDdnZCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBRSxHQUFHLEdBQUFxTixvRkFBQSxDQUN6RTQ0QixvR0FBdUIsSUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUE1NEIsb0ZBQUEsQ0FBSyxJQUFJa2lCLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQ3Z2QixJQUFJLENBQUMsRUFBRSxDQUFDLElBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxH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QUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7O0FBRU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxxQ0FBcUMsNEJBQTRCO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLDBCQUEwQixlQUFlO0FBQ3RFOztBQUVPO0FBQ1A7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLE1BQU07QUFDTjtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ2pvQkE7QUFDQTtBQUNBOztBQUV5QjtBQUNTO0FBQ1E7QUFLNUI7QUFHZCwrREFBZTtFQUNiOTJDLEdBQUcsRUFBSEEsNENBQUc7RUFDSDgyQixRQUFRLEVBQVJBLGlEQUFRO0VBQ1JoTyxZQUFZLEVBQVpBLHFEQUFZQTtBQUNkLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL1BsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vTmV0d29ya01vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZVRva2VuLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvUGFyYW1ldGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9EaXNwb3NhYmxlTGlzdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9OdW1iZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL1N0cmluZ3MudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9BcHBlbmRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Db25zb2xlQXBwZW5kZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dlckZhY3RvcnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ1RocmVzaG9sZC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL01ldHJpY3NUeXBlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL0NoYW5uZWwudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVsU3RhdGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jaGFubmVscy9DaGFubmVscy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvQ2hhbm5lbENvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L0ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1N0YXRlQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvVG9rZW5Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9BdWRpb0NvZGVjTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlY01hcHBpbmcudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3N0cmVhbWluZy9SZWFsVGltZVN0cmVhbVN1YnNjcmliZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvc3RyZWFtaW5nL1ZpZGVvRnJhbWVEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9FbmNvZGVkU3RyZWFtU2luay50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL0luc2VydGFibGVTdHJlYW1zLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9TdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vc3Vycm9nYXRlRnJhbWVzL2gyNjQvc3Vycm9nYXRlMjh4MTZJRnJhbWUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeVNlcnZpY2UudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRHVyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy92aWRlby9EaW1lbnNpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnkudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvd29ya2VyLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5saW5lLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hcnJheVdpdGhIb2xlcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXJyYXlXaXRob3V0SG9sZXMuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZ2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9ub25JdGVyYWJsZVJlc3QuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2V0UHJvdG90eXBlT2YuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NoYW5uZWxzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbmNvbnN0IHZpc2liaWxpdHlDaGFuZ2VFdmVudCA9ICd2aXNpYmlsaXR5Y2hhbmdlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlJc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNGb3JlZ3JvdW5kOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U6IG51bWJlciA9IERhdGUubm93KCk7XG4gIHByaXZhdGUgX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb246IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5faXNGb3JlZ3JvdW5kID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlJc0ZvcmVncm91bmQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0KHRoaXMuX2lzRm9yZWdyb3VuZCk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNGb3JlZ3JvdW5kKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kO1xuICB9XG5cbiAgcHVibGljIGdldFRpbWVTaW5jZUxhc3RDaGFuZ2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuX3RpbWVPZkxhc3RUYWJGb2N1c0NoYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uKCk6IE1pbGxpc2Vjb25kIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgbGV0IGJhY2tncm91bmRFbnRyeVRpbWU6IE1pbGxpc2Vjb25kIHwgbnVsbCA9IG51bGw7XG4gICAgY29uc3QgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGlzTm93Rm9yZWdyb3VuZCA9ICFHbG9iYWxTY29wZS52YWx1ZS5kb2N1bWVudElzSGlkZGVuO1xuXG4gICAgICBpZiAoIWlzTm93Rm9yZWdyb3VuZCkge1xuICAgICAgICBiYWNrZ3JvdW5kRW50cnlUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKGJhY2tncm91bmRFbnRyeVRpbWUpIHtcbiAgICAgICAgdGhpcy5fbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IERhdGUubm93KCkgLSBiYWNrZ3JvdW5kRW50cnlUaW1lO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0ZvcmVncm91bmQudmFsdWUgPSBpc05vd0ZvcmVncm91bmQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVzZUV2ZW50Q2FwdHVyZVBoYXNlID0gZmFsc2U7XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGREb2N1bWVudEV2ZW50TGlzdGVuZXIodmlzaWJpbGl0eUNoYW5nZUV2ZW50LCBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlLCB1c2VFdmVudENhcHR1cmVQaGFzZSk7XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJyb3dzZXJEZXRlY3RvciB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCA9IC8oTVNJRXwoPyFHZWNrby4rKUZpcmVmb3h8KD8hQXBwbGVXZWJLaXQuK0Nocm9tZS4rKVNhZmFyaXwoPyFBcHBsZVdlYktpdC4rKUNocm9tZXxBcHBsZVdlYktpdCg/IS4rQ2hyb21lfC4rU2FmYXJpKXxHZWNrbyg/IS4rRmlyZWZveCkpKD86IHxcXC8pKFtcXGQuYXByZV0rKS9nO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTmFtZSA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9icm93c2VyTWFqb3JWZXJzaW9uID0gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck1ham9yVmVyc2lvbigpO1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc01vYmlsZSA9ICgvQW5kcm9pZHxpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8T3BlcmEgTWluaS9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZCA9ICgvQW5kcm9pZC9pKS50ZXN0KG5hdmlnYXRvcj8udXNlckFnZW50KTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU2OSA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNjkuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcwID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzEgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcxLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzIuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NC4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzUgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc1LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NiA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzYuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc3ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83Ny4nKTtcblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck5hbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fYnJvd3Nlck1ham9yVmVyc2lvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNBbmRyb2lkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQW5kcm9pZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU2OSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTY5O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcwKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcyO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc2O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc3KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzc7XG4gIH1cblxuICBzdGF0aWMgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNNb2JpbGU7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVBbmRWZXJzaW9uID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvblJlZ2V4KTtcblxuICAgIGlmIChicm93c2VyTmFtZUFuZFZlcnNpb24gJiYgYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdKSB7XG4gICAgICByZXR1cm4gYnJvd3Nlck5hbWVBbmRWZXJzaW9uWzBdO1xuICAgIH1cblxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGlmICghQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyTmFtZUxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyTmFtZUxpc3QgfHwgIWJyb3dzZXJOYW1lTGlzdFswXSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBicm93c2VyTmFtZUxpc3RbMF07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBjb25zdCBicm93c2VyVmVyc2lvbkxpc3QgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5zcGxpdCgnLycpO1xuXG4gICAgaWYgKCFicm93c2VyVmVyc2lvbkxpc3QgfHwgIWJyb3dzZXJWZXJzaW9uTGlzdFsxXSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbFZlcnNpb24gPSBicm93c2VyVmVyc2lvbkxpc3RbMV07XG5cbiAgICBpZiAoIWZ1bGxWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVyKGZ1bGxWZXJzaW9uLnNwbGl0KCcuJylbMF0pIHx8IDA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFKCk6IHN0cmluZyB7XG4gICAgaWYgKCFuYXZpZ2F0b3IgfHwgIW5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBjb25zdCB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGNvbnN0IG1zaWUgPSB1c2VyQWdlbnQuaW5kZXhPZignTVNJRSAnKTtcblxuICAgIGlmIChtc2llID4gMCkge1xuICAgICAgLy8gSUUgMTAgb3Igb2xkZXIgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyhtc2llICsgNSwgdXNlckFnZW50LmluZGV4T2YoJy4nLCBtc2llKSksIDEwKX1gO1xuICAgIH1cblxuICAgIGNvbnN0IHRyaWRlbnQgPSB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKTtcblxuICAgIGlmICh0cmlkZW50ID4gMCkge1xuICAgICAgLy8gSUUgMTEgPT4gcmV0dXJuIHZlcnNpb24gbnVtYmVyXG4gICAgICBjb25zdCB2ZXJzaW9uID0gdXNlckFnZW50LmluZGV4T2YoJ3J2OicpO1xuXG4gICAgICByZXR1cm4gYElFLyR7cGFyc2VJbnQodXNlckFnZW50LnN1YnN0cmluZyh2ZXJzaW9uICsgMywgdXNlckFnZW50LmluZGV4T2YoJy4nLCB2ZXJzaW9uKSksIDEwKX1gO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeUxldmVsTWFwcGluZyBmcm9tICcuLi9tZXRyaWNzL1RlbGVtZXRyaWNMZXZlbE1hcHBpbmcnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMnO1xuXG4vLyBUaGUgUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZpbGUgaXMgdXNlZCBpbiB0aGUgc2lsZW50IGJ1aWxkXG4vLyB0byBjb25zdHJhaW4gdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyB0byB0aGUgc3BlY2lmaWVkIHZhbHVlcy5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsYWluQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3RyaW5nVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBQbGFpbkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LW1ldHJpY3MtbGV2ZWwnOiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpLFxuICAgICAgJ3BoZW5peC1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jb25zb2xlLWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC10ZWxlbWV0cnktbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKSxcbiAgICAgICdwaGVuaXgtY2hhbm5lbC10b2tlbic6ICcnLFxuICAgICAgJ3BoZW5peC11cmknOiAnJyxcbiAgICAgICdwaGVuaXgtYmFzZS11cmknOiAnJ1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgZGVmYXVsdEJvb2xlYW5WYWx1ZSgpOiB7IFtuYW1lOiBzdHJpbmddOiBib29sZWFuIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmV0cnktb24tZmFpbHVyZSc6IHRydWUsXG4gICAgICAncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbic6IHRydWUsXG4gICAgICAncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0JzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnOiB0cnVlXG4gICAgfTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIHtcbiAgc3RhdGljIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgR2xvYmFsU2NvcGUudmFsdWU/LkhUTUxWaWRlb0VsZW1lbnQucHJvdG90eXBlLnJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgIT09ICd1bmRlZmluZWQnO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1JlcXVlc3RBbmltYXRpb25GcmFtZVN1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZFxuICAgICAgJiYgKEZlYXR1cmVFbmFibGVtZW50LmlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIHx8IEZlYXR1cmVFbmFibGVtZW50LmlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19QQVJBTUVURVJTX186IHtcbiAgZGlzY292ZXJ5OiBJRGlzY292ZXJ5UGFyYW1ldGVyO1xufTtcblxuaW50ZXJmYWNlIElEaXNjb3ZlcnlQYXJhbWV0ZXJ7XG4gIGludGVudGlvbnM6IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyYW1ldGVycyB7XG4gIHByaXZhdGUgc3RhdGljIF9kaXNjb3ZlcnlQYXJhbWV0ZXJzOiBJRGlzY292ZXJ5UGFyYW1ldGVyIDtcblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhcmFtZXRlcnMoKTogSURpc2NvdmVyeVBhcmFtZXRlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnM7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlQYXJhbWV0ZXJzKCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJhbWV0ZXJzID0gX19QQVJBTUVURVJTX187XG5cbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSAnZGlzY292ZXJ5JyBpbiBwYXJhbWV0ZXJzID8gcGFyYW1ldGVycy5kaXNjb3ZlcnkgOiB7aW50ZW50aW9uczogJyd9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2Rpc2NvdmVyeVBhcmFtZXRlcnMgPSB7aW50ZW50aW9uczogJyd9O1xuICAgIH1cbiAgfVxufVxuXG5QYXJhbWV0ZXJzLmFwcGx5UGFyYW1ldGVycygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElHbG9iYWxTY29wZSBmcm9tICcuL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQgSURvY3VtZW50IGZyb20gJy4vSURvY3VtZW50JztcbmltcG9ydCBJTG9jYXRpb24gZnJvbSAnLi9JTG9jYXRpb24nO1xuaW1wb3J0IElOZXR3b3JrSW5mb3JtYXRpb24gZnJvbSAnLi9JTmV0d29ya0luZm9ybWF0aW9uJztcbmltcG9ydCBJTmF2aWdhdG9yIGZyb20gJy4vSU5hdmlnYXRvcic7XG5pbXBvcnQgSVdpbmRvdyBmcm9tICcuL0lXaW5kb3cnO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4vSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5cbnR5cGUgQnJvd3Nlckdsb2JhbFNjb3BlID0gSVByb3ZpZGVkR2xvYmFsU2NvcGU7XG5cbmNvbnN0IGJyb3dzZXJHbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlID0ge1xuICBkb2N1bWVudCxcbiAgbG9jYXRpb24sXG4gIG5hdmlnYXRvcixcbiAgd2luZG93XG59O1xuXG5leHBvcnQgY2xhc3MgR2xvYmFsU2NvcGUgaW1wbGVtZW50cyBJR2xvYmFsU2NvcGUge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaW5zdGFuY2UgPSBuZXcgU3ViamVjdDxJR2xvYmFsU2NvcGU+KG5ldyBHbG9iYWxTY29wZShicm93c2VyR2xvYmFsU2NvcGUpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5zdGFuY2U6IFJlYWRPbmx5U3ViamVjdDxJR2xvYmFsU2NvcGU+ID0gbmV3IFJlYWRPbmx5U3ViamVjdChHbG9iYWxTY29wZS5faW5zdGFuY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kb2N1bWVudDogSURvY3VtZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NhdGlvbjogSUxvY2F0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXZpZ2F0b3I6IElOYXZpZ2F0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpbmRvdzogSVdpbmRvdztcblxuICBjb25zdHJ1Y3RvcihnbG9iYWxTY29wZTogQnJvd3Nlckdsb2JhbFNjb3BlKSB7XG4gICAgdGhpcy5fZG9jdW1lbnQgPSBnbG9iYWxTY29wZS5kb2N1bWVudDtcbiAgICB0aGlzLl9sb2NhdGlvbiA9IGdsb2JhbFNjb3BlLmxvY2F0aW9uO1xuICAgIHRoaXMuX25hdmlnYXRvciA9IGdsb2JhbFNjb3BlLm5hdmlnYXRvcjtcbiAgICB0aGlzLl93aW5kb3cgPSBnbG9iYWxTY29wZS53aW5kb3c7XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCB0byBtYWludGFpbiBBUEkgY29uc2lzdGVuY3kgd2l0aCBQcm92aWRlZEdsb2JhbFNjb3BlXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIHB1YmxpYyBzdGF0aWMgc2V0SW5zdGFuY2UocHJvdmlkZWRHbG9iYWxTY29wZTogSVByb3ZpZGVkR2xvYmFsU2NvcGUpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBzZXR0aW5nIHRoZSBHbG9iYWxTY29wZScpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZSgpOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzdWJzY3JpYmUoY2FsbGJhY2s6ICh2YWx1ZTogSUdsb2JhbFNjb3BlIHwgbnVsbCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUuX3JlYWRPbmx5SW5zdGFuY2Uuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgfVxuXG4gIGdldCBGb3JtRGF0YSgpOiB0eXBlb2YgRm9ybURhdGEge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuRm9ybURhdGE7XG4gIH1cblxuICBnZXQgSFRNTFZpZGVvRWxlbWVudCgpOiB0eXBlb2YgSFRNTFZpZGVvRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5IVE1MVmlkZW9FbGVtZW50O1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtKCk6IHR5cGVvZiBNZWRpYVN0cmVhbSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5NZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBNZWRpYVN0cmVhbVRyYWNrKCk6IHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtVHJhY2s7XG4gIH1cblxuICBnZXQgTWVkaWFTb3VyY2UoKTogdHlwZW9mIE1lZGlhU291cmNlIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU291cmNlO1xuICB9XG5cbiAgZ2V0IFJUQ1BlZXJDb25uZWN0aW9uKCk6IHR5cGVvZiBSVENQZWVyQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBSVENTZXNzaW9uRGVzY3JpcHRpb24oKTogdHlwZW9mIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENTZXNzaW9uRGVzY3JpcHRpb247XG4gIH1cblxuICBnZXQgUlRDSWNlQ2FuZGlkYXRlKCk6IHR5cGVvZiBSVENJY2VDYW5kaWRhdGUge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuUlRDSWNlQ2FuZGlkYXRlO1xuICB9XG5cbiAgZ2V0IFVSTCgpOiB0eXBlb2YgVVJMIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTDtcbiAgfVxuXG4gIGdldCBVUkxTZWFyY2hQYXJhbXMoKTogdHlwZW9mIFVSTFNlYXJjaFBhcmFtcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5VUkxTZWFyY2hQYXJhbXM7XG4gIH1cblxuICBnZXQgYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCBhZGRXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmFkZEV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFySW50ZXJ2YWwoKTogKGlkPzogbnVtYmVyIHwgdW5kZWZpbmVkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmNsZWFySW50ZXJ2YWwuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGNsZWFyVGltZW91dCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBkb2N1bWVudENyZWF0ZUVsZW1lbnQoKTogPEVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudD4odGFnOiBzdHJpbmcpID0+IEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5jcmVhdGVFbGVtZW50LmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SGFzRm9jdXMoKTogKCkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50Lmhhc0ZvY3VzLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50SXNIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5fZG9jdW1lbnQuaGlkZGVuO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50UXVlcnlTZWxlY3RvcigpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5xdWVyeVNlbGVjdG9yLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGZldGNoKCk6IChpbnB1dDogc3RyaW5nIHwgVVJMIHwgUmVxdWVzdCwgaW5pdD86IFJlcXVlc3RJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5mZXRjaC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgbG9jYXRpb25Ib3N0bmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5ob3N0bmFtZTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvblNlYXJjaCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sb2NhdGlvbi5zZWFyY2g7XG4gIH1cblxuICBnZXQgbmF2aWdhdG9yQ29ubmVjdGlvbigpOiBJTmV0d29ya0luZm9ybWF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLmNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgbmF2aWdhdG9ySXNPbkxpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRvci5vbkxpbmU7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvd1snX19waGVuaXhQYWdlTG9hZFRpbWUnXSB8fCB0aGlzLl93aW5kb3dbJ19fcGFnZUxvYWRUaW1lJ107XG4gIH1cblxuICBnZXQgcXVldWVNaWNyb3Rhc2soKTogKG1pY3JvdGFzazogKCkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5xdWV1ZU1pY3JvdGFzay5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlRG9jdW1lbnRFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX2RvY3VtZW50KTtcbiAgfVxuXG4gIGdldCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKTogKGNhbGxiYWNrOiBGcmFtZVJlcXVlc3RDYWxsYmFjaykgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZS5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgcmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcigpOiAodHlwZTogc3RyaW5nLCBsaXN0ZW5lcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRJbnRlcnZhbCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgc2V0VGltZW91dCgpOiAoaGFuZGxlcjogc3RyaW5nIHwgRnVuY3Rpb24sIHRpbWVvdXQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5zZXRUaW1lb3V0LmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfZGlzcG9zYWJsZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihkaXNwb3NhYmxlOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5fZGlzcG9zZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlID0gZGlzcG9zYWJsZTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZWQgPSB0cnVlO1xuXG4gICAgcmV0dXJuIHRoaXMuX2Rpc3Bvc2FibGUuY2FsbCh0aGlzKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4vSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNwb3NhYmxlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3Q6IElEaXNwb3NhYmxlW10gPSBbXTtcblxuICBhZGQoZGlzcG9zYWJsZTogSURpc3Bvc2FibGUpOiB2b2lkIHtcbiAgICB0aGlzLl9saXN0LnB1c2goZGlzcG9zYWJsZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QuZm9yRWFjaChkaXNwb3NhYmxlID0+IGRpc3Bvc2FibGUuZGlzcG9zZSgpKTtcbiAgICB0aGlzLl9saXN0Lmxlbmd0aCA9IDA7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRGlzcG9zYWJsZUxpc3RbZGlzcG9zYWJsZXM9JHt0aGlzLl9saXN0Lmxlbmd0aH1dYDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuLy8gQXMgZmxvYXQgaW4gRUNNQVNjcmlwdCB1c2UgNjQtYml0IGZvcm1hdCBpdCBjYW5ub3QgaGF2ZS9oYW5kbGUgbW9yZSB0aGFuIDE1IHN5bWJvbHMgYWZ0ZXIgZG90LlxuY29uc3QgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90ID0gMTU7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE51bWJlcnMge1xuICBzdGF0aWMgY291bnROdW1iZXJMZW5ndGgodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgPSAwO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICBudW1iZXIgKj0gLTE7XG4gICAgICBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcnMuY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKG51bWJlcikgKyBpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlICsgKG51bWJlciAhPT0gTWF0aC5mbG9vcihudW1iZXIpID8gTnVtYmVycy5jb3VudERpZ2l0c0FmdGVyRGVjaW1hbChudW1iZXIpICsgMSA6IDApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZml4Um91bmRpbmcodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IHBvd2VyID0gTWF0aC5wb3coMTAsIHByZWNpc2lvbik7XG5cbiAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWx1ZSAqIHBvd2VyKSAvIHBvd2VyO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNCZWZvcmVEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkaWdpdHNCZWZvcmVEZWNpbWFsID0gMTtcbiAgICBsZXQgbnVtYmVyID0gdmFsdWU7XG5cbiAgICB3aGlsZSAobnVtYmVyID49IDEwKSB7XG4gICAgICBudW1iZXIgPSBudW1iZXIgLyAxMDtcbiAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWwrKztcbiAgICB9XG5cbiAgICByZXR1cm4gZGlnaXRzQmVmb3JlRGVjaW1hbDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB2YWx1ZTtcbiAgICBsZXQgbW9kaWZpZWRWYWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpO1xuICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICB3aGlsZSAobW9kaWZpZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSAmJiBjb3VudCA8IG1heERpZ2l0c0luRmxvYXRBZnRlckRvdCkge1xuICAgICAgY291bnQrKztcbiAgICAgIG1vZGlmaWVkVmFsdWUgPSBOdW1iZXJzLmZpeFJvdW5kaW5nKG9yaWdpbmFsVmFsdWUsIGNvdW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTnVtYmVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0cmluZ3Mge1xuICBzdGF0aWMgcmFuZG9tKGxlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCByYW5kb20xM0NoYXJhY3RlcnMgPSAoKTogc3RyaW5nID0+IHtcbiAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMiwgMTUpO1xuICAgIH07XG5cbiAgICBjb25zdCBsb29wczogbnVtYmVyID0gTWF0aC5jZWlsKGxlbmd0aCAvIDEzKTtcblxuICAgIHJldHVybiBuZXcgQXJyYXkobG9vcHMpLmZpbGwocmFuZG9tMTNDaGFyYWN0ZXJzKS5yZWR1Y2UoKHN0cmluZywgZnVuYykgPT4ge1xuICAgICAgcmV0dXJuIHN0cmluZyArIGZ1bmMoKTtcbiAgICB9LCAnJykuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3RyaW5ncyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRVbnJlYWNoYWJsZSh4OiBuZXZlcik6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIFske3h9XS4gVGhpcyBzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZGApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NlcnRVbnJlYWNoYWJsZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGVuZGVycyB7XG4gIHByaXZhdGUgX2FwcGVuZGVyczogQXJyYXk8SUFwcGVuZGVyPiA9IFtdO1xuXG4gIGdldCB2YWx1ZSgpOiBBcnJheTxJQXBwZW5kZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgYWRkKGFwcGVuZGVyOiBJQXBwZW5kZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9hcHBlbmRlcnMucHVzaChhcHBlbmRlcik7XG4gIH1cblxuICByZW1vdmUoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycyA9IHRoaXMuX2FwcGVuZGVycy5yZWR1Y2UoKGl0ZW1zLCBpdGVtKSA9PiB7XG4gICAgICBpZiAoIShpdGVtID09PSBhcHBlbmRlcikpIHtcbiAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH0sIFtdIGFzIEFycmF5PElBcHBlbmRlcj4pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29uc29sZUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxNZXNzYWdlID0gYCR7ZGF0ZS50b0lTT1N0cmluZygpfSBbJHtjYXRlZ29yeX1dIFske0xvZ2dpbmdMZXZlbFtsb2dMZXZlbF19XSAke21lc3NhZ2V9YDtcblxuICAgIGlmIChsb2dMZXZlbCA8IExvZ2dpbmdMZXZlbC5XYXJuKSB7XG4gICAgICBjb25zb2xlLmxvZyhmdWxsTWVzc2FnZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zb2xlLmVycm9yKGZ1bGxNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKSB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi9JQXBwZW5kZXInO1xuaW1wb3J0IEFwcGVuZGVycyBmcm9tICcuL0FwcGVuZGVycyc7XG5pbXBvcnQgTG9nZ2luZ1RocmVzaG9sZCBmcm9tICcuL0xvZ2dpbmdUaHJlc2hvbGQnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcblxuZXhwb3J0IGVudW0gTG9nZ2luZ0xldmVsIHtcbiAgQWxsID0gLTEsXG4gIFRyYWNlID0gMTAsXG4gIERlYnVnID0gMjAsXG4gIEluZm8gPSAzMCxcbiAgV2FybiA9IDQwLFxuICBFcnJvciA9IDUwLFxuICBGYXRhbCA9IDYwLFxuICBPZmYgPSAxMDAsXG59XG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbFR5cGUgPSAnT2ZmJyB8ICdUcmFjZScgfCAnRGVidWcnIHwgJ0luZm8nIHwgJ1dhcm4nIHwgJ0Vycm9yJyB8ICdGYXRhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2F0ZWdvcnk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwZW5kZXJzOiBBcHBlbmRlcnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZDtcblxuICBnZXQgY2F0ZWdvcnkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY2F0ZWdvcnk7XG4gIH1cblxuICBnZXQgYXBwZW5kZXJzKCk6IEFwcGVuZGVycyB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZGVycztcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ1RocmVzaG9sZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHRyYWNlKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5UcmFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5UcmFjZSwgYXJncyk7XG4gIH1cblxuICBkZWJ1ZyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRGVidWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRGVidWcsIGFyZ3MpO1xuICB9XG5cbiAgaW5mbyguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5JbmZvLCBhcmdzKTtcbiAgfVxuXG4gIHdhcm4oLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuV2FybiwgYXJncyk7XG4gIH1cblxuICBlcnJvciguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRXJyb3IsIGFyZ3MpO1xuICB9XG5cbiAgZmF0YWwoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLkZhdGFsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkZhdGFsLCBhcmdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nKGxldmVsOiBudW1iZXIsIGFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnJlcGxhY2VQbGFjZWhvbGRlcnMoYXJncyk7XG5cbiAgICB0aGlzLl9hcHBlbmRlcnMudmFsdWUuZm9yRWFjaCgoYXBwZW5kZXI6IElBcHBlbmRlcikgPT4ge1xuICAgICAgYXBwZW5kZXIubG9nKGxldmVsLCBtZXNzYWdlLCB0aGlzLmNhdGVnb3J5LCBkYXRlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzOiBhbnkpOiBzdHJpbmcge1xuICAgIGxldCByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gYXJnc1swXTtcbiAgICBsZXQgaW5kZXggPSAwO1xuXG4gICAgd2hpbGUgKHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZiAmJiBhcmdzLmxlbmd0aCA+IDEgJiYgaW5kZXggPj0gMCkge1xuICAgICAgaW5kZXggPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLmluZGV4T2YoJyUnLCBpbmRleCk7XG5cbiAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgY29uc3QgdHlwZSA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSwgaW5kZXggKyAyKTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICclJzpcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgJyUlJyB0dXJucyBpbnRvICclJ1xuICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKGluZGV4ICsgMSk7XG4gICAgICAgICAgICBpbmRleCsrO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzJzpcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJyVkJyBvciAnJXMnIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnRvU3RyaW5nKGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdqJzpcbiAgICAgICAgICAgIC8vIFJlcGxhY2UgJWonIHdpdGggdGhlIGFyZ3VtZW50XG4gICAgICAgICAgICBhcmdzWzBdID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyA9IHRoaXMucmVwbGFjZUFyZ3VtZW50KFxuICAgICAgICAgICAgICB0aGlzLnN0cmluZ2lmeShhcmdzWzFdKSxcbiAgICAgICAgICAgICAgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyxcbiAgICAgICAgICAgICAgaW5kZXhcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGFyZ3Muc3BsaWNlKDEsIDEpO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmdzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGFyZ3MgPSBhcmdzLnJlZHVjZSgoYWNjdW11bGF0b3I6IHN0cmluZywgY3VycmVudFZhbHVlOiBzdHJpbmcgfCBFcnJvciwgaW5kZXg6IG51bWJlciwgYXJyYXk6IHN0cmluZ1tdKSA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPT09IGFycmF5Lmxlbmd0aCAmJiBjdXJyZW50VmFsdWUgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5lcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5tZXNzYWdlKSArICdcXG4nICsgdGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUuc3RhY2spO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yICsgYFske3RoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlKX1dYDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhcmdzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBwcml2YXRlIHN0cmluZ2lmeShhcmc6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FjaGU6IG9iamVjdFtdID0gW107XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhcmcgaW5zdGFuY2VvZiBFcnJvciA/IHRoaXMudG9TdHJpbmcoYXJnKSA6IGFyZyxcbiAgICAgICAgKF8sIHZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYgKCEhdmFsdWUgJiYgdmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgICAgIGlmIChjYWNoZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuICc8cmVjdXJzaXZlPic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhY2hlLnB1c2godmFsdWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgMlxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJ1tvYmplY3QgaW52YWxpZCBKU09OLnN0cmluZ2lmeV0nO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVwbGFjZUFyZ3VtZW50KGFyZ3VtZW50OiBhbnksIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmc6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4KSArIHRoaXMudG9TdHJpbmcoYXJndW1lbnQpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAyKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TdHJpbmcoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGRhdGEgPyAndHJ1ZScgOiAnZmFsc2UnO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiBkYXRhLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgbGV0IHRvU3RyaW5nU3RyID0gJyc7XG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRvU3RyaW5nU3RyID0gZGF0YS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChkYXRhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9ICdbb2JqZWN0IGludmFsaWQgdG9TdHJpbmcoKV0nO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRvU3RyaW5nU3RyO1xuICB9XG5cbiAgY29uc3RydWN0b3IoY2F0ZWdvcnk6IHN0cmluZywgYXBwZW5kZXJzOiBBcHBlbmRlcnMsIHRocmVzaG9sZDogTG9nZ2luZ1RocmVzaG9sZCkge1xuICAgIHRoaXMuX2NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gYXBwZW5kZXJzO1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckRlZmF1bHRzIHtcbiAgc3RhdGljIGdldCBkZWZhdWx0TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRMb2dzXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMubG9nVG9Db25zb2xlXTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyLCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgQ29uc29sZUFwcGVuZGVyIGZyb20gJy4vQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2Vyczoge1tjYXRlZ29yeTogc3RyaW5nXTogSUxvZ2dlcn0gPSB7fTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2FwcGVuZGVyczogQXBwZW5kZXJzID0gbmV3IEFwcGVuZGVycygpO1xuICBwcml2YXRlIHN0YXRpYyBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkID0gbmV3IExvZ2dpbmdUaHJlc2hvbGQoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBuZXcgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpO1xuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2dnZXIoY2F0ZWdvcnk6IHN0cmluZyk6IElMb2dnZXIge1xuICAgIGlmICh0eXBlb2YgY2F0ZWdvcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgICBjYXRlZ29yeSA9ICdTREsnO1xuICAgIH1cblxuICAgIGNvbnN0IGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuX2xvZ2dlcnNbY2F0ZWdvcnldO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgcmV0dXJuIGxvZ2dlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV0gPSBuZXcgTG9nZ2VyKGNhdGVnb3J5LCB0aGlzLl9hcHBlbmRlcnMsIHRoaXMuX3RocmVzaG9sZCk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2luZ0xldmVsKCk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCdjb25zb2xlJywgTG9nZ2VyRmFjdG9yeS5hcHBseUNvbnNvbGVMb2dnZXIuYmluZCh0aGlzKSk7XG4gICAgTG9nZ2VyRmFjdG9yeS5hcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKCd0ZWxlbWV0cnknLCBMb2dnZXJGYWN0b3J5LmFwcGx5VGVsZW1ldHJ5TG9nZ2VyLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlMb2dnaW5nTGV2ZWwoKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1ldGVyVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtbG9nZ2luZy1sZXZlbCcpIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsKG5hbWU6IHN0cmluZywgYXBwbHlBcHBlbmRlcjogKGxldmVsOiBMb2dnaW5nTGV2ZWwpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoYHBoZW5peC0ke25hbWV9LWxvZ2dpbmctbGV2ZWxgKSBhcyBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gICAgaWYgKHBhcmFtZXRlclZhbHVlID09PSAnT2ZmJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGFwcGx5QXBwZW5kZXIoTG9nZ2luZ0xldmVsW3BhcmFtZXRlclZhbHVlXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUNvbnNvbGVMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXBwbHlUZWxlbWV0cnlMb2dnZXIobGV2ZWw6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gbGV2ZWwgfHwgTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICAgIHRoaXMuX2FwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdMb2dnZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufVxuXG5Mb2dnZXJGYWN0b3J5LmFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShsb2dnaW5nTGV2ZWw6IExvZ2dpbmdMZXZlbCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAobG9nZ2luZ0xldmVsKSB7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5PZmY6XG4gICAgICAgIHJldHVybiAnT2ZmJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLlRyYWNlOlxuICAgICAgICByZXR1cm4gJ1RyYWNlJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkRlYnVnOlxuICAgICAgICByZXR1cm4gJ0RlYnVnJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkluZm86XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuV2FybjpcbiAgICAgICAgcmV0dXJuICdXYXJuJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkVycm9yOlxuICAgICAgICByZXR1cm4gJ0Vycm9yJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkZhdGFsOlxuICAgICAgICByZXR1cm4gJ0ZhdGFsJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLkFsbDpcbiAgICAgICAgcmV0dXJuICdBbGwnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUobG9nZ2luZ0xldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChsb2dnaW5nTGV2ZWxUeXBlOiBMb2dnaW5nTGV2ZWxUeXBlKTogTG9nZ2luZ0xldmVsIHtcbiAgICBzd2l0Y2ggKGxvZ2dpbmdMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnVHJhY2UnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLlRyYWNlO1xuICAgICAgY2FzZSAnRGVidWcnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkRlYnVnO1xuICAgICAgY2FzZSAnSW5mbyc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuSW5mbztcbiAgICAgIGNhc2UgJ1dhcm4nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLldhcm47XG4gICAgICBjYXNlICdFcnJvcic6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRXJyb3I7XG4gICAgICBjYXNlICdGYXRhbCc6XG4gICAgICAgIHJldHVybiBMb2dnaW5nTGV2ZWwuRmF0YWw7XG4gICAgICBjYXNlICdBbGwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4vTG9nZ2VyRGVmYXVsdHMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ1RocmVzaG9sZCB7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogTG9nZ2luZ0xldmVsID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbDtcblxuICBnZXQgdmFsdWUoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0VGhyZXNob2xkKHRocmVzaG9sZDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljVHlwZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3M6IE1ldHJpY3NUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3M6IE1ldHJpY3NUeXBlKSB7XG4gICAgdGhpcy5fbWV0cmljcyA9IG1ldHJpY3M7XG4gIH1cblxuICBnZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIE1ldHJpY3NUeXBlW3RoaXMuX21ldHJpY3NdO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGhpcy5fbWV0cmljcykge1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5DaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TdGFsbGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5CdWZmZXJpbmc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlNldHVwQ29tcGxldGVkOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5SZXNvbHV0aW9uQ2hhbmdlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25Gb3JlZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9tZXRyaWNzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgVGVsZW1ldHJ5RGVmYXVsdCBmcm9tICcuL1RlbGVtZXRyeURlZmF1bHQnO1xuXG5leHBvcnQgZW51bSBUZWxlbWV0cnlMZXZlbCB7XG4gIE9mZiA9IDEwMCxcbiAgRXNzZW50aWFsID0gMTAsXG4gIEFsbCA9IC0xXG59XG5cbmV4cG9ydCB0eXBlIFRlbGVtZXRyeUxldmVsVHlwZSA9ICdPZmYnIHwgJ0Vzc2VudGlhbCcgfCAnQWxsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0NvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbWV0cmljcyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3RocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwgPSBUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtZXRyaWNzVXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuXG4gICAgbWV0cmljc1VybC5wYXRobmFtZSA9IG1ldHJpY3NVcmwucGF0aG5hbWUgKyAnL21ldHJpY3MnO1xuXG4gICAgdGhpcy5fdXJsID0gbWV0cmljc1VybC50b1N0cmluZygpO1xuICB9XG5cbiAgZ2V0IGVudmlyb25tZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Vudmlyb25tZW50O1xuICB9XG5cbiAgc2V0IGVudmlyb25tZW50KGVudmlyb25tZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICB9XG5cbiAgZ2V0IHRlbmFuY3koKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHNldCB0ZW5hbmN5KHRlbmFuY3k6IHN0cmluZykge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZW5hbmN5O1xuICB9XG5cbiAgZ2V0IHNlc3Npb25JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zZXNzaW9uSWQ7XG4gIH1cblxuICBzZXQgc2Vzc2lvbklkKHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBUZWxlbWV0cnlMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4vTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi4vc2RrL1RlbGVtZXRyeVVybCc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vc2RrL0Vudmlyb25tZW50JztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc0ZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2VzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBNZXRyaWNzU2VydmljZX0gPSB7fTtcblxuICBzdGF0aWMgZ2V0TWV0cmljc1NlcnZpY2UodXJsOiBzdHJpbmcpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgaWYgKHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHVybCBtdXN0IGJlIGEgc3RyaW5nIGluc3RlYWQgcmVjZWl2ZWQgWyR7dHlwZW9mIHVybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc1NlcnZpY2VzID0gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcykge1xuICAgICAgcmV0dXJuIG1ldHJpY3NTZXJ2aWNlcztcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNzQ29uZmlndXJhdGlvbiA9IG5ldyBNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gU0RLLnRlbmFuY3kudmFsdWU7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybCk7XG5cbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwoU0RLLnRlbGVtZXRyeUxldmVsKTtcblxuICAgIHJldHVybiBNZXRyaWNzRmFjdG9yeS5fbWV0cmljc1NlcnZpY2VzW3VybF0gPSBuZXcgTWV0cmljc1NlcnZpY2UobWV0cmljc0NvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc3RhdGljIHNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsOiBUZWxlbWV0cnlMZXZlbCk6IHZvaWQge1xuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE9iamVjdC52YWx1ZXMoTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlcyk7XG5cbiAgICBpZiAobWV0cmljc1NlcnZpY2VzICYmIG1ldHJpY3NTZXJ2aWNlcy5sZW5ndGgpIHtcbiAgICAgIG1ldHJpY3NTZXJ2aWNlcy5mb3JFYWNoKG1ldHJpY3NTZXJ2aWNlID0+IHtcbiAgICAgICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBtZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgICAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSB0ZWxlbWV0cnlMZXZlbDtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRyaWNzRmFjdG9yeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vc2RrL3ZlcnNpb24vVmVyc2lvbk1hbmFnZXInO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi9NZXRyaWNUeXBlJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuL01ldHJpY3NUeXBlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDEwMjQ7XG5jb25zdCBtYXhCdWZmZXJlZFJlY29yZHMgPSAyMDQ4O1xuXG5pbnRlcmZhY2UgSVZhbHVlIHtcbiAgc3RyaW5nPzogc3RyaW5nO1xuICB1aW50NjQ/OiBudW1iZXI7XG4gIGZsb2F0PzogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpY1JlY29yZCB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBzdHJlYW1JZD86IHN0cmluZztcbiAgbWV0cmljOiBzdHJpbmc7XG4gIHZhbHVlPzogSVZhbHVlO1xuICBwcmV2aW91c1ZhbHVlPzogSVZhbHVlO1xuICBmdWxsUXVhbGlmaWVkTmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJTWV0cmljIHtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgcnVudGltZTogbnVtYmVyO1xuICByZXNvdXJjZT86IHN0cmluZztcbiAga2luZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWV0cmljc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignTWV0cmljc1NlcnZpY2UnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leHBvbmVudGlhbEJhY2tvZmY6IEV4cG9uZW50aWFsQmFja29mZjtcbiAgcHJpdmF0ZSBfbWV0cmljczogQXJyYXk8SU1ldHJpY1JlY29yZD4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZhaWx1cmVDb3VudCA9IDA7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKG1ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpLnRoZW4obG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICB0aGlzLl9kb21haW4gPSBsb2NhdGlvbkhvc3RuYW1lO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IG1ldHJpY3NDb25maWd1cmF0aW9uKCk6IE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwdXNoKG1ldHJpYzogSU1ldHJpYyk6IHZvaWQge1xuICAgIGNvbnN0IHtzdHJlYW1JZCwgdmFsdWUsIHByZXZpb3VzVmFsdWUsIHJ1bnRpbWUsIHJlc291cmNlLCBraW5kfSA9IG1ldHJpYztcbiAgICBjb25zdCBtZXRyaWNUeXBlID0gbmV3IE1ldHJpY1R5cGUobWV0cmljLm1ldHJpY1R5cGUpO1xuXG4gICAgaWYgKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRocmVzaG9sZCA+IG1ldHJpY1R5cGUuZ2V0VGVsZW1ldHJ5TGV2ZWwoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBtZXRyaWM6IG1ldHJpY1R5cGUuZ2V0TmFtZSgpLFxuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCxcbiAgICAgIHZlcnNpb246IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb24sXG4gICAgICBydW50aW1lLFxuICAgICAgcmVzb3VyY2UsXG4gICAgICBraW5kXG4gICAgfTtcblxuICAgIHRoaXMuX21ldHJpY3MucHVzaChtZXRyaWNSZWNvcmQpO1xuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzOiBBcnJheTxJTWV0cmljUmVjb3JkPik6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBtZXRyaWNzTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzSWZBYmxlKCk6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgaWYgKHRoaXMuX21ldHJpY3MubGVuZ3RoIDw9IDAgfHwgdGhpcy5faXNTZW5kaW5nIHx8ICFHbG9iYWxTY29wZS52YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzU2VuZGluZyA9IHRydWU7XG5cbiAgICBjb25zdCBtZXRyaWNzTWVzc2FnZXMgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKDAsIHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgdGhpcy5fbWV0cmljcyA9IHRoaXMuX21ldHJpY3Muc2xpY2UocmVxdWVzdFNpemVMaW1pdCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTWV0cmljcyhtZXRyaWNzTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUocmVzcG9uc2UpKSB7XG4gICAgICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSBtYXhCdWZmZXJlZFJlY29yZHMpIHtcbiAgICAgICAgICB0aGlzLl9mYWlsdXJlQ291bnQrKztcblxuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbWV0cmljcyA9IFsuLi5tZXRyaWNzTWVzc2FnZXMsIC4uLnRoaXMuX21ldHJpY3NdO1xuXG4gICAgICAgICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcbiAgICAgICAgICB9LCB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9mYWlsdXJlQ291bnQpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVG9vIG1hbnkgY2FjaGVkIG1ldHJpYyByZWNvcmRzIFslc10sIGRyb3BwaW5nIFslc10gcmVjb3JkcycsIHRoaXMuX21ldHJpY3MubGVuZ3RoLCBtZXRyaWNzTWVzc2FnZXMubGVuZ3RoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLl9mYWlsdXJlQ291bnQgPSAwO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHtzdGF0dXN9OiBSZXNwb25zZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAvXjVcXGR7Mn0kLy50ZXN0KHN0YXR1cy50b1N0cmluZygpKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZW51bSBNZXRyaWNzVHlwZSB7XG4gIFRpbWVUb0ZpcnN0RnJhbWUsXG4gIENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUsXG4gIFN0YWxsZWQsXG4gIEJ1ZmZlcmluZyxcbiAgU2V0dXBDb21wbGV0ZWQsXG4gIFNldHVwRmFpbGVkLFxuICBSb3VuZFRyaXBUaW1lLFxuICBEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgTmV0d29ya1R5cGUsXG4gIFJlc29sdXRpb25DaGFuZ2VkLFxuICBBcHBsaWNhdGlvbkZvcmVncm91bmQsXG4gIEFwcGxpY2F0aW9uQmFja2dyb3VuZFxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXRyaWNzVHlwZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUxldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuT2ZmOlxuICAgICAgICByZXR1cm4gJ09mZic7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDpcbiAgICAgICAgcmV0dXJuICdFc3NlbnRpYWwnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWxUeXBlOiBUZWxlbWV0cnlMZXZlbFR5cGUpOiBUZWxlbWV0cnlMZXZlbCB7XG4gICAgc3dpdGNoICh0ZWxlbWV0cnlMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ09mZic6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5PZmY7XG4gICAgICBjYXNlICdFc3NlbnRpYWwnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuRXNzZW50aWFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRlbGVtZXRyeUxldmVsVHlwZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7VGVsZW1ldHJ5TGV2ZWx9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlEZWZhdWx0IHtcbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbFtCdWlsZEZlYXR1cmVzLnNlbmRNZXRyaWNzXTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHtcbiAgYXVkaW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICB2aWRlb1RyYW5zY2VpdmVycz86IFJUQ1J0cFRyYW5zY2VpdmVyW107XG4gIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb247XG4gIGxvY2FsT2ZmZXI6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmV4cG9ydCBlbnVtIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyB7XG4gIERpc2FibGVkLFxuICBFbmFibGVkXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhY2tLaW5kczogKCdhdWRpbycgfCAndmlkZW8nKVtdID0gWydhdWRpbycsICd2aWRlbyddO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1BlZXJDb25uZWN0aW9uU2VydmljZScpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcGVlckNvbm5lY3Rpb25GYWN0b3J5OiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4obmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkoKSk7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZWQ6IHtcbiAgICBkaXJlY3Rpb24/OiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjtcbiAgICBwZWVyQ29ubmVjdGlvbjogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb25PZmZlckluaXQ+O1xuICB9IHwgbnVsbDtcblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZygpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNQcmVjYWNoaW5nRW5hYmxlZCkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHByZS1jYWNoZSBwZWVyIGNvbm5lY3Rpb24gb2ZmZXInLCBlKSk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpOiBQcm9taXNlPHsgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0IHwgdm9pZD47IGRpcmVjdGlvbjogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb24gfT4ge1xuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IHtcbiAgICAgIGRpcmVjdGlvbjogJ3JlY3Zvbmx5JyxcbiAgICAgIHBlZXJDb25uZWN0aW9uOiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigpXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9KVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcihkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uID0gJ3JlY3Zvbmx5JywgdHJhY2tLaW5kcyA9IGRlZmF1bHRUcmFja0tpbmRzLCBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCk6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PiB7XG4gICAgaWYgKFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkICYmIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLmRpcmVjdGlvbiA9PT0gZGlyZWN0aW9uICYmIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkICYmIHRoaXMuaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tLaW5kcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQucGVlckNvbm5lY3Rpb247XG5cbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkID0gbnVsbDtcblxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQgPSBGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCA/IHtlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyA9PT0gRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkVuYWJsZWR9IDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pXG4gICAgICAudGhlbihhc3luYyBwZWVyQ29ubmVjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIgPSBwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0FkZFRyYW5zY2VpdmVyO1xuICAgICAgICBjb25zdCBhdWRpb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aWRlb1RyYW5zY2VpdmVyczogUlRDUnRwVHJhbnNjZWl2ZXJbXSA9IFtdO1xuXG4gICAgICAgIGlmIChzdXBwb3J0c0FkZFRyYW5zY2VpdmVyKSB7XG4gICAgICAgICAgdHJhY2tLaW5kcy5mb3JFYWNoKGtpbmQgPT4ge1xuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICdhdWRpbycpIHtcbiAgICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycpIHtcbiAgICAgICAgICAgICAgdmlkZW9UcmFuc2NlaXZlcnMucHVzaChwZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihraW5kLCB7ZGlyZWN0aW9ufSkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhdWRpb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIodW5kZWZpbmVkKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcHRpb25zID0gZGlyZWN0aW9uID09PSAncmVjdm9ubHknID8ge1xuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogdHJ1ZVxuICAgICAgICB9IDoge307XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbjogcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgbG9jYWxPZmZlcjogYXdhaXQgcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucylcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQodHJhY2tzS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSk6IGJvb2xlYW4ge1xuICAgIGlmICh0cmFja3NLaW5kcy5sZW5ndGggIT09IGRlZmF1bHRUcmFja0tpbmRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VHJhY2tLaW5kcyA9IChhcnJheTogKCdhdWRpbycgfCAndmlkZW8nKVtdKSA9PiBhcnJheS5yZWR1Y2UoKHRyYWNrS2luZENvdW50LCBraW5kKSA9PiB7XG4gICAgICB0cmFja0tpbmRDb3VudFtraW5kXSA9ICh0cmFja0tpbmRDb3VudFtraW5kXSB8fCAwKSArIDE7XG5cbiAgICAgIHJldHVybiB0cmFja0tpbmRDb3VudDtcbiAgICB9LCB7XG4gICAgICBhdWRpbzogMCxcbiAgICAgIHZpZGVvOiAwXG4gICAgfSk7XG4gICAgY29uc3QgY291bnRlZFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHModHJhY2tzS2luZHMpO1xuICAgIGNvbnN0IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcyA9IGNvdW50VHJhY2tLaW5kcyhkZWZhdWx0VHJhY2tLaW5kcyk7XG5cbiAgICByZXR1cm4gY291bnRlZFRyYWNrS2luZHMuYXVkaW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy5hdWRpbyAmJiBjb3VudGVkVHJhY2tLaW5kcy52aWRlbyA9PT0gY291bnRlZERlZmF1bHRUcmFja0tpbmRzLnZpZGVvO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BlZXJDb25uZWN0aW9uU2VydmljZSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIHtcbiAgc3RhdGljIHRydW5jYXRlSWNlU2VydmVycyhjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgIGlmICghY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdXJsczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDI7IGluZGV4KyspIHtcbiAgICAgICAgY29uc3QgdXJsID0gY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdO1xuXG4gICAgICAgIGlmICh1cmwpIHtcbiAgICAgICAgICB1cmxzLnB1c2goY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVybHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICB1cmxzOiB1cmxzLFxuICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICBjcmVkZW50aWFsOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0uY3JlZGVudGlhbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzID0gaWNlU2VydmVycztcblxuICAgIHJldHVybiBjb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi9TZHBQYXJzZXInO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSdGNNb25pdG9yU3RhdGlzdGljIHtcbiAgW2tpbmQ6IHN0cmluZ106IElSdGNTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjU3RhdGlzdGljIHtcbiAgc3NyYz86IHN0cmluZztcbiAgbWVkaWFUeXBlPzogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNSZWNlaXZlZD86IG51bWJlcjtcbiAgZnJhbWVzRGVjb2RlZD86IG51bWJlcjtcbiAgcGFja2V0c0xvc3Q/OiBudW1iZXI7XG4gIHBhY2tldHNSZWNlaXZlZD86IG51bWJlcjtcbiAgY29kZWM/OiBzdHJpbmc7XG4gIGZwcz86IG51bWJlcjtcbiAgcm91bmRUcmlwVGltZT86IG51bWJlcjtcbiAgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wPzogbnVtYmVyO1xufVxuXG5jb25zdCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0ID0gMTAwMDtcbmNvbnN0IGdldFN0YXRzVGltZW91dER1cmF0aW9uID0gNTAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnRjQ29ubmVjdGlvbk1vbml0b3IgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSdGNDb25uZWN0aW9uTW9uaXRvcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZFZpZGVvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkQXVkaW9Db2RlYzogc3RyaW5nID0gJ3Vua25vd24nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9ydGNTdGF0aXN0aWM6IFN1YmplY3Q8SVJ0Y01vbml0b3JTdGF0aXN0aWMgfCBudWxsPiA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4oe30pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgX2lzTW9uaXRvclJ1bm5pbmcgPSB0cnVlO1xuICBwcml2YXRlIF91cGRhdGVUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdHJhY2tzVG9Nb25pdG9yOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfbW9uaXRvckdlbmVyYXRpb24gPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyLCBpc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG4gICAgdGhpcy5fdHJhY2tzVG9Nb25pdG9yID0gbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkubWFwKHRyYWNrID0+IHRyYWNrLmtpbmQpIHx8IFtdO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmdldEN1cnJlbnRPZmZlckRpc2FibGVkICYmIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50UmVtb3RlRGVzY3JpcHRpb24/LnNkcCkge1xuICAgICAgICBjb25zdCBwYXJzZWRTRFAgPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgPSBwYXJzZWRTRFAuYXVkaW9Db2RlYztcbiAgICAgICAgdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyA9IHBhcnNlZFNEUC52aWRlb0NvZGVjO1xuICAgICAgfVxuXG4gICAgICBsZXQgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIGlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoZm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmb3JlZ3JvdW5kIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IHBvbGwgZnJvbSBiZWZvcmUgdGhlIGZyZWV6ZVxuICAgICAgICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG5cbiAgICAgICAgICBpZiAodGhpcy5fdXBkYXRlVGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdSZXN0YXJ0aW5nIHN0YXRzIHBvbGxpbmcgYWZ0ZXIgZm9yZWdyb3VuZCB0cmFuc2l0aW9uJyk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuX3VwZGF0ZVRpbWVvdXQpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlU3RhdGlzdGljKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5nZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGVTdGF0aXN0aWNMZWdhY3koKTtcbiAgICB9XG5cbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICBsZXQgdGltZW91dEhhbmRsZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzUHJvbWlzZSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRTdGF0cyhudWxsKTtcblxuICAgICAgaWYgKCFzdGF0c1Byb21pc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlPG51bGw+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKG51bGwpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0cygpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuICAgICAgICBsZXQgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wKSB7XG4gICAgICAgICAgICBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IGxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10pIHtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1sndmlkZW8nXS5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgPSBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHJlcG9ydC50eXBlID09PSAnaW5ib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICBjb25zdCBraW5kID0gcmVwb3J0LmtpbmQgfHwgcmVwb3J0Lm1lZGlhVHlwZSB8fCBnZXRLaW5kRm9yU2FmYXJpMTEocmVwb3J0KTtcbiAgICAgICAgICAgIGxldCBjb2RlYyA9ICcnO1xuXG4gICAgICAgICAgICBzdGF0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gcmVwb3J0LmNvZGVjSWQpIHtcbiAgICAgICAgICAgICAgICBjb2RlYyA9IGl0ZW0ubWltZVR5cGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoa2luZCAmJiB0aGlzLl90cmFja3NUb01vbml0b3IuaW5jbHVkZXMoa2luZCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNSZWNlaXZlZCB8fCAwO1xuICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c0J5dGVzUmVjZWl2ZWQgPSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LltraW5kXT8uYnl0ZXNSZWNlaXZlZCA/PyAwO1xuICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzUmVjZWl2ZWQ7XG4gICAgICAgICAgICAgIGNvbnN0IHRpbWVEZWx0YSA9IHJlcG9ydC50aW1lc3RhbXAgLSAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LnRpbWVzdGFtcCB8fCAwKTtcbiAgICAgICAgICAgICAgY29uc3QgYml0cmF0ZSA9IGJ5dGVzRGVsdGEgJiYgdGltZURlbHRhID8gTWF0aC5mbG9vcig4ICogYnl0ZXNEZWx0YSAvXG4gICAgICAgICAgICAgICAgdGltZURlbHRhICogMTAwMCkgOiAwO1xuXG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0gPSB7XG4gICAgICAgICAgICAgICAgc3NyYzogcmVwb3J0LnNzcmMsXG4gICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBraW5kLFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogcmVwb3J0LnRpbWVzdGFtcCxcbiAgICAgICAgICAgICAgICBiaXRyYXRlLFxuICAgICAgICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQ6IHJlcG9ydC5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgIHBhY2tldHNMb3N0OiByZXBvcnQucGFja2V0c0xvc3QsXG4gICAgICAgICAgICAgICAgcGFja2V0c1JlY2VpdmVkOiByZXBvcnQucGFja2V0c1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgIGNvZGVjOiBjb2RlYyB8fCB0aGlzLmdldENvZGVjQnlUeXBlKGtpbmQpLFxuICAgICAgICAgICAgICAgIHJvdW5kVHJpcFRpbWVcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAocmVwb3J0Lmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdLmxhc3RQYWNrZXRSZWNlaXZlZFRpbWVzdGFtcCA9IHJlcG9ydC5sYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFJlY2VpdmVkVGltZXN0YW1wO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGtpbmQgPT09ICd2aWRlbycgJiYgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRGVjb2RlZCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZyYW1lc0RlY29kZWQnXSA9IHJlcG9ydC5mcmFtZXNEZWNvZGVkO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNEZWNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0RlY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgIChydGNTdGF0aXN0aWNzW2tpbmRdLnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby50aW1lc3RhbXApICpcbiAgICAgICAgICAgICAgICAgIDEwMDA7XG5cbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcHMnXSA9IGZwcyA/IE1hdGgucm91bmQoZnBzICogMTAwKSAvIDEwMCA6IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdnZXRTdGF0cygpIHJlamVjdGVkJywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgJiYgZ2VuZXJhdGlvbiA9PT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVN0YXRpc3RpY0xlZ2FjeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb247XG4gICAgbGV0IHRpbWVvdXRIYW5kbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0c1Byb21pc2UgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0U3RhdHNMZWdhY3koKTtcblxuICAgICAgaWYgKCFzdGF0c1Byb21pc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0aW1lb3V0UHJvbWlzZSA9IG5ldyBQcm9taXNlPG51bGw+KHJlc29sdmUgPT4ge1xuICAgICAgICB0aW1lb3V0SGFuZGxlID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZXNvbHZlKG51bGwpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0c0xlZ2FjeSgpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y01vbml0b3JTdGF0aXN0aWMgPSB7fTtcbiAgICAgICAgbGV0IHJvdW5kVHJpcFRpbWUgPSB0aGlzLl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lO1xuXG4gICAgICAgIHN0YXRzLnJlc3VsdCgpLmZvckVhY2gocmVwb3J0ID0+IHtcbiAgICAgICAgICByZXBvcnQubmFtZXMoKS5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdnb29nUlRUJykge1xuICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lID0gcmVwb3J0LnN0YXQobmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdzc3JjJykge1xuICAgICAgICAgICAgY29uc3QgbWVkaWFUeXBlID0gcmVwb3J0LnN0YXQoJ21lZGlhVHlwZScpLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXSA9IHt0aW1lc3RhbXA6IERhdGUubm93KCl9O1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydzc3JjJ10gPSByZXBvcnQuc3RhdCgnc3NyYycpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ21lZGlhVHlwZSddID0gbWVkaWFUeXBlO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydieXRlc1JlY2VpdmVkJ10gPSByZXBvcnQuc3RhdCgnYnl0ZXNSZWNlaXZlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydwYWNrZXRzTG9zdCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNMb3N0Jyk7XG4gICAgICAgICAgICBydGNTdGF0aXN0aWNzW21lZGlhVHlwZV1bJ3BhY2tldHNSZWNlaXZlZCddID0gcmVwb3J0LnN0YXQoJ3BhY2tldHNSZWNlaXZlZCcpO1xuICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydjb2RlYyddID0gcmVwb3J0LnN0YXQoJ2dvb2dDb2RlY05hbWUnKS50b1N0cmluZygpIHx8IHRoaXMuZ2V0Q29kZWNCeVR5cGUobWVkaWFUeXBlKTtcbiAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsncm91bmRUcmlwVGltZSddID0gcm91bmRUcmlwVGltZTtcblxuICAgICAgICAgICAgaWYgKG1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyAmJiB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWU/LnZpZGVvPy5mcmFtZXNEZWNvZGVkKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXVsnZnJhbWVzRGVjb2RlZCddID0gcmVwb3J0LnN0YXQoJ2ZyYW1lc0RlY29kZWQnKTtcbiAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1ttZWRpYVR5cGVdWydmcHMnXSA9IChydGNTdGF0aXN0aWNzW21lZGlhVHlwZV0uZnJhbWVzRGVjb2RlZCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZS52aWRlby5mcmFtZXNEZWNvZGVkKSAvXG4gICAgICAgICAgICAgICAgKHJ0Y1N0YXRpc3RpY3NbbWVkaWFUeXBlXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgIDEwMDAgfHwgMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZSA9IHJ0Y1N0YXRpc3RpY3M7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdnZXRTdGF0c0xlZ2FjeSgpIHJlamVjdGVkJywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgJiYgZ2VuZXJhdGlvbiA9PT0gdGhpcy5fbW9uaXRvckdlbmVyYXRpb24pIHtcbiAgICAgIHRoaXMuX3VwZGF0ZVRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB0aGlzLnVwZGF0ZVN0YXRpc3RpYygpLCB1cGRhdGVTdGF0aXN0aWNUaW1lb3V0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldENvZGVjQnlUeXBlKHR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICAgIHJldHVybiB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjIHx8ICd1bmtub3duJztcbiAgICAgIGNhc2UgJ3ZpZGVvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICd1bmtub3duJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcblxuICAgIGNvbnN0IHNkcFNwbGl0QnlMaW5lcyA9IHRoaXMuX3NkcC5zcGxpdCgvKFxcclxcbnxcXHJ8XFxuKS8pO1xuICAgIGNvbnN0IHNkcFNwbGl0QnlUcmFja3MgPSB0aGlzLl9zZHAuc3BsaXQoLyg/Ol58W1xcclxcbl0pbT0vKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJywgc2RwU3BsaXRCeVRyYWNrcyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBwcml2YXRlIGlzVHJhY2tCeVR5cGVFbmFibGVkKHR5cGU6IHN0cmluZywgc2RwU3BsaXRCeVRyYWNrczogc3RyaW5nW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHNkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcnRtYXAgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYG09JHt0eXBlfWApKT8uc3BsaXQoJyAnKVszXSB8fCAnJztcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3J0bWFwfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lPy5zcGxpdCgnICcpWzFdIHx8ICcnO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5SVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5pY2VDb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldFRyYW5zY2VpdmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmdldFRyYW5zY2VpdmVyc0Rpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0VHJhbnNjZWl2ZXJzID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUcmFuc2NlaXZlcnMoKTogUlRDUnRwVHJhbnNjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ocmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlKG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikpO1xuICAgICAgICBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi9TdWJqZWN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZE9ubHlTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3RvcihzdWJqZWN0OiBTdWJqZWN0PFQ+KSB7XG4gICAgdGhpcy5fc3ViamVjdCA9IHN1YmplY3Q7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQge0dsb2JhbFNjb3BlfSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVNoYWthUGxheWVyJztcbmltcG9ydCB7SGxzUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSUhsc1BsYXllcic7XG5pbXBvcnQge1dlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lXZWJQbGF5ZXInO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZT8ucGFnZUxvYWRUaW1lIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlcjogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJykgYXMgVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBvbkxvYWQoZ2xvYmFsU2NvcGU6IElHbG9iYWxTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RLIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBTREsuZGlzcG9zZSgpO1xuICAgIH0pO1xuXG4gICAgU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGU6IElJbml0T3B0aW9ucyAmIHtnbG9iYWxTY29wZT86IElQcm92aWRlZEdsb2JhbFNjb3BlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKSB7XG4gICAgICBHbG9iYWxTY29wZS5zZXRJbnN0YW5jZShvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkdsb2JhbFNjb3BlLnN1YnNjcmliZShTREsub25Mb2FkLmJpbmQoU0RLKSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlVcmwge1xuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gYmFzZVVSTC5ob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gICAgICBzd2l0Y2ggKGJhc2VVUkwucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnd3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHA6JztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3c3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHBzOic7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAyIHx8XG4gICAgICAgICAgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMyAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAyXS5sZW5ndGggPD0gMiAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5sZW5ndGggPD0gMylcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50cy51bnNoaWZ0KCd0ZWxlbWV0cnknKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnc3RnLScpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctc3RnJykgfHwgc2VnbWVudHNbMF0uaW5jbHVkZXMoJy1zdGctJykgfHwgc2VnbWVudHNbMF0gPT09ICdzdGcnKSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeS1zdGcnO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdsb2NhbCcpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctbG9jYWwnKSkge1xuICAgICAgICAvLyBMZWF2ZSBVUkwgdW5jaGFuZ2VkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnknO1xuICAgICAgfVxuXG4gICAgICBiYXNlVVJMLmhvc3RuYW1lID0gc2VnbWVudHMuam9pbignLicpO1xuXG4gICAgICByZXR1cm4gYCR7YmFzZVVSTC5vcmlnaW59L3RlbGVtZXRyeWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRGltZW5zaW9uIGZyb20gJy4uLy4uL3ZpZGVvL0RpbWVuc2lvbic7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIgZnJvbSAnLi4vLi4vZG9tL0dhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lDaGFubmVsfSBmcm9tICcuL0lDaGFubmVsJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgVmlkZW9UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vVmlkZW9UZWxlbWV0cnknO1xuaW1wb3J0IFNlc3Npb25UZWxlbWV0cnkgZnJvbSAnLi4vLi4vdmlkZW8vU2Vzc2lvblRlbGVtZXRyeSc7XG5pbXBvcnQge0lSdGNNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBDaGFubmVsQ29udGV4dCwge0NoYW5uZWxDb250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgRW5jb2RlZFN0cmVhbVNpbmssIHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBTdHJlYW1UcmFja1RyYW5zZm9ybSwge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHtTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtJU3RyZWFtU3Vic2NyaWJlcn0gZnJvbSAnLi4vc3RyZWFtaW5nL0lTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCBTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSBmcm9tICcuLi9zdHJlYW1pbmcvU3RyZWFtU3Vic2NyaWJlckZhY3RvcnknO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZvcmVncm91bmRSZXN0YXJ0UmVhc29uQmFja2dyb3VuZFRpbWVvdXQgPSAnY2xpZW50OmZvcmVncm91bmRlZDpiYWNrZ3JvdW5kLXRpbWVvdXQnO1xuY29uc3QgZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHkgPSAnY2xpZW50OmZvcmVncm91bmRlZDp1bmhlYWx0aHknO1xuY29uc3QgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMgPSAzMDAwO1xuY29uc3Qgc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMTUwMDA7XG5jb25zdCBiYWNrZ3JvdW5kUmVjb3ZlcnlGYWlsc2FmZUludGVydmFsSW5NaWxsaXNlY29uZHMgPSA1MDAwO1xuY29uc3Qgc3RyZWFtRGVsZXRpb25UaHJlc2hvbGRJbk1pbGxpc2Vjb25kcyA9IDMwMDAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsT3B0aW9ucyA9IHtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbCBpbXBsZW1lbnRzIElDaGFubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0NoYW5uZWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0YXRlQ29udGV4dDogU3RhdGVDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jaGFubmVsU3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PENoYW5uZWxTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RXhpc3RzOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9NdXRlZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dG9QYXVzZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQbGF5aW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUYXJnZXRMYWc6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TGFnOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlCaXRyYXRlTGltaXQ6IFJlYWRPbmx5U3ViamVjdDxCaXRzUGVyU2Vjb25kPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlSZXNvbHV0aW9uOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5TWVkaWFTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogUmVhZE9ubHlTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBSZWFkT25seVN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9zdHJlYW1TdWJzY3JpYmVyOiBJU3RyZWFtU3Vic2NyaWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuICBwcml2YXRlIHJlYWRvbmx5IF92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXI6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgb3B0aW9ucz86IENoYW5uZWxPcHRpb25zKSB7XG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbik7XG4gICAgY29uc3QgY2hhbm5lbENvbnRleHRPcHRpb25zOiBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gICAgICB0YXJnZXRMYWc6IG9wdGlvbnM/LnRhcmdldExhZyxcbiAgICAgIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s6IG9wdGlvbnM/Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2ssXG4gICAgICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjazogb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2tcbiAgICB9O1xuICAgIGNvbnN0IHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0T3B0aW9ucyA9IHtcbiAgICAgIGhhc0luc2VydGFibGVTdHJlYW1zOiBlZGdlVG9rZW4uY2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdpbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKSxcbiAgICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IG9wdGlvbnM/LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zPy5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrLFxuICAgICAgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogb3B0aW9ucz8uZW5jb2RlZFZpZGVvU3RyZWFtU2luayxcbiAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IG9wdGlvbnM/LmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQgPSBuZXcgQ2hhbm5lbENvbnRleHQoY2hhbm5lbENvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KCk7XG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dCA9IG5ldyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KHN0cmVhbVRyYW5zZm9ybUNvbnRleHRPcHRpb25zKTtcbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQgPSBuZXcgU3RhdGVDb250ZXh0KCk7XG4gICAgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmID0gbmV3IEV4cG9uZW50aWFsQmFja29mZigpO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGF0ZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Q2hhbm5lbFN0YXRlPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlFeGlzdHMgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPih0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b011dGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkKTtcbiAgICB0aGlzLl9yZWFkT25seU9ubGluZSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UGxheWluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdGFuZGJ5ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9jaGFubmVsQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5VGFyZ2V0TGFnID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnRhcmdldExhZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlMYWcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4odGhpcy5fY2hhbm5lbENvbnRleHQubGFnKTtcbiAgICB0aGlzLl9yZWFkT25seUJpdHJhdGVMaW1pdCA9IG5ldyBSZWFkT25seVN1YmplY3Q8Qml0c1BlclNlY29uZD4odGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0KTtcbiAgICB0aGlzLl9yZWFkT25seVJlc29sdXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PERpbWVuc2lvbj4odGhpcy5fY2hhbm5lbENvbnRleHQucmVzb2x1dGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50KTtcbiAgICB0aGlzLl9yZWFkT25seVN0cmVhbSA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5KTtcbiAgICB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIgPSB0aGlzLmhhbmRsZVZpZGVvTWV0YURhdGFDaGFuZ2VkLmJpbmQodGhpcyk7XG4gICAgdGhpcy52aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7XG5cbiAgICB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCA9IG5ldyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCgpO1xuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcbiAgICB0aGlzLl9yZWFkT25seUlzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkVuYWJsZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPih0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG4gICAgdGhpcy5fcmVhZE9ubHlSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnN1YnNjcmliZSh2aWRlb0VsZW1lbnQgPT4ge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgICAgICBpZiAoIXZpZGVvRWxlbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS5zdWJzY3JpYmUoc3RyZWFtID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LmRpc3Bvc2UoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghdGhpcy52aWRlb0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldCkge1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgICAgICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9IHRoaXMuc3RyZWFtSWQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkgPSBuZXcgVmlkZW9UZWxlbWV0cnkodGhpcy5zdHJlYW1JZCwgU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fY2hhbm5lbFN0YXJ0VGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodGhpcy52aWRlb0VsZW1lbnQpO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5LnNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh0aGlzLnZpZGVvRWxlbWVudCk7XG5cbiAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5TdG9wcGVkKSB7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5yZXN0YXJ0QWZ0ZXJTdG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbERpc3Bvc2FibGVzLmFkZCh0aGlzLl9jaGFubmVsQ29udGV4dC5yZW5kZXJlckRpc3Bvc2FibGVzKTtcbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9jaGFubmVsQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnN1YnNjcmliZShyZXNvbHV0aW9uID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvVGVsZW1ldHJ5KSB7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9UZWxlbWV0cnkub25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzKHJlc29sdXRpb24udG9TdHJpbmcoKSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsRGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYml0cmF0ZUxpbWl0LnN1YnNjcmliZShiaXRyYXRlTGltaXQgPT4ge1xuICAgICAgICBpZiAoYml0cmF0ZUxpbWl0ICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IGVsYXBzZWRJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCkgLSB0aGlzLl9jaGFubmVsQ29udGV4dC5jaGFubmVsSW5pdGlhbGl6YXRpb24uZ2V0VGltZSgpO1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZS5saW1pdEJpdHJhdGUoXG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsXG4gICAgICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgICAgICBiaXRyYXRlTGltaXQsXG4gICAgICAgICAgICBCaXRyYXRlU3RhdGUuS2VlcCxcbiAgICAgICAgICAgIEJpdHJhdGVNb2RlLk5vcm1hbFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdFcnJvciB3aGlsZSBzZXR0aW5nIGxpbWl0IGJpdHJhdGUnLCBlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBkZXN0cm95U3RyZWFtT25Vbm1vdW50ID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbU9uVW5tb3VudCh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuXG4gICAgaWYgKFNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgLy8gU0RLLmluaXRpYWxpemUoKSBndWFyYW50ZWVzIGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIGlzIGNyZWF0ZWQgYmVmb3JlIGFueSBDaGFubmVsIGNhbiBiZSBpbnN0YW50aWF0ZWRcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgICAgIGlmICghaXNGb3JlZ3JvdW5kKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgbGFzdEJhY2tncm91bmREdXJhdGlvbiA9IFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpO1xuICAgICAgICAgIGNvbnN0IHNob3VsZEZvcmNlUmVzdGFydCA9IEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlXG4gICAgICAgICAgICAmJiBsYXN0QmFja2dyb3VuZER1cmF0aW9uICE9PSBudWxsXG4gICAgICAgICAgICAmJiBsYXN0QmFja2dyb3VuZER1cmF0aW9uID4gYmFja2dyb3VuZFJlY292ZXJ5RmFpbHNhZmVJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgICAgIC8vIFBsYXRmb3JtIGRlc3Ryb3lzIHN0cmVhbXMgYWZ0ZXIgMzBzIG9mIG5vIG1lZGlhIGRhdGEuIElmIHRoZSBjaGFubmVsIGlzIGFscmVhZHlcbiAgICAgICAgICAvLyByZWNvbm5lY3RpbmcgYW5kIHRoZSB0YWIgd2FzIGJhY2tncm91bmRlZCBsb25nZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlIHNlcnZlci1zaWRlXG4gICAgICAgICAgLy8gc3RyZWFtIGlzIGdvbmUgYW5kIHdlIG11c3QgZG8gYSBmdWxsIHJlc3RhcnQgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgdGhlIHJlY29ubmVjdC5cbiAgICAgICAgICBjb25zdCBpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtID0gdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPT09IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3RpbmdcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gIT09IG51bGxcbiAgICAgICAgICAgICYmIGxhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPiBzdHJlYW1EZWxldGlvblRocmVzaG9sZEluTWlsbGlzZWNvbmRzO1xuXG4gICAgICAgICAgaWYgKHNob3VsZEZvcmNlUmVzdGFydCB8fCBpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGb3JlZ3JvdW5kZWQgYWZ0ZXIgWyVzXSBtcyBpbiBiYWNrZ3JvdW5kLCBmb3JjaW5nIHJlc3RhcnQnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgbGFzdEJhY2tncm91bmREdXJhdGlvbik7XG4gICAgICAgICAgICB0aGlzLnJlc3RhcnRPbkZvcmVncm91bmQoZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25CYWNrZ3JvdW5kVGltZW91dCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5pc1JldHJ5YWJsZVN0YXRlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdGFydE9uRm9yZWdyb3VuZChmb3JlZ3JvdW5kUmVzdGFydFJlYXNvblVuaGVhbHRoeSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBUaGUgaGVhbHRoIGNoZWNrIGNhdGNoZXMgc3RyZWFtcyB0aGF0IGFyZSB1bmhlYWx0aHkgd2hpbGUgc3RpbGwgaW4gUGxheWluZyBzdGF0ZVxuICAgICAgICAgIC8vIChlLmcuLCB2aWRlbyBzdGFsbGVkIGJ1dCBubyBzdGF0ZSB0cmFuc2l0aW9uIHlldClcbiAgICAgICAgICBpZiAoIXRoaXMuX3N0cmVhbVN1YnNjcmliZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5pc1N1YnNjcmliZXJIZWFsdGh5KClcbiAgICAgICAgICAgIC50aGVuKGlzSGVhbHRoeSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpc0hlYWx0aHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBPbmx5IHJlc3RhcnQgZnJvbSBQbGF5aW5nIHN0YXRlIOKAlCB0ZXJtaW5hbCBzdGF0ZXMgKFVuYXV0aG9yaXplZCwgR2VvQmxvY2tlZCxcbiAgICAgICAgICAgICAgLy8gU3RvcHBlZCwgZXRjLikgc2hvdWxkIG5vdCB0cmlnZ2VyIGhlYWx0aC1jaGVjayByZXN0YXJ0c1xuICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5QbGF5aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFJlc2V0IGZhaWx1cmVDb3VudCB0byAwIGFuZCByZXN0YXJ0aW5nIENoYW5uZWwgYWZ0ZXIgcmV0dXJuaW5nIHRvIGZvcmVncm91bmQnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgaWdub3JlZFN0YXJ0ID0gdGhpcy5zdGFydCgpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIFVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWQgd2hlbiBjaGVja2luZyBzdWJzY3JpYmVyIGhlYWx0aCB3aGlsZSBmb3JlZ3JvdW5kaW5nJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlkZW9FbGVtZW50KCk6IEhUTUxWaWRlb0VsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuICB9XG5cbiAgc2V0IHZpZGVvRWxlbWVudCh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkZGF0YScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMuX3ZpZGVvTWV0YURhdGFDaGFuZ2VkSGFuZGxlcik7XG5cbiAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuZGF0YXNldC5zZXNzaW9uSWQgPSAnJztcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSAnJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgIT09IENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlID0gdmlkZW9FbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZGRhdGEnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fdmlkZW9NZXRhRGF0YUNoYW5nZWRIYW5kbGVyKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlVmlkZW9NZXRhRGF0YUNoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMucmVzb2x1dGlvbi52YWx1ZS53aWR0aCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvV2lkdGggfHwgdGhpcy5yZXNvbHV0aW9uLnZhbHVlLmhlaWdodCAhPT0gdmlkZW9FbGVtZW50LnZpZGVvSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlc29sdXRpb24udmFsdWUgPSBuZXcgRGltZW5zaW9uKHZpZGVvRWxlbWVudC52aWRlb1dpZHRoLCB2aWRlb0VsZW1lbnQudmlkZW9IZWlnaHQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5yZXNvbHV0aW9uLnZhbHVlID0gRGltZW5zaW9uLmVtcHR5O1xuICAgIH1cbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSA9IGVkZ2VUb2tlbi5jYXBhYmlsaXRpZXMuaW5jbHVkZXMoJ2luc2VydGFibGUtc3RyZWFtcycpO1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuaGFzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLnZhbHVlID0gZWRnZVRva2VuLmNhcGFiaWxpdGllcy5pbmNsdWRlcygnZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMnKTtcblxuICAgIHRoaXMuY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihlZGdlVG9rZW4uY2FwYWJpbGl0aWVzKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCBwZWVyQ29ubmVjdGlvbigpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IHN0YXRlKCk6IFJlYWRPbmx5U3ViamVjdDxDaGFubmVsU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCBleGlzdHMoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RXhpc3RzO1xuICB9XG5cbiAgZ2V0IGF1dG9NdXRlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dG9NdXRlZDtcbiAgfVxuXG4gIGdldCBhdXRvUGF1c2VkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0b1BhdXNlZDtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcGxheWluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVBsYXlpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgdGFyZ2V0TGFnKCk6IFJlYWRPbmx5U3ViamVjdDxNaWxsaXNlY29uZD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRhcmdldExhZztcbiAgfVxuXG4gIGdldCBsYWcoKTogUmVhZE9ubHlTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TGFnO1xuICB9XG5cbiAgZ2V0IGJpdHJhdGVMaW1pdCgpOiBCaXRzUGVyU2Vjb25kIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlCaXRyYXRlTGltaXQudmFsdWU7XG4gIH1cblxuICBnZXQgcmVzb2x1dGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGltZW5zaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVzb2x1dGlvbjtcbiAgfVxuXG4gIGdldCBmYWlsdXJlQ291bnQoKTogUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUZhaWx1cmVDb3VudDtcbiAgfVxuXG4gIGdldCBlbmRQb2ludCgpOiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQ7XG4gIH1cblxuICBnZXQgc3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0cmVhbTtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzO1xuICB9XG5cbiAgZ2V0IG1lZGlhU3RyZWFtKCk6IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5SXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uRW5hYmxlZDtcbiAgfVxuXG4gIGdldCBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbigpOiBSZWFkT25seVN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb247XG4gIH1cblxuICBnZXQgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uO1xuICB9XG5cbiAgc2V0Qml0cmF0ZUxpbWl0KGJpdHJhdGVMaW1pdDogQml0c1BlclNlY29uZCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmJpdHJhdGVMaW1pdC52YWx1ZSA9IGJpdHJhdGVMaW1pdDtcbiAgfVxuXG4gIGNsZWFyQml0cmF0ZUxpbWl0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlKSB7XG4gICAgICBjb25zdCBlbGFwc2VkSW5NaWxsaXNlY29uZHMgPSBEYXRlLm5vdygpIC0gdGhpcy5fY2hhbm5lbENvbnRleHQuY2hhbm5lbEluaXRpYWxpemF0aW9uLmdldFRpbWUoKTtcbiAgICAgIGNvbnN0IGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQgPSAwO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmxpbWl0Qml0cmF0ZShcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLFxuICAgICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICAgIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQsXG4gICAgICAgIEJpdHJhdGVTdGF0ZS5LZWVwLFxuICAgICAgICBCaXRyYXRlTW9kZS5SZXNldFxuICAgICAgKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5iaXRyYXRlTGltaXQudmFsdWUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRXJyb3Igd2hpbGUgc2V0dGluZyBsaW1pdCBiaXRyYXRlJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhcmdldExhZyhsYWc6IE1pbGxpc2Vjb25kKTogdm9pZCB7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQudGFyZ2V0TGFnLnZhbHVlID0gbGFnO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJlbmRlcmVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlLnNyY09iamVjdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMocmVhc29uKTtcblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyByZXN1bWUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gdGhpcy5wbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB1bm11dGUoKTogdm9pZCB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKHZpZGVvRWxlbWVudCkge1xuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmNoYW5uZWxEaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCA9IHRydWU7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVcmkodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnVyaTtcblxuICAgIGlmICh1cmwpIHtcbiAgICAgIHJldHVybiB1cmw7XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhbGwgYmFjayB0byB0aGUgZGVmYXVsdCBkaXNjb3ZlciBVUkkgWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG4gIH1cblxuICBhc3luYyBzdGFydCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1JldHJ5YWJsZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzU3Vic2NyaWJlckhlYWx0aHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3Vic2NyaWJlci5pc1N0cmVhbUhlYWx0aHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdGFydE9uRm9yZWdyb3VuZChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFNraXBwaW5nIGZhaWx1cmVDb3VudCByZXNldCBhbmQgQ2hhbm5lbCByZXN0YXJ0IGR1ZSB0byBDaGFubmVsIGFscmVhZHkgc3RhcnRpbmcnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaXNSZXRyeWFibGVTdGF0ZSgpKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgZmFpbHVyZUNvdW50IHJlc2V0IGFuZCBDaGFubmVsIHJlc3RhcnQgZHVlIHRvIENoYW5uZWxTdGF0ZSBbJXNdIHdoaWNoIGlzIG5vdCByZXRyeWFibGUnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnWyVzXSBSZXNldCBmYWlsdXJlQ291bnQgdG8gMCBhbmQgcmVzdGFydGluZyBDaGFubmVsIGR1ZSB0byBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHJlYXNvbik7XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaXNSZWNvdmVyeSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nO1xuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBpc1JlY292ZXJ5ID8gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcgOiBDaGFubmVsU3RhdGUuU3RhcnRpbmc7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKGlzUmVjb3ZlcnkgPyAnY2xpZW50OnJlY292ZXInIDogJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IFN0cmVhbVRyYWNrVHJhbnNmb3JtLnZhbGlkYXRlTWVkaWFTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPigndmlkZW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBTdHJlYW1UcmFja1RyYW5zZm9ybS52YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPignYXVkaW8nLCB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spO1xuXG4gICAgICBpZiAoIXZhbGlkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih2YWxpZGF0aW9uUmVzdWx0KTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmspIHtcbiAgICAgIGNvbnN0IHt2YWxpZCwgdmFsaWRhdGlvblJlc3VsdH0gPSBFbmNvZGVkU3RyZWFtU2luay52YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rKCd2aWRlbycsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayk7XG5cbiAgICAgIGlmICghdmFsaWQpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKHZhbGlkYXRpb25SZXN1bHQpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luaykge1xuICAgICAgY29uc3Qge3ZhbGlkLCB2YWxpZGF0aW9uUmVzdWx0fSA9IEVuY29kZWRTdHJlYW1TaW5rLnZhbGlkYXRlRW5jb2RlZFN0cmVhbVNpbmsoJ2F1ZGlvJywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rKTtcblxuICAgICAgaWYgKCF2YWxpZCkge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IodmFsaWRhdGlvblJlc3VsdCk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSAmJiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIGluc2VydGFibGUtc3RyZWFtcyBhbmQgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgYXJlIGVuYWJsZWQsIG9ubHkgdXNlIG9uZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2sgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJztcbiAgICBjb25zdCBoYXNFbmNvZGVkU3RyZWFtU2luayA9IHR5cGVvZiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIGlmIChoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayAmJiBoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdCb3RoIE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gY2FsbGJhY2sgYW5kIGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBzaW5rIGZ1bmN0aW9uIGZvdW5kLCBvbmx5IHVzZSBvbmUgdHlwZSBvciB0aGUgb3RoZXInKTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IE1lZGlhIFN0cmVhbSBUcmFjayBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGlzIG1pc3Npbmc7IGhvd2V2ZXIsIGluc2VydGFibGUtc3RyZWFtcyBpcyBlbmFibGVkJyk7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGhhc1RyYW5zZm9ybVN0cmVhbUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIGNhbGxiYWNrIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBpbnNlcnRhYmxlLXN0cmVhbXMgaXMgbm90IGVuYWJsZWRgKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZSkge1xuICAgICAgaWYgKCEoRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgfHwgRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyBBUEknKTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWhhc0VuY29kZWRTdHJlYW1TaW5rKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignQ3JlYXRlQ2hhbm5lbE9wdGlvbnMgdHJhbnNmb3JtIHNpbmsgZnVuY3Rpb24gaXMgbWlzc2luZzsgaG93ZXZlciwgZW5jb2RlZC1pbnNlcnRhYmxlLXN0cmVhbXMgaXMgZW5hYmxlZCcpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChoYXNFbmNvZGVkU3RyZWFtU2luaykge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYENyZWF0ZUNoYW5uZWxPcHRpb25zIHRyYW5zZm9ybSBzaW5rIGZ1bmN0aW9uIGZvdW5kOyBob3dldmVyLCBlbmNvZGVkLWluc2VydGFibGUtc3RyZWFtcyBpcyBub3QgZW5hYmxlZGApO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICBjb25zdCB1cmkgPSB0aGlzLmdldFVyaSh0b2tlbik7XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IENoYW5uZWxTdGF0ZS5FcnJvciB8fCBzdGF0ZSA9PT0gQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIGlmICghdGhpcy5pc1JldHJ5YWJsZVN0YXRlKCkpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIElnbm9yaW5nIHN0cmVhbSBmYWlsdXJlIGNhbGxiYWNrIGR1ZSB0byBDaGFubmVsU3RhdGUgYmVpbmcgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuXG4gICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnZpZGVvRWxlbWVudC52YWx1ZS5wYXVzZSgpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC52aWRlb0VsZW1lbnQudmFsdWUuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIERlZmVycmluZyBzdHJlYW0gZmFpbHVyZSBoYW5kbGluZyB0byBmb3JlZ3JvdW5kIHJlY292ZXJ5JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N0cmVhbVN1YnNjcmliZXIgPSBTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeS5jcmVhdGUodG9rZW4sIHRoaXMuX2NoYW5uZWxDb250ZXh0LCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQsIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgaWYgKCF0aGlzLl9zdHJlYW1TdWJzY3JpYmVyKSB7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQucmVuZGVyZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RyZWFtU3Vic2NyaWJlcik7XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3Vic2NyaWJlci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cCxcbiAgICAgIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQuYmluZCh0aGlzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKys7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IGNoYW5uZWwnLCBlKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID09PSBDaGFubmVsU3RhdGUuUGxheWluZyB8fCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlBhdXNlZCB8fCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gQ2hhbm5lbFN0YXRlLlN0b3BwZWQgfHwgIVNESy5hdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdGFydEFmdGVyU3RvcCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbCB3YXMgYWxyZWFkeSBkaXNwb3NlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLnBsYXlNZWRpYVN0cmVhbUluVmlkZW9FbGVtZW50KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGxheSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5QYXVzZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICAvLyBGaXJzdCBhbmQgc2Vjb25kIGF0dGVtcHQgZmFzdCwgYWZ0ZXIgdGhhdCBleHBvbmVudGlhbCB3aXRoIGJhY2tvZmYgaW50ZXJ2YWxcbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZi5nZXRFeHBvbmVudGlhbEJhY2tvZmZJbnRlcnZhbEJ5RmFpbHVyZUNvdW50KHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1GYWlsdXJlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuU3RhbmRCeTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JldHJ5IHN0YXJ0IHdpdGggaW5pdGlhbCBzdGF0ZSBbJXNdIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSwgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgZ2VvIGJsb2NrZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgcHJvdmlkZSBhIG5ldyB0b2tlbiBhbmQgaW52b2tlIHN0YXJ0KCknKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIGFscmVhZHkgaW5pdGlhbGl6aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBsYXlpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIGlzIHBsYXlpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuUGF1c2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBwYXVzZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LiBQbGVhc2UgaW52b2tlIHBsYXkoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0NoYW5uZWwgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnQ2hhbm5lbCBpcyBzdG9wcGVkIGR1ZSB0byBjb25maWd1cmF0aW9uIGVycm9yLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3N0cmVhbVN1YnNjcmliZXIgPSBudWxsO1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcblxuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlO1xuXG4gICAgaWYgKHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgaWYgKFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ICYmICEoRmVhdHVyZUVuYWJsZW1lbnQuaXNNb2JpbGUgJiYgU0RLLnNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcykpIHtcbiAgICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUpIHtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHRyYWNrLnN0b3AoKSk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlLCByZWFzb24pXG4gICAgICAgIC50aGVuKCh7c3RhdHVzfSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIERlc3Ryb3llZCBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtJywgdGhpcy5zdHJlYW1JZCwgZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnZpZGVvRWxlbWVudCAmJiB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0KSB7XG4gICAgICB0aGlzLnZpZGVvRWxlbWVudC5kYXRhc2V0LnNlc3Npb25JZCA9ICcnO1xuICAgICAgdGhpcy52aWRlb0VsZW1lbnQuZGF0YXNldC5zdHJlYW1JZCA9ICcnO1xuICAgIH1cblxuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlRnJhbWVUaW1pbmdJbmZvcm1hdGlvbihjYXBhYmlsaXRpZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3QgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkgPSBjYXBhYmlsaXRpZXMuZmluZChjYXBhYmlsaXR5ID0+IGNhcGFiaWxpdHkuc3RhcnRzV2l0aCgnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uPScpKTtcblxuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuaXNFbmFibGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAoIWZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyBubyBjYXBhYmlsaXR5IHdhcyBmb3VuZCcpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzYWJsaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBhcyB0aGUgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBpdCBbJXNdJywgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNhcGFiaWxpdHkuc3BsaXQoJz0nKVsxXVxuICAgICAgLnNwbGl0KCcsJylcbiAgICAgIC5tYXAob3B0aW9uID0+IG9wdGlvbi50cmltKCkpXG4gICAgICAuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgICBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgIGNhc2UgJ3RpbWVjb2RlJzpcbiAgICAgICAgICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3RpbWVzdGFtcHMnOlxuICAgICAgICAgICAgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVzdGFtcHMudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0lnbm9yaW5nIHVua25vd24gZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIG9wdGlvbiBbJXNdJywgb3B0aW9uKTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBjb25maWd1cmF0aW9uIFsodGltZWNvZGUgWyVzXSwgdGltZXN0YW1wcyBbJXNdKV0nLCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZWNvZGUudmFsdWUsIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lc3RhbXBzLnZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuU3RvcHBlZDtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWUpIHtcbiAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBtZWRpYVN0cmVhbTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGF5UHJvbWlzZSA9IHZpZGVvRWxlbWVudC5wbGF5KCk7XG5cbiAgICBpZiAocGxheVByb21pc2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b011dGVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBsYXlpbmc7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGxheVByb21pc2UudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9QYXVzZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnBsYXlpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuUGxheWluZztcbiAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgIGNvbnN0IGhhc0F1ZGlvVHJhY2sgPSAhIW1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZpbHRlcih0cmFjayA9PiB7XG4gICAgICAgIHJldHVybiB0cmFjay5raW5kID09PSAnYXVkaW8nO1xuICAgICAgfSkubGVuZ3RoO1xuICAgICAgY29uc3QgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgPSAhU0RLLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlO1xuXG4gICAgICBpZiAoYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmVPZmYgfHwgdmlkZW9FbGVtZW50Lm11dGVkIHx8ICFoYXNBdWRpb1RyYWNrKSB7XG4gICAgICAgIHZpZGVvRWxlbWVudC5zcmNPYmplY3QgPSBudWxsO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QYXVzZWQ7XG5cbiAgICAgICAgaWYgKGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmKSB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gUGF1c2VkIHZpZGVvIGFmdGVyIHBsYXkgZmFpbGVkLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaGFzQXVkaW9UcmFjaykge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gcGxheSBtdXRlZCB2aWRlby4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkLicsIHRoaXMuc3RyZWFtSWQsIGUpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmlkZW9FbGVtZW50Lm11dGVkID0gdHJ1ZTtcblxuICAgICAgcmV0dXJuIHZpZGVvRWxlbWVudC5wbGF5KClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFBsYXllZCB2aWRlbyBhZnRlciBhdXRvIG11dGluZy4gTWFudWFsIHVzZXIgYWN0aW9uIHJlcXVpcmVkIHRvIHVubXV0ZS4nLCB0aGlzLnN0cmVhbUlkKTtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmF1dG9NdXRlZC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXV0b1BhdXNlZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5QbGF5aW5nO1xuICAgICAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgICAgICB2aWRlb0VsZW1lbnQubXV0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBwbGF5IHZpZGVvLiBNYW51YWwgdXNlciBhY3Rpb24gcmVxdWlyZWQuJywgdGhpcy5zdHJlYW1JZCwgZSk7XG5cbiAgICAgICAgICB2aWRlb0VsZW1lbnQuc3JjT2JqZWN0ID0gbnVsbDtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gQ2hhbm5lbFN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUGF1c2VkID0gMyxcbiAgUGxheWluZyA9IDQsXG4gIFJlY292ZXJpbmcgPSA1LFxuICBSZWNvbm5lY3RpbmcgPSA2LFxuICBTdGFuZEJ5ID0gNyxcbiAgU3RvcHBlZCA9IDgsXG4gIFVuYXV0aG9yaXplZCA9IDksXG4gIEdlb1Jlc3RyaWN0ZWQgPSAxMCxcbiAgR2VvQmxvY2tlZCA9IDExLFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMixcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDE0LFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNSxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE2LFxuICBFcnJvciA9IDE3XG59XG5cbmV4cG9ydCBkZWZhdWx0IENoYW5uZWxTdGF0ZTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7TWlsbGlzZWNvbmR9IGZyb20gJy4uLy4uL3VuaXRzL1VuaXRzJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCB7SVN0cmVhbVRyYWNrVHJhbnNmb3JtfSBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9TdHJlYW1UcmFja1RyYW5zZm9ybSc7XG5pbXBvcnQgQ2hhbm5lbCwge0NoYW5uZWxPcHRpb25zfSBmcm9tICcuL0NoYW5uZWwnO1xuaW1wb3J0IHtJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayc7XG5pbXBvcnQge0lPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFja30gZnJvbSAnLi9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuXG5leHBvcnQgdHlwZSBDcmVhdGVDaGFubmVsT3B0aW9ucyA9IHtcbiAgdmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50O1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgdGFyZ2V0TGFnPzogTWlsbGlzZWNvbmQ7XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VmlkZW9GcmFtZT47XG4gIGF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s/OiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPjtcbiAgZW5jb2RlZFZpZGVvU3RyZWFtU2luaz86IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT47XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms/OiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2hhbm5lbHMge1xuICBzdGF0aWMgY3JlYXRlQ2hhbm5lbChvcHRpb25zOiBDcmVhdGVDaGFubmVsT3B0aW9ucyk6IENoYW5uZWwge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5uZWxPcHRpb25zOiBDaGFubmVsT3B0aW9ucyA9IHtcbiAgICAgIHRhcmdldExhZzogb3B0aW9ucy50YXJnZXRMYWcsXG4gICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLnZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBvcHRpb25zLmF1ZGlvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2ssXG4gICAgICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbmssXG4gICAgICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBvcHRpb25zLmVuY29kZWRBdWRpb1N0cmVhbVNpbmtcbiAgICB9O1xuICAgIGNvbnN0IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3M6IENoYW5uZWxPcHRpb25zICYge1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgICAgb25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/OiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9uc1dpdGhSZWFsVGltZVN1YnNjcmliZUNhbGxiYWNrcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zV2l0aFJlYWxUaW1lU3Vic2NyaWJlQ2FsbGJhY2tzLm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgICBjaGFubmVsT3B0aW9ucy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA9IG9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3Mub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDaGFubmVsKG9wdGlvbnMudmlkZW9FbGVtZW50LCBvcHRpb25zLnRva2VuLCBjaGFubmVsT3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBpc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEZlYXR1cmVFbmFibGVtZW50LmlzQ2hhbm5lbEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdXBwb3J0ZWQ7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2hhbm5lbHMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCBEaW1lbnNpb24gZnJvbSAnLi4vLi4vdmlkZW8vRGltZW5zaW9uJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW0sIFN1YnNjcmliZVN0YXR1c30gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2t9IGZyb20gJy4uL2NoYW5uZWxzL0lPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrJztcbmltcG9ydCB7SU9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrfSBmcm9tICcuLi9jaGFubmVscy9JT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2snO1xuaW1wb3J0IFZpZGVvVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1ZpZGVvVGVsZW1ldHJ5JztcbmltcG9ydCB7SVJ0Y01vbml0b3JTdGF0aXN0aWMsIElSdGNTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5cbmNvbnN0IGRlZmF1bHRUYXJnZXRMYWcgPSAwO1xuXG5leHBvcnQgdHlwZSBDaGFubmVsQ29udGV4dE9wdGlvbnMgPSB7XG4gIHRhcmdldExhZz86IG51bWJlcjtcbiAgb25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrO1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElPblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENoYW5uZWxDb250ZXh0IHtcbiAgY2hhbm5lbEluaXRpYWxpemF0aW9uOiBEYXRlO1xuICBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIGNoYW5uZWxEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHJlbmRlcmVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICB2aWRlb0VsZW1lbnQ6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+O1xuICBzdGF0ZTogU3ViamVjdDxDaGFubmVsU3RhdGU+O1xuICBleGlzdHM6IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+O1xuICBhdXRvTXV0ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dG9QYXVzZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcGxheWluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgdGFyZ2V0TGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kPjtcbiAgbGFnOiBTdWJqZWN0PE1pbGxpc2Vjb25kIHwgdW5kZWZpbmVkPjtcbiAgYml0cmF0ZUxpbWl0OiBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+O1xuICByZXNvbHV0aW9uOiBTdWJqZWN0PERpbWVuc2lvbj47XG4gIGZhaWx1cmVDb3VudDogU3ViamVjdDxudW1iZXI+O1xuICBlbmRQb2ludDogU3ViamVjdDxFbmRQb2ludCB8IG51bGw+O1xuICBvblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB8IG51bGw7XG4gIG9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrOiBJT25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgfCBudWxsO1xuICBzdHJlYW06IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBydGNTdGF0aXN0aWNzOiBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIHZpZGVvVGVsZW1ldHJ5OiBWaWRlb1RlbGVtZXRyeSB8IG51bGw7XG4gIHJ0Y0F1ZGlvU3RhdGlzdGljOiBJUnRjU3RhdGlzdGljIHwgbnVsbDtcbiAgcnRjVmlkZW9TdGF0aXN0aWM6IElSdGNTdGF0aXN0aWMgfCBudWxsO1xuICBjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogQ2hhbm5lbENvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMuY2hhbm5lbERpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5yZW5kZXJlckRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5jaGFubmVsSW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMudmlkZW9FbGVtZW50ID0gbmV3IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxDaGFubmVsU3RhdGU+KENoYW5uZWxTdGF0ZS5Jbml0aWFsaXppbmcpO1xuICAgIHRoaXMuZXhpc3RzID0gbmV3IFN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuYXV0b011dGVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuYXV0b1BhdXNlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnBsYXlpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnRhcmdldExhZyA9IG5ldyBTdWJqZWN0PE1pbGxpc2Vjb25kPihvcHRpb25zPy50YXJnZXRMYWcgPz8gZGVmYXVsdFRhcmdldExhZyk7XG4gICAgdGhpcy5sYWcgPSBuZXcgU3ViamVjdDxNaWxsaXNlY29uZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgICB0aGlzLmJpdHJhdGVMaW1pdCA9IG5ldyBTdWJqZWN0PEJpdHNQZXJTZWNvbmQ+KDApO1xuICAgIHRoaXMucmVzb2x1dGlvbiA9IG5ldyBTdWJqZWN0PERpbWVuc2lvbj4oRGltZW5zaW9uLmVtcHR5KTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5vblJlYWxUaW1lU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gb3B0aW9ucz8ub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sgPSBvcHRpb25zPy5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayA/PyBudWxsO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy52aWRlb1RlbGVtZXRyeSA9IG51bGw7XG4gICAgdGhpcy5ydGNBdWRpb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5ydGNWaWRlb1N0YXRpc3RpYyA9IG51bGw7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlTdGF0dXMoc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlKys7XG4gICAgICAgIHRoaXMucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseVNlc3Npb25BbmRTdHJlYW1Qcm9wZXJ0aWVzVG9WaWRlb0VsZW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudmlkZW9FbGVtZW50LnZhbHVlICYmIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQpIHtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcbiAgICAgIHRoaXMudmlkZW9FbGVtZW50LnZhbHVlLmRhdGFzZXQuc3RyZWFtSWQgPSB0aGlzLnN0cmVhbUlkO1xuICAgIH1cbiAgfVxuXG4gIG1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vLXN0cmVhbSc6XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLlN0YW5kQnk7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuR2VvUmVzdHJpY3RlZDtcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gQ2hhbm5lbFN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBtYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXM6IFN1YnNjcmliZVN0YXR1cyk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgY2FzZSAnbm8tc3RyZWFtJzpcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgIGNhc2UgJ2dlby1ibG9ja2VkJzpcbiAgICAgIGNhc2UgJ2ZvcmJpZGRlbi10YWcnOlxuICAgICAgY2FzZSAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gdGhpcy5leGlzdHMudmFsdWU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb259IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZWNvZGU6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHB1YmxpYyByZWFkb25seSBzaG91bGRFeHRyYWN0VGltZXN0YW1wczogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGlzRW5hYmxlZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGljIHJlYWRvbmx5IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uOiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG4gIHB1YmxpYyByZWFkb25seSByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZWNvZGUgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zaG91bGRFeHRyYWN0VGltZXN0YW1wcyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRW5hYmxlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0gbmV3IFN1YmplY3Q8RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IG5ldyBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KG51bGwpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBlZXJDb25uZWN0aW9uQ29udGV4dCB7XG4gIG1lZGlhU3RyZWFtOiBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uOiBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbSA9IG5ldyBTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGF0ZUNvbnRleHQge1xuICBpc1N0YXJ0aW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBpc0Rpc3Bvc2VkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXNTdGFydGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmlzRGlzcG9zZWQgPSBmYWxzZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge0lTdHJlYW1UcmFja1RyYW5zZm9ybX0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vU3RyZWFtVHJhY2tUcmFuc2Zvcm0nO1xuaW1wb3J0IHtJRW5jb2RlZFN0cmVhbVNpbmt9IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL0VuY29kZWRTdHJlYW1TaW5rJztcbmltcG9ydCBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9NZXNzYWdlUm91dGVyJztcblxuZXhwb3J0IHR5cGUgU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMgPSB7XG4gIGhhc0luc2VydGFibGVTdHJlYW1zOiBib29sZWFuO1xuICBoYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXM6IGJvb2xlYW47XG4gIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPEF1ZGlvRGF0YT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4gfCB1bmRlZmluZWQ7XG4gIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkQXVkaW9GcmFtZT4gfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2sgPSB7XG4gIG1lZGlhU3RyZWFtVHJhY2s6IE1lZGlhU3RyZWFtVHJhY2sgfCBudWxsO1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIgfCBudWxsO1xuICBtaWQ6IHN0cmluZyB8IG51bGw7XG4gIGNvZGVjOiBWaWRlb0NvZGVjIHwgQXVkaW9Db2RlYyB8IG51bGw7XG4gIHRyYW5zZm9ybVBpcGVsaW5lV29ya2VyOiBXb3JrZXIgfCBudWxsO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyIHwgbnVsbDtcbiAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogc3RyaW5nW107XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IHtcbiAgcmVhZG9ubHkgaGFzSW5zZXJ0YWJsZVN0cmVhbXM6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIHJlYWRvbmx5IGhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtczogU3ViamVjdDxib29sZWFuPjtcbiAgcmVhZG9ubHkgdmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogSVN0cmVhbVRyYWNrVHJhbnNmb3JtPFZpZGVvRnJhbWU+IHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZFZpZGVvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgZW5jb2RlZEF1ZGlvU3RyZWFtU2luazogSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICByZWFkb25seSB2aWRlb1RyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2s7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLmhhc0luc2VydGFibGVTdHJlYW1zID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4ob3B0aW9ucy5oYXNJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBuZXcgU3ViamVjdDxib29sZWFuPihvcHRpb25zLmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyk7XG4gICAgdGhpcy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrID0gb3B0aW9ucy52aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrO1xuICAgIHRoaXMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjayA9IG9wdGlvbnMuYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaztcbiAgICB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbVNpbmsgPSBvcHRpb25zLmVuY29kZWRWaWRlb1N0cmVhbVNpbms7XG4gICAgdGhpcy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rID0gb3B0aW9ucy5lbmNvZGVkQXVkaW9TdHJlYW1TaW5rO1xuICAgIHRoaXMuYXVkaW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICAgIHRoaXMudmlkZW9UcmFjayA9IHtcbiAgICAgIG1lZGlhU3RyZWFtVHJhY2s6IG51bGwsXG4gICAgICByZWNlaXZlcjogbnVsbCxcbiAgICAgIG1pZDogbnVsbCxcbiAgICAgIGNvZGVjOiBudWxsLFxuICAgICAgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IG51bGwsXG4gICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBudWxsLFxuICAgICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lczogW11cbiAgICB9O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIEF1ZGlvQ29kZWMge1xuICBPUFVTID0gMCxcbiAgQUFDID0gMVxufVxuXG5leHBvcnQgdHlwZSBBdWRpb0NvZGVjVHlwZSA9ICdPUFVTJyB8ICdBQUMnOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtBdWRpb0NvZGVjLCBBdWRpb0NvZGVjVHlwZX0gZnJvbSAnLi9BdWRpb0NvZGVjJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXVkaW9Db2RlY01hcHBpbmcge1xuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVG9BdWRpb0NvZGVjVHlwZShhdWRpb0NvZGVjOiBBdWRpb0NvZGVjKTogQXVkaW9Db2RlY1R5cGUge1xuICAgIHN3aXRjaCAoYXVkaW9Db2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiAnT1BVUyc7XG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gJ0FBQyc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhhdWRpb0NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGUpOiBBdWRpb0NvZGVjIHtcbiAgICBjb25zdCBhdWRpb0NvZGVjU3RyaW5nID0gYXVkaW9Db2RlY1R5cGUudG9VcHBlckNhc2UoKSBhcyBrZXlvZiB0eXBlb2YgQXVkaW9Db2RlYztcblxuICAgIHN3aXRjaCAoYXVkaW9Db2RlY1N0cmluZykge1xuICAgICAgY2FzZSAnT1BVUyc6XG4gICAgICAgIHJldHVybiBBdWRpb0NvZGVjLk9QVVM7XG4gICAgICBjYXNlICdBQUMnOlxuICAgICAgICByZXR1cm4gQXVkaW9Db2RlYy5BQUM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShhdWRpb0NvZGVjU3RyaW5nKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCBlbnVtIFZpZGVvQ29kZWMge1xuICBIMjY0ID0gMCxcbiAgVlA4ID0gMSxcbiAgVlA5ID0gMlxufVxuXG5leHBvcnQgdHlwZSBWaWRlb0NvZGVjVHlwZSA9ICdIMjY0JyB8ICdWUDgnIHwgJ1ZQOSc7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge1ZpZGVvQ29kZWMsIFZpZGVvQ29kZWNUeXBlfSBmcm9tICcuL1ZpZGVvQ29kZWMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb0NvZGVjTWFwcGluZyB7XG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlKHZpZGVvQ29kZWM6IFZpZGVvQ29kZWMpOiBWaWRlb0NvZGVjVHlwZSB7XG4gICAgc3dpdGNoICh2aWRlb0NvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgcmV0dXJuICdIMjY0JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiAnVlA4JztcbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiAnVlA5JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjKHZpZGVvQ29kZWNUeXBlOiBWaWRlb0NvZGVjVHlwZSk6IFZpZGVvQ29kZWMge1xuICAgIGNvbnN0IHZpZGVvQ29kZWNTdHJpbmcgPSB2aWRlb0NvZGVjVHlwZS50b1VwcGVyQ2FzZSgpIGFzIGtleW9mIHR5cGVvZiBWaWRlb0NvZGVjO1xuXG4gICAgc3dpdGNoICh2aWRlb0NvZGVjU3RyaW5nKSB7XG4gICAgICBjYXNlICdIMjY0JzpcbiAgICAgICAgcmV0dXJuIFZpZGVvQ29kZWMuSDI2NDtcbiAgICAgIGNhc2UgJ1ZQOCc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQODtcbiAgICAgIGNhc2UgJ1ZQOSc6XG4gICAgICAgIHJldHVybiBWaWRlb0NvZGVjLlZQOTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHZpZGVvQ29kZWNTdHJpbmcpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFVpbnQ4QXJyYXkoWzB4MDAsIDB4MDAsIDB4MDAsIDB4MDFdKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KSlcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSAnL3BjYXN0L2VuZFBvaW50cyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dDogbnVtYmVyO1xuICBwcml2YXRlIF9yb3VuZFRyaXBUaW1lOiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHVyaTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dCA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgRW5kUG9pbnRbdXJpPSR7dGhpcy5fdXJpfV1gO1xuICB9XG5cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT5cbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBQaW5nIHRpbWVkIG91dCBbJHt1cmx9XWApKSwgdGhpcy5fdGltZW91dCkpXG4gICAgXSk7XG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykgeyAvKiBIYW5kbGUgKi9cbiAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyBmYWlsZWQgWyR7dXJsfV0gWyR7cmVzcG9uc2Uuc3RhdHVzfV1gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3VuZFRyaXBUaW1lID0gZmluaXNoZWQgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgYXN5bmMgc3Vic2NyaWJlKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyLCBvcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge30pOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3N1YnNjcmliZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG4gICAgbGV0IHJlcXVlc3RCb2R5OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0O1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz8uKHJlcXVlc3RCb2R5KTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShyZXF1ZXN0Qm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBTdWJzY3JpYmUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc3Vic2NyaWJlIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHN1YnNjcmliZVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4oc3Vic2NyaWJlUmVzcG9uc2UpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcHVibGlzaCcsIG5ldyBFcnJvcihgUHVibGlzaCB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwdWJsaXNoJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9QdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwgaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtPy5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicsIG5ldyBFcnJvcihgU2V0IHJlbW90ZSBkZXNjcmlwdGlvbiB0aW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgICByZXNvbHZlKHtzdGF0dXM6IDQwOH0gYXMgUmVzcG9uc2UpO1xuICAgICAgICAgIH0sIHRoaXMuX3RpbWVvdXQpKVxuICAgICAgXSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgbGV0IGh0dHBSZXNwb25zZTogUmVzcG9uc2U7XG5cbiAgICB0cnkge1xuICAgICAgbGV0IHRpbWVvdXQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICBodHRwUmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBmb3JtRGF0YVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KHJlc29sdmUgPT5cbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzZXQgbGltaXQgYml0cmF0ZSB0aW1lZCcsIG5ldyBFcnJvcihgU2V0IGxpbWl0IGJpdHJhdGUgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc2V0IGxpbWl0IGJpdHJhdGUgdGltZWQnLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIGFzeW5jIGFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtOiBJU3RyZWFtLCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSwgZGlzY292ZXJ5Q29tcGxldGVkOiBib29sZWFuLCBvcHRpb25zOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnaWNlJywgJ2NhbmRpZGF0ZXMnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElBZGRJY2VDYW5kaWRhdGVzUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBjYW5kaWRhdGVzLFxuICAgICAgZGlzY292ZXJ5Q29tcGxldGVkLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGFcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgbmV3IEVycm9yKGBBZGQgaWNlIGNhbmRpZGF0ZXMgdGltZWQgb3V0IFske3VybH1dYCkpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7c3RhdHVzOiA0MDh9IGFzIFJlc3BvbnNlKTtcbiAgICAgICAgICB9LCB0aGlzLl90aW1lb3V0KSlcbiAgICAgIF0pXG4gICAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgICBpZiAodGltZW91dCkge1xuICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gYWRkIGljZSBjYW5kaWRhdGVzJywgZSk7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAnZmFpbGVkJ307XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3lTdHJlYW0oc3RyZWFtOiBJU3RyZWFtLCByZWFzb246IHN0cmluZyk6IFByb21pc2U8SURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc3Ryb3knXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElEZXN0cm95U3RyZWFtUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICByZWFzb24sXG4gICAgICBvcHRpb25zOiBbXVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGxldCBodHRwUmVzcG9uc2U6IFJlc3BvbnNlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgICAgaHR0cFJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICAgICAgY2FjaGU6ICduby1jYWNoZSdcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPihyZXNvbHZlID0+XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3Vic2NyaWJlJywgbmV3IEVycm9yKGBEZWxldGUgc3RyZWFtIHRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1czogNDA4fSBhcyBSZXNwb25zZSk7XG4gICAgICAgICAgfSwgdGhpcy5fdGltZW91dCkpXG4gICAgICBdKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIGRlbGV0ZSBzdHJlYW0nLCBlKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXM6IERlc3Ryb3lTdHJlYW1TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbVJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtUmVzcG9uc2UoaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIW5hdmlnYXRvcj8uc2VuZEJlYWNvbikge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbik7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIG5hdmlnYXRvci5zZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHBhdGhBc0FycmF5ID0gdXJpLnBhdGhuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICBwYXRoQXNBcnJheS5sZW5ndGggPSBwYXRoQXNBcnJheS5sZW5ndGggLSAxO1xuXG4gICAgdXJpLnBhdGhuYW1lID0gcGF0aEFzQXJyYXkuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBQdWJsaXNoU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzIHtcbiAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuXG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgaWYgKCFyZXNwb25zZSkge1xuICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cblxuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCByZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlO1xuICAgIGNvbnN0IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgc2hhcmVkU2VjcmV0LFxuICAgICAgbGFnLFxuICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgLi4ub3RoZXJQcm9wZXJ0aWVzXG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3Qgc3Vic2NyaWJlUmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWcsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1B1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXM6IGRhdGEuc3RhdHVzfTtcblxuICAgIGlmIChkYXRhICYmIGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiA9IGRhdGEuc2Vzc2lvbkRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzOiBkYXRhLnN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBJRGVzdHJveVN0cmVhbVJlc3BvbnNlO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW06IElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0ID0ge3N0YXR1czogZGF0YS5zdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQge0RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLCBSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sIFJ0cFRpbWVzdGFtcH0gZnJvbSAnLi9GcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcbmltcG9ydCB7VmlkZW9Db2RlY30gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCB7TWV0YWRhdGFNZXNzYWdlUGF5bG9hZCwgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLCBUcmFuc2Zvcm1NZXNzYWdlUGF5bG9hZH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZSc7XG5pbXBvcnQgVHJhbnNmb3JtTWVzc2FnZVJvdXRlciBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbmV4cG9ydCB0eXBlIEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCA9IHtcbiAgY29kZWM6IFZpZGVvQ29kZWM7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHZpZGVvRWxlbWVudDogU3ViamVjdDxIVE1MVmlkZW9FbGVtZW50IHwgbnVsbD47XG4gIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+O1xuICBpc0VuYWJsZWRTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+O1xuICByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXI7XG4gIG1pZDogc3RyaW5nO1xuICB0cmFja0lkOiBzdHJpbmc7XG4gIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHN0cmluZ1tdO1xuICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90cmFuc2Zvcm1OYW1lID0gJ2ZyYW1lLXRpbWluZy1pbmZvcm1hdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wOiBNYXA8UnRwVGltZXN0YW1wLCBEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSBfY3VycmVudFBsYXliYWNrU3RhdGU6ICdwbGF5aW5nJyB8ICdwYXVzZWQnIHwgJ3N0YWxsZWQnIHwgJ2VuZGVkJyB8ICdlcnJvcicgfCAnd2FpdGluZycgPSAnd2FpdGluZyc7XG4gIHByaXZhdGUgX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kaXNwb3NlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKGNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZShjb250ZXh0KTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uKGNvbnRleHQuc3RyZWFtSWQsIGNvbnRleHQuY29kZWMsIGNvbnRleHQucmVjZWl2ZXIsIGNvbnRleHQubWlkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0dXBWaWRlb0VsZW1lbnRIYW5kbGluZyhjb250ZXh0LnZpZGVvRWxlbWVudCwgY29udGV4dC5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB0aGlzLnNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybShjb250ZXh0LmNvZGVjLCBjb250ZXh0Lm1pZCwgY29udGV4dC50cmFja0lkLCBjb250ZXh0LnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIsIGNvbnRleHQudHJhbnNmb3JtRnVuY3Rpb25OYW1lcywgY29udGV4dC5kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuICAgIGNvbnRleHQuaXNFbmFibGVkU3ViamVjdC52YWx1ZSA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNhblByb2Nlc3NGcmFtZVRpbWluZ0luZm9ybWF0aW9uKHN0cmVhbUlkOiBzdHJpbmcsIGNvZGVjOiBWaWRlb0NvZGVjLCByZWNlaXZlcjogUlRDUnRwUmVjZWl2ZXIsIG1pZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvZGVjICE9PSBWaWRlb0NvZGVjLkgyNjQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSB2aWRlbyBjb2RlYyBpcyBub3QgSDI2NCcsIHN0cmVhbUlkKTtcblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICghcmVjZWl2ZXIpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIFNraXBwaW5nIGZyYW1lIHRpbWluZyBpbmZvcm1hdGlvbiBmb3IgdmlkZW8gdHJhY2sgYmVjYXVzZSBubyByZWNlaXZlciB3YXMgZm91bmQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIW1pZCkge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gU2tpcHBpbmcgZnJhbWUgdGltaW5nIGluZm9ybWF0aW9uIGZvciB2aWRlbyB0cmFjayBiZWNhdXNlIG5vIG1pZCB3YXMgZm91bmQnLCBzdHJlYW1JZCk7XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKGNvZGVjOiBWaWRlb0NvZGVjLCBtaWQ6IHN0cmluZywgdHJhY2tJZDogc3RyaW5nLCB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyLCB0cmFuc2Zvcm1GdW5jdGlvbk5hbWVzOiBzdHJpbmdbXSwgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4pOiB2b2lkIHtcbiAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyLnJlZ2lzdGVyUm91dGU8VHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD4+KFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZS5GcmFtZVRpbWluZ0luZm9ybWF0aW9uLCB0aGlzLmhhbmRsZUZyYW1lVGltaW5nTWVzc2FnZS5iaW5kKHRoaXMsIFZpZGVvQ29kZWNbY29kZWNdLCBtaWQhLCB0cmFja0lkISwgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KSk7XG4gICAgdHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5wdXNoKEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyLl90cmFuc2Zvcm1OYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRnJhbWVUaW1pbmdNZXNzYWdlKGNvZGVjOiBzdHJpbmcsIG1pZDogc3RyaW5nLCB0cmFja0lkOiBzdHJpbmcsIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+LCBtZXNzYWdlOiBNZXRhZGF0YU1lc3NhZ2VQYXlsb2FkKTogdm9pZCB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcnRwVGltZXN0YW1wLCBtZXRhZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMobWVzc2FnZSkpIHtcbiAgICAgIGNvbnN0IHJ0cFRpbWVzdGFtcE51bWJlciA9IHBhcnNlSW50KHJ0cFRpbWVzdGFtcCwgMTApO1xuICAgICAgY29uc3QgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSBtZXRhZGF0YVsnZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24nXTtcblxuICAgICAgaWYgKGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb246IERlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uID0ge1xuICAgICAgICAgIHRpbWVjb2RlOiBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50aW1lY29kZSA/PyBudWxsLFxuICAgICAgICAgIHJlY2VpdmVUaW1lc3RhbXA6IGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLnJlY2VpdmVUaW1lc3RhbXAgPz8gbnVsbCxcbiAgICAgICAgICBraW5kOiAndmlkZW8nLFxuICAgICAgICAgIGNvZGVjLFxuICAgICAgICAgIG1pZCxcbiAgICAgICAgICB0cmFja0lkLFxuICAgICAgICAgIHNvdXJjZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBpbmdlc3RUaW1lc3RhbXA6IG51bGwsXG4gICAgICAgICAgZW5jb2RlVGltZXN0YW1wOiBudWxsLFxuICAgICAgICAgIHRyYW5zY29kZVRpbWVzdGFtcDogbnVsbCxcbiAgICAgICAgICBwbGF5YmFja1N0YXRlOiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZVxuICAgICAgICB9O1xuXG4gICAgICAgIGRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdC52YWx1ZSA9IGZyYW1lVGltaW5nSW5mb3JtYXRpb247XG5cbiAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID09PSAncGxheWluZycpIHtcbiAgICAgICAgICB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLnNldChydHBUaW1lc3RhbXBOdW1iZXIsIGZyYW1lVGltaW5nSW5mb3JtYXRpb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nKHZpZGVvRWxlbWVudFN1YmplY3Q6IFN1YmplY3Q8SFRNTFZpZGVvRWxlbWVudCB8IG51bGw+LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAuY2xlYXIoKSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcyk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHZpZGVvRWxlbWVudFN1YmplY3Quc3Vic2NyaWJlKHZpZGVvRWxlbWVudCA9PiB7XG4gICAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICAgIGlmICghdmlkZW9FbGVtZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnModmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQ6IEhUTUxWaWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IFN1YmplY3Q8UmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uIHwgbnVsbD4sIG5vdzogRE9NSGlnaFJlc1RpbWVTdGFtcCwgbWV0YWRhdGE6IFZpZGVvRnJhbWVDYWxsYmFja01ldGFkYXRhKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Rpc3Bvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gUmUtcmVnaXN0ZXIgdGhlIGNhbGxiYWNrIHRvIGVuc3VyZSBpdCdzIGNhbGxlZCBhZ2FpblxuICAgIHRoaXMuX2FybVZpZGVvRnJhbWVDYWxsYmFjayh2aWRlb0VsZW1lbnQsIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QpO1xuXG4gICAgY29uc3QgcnRwVGltZXN0YW1wID0gbWV0YWRhdGEucnRwVGltZXN0YW1wO1xuXG4gICAgaWYgKCFydHBUaW1lc3RhbXApIHtcbiAgICAgIC8vIFRPRE8gKE5IKTogQWRkIGEgdGhyb3R0bGVkIGxvZyBpbmRpY2F0aW5nIHRoYXQgbm8gUlRQIHRpbWVzdGFtcCB3YXMgZm91bmRcbiAgICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBpdCdzIG51bGxhYmxlLCBidXQgd2UgYWx3YXlzIGhhdmUgaXQgaW4gYSBXZWJSVEMgY29udGV4dFxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRpbWVzdGFtcHNUb0RlbGV0ZTogUnRwVGltZXN0YW1wW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgW3RpbWVzdGFtcCwgZnJhbWVUaW1pbmddIG9mIHRoaXMuX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXApIHtcbiAgICAgIGlmICh0aW1lc3RhbXAgPiBydHBUaW1lc3RhbXApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIHJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QudmFsdWUgPSB7XG4gICAgICAgIC4uLmZyYW1lVGltaW5nLFxuICAgICAgICByZW5kZXJUaW1lc3RhbXA6IG5ldyBEYXRlKHBlcmZvcm1hbmNlLnRpbWVPcmlnaW4gKyBub3cpLFxuICAgICAgICBwbGF5YmFja1N0YXRlOiAncGxheWluZydcbiAgICAgIH07XG5cbiAgICAgIHRpbWVzdGFtcHNUb0RlbGV0ZS5wdXNoKHRpbWVzdGFtcCk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0aW1lc3RhbXAgb2YgdGltZXN0YW1wc1RvRGVsZXRlKSB7XG4gICAgICB0aGlzLl9kZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkJ5UnRwVGltZXN0YW1wLmRlbGV0ZSh0aW1lc3RhbXApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBWaWRlb0V2ZW50TGlzdGVuZXJzKHZpZGVvRWxlbWVudDogSFRNTFZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdDogU3ViamVjdDxSZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gfCBudWxsPik6IHZvaWQge1xuICAgIGNvbnN0IG9uUGxheWluZyA9ICgpID0+IHRoaXMuX2N1cnJlbnRQbGF5YmFja1N0YXRlID0gJ3BsYXlpbmcnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBvblBsYXlpbmcpO1xuICAgIHRoaXMuX3ZpZGVvRWxlbWVudERpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB2aWRlb0VsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIG9uUGxheWluZykpKTtcblxuICAgIGNvbnN0IG9uUGF1c2UgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdwYXVzZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgb25QYXVzZSk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwYXVzZScsIG9uUGF1c2UpKSk7XG5cbiAgICBjb25zdCBvblN0YWxsZWQgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICdzdGFsbGVkJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgb25TdGFsbGVkKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0YWxsZWQnLCBvblN0YWxsZWQpKSk7XG5cbiAgICBjb25zdCBvbldhaXRpbmcgPSAoKSA9PiB0aGlzLl9jdXJyZW50UGxheWJhY2tTdGF0ZSA9ICd3YWl0aW5nJztcblxuICAgIHZpZGVvRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd3YWl0aW5nJywgb25XYWl0aW5nKTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gdmlkZW9FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3dhaXRpbmcnLCBvbldhaXRpbmcpKSk7XG5cbiAgICBjb25zdCBvbkVuZGVkID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnZW5kZWQnO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgb25FbmRlZCk7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlbmRlZCcsIG9uRW5kZWQpKSk7XG5cbiAgICBjb25zdCBvbkVycm9yID0gKCkgPT4gdGhpcy5fY3VycmVudFBsYXliYWNrU3RhdGUgPSAnZXJyb3InO1xuXG4gICAgdmlkZW9FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgdGhpcy5fdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHZpZGVvRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpKSk7XG5cbiAgICB0aGlzLl9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0KTtcbiAgICB0aGlzLl92aWRlb0VsZW1lbnREaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQpIHtcbiAgICAgICAgdmlkZW9FbGVtZW50LmNhbmNlbFZpZGVvRnJhbWVDYWxsYmFjayh0aGlzLl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkKTtcbiAgICAgIH1cbiAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9hcm1WaWRlb0ZyYW1lQ2FsbGJhY2sodmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50LCByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiBTdWJqZWN0PFJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiB8IG51bGw+KTogdm9pZCB7XG4gICAgaWYgKCF2aWRlb0VsZW1lbnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FybWVkVmlkZW9GcmFtZUNhbGxiYWNrSWQgPSB2aWRlb0VsZW1lbnQucmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayh0aGlzLmhhbmRsZVZpZGVvRnJhbWVDYWxsYmFjay5iaW5kKHRoaXMsIHZpZGVvRWxlbWVudCwgcmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5pbXBvcnQgRHVyYXRpb25zIGZyb20gJy4uLy4uL3RpbWUvRHVyYXRpb24nO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBTZHBQYXJzZXIgZnJvbSAnLi4vLi4vcnRjL1NkcFBhcnNlcic7XG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UsIHtcbiAgZGVmYXVsdFRyYWNrS2luZHMsXG4gIEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1xufSBmcm9tICcuLi8uLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBSdGNDb25uZWN0aW9uTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjQ29ubmVjdGlvbk1vbml0b3InO1xuaW1wb3J0IEVuZFBvaW50LCB7U3Vic2NyaWJlT3B0aW9ucywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi4vY2hhbm5lbHMvQ2hhbm5lbFN0YXRlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIsIHtGcmFtZVRpbWluZ0luZm9ybWF0aW9uTWFuYWdlckNvbnRleHR9IGZyb20gJy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyJztcbmltcG9ydCBJbnNlcnRhYmxlU3RyZWFtcyBmcm9tICcuLi90cmFuc2Zvcm1hdGlvbi9JbnNlcnRhYmxlU3RyZWFtcyc7XG5pbXBvcnQge0lTdHJlYW1TdWJzY3JpYmVyfSBmcm9tICcuL0lTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCBWaWRlb0ZyYW1lRGV0ZWN0b3IgZnJvbSAnLi9WaWRlb0ZyYW1lRGV0ZWN0b3InO1xuaW1wb3J0IEVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXIsIHtFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dH0gZnJvbSAnLi4vdHJhbnNmb3JtYXRpb24vRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlcic7XG5pbXBvcnQge0F1ZGlvQ29kZWNUeXBlfSBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWMnO1xuaW1wb3J0IHtWaWRlb0NvZGVjVHlwZX0gZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9WaWRlb0NvZGVjJztcbmltcG9ydCBWaWRlb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL1ZpZGVvQ29kZWNNYXBwaW5nJztcbmltcG9ydCBBdWRpb0NvZGVjTWFwcGluZyBmcm9tICcuLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL0F1ZGlvQ29kZWNNYXBwaW5nJztcblxuY29uc3QgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwgPSAxMDA7XG5jb25zdCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0ID0gMzAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlciBpbXBsZW1lbnRzIElTdHJlYW1TdWJzY3JpYmVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lU3RyZWFtU3Vic2NyaWJlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5uZWxDb250ZXh0OiBDaGFubmVsQ29udGV4dCwgcGVlckNvbm5lY3Rpb25Db250ZXh0OiBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQsIGZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0OiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0ID0gY2hhbm5lbENvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQgPSBzdHJlYW1UcmFuc2Zvcm1Db250ZXh0O1xuICAgIHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0ID0gZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ7XG4gICAgdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSA9IGhhbmRsZVN0cmVhbUZhaWx1cmU7XG4gIH1cblxuICBzdGFydCh1cmk6IFVSTCwgdG9rZW46IHN0cmluZywgbGlzdGVuT25TdHJlYW1TZXR1cDogU3RyZWFtU2V0dXBMaXN0ZW5lciwgcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQ6IEZ1bmN0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgY29uc3QgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy52YWx1ZVxuICAgICAgfHwgdGhpcy5fZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQuc2hvdWxkRXh0cmFjdFRpbWVjb2RlLnZhbHVlXG4gICAgICB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZSA/IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkIDogRW5jb2RlZEluc2VydGFibGVTdHJlYW1zLkRpc2FibGVkO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtcbiAgICAgIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSksXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlcigncmVjdm9ubHknLCBkZWZhdWx0VHJhY2tLaW5kcywgcmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQub25saW5lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBjb25zdCBzdWJzY3JpYmVPcHRpb25zOiBTdWJzY3JpYmVPcHRpb25zID0ge307XG5cbiAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0Lm9uUmVhbFRpbWVTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2spIHtcbiAgICAgICAgICBzdWJzY3JpYmVPcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5vblJlYWxUaW1lU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaykge1xuICAgICAgICAgIHN1YnNjcmliZU9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrID0gdGhpcy5fY2hhbm5lbENvbnRleHQub25SZWFsVGltZVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmRpc3Bvc2UoKTtcblxuICAgICAgICAgIGlmIChTREsuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCAmJiAhKEZlYXR1cmVFbmFibGVtZW50LmlzTW9iaWxlICYmIFNESy5za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpKSB7XG4gICAgICAgICAgICBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlci5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gbnVsbDtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zdWJzY3JpYmUodG9rZW4sIG51bGwsIHRoaXMuX2NoYW5uZWxDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSwgc3Vic2NyaWJlT3B0aW9ucyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQuc3Vic2NyaWJlKHRva2VuLCBsb2NhbE9mZmVyLCB0aGlzLl9jaGFubmVsQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUsIHN1YnNjcmliZU9wdGlvbnMpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5leGlzdHMudmFsdWUgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5tYXBTdWJzY3JpYmVTdGF0dXNUb0V4aXN0cyhzdGF0dXMpO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX2NoYW5uZWxDb250ZXh0Lm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQubGFnLnZhbHVlID0gdW5kZWZpbmVkIDtcblxuICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LmFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBTdWJzY3JpYmUgZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBsYWd9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sYWcudmFsdWUgPSBsYWc7XG5cbiAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuYXBwbHlTZXNzaW9uQW5kU3RyZWFtUHJvcGVydGllc1RvVmlkZW9FbGVtZW50KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFN1YnNjcmliZSBjb21wbGV0ZWQgWyVzXSBbJWpdIFslal0gWyVqXSBbJWpdJyxcbiAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgc3RhdHVzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGUpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IG51bGw7XG4gICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc3dpdGNoIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdjaGVja2luZyc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29tcGxldGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ25ldyc6XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjYXNlICdkaXNjb25uZWN0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgICAgICAgICBpZiAoR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24odGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcblxuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSBhcyBuZXZlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IG1lZGlhU3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPE1lZGlhU3RyZWFtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghRmVhdHVyZUVuYWJsZW1lbnQub25UcmFja0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpLCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKSkpO1xuXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ub250cmFjayA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoZS5zdHJlYW1zWzBdKTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgdHJhY2tMaXN0ZW5lciA9IChlOiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwWyd0cmFjaycgfCAnYWRkc3RyZWFtJ10pOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICAgICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcblxuICAgICAgICAgICAgICAgIGlmICgnc3RyZWFtcycgaW4gZSkge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlLnN0cmVhbXNbMF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKGUuc3RyZWFtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcigndHJhY2snLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdTdHJlYW0gc2V0dXAgdGltZWQgb3V0JykpO1xuICAgICAgICAgICAgICB9LCBkZWZhdWx0U3RyZWFtU2V0dXBUaW1lb3V0KTtcblxuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCd0cmFjaycsIHRyYWNrTGlzdGVuZXIpO1xuICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5hZGRFdmVudExpc3RlbmVyKCdhZGRzdHJlYW0nLCB0cmFja0xpc3RlbmVyKTtcbiAgICAgICAgICAgICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SWQpKSk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcih7XG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlQXVkaW86IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgYW5zd2VyIFslal0nLCB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCwgYW5zd2VyKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZSBhcyBFbmRQb2ludDtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbSwgYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCh7c3RhdHVzLCBzZXNzaW9uRGVzY3JpcHRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5wbGF5aW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24gYXMgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuc3VjY2Vzcyh0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG1lZGlhU3RyZWFtUHJvbWlzZTtcbiAgICAgICAgICAgIH0pLnRoZW4obWVkaWFTdHJlYW0gPT4ge1xuICAgICAgICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgJiYgcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHBlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLmNvZGVjID0gVmlkZW9Db2RlY01hcHBpbmcuY29udmVydFZpZGVvQ29kZWNUeXBlVG9WaWRlb0NvZGVjKHBhcnNlZFJlbW90ZURlc2NyaXB0aW9uLnZpZGVvQ29kZWMgYXMgVmlkZW9Db2RlY1R5cGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5jb2RlYyA9IEF1ZGlvQ29kZWNNYXBwaW5nLmNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyhwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5hdWRpb0NvZGVjIGFzIEF1ZGlvQ29kZWNUeXBlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY2VpdmVycyA9IHBlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICAgICAgICAgICAgICAgIC8vIE5vdGU6IFRoaXMgYXNzdW1lcyB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIHZpZGVvIE1lZGlhU3RyZWFtVHJhY2sgYW5kIG9uZSBhdWRpbyBNZWRpYVN0cmVhbVRyYWNrXG4gICAgICAgICAgICAgICAgY29uc3QgdmlkZW9UcmFjayA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5tZWRpYVN0cmVhbVRyYWNrID0gbWVkaWFTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXTtcbiAgICAgICAgICAgICAgICAvLyBCb3RoIGFyZSBleHBlY3RlZCB0byBiZSBwcmVzZW50LCBidXQgdGhlIHR5cGUgc3lzdGVtIG1ha2VzIHRoZW0gbnVsbGFibGUsIHNvIHdlIGhhdmUgdG8gYXNzZXJ0IHRoZSBwcmVzZW5jZVxuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvVHJhY2tSZWNlaXZlciA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay5yZWNlaXZlciA9IHJlY2VpdmVycy5maWx0ZXIocmVjZWl2ZXIgPT4gcmVjZWl2ZXIudHJhY2sgPT09IHZpZGVvVHJhY2spWzBdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1pZCA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzXG4gICAgICAgICAgICAgICAgICA/IHBlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpLmZpbHRlcih0cmFuc2NlaXZlciA9PiB0cmFuc2NlaXZlci5yZWNlaXZlciA9PT0gdmlkZW9UcmFja1JlY2VpdmVyKVswXT8ubWlkXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2sgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGF1ZGlvVHJhY2tSZWNlaXZlciA9IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuYXVkaW9UcmFjay5yZWNlaXZlciA9IHJlY2VpdmVycy5maWx0ZXIocmVjZWl2ZXIgPT4gcmVjZWl2ZXIudHJhY2sgPT09IGF1ZGlvVHJhY2spWzBdO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1RyYWNrLm1pZCA9IHBlZXJDb25uZWN0aW9uLnN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzXG4gICAgICAgICAgICAgICAgICA/IHBlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpLmZpbHRlcih0cmFuc2NlaXZlciA9PiB0cmFuc2NlaXZlci5yZWNlaXZlciA9PT0gYXVkaW9UcmFja1JlY2VpdmVyKVswXT8ubWlkXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoSW5zZXJ0YWJsZVN0cmVhbXMuY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQpKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVzRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiA9IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LnNob3VsZEV4dHJhY3RUaW1lY29kZS52YWx1ZSB8fCB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5zaG91bGRFeHRyYWN0VGltZXN0YW1wcy52YWx1ZTtcblxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dDogRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICBzdHJlYW1JZDogdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgIGNvZGVjOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2suY29kZWMsXG4gICAgICAgICAgICAgICAgICAgIHZpZGVvRWxlbWVudDogdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmRlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uLFxuICAgICAgICAgICAgICAgICAgICByZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25TdWJqZWN0OiB0aGlzLl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dC5yZW5kZXJlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24sXG4gICAgICAgICAgICAgICAgICAgIGlzRW5hYmxlZFN1YmplY3Q6IHRoaXMuX2ZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LmlzRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZpZGVvVHJhY2tSZWNlaXZlcixcbiAgICAgICAgICAgICAgICAgICAgbWlkOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2subWlkISxcbiAgICAgICAgICAgICAgICAgICAgdHJhY2tJZDogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2suaWQhLFxuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1NZXNzYWdlUm91dGVyOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LnZpZGVvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEsXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybUZ1bmN0aW9uTmFtZXM6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzXG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQobmV3IEZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyKGZyYW1lVGltaW5nSW5mb3JtYXRpb25NYW5hZ2VyQ29udGV4dCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcXVpcmVzRW5jb2RlZE1lZGlhVHJhbnNmb3JtID0gdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5oYXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuY29kZWRNZWRpYVRyYW5zZm9ybU1hbmFnZXJDb250ZXh0OiBFbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9UcmFjazogdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC52aWRlb1RyYWNrLFxuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrOiB0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0LmF1ZGlvVHJhY2ssXG4gICAgICAgICAgICAgICAgICAgIGVuY29kZWRWaWRlb1N0cmVhbVNpbms6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZFZpZGVvU3RyZWFtU2luayEsXG4gICAgICAgICAgICAgICAgICAgIGVuY29kZWRBdWRpb1N0cmVhbVNpbms6IHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQuZW5jb2RlZEF1ZGlvU3RyZWFtU2luayFcbiAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChuZXcgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlcihlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEluc2VydGFibGVTdHJlYW1zLmNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZSh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0Lmhhc0luc2VydGFibGVTdHJlYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qge3RyYW5zZm9ybWVkU3RyZWFtLCBkaXNwb3NhYmxlc30gPSBJbnNlcnRhYmxlU3RyZWFtcy5jb25maWd1cmVJbnNlcnRhYmxlU3RyZWFtVHJhbnNmb3JtYXRpb24obWVkaWFTdHJlYW0sIHRoaXMuX3N0cmVhbVRyYW5zZm9ybUNvbnRleHQudmlkZW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaywgdGhpcy5fc3RyZWFtVHJhbnNmb3JtQ29udGV4dC5hdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChkaXNwb3NhYmxlcyk7XG4gICAgICAgICAgICAgICAgbWVkaWFTdHJlYW0gPSB0cmFuc2Zvcm1lZFN0cmVhbTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y0Nvbm5lY3Rpb25Nb25pdG9yID0gbmV3IFJ0Y0Nvbm5lY3Rpb25Nb25pdG9yKFxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLCBtZWRpYVN0cmVhbSxcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX2NoYW5uZWxDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCxcbiAgICAgICAgICAgICAgICBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChydGNDb25uZWN0aW9uTW9uaXRvcik7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24gPSBydGNDb25uZWN0aW9uTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0aXN0aWNzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiAhdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICghU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIS5pc0ZvcmVncm91bmQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljID0gc3RhdGlzdGljcy5hdWRpbztcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBhdWRpb1RyYWNrRmFpbGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbGV0IHZpZGVvVHJhY2tGYWlsZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGlmIChzdGF0aXN0aWNzLmF1ZGlvKSB7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMudGltZXN0YW1wICE9PSBzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgICAgICBhdWRpb1RyYWNrRmFpbGVkID0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMgJiYgdGhpcy5fY2hhbm5lbENvbnRleHQucnRjQXVkaW9TdGF0aXN0aWMuYnl0ZXNSZWNlaXZlZCA9PT0gc3RhdGlzdGljcy5hdWRpby5ieXRlc1JlY2VpdmVkO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChhdWRpb1RyYWNrRmFpbGVkICYmIEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBBdWRpbyB0cmFjayBmYWlsZWQgd2l0aCBsYXN0IGJ5dGVzUmVjZWl2ZWQgWyVzXSBpcyBlcXVhbCB0byBwcmV2aW91cyBieXRlc1JlY2VpdmVkIFslc10gd2l0aGluIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aXN0aWNzLmF1ZGlvLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IER1cmF0aW9ucyhzdGF0aXN0aWNzLmF1ZGlvLnRpbWVzdGFtcCAtIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y0F1ZGlvU3RhdGlzdGljLnRpbWVzdGFtcCkudG9Jc29TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNBdWRpb1N0YXRpc3RpYyA9IHN0YXRpc3RpY3MuYXVkaW87XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpc3RpY3MudmlkZW8pIHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy50aW1lc3RhbXAgIT09IHN0YXRpc3RpY3MudmlkZW8udGltZXN0YW1wKSB7XG4gICAgICAgICAgICAgICAgICAgIHZpZGVvVHJhY2tGYWlsZWQgPSB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYyAmJiB0aGlzLl9jaGFubmVsQ29udGV4dC5ydGNWaWRlb1N0YXRpc3RpYy5ieXRlc1JlY2VpdmVkID09PSBzdGF0aXN0aWNzLnZpZGVvLmJ5dGVzUmVjZWl2ZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvVHJhY2tGYWlsZWQgJiYgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9ySXNPbkxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIFZpZGVvIHRyYWNrIGZhaWxlZCB3aXRoIGxhc3QgYnl0ZXNSZWNlaXZlZCBbJXNdIGlzIGVxdWFsIHRvIHByZXZpb3VzIGJ5dGVzUmVjZWl2ZWQgWyVzXSB3aXRoaW4gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpY3MudmlkZW8uYnl0ZXNSZWNlaXZlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljLmJ5dGVzUmVjZWl2ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgRHVyYXRpb25zKHN0YXRpc3RpY3MudmlkZW8udGltZXN0YW1wIC0gdGhpcy5fY2hhbm5lbENvbnRleHQucnRjVmlkZW9TdGF0aXN0aWMudGltZXN0YW1wKS50b0lzb1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnJ0Y1ZpZGVvU3RhdGlzdGljID0gc3RhdGlzdGljcy52aWRlbztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIUdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5PZmZsaW5lO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZpZGVvVHJhY2tGYWlsZWQgfHwgYXVkaW9UcmFja0ZhaWxlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcnRjQ29ubmVjdGlvbk1vbml0b3IuZGlzcG9zZSgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciB0cmFjayBzdG9wcGVkIHdpdGggc3RhdGUgWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcblxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuUmVjb25uZWN0aW5nICYmIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBDaGFubmVsU3RhdGUuT2ZmbGluZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA/IENoYW5uZWxTdGF0ZS5QbGF5aW5nIDogQ2hhbm5lbFN0YXRlLlBhdXNlZDtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDaGFubmVsIHN0YXRlIHJlc3RvcmVkIHRvIFslc10gYWZ0ZXIgcmVjb25uZWN0aW5nJywgQ2hhbm5lbFN0YXRlW3RoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQocnRjQ29ubmVjdGlvbk1vbml0b3JTdGF0aXN0aWNTdWJzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICAgIGlmICghU0RLLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvTXV0ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5hdXRvUGF1c2VkLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hhbm5lbENvbnRleHQucGxheWluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlBhdXNlZDtcblxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudChtZWRpYVN0cmVhbSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHN0cmVhbUlkOiBzdHJpbmcsIHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAoIVNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1slc10gU2tpcHBpbmcgcGVlckNvbm5lY3Rpb24gcmVjb25uZWN0aW9uIGF0dGVtcHQgd2hpbGUgbm90IGluIGZvcmVncm91bmQgKHBlZXJDb25uZWN0aW9uIHN0YXRlIFslc10pJywgc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlBhdXNlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIENoYW5uZWxTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBDaGFubmVsU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgQ2hhbm5lbFN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdbJXNdIFNraXBwaW5nIHBlZXJDb25uZWN0aW9uIHJlY29ubmVjdGlvbiBpbiBkZWxpYmVyYXRlbHktdGVybWluYWwgc3RhdGUgWyVzXScsIHN0cmVhbUlkLCBDaGFubmVsU3RhdGVbdGhpcy5fY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLl9jaGFubmVsQ29udGV4dC5zdGF0ZS52YWx1ZSA9IENoYW5uZWxTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uJywgZSk7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gYWZ0ZXIgWyVzXSBhdHRlbXB0cywgcGVyZm9ybWluZyBmdWxsIHJlY292ZXJ5JywgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICByZXRyeUNhbGxiYWNrKCk7XG4gIH1cblxuICBpc1N0cmVhbUhlYWx0aHkoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgdmlkZW9FbGVtZW50ID0gdGhpcy5fY2hhbm5lbENvbnRleHQudmlkZW9FbGVtZW50LnZhbHVlO1xuXG4gICAgaWYgKCF2aWRlb0VsZW1lbnQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuICAgIGNvbnN0IGhhc0FjdGl2ZVRyYWNrcyA9IG1lZGlhU3RyZWFtPy5nZXRUcmFja3MoKS5zb21lKHRyYWNrID0+IHRyYWNrLnJlYWR5U3RhdGUgPT09ICdsaXZlJykgPz8gZmFsc2U7XG5cbiAgICBpZiAodmlkZW9FbGVtZW50LnBhdXNlZCB8fCAhaGFzQWN0aXZlVHJhY2tzKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gVmlkZW9GcmFtZURldGVjdG9yLmlzUmVuZGVyaW5nRnJhbWVzKHZpZGVvRWxlbWVudCk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb0NoYW5uZWxTdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IENoYW5uZWxTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBDaGFubmVsU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIENoYW5uZWxTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lTdHJlYW1TdWJzY3JpYmVyfSBmcm9tICcuL0lTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQgUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyIGZyb20gJy4vUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgQ2hhbm5lbFN0YXRlIGZyb20gJy4uL2NoYW5uZWxzL0NoYW5uZWxTdGF0ZSc7XG5pbXBvcnQgQ2hhbm5lbENvbnRleHQgZnJvbSAnLi4vY29udGV4dC9DaGFubmVsQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RyZWFtVHJhbnNmb3JtQ29udGV4dCc7XG5pbXBvcnQgRnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9GcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlckZhY3Rvcnkge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbWluZycpO1xuXG4gIHN0YXRpYyBjcmVhdGUodG9rZW46IHN0cmluZywgY2hhbm5lbENvbnRleHQ6IENoYW5uZWxDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQ6IEZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogSVN0cmVhbVN1YnNjcmliZXIgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHRva2VuQ2FwYWJpbGl0aWVzID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikuY2FwYWJpbGl0aWVzO1xuXG4gICAgaWYgKHRva2VuQ2FwYWJpbGl0aWVzLmluY2x1ZGVzKCdvbi1kZW1hbmQnKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgT24tRGVtYW5kIFN0cmVhbSBwbGF5YmFjay4nKTtcbiAgICAgIGNoYW5uZWxDb250ZXh0LnN0YXRlLnZhbHVlID0gQ2hhbm5lbFN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0b2tlbkNhcGFiaWxpdGllcy5pbmNsdWRlcygnc3RyZWFtaW5nJykpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignVGhpcyBidWlsZCBkb2VzIG5vdCBzdXBwb3J0IExpdmUgU3RyZWFtIHBsYXliYWNrLicpO1xuICAgICAgY2hhbm5lbENvbnRleHQuc3RhdGUudmFsdWUgPSBDaGFubmVsU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZWFsVGltZVN0cmVhbVN1YnNjcmliZXIoY2hhbm5lbENvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dCwgc3RyZWFtVHJhbnNmb3JtQ29udGV4dCwgZnJhbWVUaW1pbmdJbmZvcm1hdGlvbkNvbnRleHQsIGhhbmRsZVN0cmVhbUZhaWx1cmUpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZWFsVGltZVN0cmVhbVN1YnNjcmliZXJGYWN0b3J5IGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5jb25zdCBkZXRlY3Rpb25UaW1lb3V0SW5NaWxsaXNlY29uZHMgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb0ZyYW1lRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZpZGVvRnJhbWVEZXRlY3RvcicpO1xuXG4gIHB1YmxpYyBzdGF0aWMgaXNSZW5kZXJpbmdGcmFtZXModmlkZW9FbGVtZW50OiBIVE1MVmlkZW9FbGVtZW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWQpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygncmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayBub3Qgc3VwcG9ydGVkLCBhc3N1bWluZyByZW5kZXJpbmcnKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoIUZlYXR1cmVFbmFibGVtZW50LmlzUmVxdWVzdEFuaW1hdGlvbkZyYW1lU3VwcG9ydGVkKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ3JlcXVlc3RBbmltYXRpb25GcmFtZSBub3Qgc3VwcG9ydGVkLCBhc3N1bWluZyByZW5kZXJpbmcnKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBPbiBkZXNrdG9wIGJyb3dzZXJzLCB0aGUgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjayB2cyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgcmFjZVxuICAgIC8vIHByb2R1Y2VzIGZhbHNlIG5lZ2F0aXZlcyBhZnRlciByZXR1cm5pbmcgZnJvbSBhIGJhY2tncm91bmQgdGFiLiBUaGUgdmlkZW8gY29tcG9zaXRvclxuICAgIC8vIGlzIGluYWN0aXZlIHdoaWxlIHRoZSB0YWIgaXMgaGlkZGVuLCBzbyByZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIGRvZXMgbm90IGZpcmVcbiAgICAvLyBwcm9tcHRseSBhZnRlciBmb3JlZ3JvdW5kaW5nIOKAlCByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgd2lucyB0aGUgcmFjZSBldmVuIHdoZW4gdGhlXG4gICAgLy8gc3RyZWFtIGlzIGhlYWx0aHkuIFRoaXMgY2F1c2VzIHRoZSBmb3JlZ3JvdW5kIGhlYWx0aCBjaGVjayB0byB0cmlnZ2VyIHVubmVjZXNzYXJ5XG4gICAgLy8gUmVjb3ZlcmluZyB0cmFuc2l0aW9ucy4gT24gbW9iaWxlLCBicm93c2VycyBhcmUgbW9yZSBhZ2dyZXNzaXZlIGFib3V0IHBhdXNpbmcgb3JcbiAgICAvLyBkZXN0cm95aW5nIGJhY2tncm91bmQgbWVkaWEgcGlwZWxpbmVzLCBtYWtpbmcgZnJhbWUtbGV2ZWwgc3RhbGwgZGV0ZWN0aW9uIHZhbHVhYmxlXG4gICAgLy8gZGVzcGl0ZSB0aGUgcmFjZSByaXNrLiBEZXNrdG9wIHN0cmVhbXMgcmVseSBvbiB0aGUgUlRDIGNvbm5lY3Rpb24gbW9uaXRvcidzXG4gICAgLy8gYnl0ZXMtcmVjZWl2ZWQgc3RhdHMgdG8gZGV0ZWN0IGdlbnVpbmUgc3RhbGxzIGluc3RlYWQuXG4gICAgaWYgKCFGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdTa2lwcGluZyBmcmFtZSBkZXRlY3Rpb24gb24gZGVza3RvcCwgYXNzdW1pbmcgcmVuZGVyaW5nJyk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIERldGVjdCB3aGV0aGVyIHRoZSB2aWRlbyBlbGVtZW50IGlzIGFjdGl2ZWx5IHJlbmRlcmluZyBkZWNvZGVkIGZyYW1lcyBieSByZXF1ZXN0aW5nXG4gICAgLy8gYm90aCBhIHZpZGVvIGZyYW1lIGNhbGxiYWNrIGFuZCBhbiBhbmltYXRpb24gZnJhbWUgY2FsbGJhY2sgc2ltdWx0YW5lb3VzbHkuXG4gICAgLy8gV2hlbiB0aGUgc3RyZWFtIGlzIGhlYWx0aHksIHJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2sgZmlyZXMgZmlyc3QgYmVjYXVzZSBhIGRlY29kZWRcbiAgICAvLyBmcmFtZSBpcyBhdmFpbGFibGUgZm9yIHByZXNlbnRhdGlvbi4gV2hlbiB0aGUgc3RyZWFtIGlzIHN0YWxsZWQsIG9ubHlcbiAgICAvLyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZmlyZXMgcHJvbXB0bHkgYmVjYXVzZSBpdCBpcyBkcml2ZW4gYnkgdGhlIGRpc3BsYXkgcmVmcmVzaFxuICAgIC8vIGN5Y2xlIHJlZ2FyZGxlc3Mgb2YgdmlkZW8gc3RhdGUuXG4gICAgLy8gQSBmYWxzZSBuZWdhdGl2ZSAocmVxdWVzdEFuaW1hdGlvbkZyYW1lIHdpbm5pbmcgZGVzcGl0ZSBhY3RpdmUgcmVuZGVyaW5nKSBpcyBwb3NzaWJsZVxuICAgIC8vIHdoZW4gYm90aCBjYWxsYmFja3MgbGFuZCBvbiB0aGUgc2FtZSBmcmFtZSwgYnV0IGlzIGJvdW5kZWQgdG8gYSBzaW5nbGUgdW5uZWNlc3NhcnlcbiAgICAvLyByZXN0YXJ0LlxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPihyZXNvbHZlID0+IHtcbiAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghcmVzb2x2ZWQpIHtcbiAgICAgICAgICByZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZyYW1lIGRldGVjdGlvbiB0aW1lZCBvdXQgYWZ0ZXIgWyVzXSBtcywgYXNzdW1pbmcgcmVuZGVyaW5nJywgZGV0ZWN0aW9uVGltZW91dEluTWlsbGlzZWNvbmRzKTtcblxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIGRldGVjdGlvblRpbWVvdXRJbk1pbGxpc2Vjb25kcyk7XG5cbiAgICAgIHZpZGVvRWxlbWVudC5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ1ZpZGVvIGZyYW1lIHJlbmRlcmVkIHdpdGhpbiBbJXNdIG1zIOKAlCBzdHJlYW0gaXMgaGVhbHRoeScsIERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIElmIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmaXJlcyBiZWZvcmUgcmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFjaywgbm8gdmlkZW8gZnJhbWVzXG4gICAgICAvLyBhcmUgYmVpbmcgZGVjb2RlZCDigJQgdGhlIHN0cmVhbSBpcyBzdGFsbGVkLlxuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgaWYgKCFyZXNvbHZlZCkge1xuICAgICAgICAgIHJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ05vIHZpZGVvIGZyYW1lIHJlbmRlcmVkIHdpdGhpbiBbJXNdIG1zIOKAlCBzdHJlYW0gaXMgc3RhbGxlZCcsIERhdGUubm93KCkgLSBzdGFydFRpbWUpO1xuXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdWaWRlb0ZyYW1lRGV0ZWN0b3IgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQge0lFbmNvZGVkU3RyZWFtU2lua30gZnJvbSAnLi9FbmNvZGVkU3RyZWFtU2luayc7XG5pbXBvcnQge1N0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFja30gZnJvbSAnLi4vY29udGV4dC9TdHJlYW1UcmFuc2Zvcm1Db250ZXh0JztcbmltcG9ydCBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLCB7U3Vycm9nYXRlRnJhbWVUeXBlLCBTa2lwRnJhbWV9IGZyb20gJy4vU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZX0gZnJvbSAnLi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlJztcbmltcG9ydCBDaHVuayBmcm9tICcuL0NodW5rJztcblxuZXhwb3J0IHR5cGUgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQgPSB7XG4gIHZpZGVvVHJhY2s6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaztcbiAgYXVkaW9UcmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrO1xuICBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+O1xuICBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG5cbiAgY29uc3RydWN0b3IoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoY29udGV4dCk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoY29udGV4dDogRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlckNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAoY29udGV4dC52aWRlb1RyYWNrLm1lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNvbnRleHQudmlkZW9UcmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzLnB1c2goJ3Byb3RlY3RlZC12aWRlbycpO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoY29udGV4dC52aWRlb1RyYWNrLnRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIhLnJlZ2lzdGVyUm91dGUoVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLCAoY2h1bms6IFJUQ0VuY29kZWRWaWRlb0ZyYW1lKSA9PiB0aGlzLmVuY29kZWRWaWRlb1N0cmVhbUNhbGxiYWNrKGNvbnRleHQudmlkZW9UcmFjaywgY29udGV4dC5lbmNvZGVkVmlkZW9TdHJlYW1TaW5rIGFzIElFbmNvZGVkU3RyZWFtU2luazxSVENFbmNvZGVkVmlkZW9GcmFtZT4sIGNodW5rKSkpO1xuICAgIH1cblxuICAgIGlmIChjb250ZXh0LmF1ZGlvVHJhY2subWVkaWFTdHJlYW1UcmFjaykge1xuICAgICAgY29udGV4dC5hdWRpb1RyYWNrLnRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMucHVzaCgncHJvdGVjdGVkLWF1ZGlvJyk7XG5cbiAgICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZChjb250ZXh0LmF1ZGlvVHJhY2sudHJhbnNmb3JtTWVzc2FnZVJvdXRlciEucmVnaXN0ZXJSb3V0ZShUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssIChjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpID0+IHRoaXMuZW5jb2RlZEF1ZGlvU3RyZWFtQ2FsbGJhY2soY29udGV4dC5hdWRpb1RyYWNrLCBjb250ZXh0LmVuY29kZWRBdWRpb1N0cmVhbVNpbmsgYXMgSUVuY29kZWRTdHJlYW1TaW5rPFJUQ0VuY29kZWRBdWRpb0ZyYW1lPiwgY2h1bmspKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkQXVkaW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZEF1ZGlvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZEF1ZGlvRnJhbWUpOiBQcm9taXNlPENodW5rPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkQXVkaW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGNodW5rLmRhdGEgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLmdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlQXVkaW9TaWxlbnRQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBBdWRpb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgIH1cblxuICAgIHJldHVybiBjaHVuayBhcyB1bmtub3duIGFzIENodW5rO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBlbmNvZGVkVmlkZW9TdHJlYW1DYWxsYmFjayh0cmFjazogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrLCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rOiBJRW5jb2RlZFN0cmVhbVNpbms8UlRDRW5jb2RlZFZpZGVvRnJhbWU+LCBjaHVuazogUlRDRW5jb2RlZFZpZGVvRnJhbWUpOiBQcm9taXNlPENodW5rIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCFhd2FpdCBlbmNvZGVkVmlkZW9TdHJlYW1TaW5rKHRyYWNrLm1lZGlhU3RyZWFtVHJhY2shLCBjaHVuaykpIHtcbiAgICAgIGxldCBzdXJyb2dhdGU6IFN1cnJvZ2F0ZUZyYW1lVHlwZTtcblxuICAgICAgaWYgKGNodW5rLnR5cGUgPT09ICdrZXknKSB7XG4gICAgICAgIHN1cnJvZ2F0ZSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0SW52YWxpZFN1cnJvZ2F0ZVZpZGVvSUZyYW1lKHRyYWNrLmNvZGVjIGFzIFZpZGVvQ29kZWMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Vycm9nYXRlID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5nZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN1cnJvZ2F0ZSA9PT0gU2tpcEZyYW1lKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY2h1bmsuZGF0YSA9IHN1cnJvZ2F0ZSB8fCBjaHVuay5kYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY2h1bmsudHlwZSA9PT0gJ2tleScpIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2h1bmsuZGF0YSA9IFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyh0cmFjay5jb2RlYyBhcyBWaWRlb0NvZGVjKSB8fCBjaHVuay5kYXRhO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjaHVuaztcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJRW5jb2RlZFN0cmVhbVNpbms8VCBleHRlbmRzIFJUQ0VuY29kZWRBdWRpb0ZyYW1lIHwgUlRDRW5jb2RlZFZpZGVvRnJhbWU+IHtcbiAgICAodHJhY2s6IE1lZGlhU3RyZWFtVHJhY2ssIGNodW5rOiBUKTogYm9vbGVhbiB8IFByb21pc2VMaWtlPGJvb2xlYW4+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmNvZGVkU3RyZWFtU2luayB7XG4gIHN0YXRpYyB2YWxpZGF0ZUVuY29kZWRTdHJlYW1TaW5rPFQgZXh0ZW5kcyBSVENFbmNvZGVkQXVkaW9GcmFtZSB8IFJUQ0VuY29kZWRWaWRlb0ZyYW1lPihtb2RlOiAnYXVkaW8nIHwgJ3ZpZGVvJywgaXRlbTogSUVuY29kZWRTdHJlYW1TaW5rPFQ+KSB7XG4gICAgaWYgKHR5cGVvZiBpdGVtICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZDogZmFsc2UsXG4gICAgICAgIHZhbGlkYXRpb25SZXN1bHQ6IGBVbmV4cGVjdGVkICR7bW9kZX0gRW5jb2RlZCBTdHJlYW0gU2luayBmdW5jdGlvbiB0eXBlLiBGb3VuZCBbJHt0eXBlb2YgaXRlbX1dYFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBFbmNvZGVkIFN0cmVhbSBTaW5rIGZ1bmN0aW9uIHBhcmFtZXRlciBsZW5ndGguIEV4cGVjdGVkIDIuIEZvdW5kIFske2l0ZW0ubGVuZ3RofV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgIHZhbGlkYXRpb25SZXN1bHQ6ICdvaydcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbmNvZGVkU3RyZWFtU2luayBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IHtJU3RyZWFtVHJhY2tUcmFuc2Zvcm19IGZyb20gJy4uL3RyYW5zZm9ybWF0aW9uL1N0cmVhbVRyYWNrVHJhbnNmb3JtJztcbmltcG9ydCBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0LCB7U3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrfSBmcm9tICcuLi9jb250ZXh0L1N0cmVhbVRyYW5zZm9ybUNvbnRleHQnO1xuaW1wb3J0IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyIGZyb20gJy4vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lLndvcmtlcic7XG5pbXBvcnQge1RyYW5zZm9ybU1lc3NhZ2VUeXBlfSBmcm9tICcuL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuaW1wb3J0IFRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIgZnJvbSAnLi93b3JrZXIvTWVzc2FnZVJvdXRlcic7XG5cbnR5cGUgTWVkaWFTdHJlYW1UcmFja0tpbmQgPSAndmlkZW8nIHwgJ2F1ZGlvJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBzdGF0aWMgY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpOiBEaXNwb3NhYmxlTGlzdCB7XG4gICAgY29uc3QgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICBjb25zdCBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrID0gKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZSAtIFVzaW5nIFdlYnBhY2sncyB3b3JrZXIgbG9hZGVyIHRvIGlubGluZSB3b3JrZXJcbiAgICAgIGNvbnN0IHdvcmtlciA9IGNvbnRleHQudHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIoKTtcblxuICAgICAgZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHdvcmtlci50ZXJtaW5hdGUoKSkpO1xuICAgICAgZGlzcG9zYWJsZXMuYWRkKGNvbnRleHQudHJhbnNmb3JtTWVzc2FnZVJvdXRlciA9IG5ldyBUcmFuc2Zvcm1NZXNzYWdlUm91dGVyKHdvcmtlcikpO1xuICAgIH07XG5cbiAgICBjb25zdCB7cmVjZWl2ZXI6IHZpZGVvVHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2t9ID0gdmlkZW9UcmFjaztcblxuICAgIGlmICh2aWRlb1RyYWNrUmVjZWl2ZXIgJiYgdmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2spIHtcbiAgICAgIGNyZWF0ZVRyYW5zZm9ybVBpcGVsaW5lV29ya2VyRm9yVHJhY2sodmlkZW9UcmFjayk7XG4gICAgfVxuXG4gICAgY29uc3Qge3JlY2VpdmVyOiBhdWRpb1RyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IGF1ZGlvVHJhY2tNZWRpYVN0cmVhbVRyYWNrfSA9IGF1ZGlvVHJhY2s7XG5cbiAgICBpZiAoYXVkaW9UcmFja1JlY2VpdmVyICYmIGF1ZGlvVHJhY2tNZWRpYVN0cmVhbVRyYWNrKSB7XG4gICAgICBjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrKGF1ZGlvVHJhY2spO1xuICAgIH1cblxuICAgIHJldHVybiBkaXNwb3NhYmxlcztcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBjb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUoc3RyZWFtVHJhbnNmb3JtQ29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG4gICAgY29uc3QgYWRkVHJhY2tUcmFuc2Zvcm1zID0gKHRyYWNrOiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0VHJhY2spID0+IHtcbiAgICAgIGlmICh0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBpZiAodHJhY2sudHJhbnNmb3JtRnVuY3Rpb25OYW1lcy5sZW5ndGgpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRyYW5zZm9ybUZ1bmN0aW9uTmFtZSBvZiB0cmFjay50cmFuc2Zvcm1GdW5jdGlvbk5hbWVzKSB7XG4gICAgICAgICAgICB0cmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybSxcbiAgICAgICAgICAgICAgZGF0YTogdHJhbnNmb3JtRnVuY3Rpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVxdWlyZWQgZm9yIHNhZmFyaSB0byBwcm9wZXJseSB3b3JrIHdoZW4gb25seSB2aWRlbyB0cmFuc2Zvcm1hdGlvbiBpcyBhZGRlZCAoaS5lLiBGcmFtZVRpbWluZ0luZm9ybWF0aW9uKVxuICAgICAgICAgIHRyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKHtcbiAgICAgICAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybSxcbiAgICAgICAgICAgIGRhdGE6ICdwYXNzLXRocm91Z2gnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYWRkVHJhY2tUcmFuc2Zvcm1zKHZpZGVvVHJhY2spO1xuICAgIGFkZFRyYWNrVHJhbnNmb3JtcyhhdWRpb1RyYWNrKTtcblxuICAgIGNvbnN0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybSA9IGFzeW5jKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHQpID0+IHtcbiAgICAgIC8vIFNhZmFyaSBhbmQgRmlyZWZveCAuLi5cbiAgICAgIGNvbnN0IGNvbmZpZ3VyZVJUQ1J0cFNjcmlwdFRyYW5zZm9ybUZvclRyYWNrID0gYXN5bmMoY29udGV4dDogU3RyZWFtVHJhbnNmb3JtQ29udGV4dFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWNlaXZlcjogdHJhY2tSZWNlaXZlciwgbWVkaWFTdHJlYW1UcmFjazogdHJhY2tNZWRpYVN0cmVhbVRyYWNrLCB0cmFuc2Zvcm1QaXBlbGluZVdvcmtlcjogdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcn0gPSBjb250ZXh0O1xuXG4gICAgICAgIGlmICh0cmFja1JlY2VpdmVyICYmIHRyYWNrTWVkaWFTdHJlYW1UcmFjayAmJiB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgICAgdHJhY2tSZWNlaXZlci50cmFuc2Zvcm0gPSBuZXcgUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXIsIHtuYW1lOiBgJHt0cmFja01lZGlhU3RyZWFtVHJhY2sua2luZH0tdHJhbnNmb3JtLXBpcGVsaW5lYH0pO1xuXG4gICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHtkYXRhOiBtZXNzYWdlfTogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwge29uY2U6IHRydWV9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt2aWRlb1RyYWNrLCBhdWRpb1RyYWNrfSA9IHN0cmVhbVRyYW5zZm9ybUNvbnRleHQ7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm1Gb3JUcmFjayh2aWRlb1RyYWNrKSwgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2soYXVkaW9UcmFjayldKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZmlndXJlRW5jb2RlZFN0cmVhbXMgPSBhc3luYyhzdHJlYW1UcmFuc2Zvcm1Db250ZXh0OiBTdHJlYW1UcmFuc2Zvcm1Db250ZXh0KSA9PiB7XG4gICAgICBjb25zdCBjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrID0gKGNvbnRleHQ6IFN0cmVhbVRyYW5zZm9ybUNvbnRleHRUcmFjaykgPT4ge1xuICAgICAgICBjb25zdCB7cmVjZWl2ZXI6IHRyYWNrUmVjZWl2ZXIsIG1lZGlhU3RyZWFtVHJhY2s6IHRyYWNrTWVkaWFTdHJlYW1UcmFjaywgdHJhbnNmb3JtUGlwZWxpbmVXb3JrZXI6IHRyYWNrVHJhbnNmb3JtUGlwZWxpbmVXb3JrZXJ9ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHJhY2tSZWNlaXZlciAmJiB0cmFja01lZGlhU3RyZWFtVHJhY2sgJiYgdHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgICAgICAvLyBAdHMtaWdub3JlIC0gY3JlYXRlRW5jb2RlZFN0cmVhbXMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGluIGxpYi5kb20uZC50c1xuICAgICAgICAgIGNvbnN0IGVuY29kZWRSZWNlaXZlclN0cmVhbXMgPSB0cmFja1JlY2VpdmVyLmNyZWF0ZUVuY29kZWRTdHJlYW1zKCk7XG5cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAoe2RhdGE6IG1lc3NhZ2V9OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gVHJhbnNmb3JtTWVzc2FnZVR5cGUuUGlwZWxpbmVDb25maWd1cmVkKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCB7b25jZTogdHJ1ZX0pO1xuXG4gICAgICAgICAgICB0cmFja1RyYW5zZm9ybVBpcGVsaW5lV29ya2VyLnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdHlwZTogVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ29uZmlndXJlUGlwZWxpbmUsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgc291cmNlOiBlbmNvZGVkUmVjZWl2ZXJTdHJlYW1zLnJlYWRhYmxlLFxuICAgICAgICAgICAgICAgICAgc2luazogZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy53cml0YWJsZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge3RyYW5zZmVyOiBbZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy5yZWFkYWJsZSwgZW5jb2RlZFJlY2VpdmVyU3RyZWFtcy53cml0YWJsZV19XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3ZpZGVvVHJhY2ssIGF1ZGlvVHJhY2t9ID0gc3RyZWFtVHJhbnNmb3JtQ29udGV4dDtcbiAgICAgIGNvbnN0IGFjdGlvbnM6IFByb21pc2U8dm9pZD5bXSA9IFtdO1xuXG4gICAgICBpZiAodmlkZW9UcmFjay5yZWNlaXZlciAmJiB2aWRlb1RyYWNrLnRyYW5zZm9ybVBpcGVsaW5lV29ya2VyKSB7XG4gICAgICAgIGFjdGlvbnMucHVzaChjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrKHZpZGVvVHJhY2spKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF1ZGlvVHJhY2sucmVjZWl2ZXIgJiYgYXVkaW9UcmFjay50cmFuc2Zvcm1QaXBlbGluZVdvcmtlcikge1xuICAgICAgICBhY3Rpb25zLnB1c2goY29uZmlndXJlRW5jb2RlZFN0cmVhbXNGb3JUcmFjayhhdWRpb1RyYWNrKSk7XG4gICAgICB9XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKGFjdGlvbnMpO1xuICAgIH07XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQpIHtcbiAgICAgIC8vIFNhZmFyaSBhbmQgRmlyZWZveC4uLlxuICAgICAgYXdhaXQgY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQ2hyb21lLCBDaHJvbWl1bS4uLlxuICAgIGF3YWl0IGNvbmZpZ3VyZUVuY29kZWRTdHJlYW1zKHN0cmVhbVRyYW5zZm9ybUNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIGNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbihcbiAgICBzdHJlYW06IE1lZGlhU3RyZWFtLFxuICAgIHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2s6IElTdHJlYW1UcmFja1RyYW5zZm9ybTxWaWRlb0ZyYW1lPiB8IHVuZGVmaW5lZCxcbiAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08QXVkaW9EYXRhPiB8IHVuZGVmaW5lZFxuICApOiB7dHJhbnNmb3JtZWRTdHJlYW06IE1lZGlhU3RyZWFtOyBkaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3R9IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFN0cmVhbSA9IG5ldyBNZWRpYVN0cmVhbSgpO1xuICAgIGNvbnN0IGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuXG4gICAgc3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4ge1xuICAgICAgY29uc3Qga2luZDogTWVkaWFTdHJlYW1UcmFja0tpbmQgPSB0cmFjay5raW5kIGFzIE1lZGlhU3RyZWFtVHJhY2tLaW5kO1xuXG4gICAgICBzd2l0Y2ggKGtpbmQpIHtcbiAgICAgICAgY2FzZSAndmlkZW8nOiB7XG4gICAgICAgICAgaWYgKHZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFjazogVHJhbnNmb3JtZXJUcmFuc2Zvcm1DYWxsYmFjazxWaWRlb0ZyYW1lLCBWaWRlb0ZyYW1lPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICB2aWRlb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCB2aWRlb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1WaWRlb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiB2aWRlb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogdmlkZW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2UucGlwZVRocm91Z2godHJhbnNmb3JtZXIpLnBpcGVUbyhzaW5rKTtcblxuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2soZ2VuZXJhdG9yKTtcbiAgICAgICAgICAgIGRpc3Bvc2FibGVzLmFkZChcbiAgICAgICAgICAgICAgbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkU3RyZWFtLnJlbW92ZVRyYWNrKGdlbmVyYXRvcik7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5hZGRUcmFjayh0cmFjayk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjYXNlICdhdWRpbyc6IHtcbiAgICAgICAgICBpZiAoYXVkaW9TdHJlYW1UcmFuc2Zvcm1DYWxsYmFjaykge1xuICAgICAgICAgICAgY29uc3QgaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrOiBUcmFuc2Zvcm1lclRyYW5zZm9ybUNhbGxiYWNrPEF1ZGlvRGF0YSwgQXVkaW9EYXRhPiA9IChjaHVuaywgY29udHJvbGxlcikgPT4ge1xuICAgICAgICAgICAgICBhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrKHRyYWNrLCBjaHVuaywgY29udHJvbGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBhdWRpb1RyYWNrID0gdHJhY2sgYXMgTWVkaWFTdHJlYW1BdWRpb1RyYWNrO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZXIgPSBuZXcgVHJhbnNmb3JtU3RyZWFtKHt0cmFuc2Zvcm06IGluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1DYWxsYmFja30pO1xuICAgICAgICAgICAgY29uc3QgcHJvY2Vzc29yID0gbmV3IE1lZGlhU3RyZWFtVHJhY2tQcm9jZXNzb3Ioe3RyYWNrOiBhdWRpb1RyYWNrfSk7XG4gICAgICAgICAgICBjb25zdCBnZW5lcmF0b3IgPSBuZXcgTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvcih7a2luZDogYXVkaW9UcmFjay5raW5kfSk7XG4gICAgICAgICAgICBjb25zdCBzb3VyY2UgPSBwcm9jZXNzb3IucmVhZGFibGU7XG4gICAgICAgICAgICBjb25zdCBzaW5rID0gZ2VuZXJhdG9yLndyaXRhYmxlO1xuXG4gICAgICAgICAgICBzb3VyY2UucGlwZVRocm91Z2godHJhbnNmb3JtZXIpLnBpcGVUbyhzaW5rKTtcblxuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2soZ2VuZXJhdG9yKTtcblxuICAgICAgICAgICAgY29uc3QgbWVkaWFTdHJlYW0gPSBuZXcgTWVkaWFTdHJlYW0oKTtcbiAgICAgICAgICAgIGNvbnN0IGF1ZGlvUHVtcGVyID0gbmV3IEF1ZGlvKCk7XG5cbiAgICAgICAgICAgIG1lZGlhU3RyZWFtLmFkZFRyYWNrKHRyYWNrKTtcbiAgICAgICAgICAgIGF1ZGlvUHVtcGVyLnNyY09iamVjdCA9IG1lZGlhU3RyZWFtO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhdWRpb1B1bXBlcik7XG4gICAgICAgICAgICBkaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgICAgICAgIG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lZFN0cmVhbS5yZW1vdmVUcmFjayhnZW5lcmF0b3IpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYXVkaW9QdW1wZXIpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmb3JtZWRTdHJlYW0uYWRkVHJhY2sodHJhY2spO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShraW5kKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB0cmFuc2Zvcm1lZFN0cmVhbSxcbiAgICAgIGRpc3Bvc2FibGVzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5zZXJ0YWJsZVN0cmVhbXMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIElTdHJlYW1UcmFja1RyYW5zZm9ybTxUIGV4dGVuZHMgQXVkaW9EYXRhIHwgVmlkZW9GcmFtZT4ge1xuICAgICh0cmFjazogTWVkaWFTdHJlYW1UcmFjaywgY2h1bms6IFQsIGNvbnRyb2xsZXI6IFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyPFQ+KTogdm9pZCB8IFByb21pc2VMaWtlPHZvaWQ+O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdHJlYW1UcmFja1RyYW5zZm9ybSB7XG4gIHN0YXRpYyB2YWxpZGF0ZU1lZGlhU3RyZWFtVHJhY2tUcmFuc2Zvcm08VCBleHRlbmRzIEF1ZGlvRGF0YSB8IFZpZGVvRnJhbWU+KG1vZGU6ICdhdWRpbycgfCAndmlkZW8nLCBpdGVtOiBJU3RyZWFtVHJhY2tUcmFuc2Zvcm08VD4pIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkOiBmYWxzZSxcbiAgICAgICAgdmFsaWRhdGlvblJlc3VsdDogYFVuZXhwZWN0ZWQgJHttb2RlfSBNZWRpYSBTdHJlYW0gVHJhY2sgdHJhbnNmb3JtIGZ1bmN0aW9uIHR5cGUuIEZvdW5kIFske3R5cGVvZiBpdGVtfV1gXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChpdGVtLmxlbmd0aCAhPT0gMykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsaWQ6IGZhbHNlLFxuICAgICAgICB2YWxpZGF0aW9uUmVzdWx0OiBgVW5leHBlY3RlZCAke21vZGV9IE1lZGlhIFN0cmVhbSBUcmFjayB0cmFuc2Zvcm0gZnVuY3Rpb24gcGFyYW1ldGVyIGxlbmd0aC4gRXhwZWN0ZWQgMy4gRm91bmQgWyR7aXRlbS5sZW5ndGh9XWBcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgdmFsaWRhdGlvblJlc3VsdDogJ29rJ1xuICAgIH07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQge0F1ZGlvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvQXVkaW9Db2RlYyc7XG5pbXBvcnQge1ZpZGVvQ29kZWN9IGZyb20gJy4uL2RlY29kZS9iaXRzdHJlYW0vY29kZWMvVmlkZW9Db2RlYyc7XG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuaW1wb3J0IHN1cnJvZ2F0ZUgyNjQyOHgxNklGcmFtZSBmcm9tICcuL3N1cnJvZ2F0ZUZyYW1lcy9oMjY0L3N1cnJvZ2F0ZTI4eDE2SUZyYW1lJztcbmltcG9ydCBzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWUgZnJvbSAnLi9zdXJyb2dhdGVGcmFtZXMvaDI2NC9zdXJyb2dhdGUyOHgxNlBGcmFtZSc7XG5cbmV4cG9ydCBjb25zdCBTa2lwRnJhbWUgPSBTeW1ib2woKTtcblxuZXhwb3J0IHR5cGUgU3Vycm9nYXRlRnJhbWVUeXBlID0gQXJyYXlCdWZmZXIgfCB1bmRlZmluZWQgfCB0eXBlb2YgU2tpcEZyYW1lO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzU2FmYXJpID0gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQW5kcm9pZENocm9tZSA9IEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmlzQW5kcm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NpbmdsZVplcm9CeXRlID0gbmV3IFVpbnQ4QXJyYXkoWzB4MDBdKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15QXVkaW9TaWxlbnRQZXJDb2RlYyA9IHtPUFVTOiBuZXcgVWludDhBcnJheShbMHg2OCwgMHgwNywgMHhkOSwgMHhhYiwgMHhiYywgMHg3OSwgMHg4NywgMHhhYiwgMHg4ZSwgMHg0YSwgMHgxNCwgMHhmMywgMHhhNywgMHgxYywgMHhmMiwgMHg5YSwgMHg3YSwgMHg0NSwgMHhhNywgMHgyZCwgMHg0NCwgMHgyNSwgMHg3NCwgMHg0YywgMHhhZCwgMHgxNiwgMHhiMywgMHgwZSwgMHg1MSwgMHg1NywgMHhlYSwgMHhlNywgMHhhZCwgMHgyYSwgMHgzOCwgMHhjZSwgMHgzM10pfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9JRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg2NywgMHhmNCwgMHgwMCwgMHgwYSwgMHg5MSwgMHg5YiwgMHgyYiwgMHhmMSwgMHhmMSwgMHhmOCwgMHgwOCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHg4MCwgMHgwMCwgMHgwMCwgMHgxOSwgMHgwNywgMHg4OSwgMHgxMiwgMHhjYiwgLy8gU2VxdWVuY2UgcGFyYW1ldGVyIHNldFxuICAgICAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDB4NjgsIDB4ZWIsIDB4ZTMsIDB4YzQsIDB4NDgsIDB4NDQsIC8vIFBpY3R1cmUgcGFyYW10ZXIgc2V0XG4gICAgICAvKiAqLyAweDAwLCAweDAwLCAweDAxLCAweDY1LCAweDg4LCAweDgyLCAweDAwLCAweDNmLCAweDcwLCAweDIzLCAweDg2LCAweGU2LCAweGQxLCAweDgwLCAweDA5LCAweGFmLCAweDBhLCAweDQxLCAweDY2LCAweDZiLCAweDU0LCAweDQ2LCAweGZiLCAweDcxLCAweGQ5LCAweDdmLCAweGZmLCAweGZmLCAweGY5XSksIC8vIFNsaWNlIGxheWVyOiBpZHIgZGF0YVxuICAgIFZQODogbmV3IFVpbnQ4QXJyYXkoWzB4YjAsIDB4MDIsIDB4MDAsIDB4OWQsIDB4MDEsIDB4MmEsIDB4MDEsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MzksIDB4NmIsIDB4MDAsIDB4MjcsIDB4MWMsIDB4MjQsIDB4MGMsIDB4MmMsIDB4MmMsIDB4NDQsIDB4Y2MsIDB4MjQsIDB4NDEsIDB4YTgsIDB4MDAsIDB4MTMsIDB4YTcsIDB4YTMsIDB4N2EsIDB4NTAsIDB4MDAsIDB4ZmUsIDB4ZWIsIDB4ZGUsIDB4MmYsIDB4OGEsIDB4MWUsIDB4NmIsIDB4N2IsIDB4MDcsIDB4NzIsIDB4NjMsIDB4MDksIDB4YTQsIDB4OGUsIDB4YzBdKSxcbiAgICBWUDk6IG5ldyBVaW50OEFycmF5KFsweDgyLCAweDQ5LCAweDgzLCAweDQyLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDA2LCAweDc2LCAweDM4LCAweDI0LCAweDFjLCAweDE5LCAweGEwLCAweDAwLCAweDAwLCAweDIwLCAweDQwLCAweDAwLCAweDExLCAweGJmLCAweGRkLCAweDc3LCAweGZmLCAweDQwLCAweDdmLCAweGIxLCAweDAwXSlcbiAgfTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYyA9IHtcbiAgICBIMjY0OiBuZXcgVWludDhBcnJheShbXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHgwOSwgMHhmMCwgLy8gQWNjZXNzIHVuaXQgZGVsaW1pdGVyXG4gICAgICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMHg0MSwgMHg5YSwgMHg2OCwgMHg0OSwgMHhhOCwgMHg0MSwgMHg2OCwgMHg5OSwgMHg0YywgMHgwZiwgMHhmZiwgMHg5MiwgMHg4MV0pLCAvLyBTbGljZSBsYXllcjogbm9uIGlkciBkYXRhXG4gICAgVlA4OiBuZXcgVWludDhBcnJheShbMHgzMSwgMHgwMywgMHgwMCwgMHhlNCwgMHhlMCwgMHhhOCwgMHg5YiwgMHgzNywgMHhhZiwgMHgxMCwgMHg0ZiwgMHg0ZiwgMHhiMSwgMHgwYSwgMHgyZiwgMHhlNCwgMHg5MiwgMHhjMCwgMHgxZiwgMHhlNywgMHg0ZiwgMHg0NiwgMHhmZiwgMHhlZSwgMHg1MSwgMHhjMSwgMHg1ZCwgMHgwMCwgMHhmZSwgMHhlYiwgMHhkZSwgMHgyZiwgMHg4YSwgMHgxZSwgMHg2YiwgMHg3YiwgMHgwNywgMHg3MiwgMHg2MywgMHgwOSwgMHhhNCwgMHg4ZSwgMHhjMF0pLFxuICAgIFZQOTogbmV3IFVpbnQ4QXJyYXkoWzB4ODYsIDB4MDAsIDB4NDAsIDB4OTIsIDB4OWMsIDB4MjQsIDB4NDgsIDB4MDAsIDB4MDAsIDB4MDMsIDB4NzAsIDB4MDAsIDB4MDAsIDB4NGIsIDB4NDBdKVxuICB9O1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZIMjY0SUZyYW1lID0gc3Vycm9nYXRlSDI2NDI4eDE2SUZyYW1lO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lID0gc3Vycm9nYXRlSDI2NDI4eDE2UEZyYW1lO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0ID0gMTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIgPSBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyUmVzZXQ7XG5cbiAgc3RhdGljIGdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMoY29kZWM6IEF1ZGlvQ29kZWMpOiBBcnJheUJ1ZmZlciB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjb2RlYykge1xuICAgICAgY2FzZSBBdWRpb0NvZGVjLk9QVVM6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teUF1ZGlvU2lsZW50UGVyQ29kZWMuT1BVUy5idWZmZXI7XG5cbiAgICAgIC8vIFRPRE8gKEFaKTogQWRkIGEgZHVtbXkgQUFDIHNpbGVudCBmcmFtZSB3aGVuIEFBQyBzdXBwb3J0IGlzIGFkZGVkXG4gICAgICBjYXNlIEF1ZGlvQ29kZWMuQUFDOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVBdWRpb0RhdGEoKTogQXJyYXlCdWZmZXIge1xuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9JRnJhbWVQZXJDb2RlYyhjb2RlYzogVmlkZW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDpcbiAgICAgICAgaWYgKFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2lzU2FmYXJpKSB7XG4gICAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX3N1cnJvZ2F0ZTI4eDE2SDI2NElGcmFtZS5idWZmZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLkgyNjQuYnVmZmVyO1xuXG4gICAgICBjYXNlIFZpZGVvQ29kZWMuVlA4OlxuICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fZHVtbXkyeDJWaWRlb0lGcmFtZVBlckNvZGVjLlZQOC5idWZmZXI7XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDk6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMuVlA5LmJ1ZmZlcjtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoY29kZWMpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUoY29kZWM6IFZpZGVvQ29kZWMpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIGlmICgoY29kZWMgPT09IFZpZGVvQ29kZWMuSDI2NCkgJiYgU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNBbmRyb2lkQ2hyb21lKSB7XG4gICAgICBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zdXJyb2dhdGUyOHgxNlBGcmFtZUZyYW1lTnVtYmVyID0gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0O1xuXG4gICAgICByZXR1cm4gU2tpcEZyYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyhjb2RlYzogVmlkZW9Db2RlYyk6IEFycmF5QnVmZmVyIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKGNvZGVjKSB7XG4gICAgICBjYXNlIFZpZGVvQ29kZWMuSDI2NDoge1xuICAgICAgICBpZiAoU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5faXNTYWZhcmkpIHtcbiAgICAgICAgICByZXR1cm4gU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlci5fc3Vycm9nYXRlMjh4MTZIMjY0UEZyYW1lLmJ1ZmZlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuSDI2NC5idWZmZXI7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgVmlkZW9Db2RlYy5WUDg6XG4gICAgICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMuVlA4LmJ1ZmZlcjtcblxuICAgICAgY2FzZSBWaWRlb0NvZGVjLlZQOTpcbiAgICAgICAgcmV0dXJuIFN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIuX2R1bW15MngyVmlkZW9QRnJhbWVQZXJDb2RlYy5WUDkuYnVmZmVyO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShjb2RlYyk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldEludmFsaWRTdXJyb2dhdGVWaWRlb1BGcmFtZSgpOiBTdXJyb2dhdGVGcmFtZVR5cGUge1xuICAgIHJldHVybiBTdXJyb2dhdGVGcmFtZURhdGFNYW5hZ2VyLl9zaW5nbGVaZXJvQnl0ZS5idWZmZXI7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBhbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSBmcm9tICcuLi8uLi8uLi9kZWNvZGUvYml0c3RyZWFtL2NvZGVjL2gyNjQvbmFsVW5pdC9Bbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSc7XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBVaW50OEFycmF5KFtcbiAgLi4uYW5uZXhCRm91ckJ5dGVTdGFydENvZGUsIDEwMywgNjYsIDE5MiwgNDIsIDIxOCwgNCwgNCwgMjMyLCA2NCwgMCwgMCwgMywgMCwgNjQsIDAsIDAsIDE1LCAzNSwgMTk4LCAxMiwgMTY4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgMTA0LCAyMDYsIDYwLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2LCAzLCAxNjcsIC4uLm5ldyBVaW50OEFycmF5KDE1MCkuZmlsbCgyNTUpLCAxMjgsXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCAxMDEsIDEzNiwgMTMyLCA2LCAxOTEsIDI1NSwgMjU1LCAxNSwgNjksIDAsIDEsIDg3LCAxNTksIC4uLm5ldyBVaW50OEFycmF5KDE1KS5maWxsKDM5KSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDkzLCAxMTcsIDIxNSwgOTMsIDExNywgMjE1LCA5MywgMTE3LCAyMTUsIDEyOFxuXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgYW5uZXhCRm91ckJ5dGVTdGFydENvZGUgZnJvbSAnLi4vLi4vLi4vZGVjb2RlL2JpdHN0cmVhbS9jb2RlYy9oMjY0L25hbFVuaXQvQW5uZXhCRm91ckJ5dGVTdGFydENvZGUnO1xuXG5leHBvcnQgZGVmYXVsdCBuZXcgVWludDhBcnJheShbXG4gIC4uLmFubmV4QkZvdXJCeXRlU3RhcnRDb2RlLCA2LCAzLCAyNTUsIDYxLCAuLi5uZXcgVWludDhBcnJheSgzMTYpLmZpbGwoMjU1KSwgMTI4LFxuICAuLi5hbm5leEJGb3VyQnl0ZVN0YXJ0Q29kZSwgNjUsIDE1NCwgMzIsIDI2LCAyNDAsIDE4LCA0OFxuXSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIFRyYW5zZm9ybU1lc3NhZ2UsIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkLCBUcmFuc2Zvcm1NZXNzYWdlVHlwZX0gZnJvbSAnLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmFuc2Zvcm1QaXBlbGluZU1lc3NhZ2VSb3V0ZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21lc3NhZ2VSb3V0ZXM6IE1hcDxUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUsIDxUPihtZXNzYWdlOiBUKSA9PiB2b2lkPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3Rvcih3b3JrZXI6IFdvcmtlcikge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSh3b3JrZXIpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUm91dGU8VD4obWVzc2FnZVR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSwgcm91dGVNZXNzYWdlOiAobWVzc2FnZTogVCkgPT4gdm9pZCk6IERpc3Bvc2FibGUge1xuICAgIHRoaXMuX21lc3NhZ2VSb3V0ZXMuc2V0KG1lc3NhZ2VUeXBlLCByb3V0ZU1lc3NhZ2UgYXMgPFQ+KG1lc3NhZ2U6IFQpID0+IHZvaWQpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlKCgpID0+IHRoaXMuX21lc3NhZ2VSb3V0ZXMuZGVsZXRlKG1lc3NhZ2VUeXBlKSk7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXNzYWdlUm91dGVzLmNsZWFyKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUod29ya2VyOiBXb3JrZXIpOiB2b2lkIHtcbiAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7ZGF0YTogbWVzc2FnZX06IE1lc3NhZ2VFdmVudDxUcmFuc2Zvcm1NZXNzYWdlPikgPT4ge1xuICAgICAgY29uc3Qgcm91dGVNZXNzYWdlRGF0YSA9IDxUPih7dHlwZSwgZGF0YX06IFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+KSA9PiB7XG4gICAgICAgIGNvbnN0IHJvdXRlTWVzc2FnZSA9IHRoaXMuX21lc3NhZ2VSb3V0ZXMuZ2V0KHR5cGUpO1xuXG4gICAgICAgIGlmICghcm91dGVNZXNzYWdlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcm91dGVNZXNzYWdlKGRhdGEpO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5DaHVuazpcbiAgICAgICAgY2FzZSBUcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YTpcbiAgICAgICAgICByb3V0ZU1lc3NhZ2VEYXRhKG1lc3NhZ2UuZGF0YSk7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH0sIHtvbmNlOiBmYWxzZX0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQ2h1bmsgZnJvbSAnLi4vQ2h1bmsnO1xuaW1wb3J0IHtSdHBUaW1lc3RhbXB9IGZyb20gJy4uLy4uL2ZyYW1lVGltaW5nL0ZyYW1lVGltaW5nSW5mb3JtYXRpb24nO1xuaW1wb3J0IHtEZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblBheWxvYWR9IGZyb20gJy4vdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uJztcblxuZXhwb3J0IGVudW0gVHJhbnNmb3JtTWVzc2FnZVR5cGUge1xuICBFcnJvciA9IC0xLFxuICBBZGRUcmFuc2Zvcm0gPSAwLFxuICBDb25maWd1cmVQaXBlbGluZSA9IDEsXG4gIE1ldGFkYXRhID0gMixcbiAgQ2h1bmsgPSAzLFxuICBQaXBlbGluZUNvbmZpZ3VyZWQgPSA0XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZSB7XG4gIEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSAwLFxuICBFbmNvZGVkVmlkZW9DaHVuayA9IDEsXG4gIEVuY29kZWRBdWRpb0NodW5rID0gMixcbiAgU3Vycm9nYXRlVmlkZW9DaHVuayA9IDMsXG4gIFN1cnJvZ2F0ZUF1ZGlvQ2h1bmsgPSA0XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2VQYXlsb2FkPFQ+ID0ge1xuICB0eXBlOiBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGU7XG4gIGRhdGE6IFQ7XG59O1xuXG50eXBlIFdlYlJUQ0luc2VydGFibGVTdHJlYW1zID0ge1xuICBzb3VyY2U6IFJlYWRhYmxlU3RyZWFtO1xuICBzaW5rOiBXcml0YWJsZVN0cmVhbTtcbn07XG5cbmV4cG9ydCB0eXBlIFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhID0gRGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25QYXlsb2FkO1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFNZXNzYWdlUGF5bG9hZCA9IHtbdGltZXN0YW1wOiBSdHBUaW1lc3RhbXBdOiB7ZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb246IFRyYW5zZm9ybVN0cmVhbU1ldGFkYXRhfX07XG5cbnR5cGUgVHJhbnNmb3JtTmFtZSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFRyYW5zZm9ybU1lc3NhZ2UgPVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkFkZFRyYW5zZm9ybTtcbiAgICAgIGRhdGE6IFRyYW5zZm9ybU5hbWU7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNvbmZpZ3VyZVBpcGVsaW5lO1xuICAgICAgZGF0YTogV2ViUlRDSW5zZXJ0YWJsZVN0cmVhbXM7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8TWV0YWRhdGFNZXNzYWdlUGF5bG9hZD47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rO1xuICAgICAgZGF0YTogVHJhbnNmb3JtTWVzc2FnZVBheWxvYWQ8Q2h1bms+O1xuICAgIH07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fQlVJTERfVkVSU0lPTl9fOiBzdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlcnNpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlZmF1bHRWZXJzaW9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIHN0YXRpYyBnZXQgc2RrVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gX19CVUlMRF9WRVJTSU9OX187XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWZXJzaW9uO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2UgZnJvbSAnLi9UZWxlbWV0cnlTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi4vbG9nZ2VyL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVuYW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3k7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQ7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQ7XG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZSA9IG5ldyBUZWxlbWV0cnlTZXJ2aWNlKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UucHVzaChsb2dMZXZlbCwgbWVzc2FnZSwgY2F0ZWdvcnksIGRhdGUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTnVtYmVycyBmcm9tICcuLi9sYW5nL051bWJlcnMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSA4MTkyO1xuXG5pbnRlcmZhY2UgSUxvZ0l0ZW0ge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBfbG9nczogQXJyYXk8SUxvZ0l0ZW0+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG51bWJlck9mTG9nc1RvU2VuZCA9IDA7XG4gICAgbGV0IHNpemVPZkxvZ3NUb1NlbmQgPSAwO1xuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGdldEl0ZW1TaXplID0gKGl0ZW06IG51bWJlciB8IHN0cmluZykgPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHVyYXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkdXJhdGlvbiA9IDApIHtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICB9XG5cbiAgdG9Jc29TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiAnUDBTJztcbiAgICB9XG5cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gdGhpcy5fZHVyYXRpb24gPCAwO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gaXNOZWdhdGl2ZSA/IE1hdGguYWJzKHRoaXMuX2R1cmF0aW9uKSA6IHRoaXMuX2R1cmF0aW9uO1xuICAgIGxldCBvZmZzZXQgPSBNYXRoLmZsb29yKGR1cmF0aW9uKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBvZmZzZXQgJSAxMDAwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyAxMDAwKTtcblxuICAgIGNvbnN0IHNlY29uZHMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgbWludXRlcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBob3VycyA9IG9mZnNldCAlIDI0O1xuICAgIGNvbnN0IHBhcnRzID0gWydQVCddO1xuXG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy0nKTtcbiAgICB9XG5cbiAgICBpZiAoaG91cnMpIHtcbiAgICAgIHBhcnRzLnB1c2goaG91cnMgKyAnSCcpO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKG1pbnV0ZXMgKyAnTScpO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmRzIHx8IG1pbGxpc2Vjb25kcykge1xuICAgICAgcGFydHMucHVzaChTdHJpbmcoc2Vjb25kcykpO1xuXG4gICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIHBhcnRzLnB1c2goJy4nICsgdGhpcy5wYWRTdGFydChtaWxsaXNlY29uZHMudG9TdHJpbmcoKSwgMywgJzAnKSk7XG4gICAgICB9XG5cbiAgICAgIHBhcnRzLnB1c2goJ1MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cblxuICBwYWRTdGFydChpdGVtOiBzdHJpbmcsIHRhcmdldExlbmd0aDogbnVtYmVyLCBwYWRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoID4+IDA7XG4gICAgcGFkU3RyaW5nID0gU3RyaW5nKCh0eXBlb2YgcGFkU3RyaW5nICE9PSAndW5kZWZpbmVkJyA/IHBhZFN0cmluZyA6ICcgJykpO1xuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gdGFyZ2V0TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggLSBpdGVtLmxlbmd0aDtcblxuICAgIGlmICh0YXJnZXRMZW5ndGggPiBwYWRTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBwYWRTdHJpbmcgKz0gcGFkU3RyaW5nLnJlcGVhdCh0YXJnZXRMZW5ndGggLyBwYWRTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFkU3RyaW5nLnNsaWNlKDAsIHRhcmdldExlbmd0aCkgKyBpdGVtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJQ29tcGFyYWJsZSBmcm9tICcuLi9sYW5nL0lDb21wYXJhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGltZW5zaW9uIGltcGxlbWVudHMgSUNvbXBhcmFibGU8RGltZW5zaW9uPiB7XG4gIHJlYWRvbmx5IHdpZHRoOiBudW1iZXI7XG4gIHJlYWRvbmx5IGhlaWdodDogbnVtYmVyO1xuXG4gIHN0YXRpYyBnZXQgZW1wdHkoKTogRGltZW5zaW9uIHtcbiAgICByZXR1cm4gbmV3IERpbWVuc2lvbigwLCAwKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9XG5cbiAgZXF1YWxzKG90aGVyOiBEaW1lbnNpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3RoZXIgJiYgdGhpcy53aWR0aCA9PT0gb3RoZXIud2lkdGggJiYgdGhpcy5oZWlnaHQgPT09IG90aGVyLmhlaWdodDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMud2lkdGh9eCR7dGhpcy5oZWlnaHR9YDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE5ldHdvcmtNb25pdG9yIGZyb20gJy4uL2RvbS9OZXR3b3JrTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOZXR3b3JrU3RhdGlzdGljcyB7XG4gIHJ0dD86IG51bWJlcjtcbiAgZWZmZWN0aXZlVHlwZT86IHN0cmluZztcbiAgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTZXNzaW9uVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtNb25pdG9yOiBOZXR3b3JrTW9uaXRvciA9IG5ldyBOZXR3b3JrTW9uaXRvcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2xhc3ROZXR3b3JrU3RhdGlzdGljczogSU5ldHdvcmtTdGF0aXN0aWNzID0ge307XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gbWV0cmljc1NlcnZpY2U7XG5cbiAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb25UZWxlbWV0cnkgRmFpbGVkOiBObyBhcHBsaWNhdGlvbiBtb25pdG9yIGluaXRpYWxpemVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fbmV0d29ya01vbml0b3IuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5ydHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtSVFRVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZWZmZWN0aXZlVHlwZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdGVuT25TdHJlYW1TZXR1cCgpOiBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbVNldHVwTGlzdGVuZXIodGhpcy5fcGFnZUxvYWRUaW1lKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENoYW5nZSA9IHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5nZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk7XG5cbiAgICBpZiAoIXRpbWVTaW5jZUxhc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IGlzRm9yZWdyb3VuZCA/IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZCA6IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZCxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VMYXN0Q2hhbmdlfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnQXBwbGljYXRpb24gaGFzIGdvbmUgaW50byB0aGUgWyVzXSBhZnRlciBbJXNdIG1zJyxcbiAgICAgIGlzRm9yZWdyb3VuZCA/ICdmb3JlZ3JvdW5kJyA6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlTGFzdENoYW5nZSkudG9Jc29TdHJpbmcoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrUlRUVXBkYXRlKG5ld1JUVDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRSdHQgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dCA9IG5ld1JUVDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBuZXdSVFR9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkUnR0ID8ge3VpbnQ2NDogb2xkUnR0fSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlc291cmNlOiAnbmF2aWdhdG9yJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIFJUVCBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3UlRULFxuICAgICAgb2xkUnR0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUobmV3TmV0d29ya1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkTmV0d29ya1R5cGUgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlID0gbmV3TmV0d29ya1R5cGU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld05ldHdvcmtUeXBlfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZE5ldHdvcmtUeXBlID8ge3N0cmluZzogb2xkTmV0d29ya1R5cGV9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZWZmZWN0aXZlIHR5cGUgaGFzIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdOZXR3b3JrVHlwZSxcbiAgICAgIG9sZE5ldHdvcmtUeXBlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKG5ld0NhcGFjaXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZENhcGFjaXR5ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtmbG9hdDogbmV3Q2FwYWNpdHl9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkQ2FwYWNpdHkgPyB7ZmxvYXQ6IG9sZENhcGFjaXR5fSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGRvd25saW5rIHRocm91Z2hwdXQgY2FwYWNpdHkgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld0NhcGFjaXR5LFxuICAgICAgb2xkQ2FwYWNpdHlcbiAgICApO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbnR5cGUgQ29udGludWF0aW9uRXZlbnQgPSBIVE1MVmlkZW9FbGVtZW50RXZlbnRNYXBbJ3BsYXknIHwgJ3BsYXlpbmcnIHwgJ3Byb2dyZXNzJyB8ICd0aW1ldXBkYXRlJ107XG5jb25zdCBub29wID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWaWRlb1RlbGVtZXRyeSBpbXBsZW1lbnRzIElEaXNwb3NhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5uZWxTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1N0cmVhbVRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RyZWFtSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF9saXN0ZW5Ub0ZpcnN0VGltZTogKCkgPT4gdm9pZCA9IG5vb3A7XG4gIHByaXZhdGUgX2xpc3RlbkZvclN0YWxsOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfbGlzdGVuRm9yQ29udGludWF0aW9uOiAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfdGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfY2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF92aWRlb1N0YWxsZWQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9sYXN0UHJvZ3Jlc3M6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX3ZpZGVvUmVzb2x1dGlvbjogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyOiBEaXNwb3NhYmxlID0gbmV3IERpc3Bvc2FibGUoKCkgPT4gbnVsbCk7XG4gIHByaXZhdGUgX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lcjogRGlzcG9zYWJsZSA9IG5ldyBEaXNwb3NhYmxlKCgpID0+IG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHN0cmVhbUlkOiBzdHJpbmcsIHBhZ2VMb2FkVGltZTogbnVtYmVyLCBjaGFubmVsU3RhcnRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3N0cmVhbUlkID0gc3RyZWFtSWQ7XG4gICAgdGhpcy5fcGFnZUxvYWRUaW1lID0gcGFnZUxvYWRUaW1lO1xuICAgIHRoaXMuX2NoYW5uZWxTdGFydFRpbWUgPSBjaGFubmVsU3RhcnRUaW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBtZXRyaWNzU2VydmljZTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JUaW1lVG9GaXJzdFRpbWUodmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGFydFJlY29yZGluZ0ZpcnN0RnJhbWUgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUgPSAoKTogdm9pZCA9PiB0aGlzLmNhbGxUaW1lVG9GaXJzdEZyYW1lKCk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuXG4gICAgdGhpcy5fY2xlYXJUaW1lVG9GaXJzdEZyYW1lTGlzdGVuZXIgPSBuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkZWRkYXRhJywgdGhpcy5fbGlzdGVuVG9GaXJzdFRpbWUpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCB0aGlzLl9saXN0ZW5Ub0ZpcnN0VGltZSk7XG4gICAgfSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyKTtcbiAgfVxuXG4gIHNldHVwTGlzdGVuZXJGb3JSZWJ1ZmZlcmluZyh2aWRlbzogSFRNTFZpZGVvRWxlbWVudCk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3RlbkZvclN0YWxsID0gKCk6IHZvaWQgPT4gdGhpcy5vblN0YWxsKCk7XG5cbiAgICB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24gPSAoZXZlbnQ6IENvbnRpbnVhdGlvbkV2ZW50KTogdm9pZCA9PiB0aGlzLm9uQ29udGludWF0aW9uKGV2ZW50LCB2aWRlbyk7XG5cbiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdzdGFsbGVkJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3N1c3BlbmQnLCB0aGlzLl9saXN0ZW5Gb3JTdGFsbCk7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuXG4gICAgdGhpcy5fY2xlYXJSZWJ1ZmZlcmluZ0xpc3RlbmVyID0gbmV3IERpc3Bvc2FibGUoKCkgPT4ge1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3RhbGxlZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgdGhpcy5fbGlzdGVuRm9yU3RhbGwpO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VzcGVuZCcsIHRoaXMuX2xpc3RlbkZvclN0YWxsKTtcbiAgICAgIHZpZGVvLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BsYXknLCB0aGlzLl9saXN0ZW5Gb3JDb250aW51YXRpb24pO1xuICAgICAgdmlkZW8ucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGxheWluZycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHRoaXMuX2xpc3RlbkZvckNvbnRpbnVhdGlvbik7XG4gICAgICB2aWRlby5yZW1vdmVFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdGhpcy5fbGlzdGVuRm9yQ29udGludWF0aW9uKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9jbGVhclJlYnVmZmVyaW5nTGlzdGVuZXIpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBkdXJhdGlvblNpbmNlUGFnZUxvYWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgcmV0dXJuIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxsVGltZVRvRmlyc3RGcmFtZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgdGhpcy5wdXNoVGltZVRvRmlyc3RGcmFtZShub3cpO1xuICAgIHRoaXMucHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93KTtcblxuICAgIHRoaXMuX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaFRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl90aW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fc3RhcnRSZWNvcmRpbmdGaXJzdEZyYW1lO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5UaW1lVG9GaXJzdEZyYW1lLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHt1aW50NjQ6IHRoaXMuX3RpbWVUb0ZpcnN0RnJhbWV9LFxuICAgICAgc3RyZWFtSWQ6IHRoaXMuX3N0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gRmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl90aW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUobm93OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lID0gbm93IC0gdGhpcy5fY2hhbm5lbFN0YXJ0VGltZTtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lfSxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBbJXNdIENoYW5uZWwgY3JlYXRpb24gdG8gZmlyc3QgZnJhbWUgWyVzXScsXG4gICAgICB0aGlzLmR1cmF0aW9uU2luY2VQYWdlTG9hZCxcbiAgICAgIHRoaXMuX3N0cmVhbUlkLFxuICAgICAgbmV3IER1cmF0aW9ucyh0aGlzLl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lKS50b0lzb1N0cmluZygpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25TdGFsbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fdmlkZW9TdGFsbGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5TdGFsbGVkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHN0cmVhbUlkOiB0aGlzLl9zdHJlYW1JZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHN0YWxsZWQnLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9uQ29udGludWF0aW9uKGV2ZW50OiBDb250aW51YXRpb25FdmVudCwgdmlkZW86IEhUTUxWaWRlb0VsZW1lbnQpOiB2b2lkIHtcbiAgICBpZiAoIXZpZGVvLmJ1ZmZlcmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gdmlkZW8uYnVmZmVyZWQubGVuZ3RoO1xuICAgIGNvbnN0IGhhc05vdFByb2dyZXNzZWRTaW5jZUxhc3RQcm9ncmVzc0V2ZW50ID0gZXZlbnQudHlwZSA9PT0gJ3BsYXlpbmcnXG4gICAgfHwgYnVmZmVyTGVuZ3RoID4gMCA/IChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnXG4gICAgICB8fCBldmVudC50eXBlID09PSAndGltZXVwZGF0ZScpXG4gICAgICAmJiB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSkgPT09IHRoaXMuX2xhc3RQcm9ncmVzcyA6IHRydWU7XG5cbiAgICBpZiAoIXRoaXMuX3ZpZGVvU3RhbGxlZCB8fCBoYXNOb3RQcm9ncmVzc2VkU2luY2VMYXN0UHJvZ3Jlc3NFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC50eXBlID09PSAncHJvZ3Jlc3MnKSB7XG4gICAgICB0aGlzLl9sYXN0UHJvZ3Jlc3MgPSB2aWRlby5idWZmZXJlZC5lbmQoYnVmZmVyTGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgY29uc3QgdGltZVNpbmNlU3RvcCA9IERhdGUubm93KCkgLSB0aGlzLl92aWRlb1N0YWxsZWQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkJ1ZmZlcmluZyxcbiAgICAgIHJ1bnRpbWU6IChEYXRlLm5vdygpIC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlU3RvcH0sXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gWyVzXSBbYnVmZmVyaW5nXSBTdHJlYW0gaGFzIHJlY292ZXJlZCBmcm9tIHN0YWxsIGFmdGVyIFslc10nLFxuICAgICAgdGhpcy5kdXJhdGlvblNpbmNlUGFnZUxvYWQsXG4gICAgICB0aGlzLl9zdHJlYW1JZCxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlU3RvcCkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gICAgdGhpcy5fdmlkZW9TdGFsbGVkID0gbnVsbDtcbiAgfVxuXG4gIG9uVmlkZW9SZXNvbHV0aW9uQ2hhbmdlcyhuZXdSZXNvbHV0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJlc29sdXRpb25DaGFuZ2VkLFxuICAgICAgcnVudGltZTogKERhdGUubm93KCkgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdSZXNvbHV0aW9ufSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA/IHtzdHJpbmc6IHRoaXMuX3ZpZGVvUmVzb2x1dGlvbn0gOiB1bmRlZmluZWQsXG4gICAgICBzdHJlYW1JZDogdGhpcy5fc3RyZWFtSWRcbiAgICB9KTtcblxuICAgIHRoaXMuX3ZpZGVvUmVzb2x1dGlvbiA9IG5ld1Jlc29sdXRpb247XG4gIH1cbn0iLCJcbmltcG9ydCB3b3JrZXIgZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3dvcmtlci1sb2FkZXIvZGlzdC9ydW50aW1lL2lubGluZS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBXb3JrZXJfZm4oKSB7XG4gIHJldHVybiB3b3JrZXIoXCIvKioqKioqLyAoZnVuY3Rpb24oKSB7IC8vIHdlYnBhY2tCb290c3RyYXBcXG4vKioqKioqLyBcXHRcXFwidXNlIHN0cmljdFxcXCI7XFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVzX18gPSAoe1xcblxcbi8qKiovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvbGFuZy9hc3NlcnRVbnJlYWNoYWJsZS50cyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIHVudXNlZCBoYXJtb255IGV4cG9ydCBhc3NlcnRVbnJlYWNoYWJsZSAqL1xcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcbmZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHgpIHtcXG4gIHRocm93IG5ldyBFcnJvcihcXFwiVW5leHBlY3RlZCB2YWx1ZSBbXFxcIi5jb25jYXQoeCwgXFxcIl0uIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWRcXFwiKSk7XFxufVxcbi8qIGhhcm1vbnkgZGVmYXVsdCBleHBvcnQgKi8gX193ZWJwYWNrX2V4cG9ydHNfX1tcXFwiZGVmYXVsdFxcXCJdID0gKGFzc2VydFVucmVhY2hhYmxlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTsgfSxcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFRyYW5zZm9ybU1lc3NhZ2VUeXBlOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gVHJhbnNmb3JtTWVzc2FnZVR5cGU7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKipcXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cXG4gKi9cXG5cXG52YXIgVHJhbnNmb3JtTWVzc2FnZVR5cGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKFRyYW5zZm9ybU1lc3NhZ2VUeXBlKSB7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiRXJyb3JcXFwiXSA9IC0xXSA9IFxcXCJFcnJvclxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiQWRkVHJhbnNmb3JtXFxcIl0gPSAwXSA9IFxcXCJBZGRUcmFuc2Zvcm1cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIkNvbmZpZ3VyZVBpcGVsaW5lXFxcIl0gPSAxXSA9IFxcXCJDb25maWd1cmVQaXBlbGluZVxcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlVHlwZVtUcmFuc2Zvcm1NZXNzYWdlVHlwZVtcXFwiTWV0YWRhdGFcXFwiXSA9IDJdID0gXFxcIk1ldGFkYXRhXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VUeXBlW1RyYW5zZm9ybU1lc3NhZ2VUeXBlW1xcXCJDaHVua1xcXCJdID0gM10gPSBcXFwiQ2h1bmtcXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZVR5cGVbVHJhbnNmb3JtTWVzc2FnZVR5cGVbXFxcIlBpcGVsaW5lQ29uZmlndXJlZFxcXCJdID0gNF0gPSBcXFwiUGlwZWxpbmVDb25maWd1cmVkXFxcIjtcXG4gIHJldHVybiBUcmFuc2Zvcm1NZXNzYWdlVHlwZTtcXG59KHt9KTtcXG52YXIgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUpIHtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiXSA9IDBdID0gXFxcIkZyYW1lVGltaW5nSW5mb3JtYXRpb25cXFwiO1xcbiAgVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1RyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtcXFwiRW5jb2RlZFZpZGVvQ2h1bmtcXFwiXSA9IDFdID0gXFxcIkVuY29kZWRWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIkVuY29kZWRBdWRpb0NodW5rXFxcIl0gPSAyXSA9IFxcXCJFbmNvZGVkQXVkaW9DaHVua1xcXCI7XFxuICBUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlW1xcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIl0gPSAzXSA9IFxcXCJTdXJyb2dhdGVWaWRlb0NodW5rXFxcIjtcXG4gIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZVtUcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGVbXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiXSA9IDRdID0gXFxcIlN1cnJvZ2F0ZUF1ZGlvQ2h1bmtcXFwiO1xcbiAgcmV0dXJuIFRyYW5zZm9ybU1lc3NhZ2VEYXRhVHlwZTtcXG59KHt9KTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfbW9kdWxlLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIFdvcmtlclRyYW5zZm9ybXM7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jbGFzc0NhbGxDaGVja19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jbGFzc0NhbGxDaGVjayAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY2xhc3NDYWxsQ2hlY2suanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcyAqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vY3JlYXRlQ2xhc3MuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfZnJhbWVUaW1pbmdJbmZvcm1hdGlvbl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfM19fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9mcmFtZVRpbWluZ0luZm9ybWF0aW9uICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL3RyYW5zZm9ybXMvZnJhbWVUaW1pbmdJbmZvcm1hdGlvbi50c1xcXCIpO1xcblxcblxcbi8qKlxcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxcbiAqL1xcblxcblxcblxcbnZhciBXb3JrZXJUcmFuc2Zvcm1zID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcXG4gIGZ1bmN0aW9uIFdvcmtlclRyYW5zZm9ybXMoKSB7XFxuICAgICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKSh0aGlzLCBXb3JrZXJUcmFuc2Zvcm1zKTtcXG4gIH1cXG4gIHJldHVybiAoMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2NyZWF0ZUNsYXNzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX19bXFxcImRlZmF1bHRcXFwiXSkoV29ya2VyVHJhbnNmb3JtcywgbnVsbCwgW3tcXG4gICAga2V5OiBcXFwiY3JlYXRlRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkge1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24gdHJhbnNmb3JtKGNodW5rLCBjb250cm9sbGVyKSB7XFxuICAgICAgICAgICgwLF9mcmFtZVRpbWluZ0luZm9ybWF0aW9uX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoY2h1bmspO1xcbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmspO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRWaWRlb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkVmlkZW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYpIHtcXG4gICAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rIHx8IG1lc3NhZ2UuZGF0YS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLlN1cnJvZ2F0ZVZpZGVvQ2h1bmspIHtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIG1lc3NhZ2VEYXRhID0gbWVzc2FnZS5kYXRhO1xcbiAgICAgICAgdmFyIF9tZXNzYWdlRGF0YSRkYXRhID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEuc3Vycm9nYXRlLFxcbiAgICAgICAgICB0aW1lc3RhbXAgPSBfbWVzc2FnZURhdGEkZGF0YS50aW1lc3RhbXA7XFxuICAgICAgICB2YXIgY2h1bmtQZW5kaW5nRW5xdWV1ZSA9IGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAuZ2V0KHRpbWVzdGFtcCk7XFxuICAgICAgICBpZiAoIWNodW5rUGVuZGluZ0VucXVldWUpIHtcXG4gICAgICAgICAgY29uc29sZS53YXJuKCdbV29ya2VyVHJhbnNmb3Jtc10gU3Vycm9nYXRlIHZpZGVvIGNodW5rIG5vdCBmb3VuZCBmb3IgdGltZXN0YW1wJywgdGltZXN0YW1wKTtcXG4gICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgY2h1bmtQZW5kaW5nRW5xdWV1ZS5kYXRhID0gc3Vycm9nYXRlO1xcbiAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKGNodW5rUGVuZGluZ0VucXVldWUpO1xcbiAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcFtcXFwiZGVsZXRlXFxcIl0odGltZXN0YW1wKTtcXG4gICAgICB9O1xcbiAgICAgIHJldHVybiBuZXcgVHJhbnNmb3JtU3RyZWFtKHtcXG4gICAgICAgIHN0YXJ0OiBmdW5jdGlvbiBzdGFydChjb250cm9sbGVyKSB7XFxuICAgICAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgc3Vycm9nYXRlRnJhbWVNZXNzYWdlSGFuZGxlci5iaW5kKG51bGwsIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIpLCB7XFxuICAgICAgICAgICAgb25jZTogZmFsc2VcXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9LFxcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmspIHtcXG4gICAgICAgICAgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5zZXQoY2h1bmsudGltZXN0YW1wLCBjaHVuayk7XFxuICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe1xcbiAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5NZXRhZGF0YSxcXG4gICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlLkVuY29kZWRWaWRlb0NodW5rLFxcbiAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGNodW5rLnRpbWVzdGFtcCxcXG4gICAgICAgICAgICAgICAgZGF0YTogbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSksXFxuICAgICAgICAgICAgICAgIHR5cGU6IGNodW5rLnR5cGVcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0cmFuc2ZlcjogW2NodW5rLmRhdGFdXFxuICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgIH0pO1xcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNyZWF0ZUVuY29kZWRBdWRpb1N0cmVhbVRyYW5zZm9ybVxcXCIsXFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjcmVhdGVFbmNvZGVkQXVkaW9TdHJlYW1UcmFuc2Zvcm0od29ya2VyKSB7XFxuICAgICAgdmFyIGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAgPSBuZXcgTWFwKCk7XFxuICAgICAgdmFyIHN1cnJvZ2F0ZUZyYW1lTWVzc2FnZUhhbmRsZXIgPSBmdW5jdGlvbiBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyKGNodW5rc1BlbmRpbmdFbnF1ZXVlQnlSdHBUaW1lc3RtYXAsIGNvbnRyb2xsZXIsIF9yZWYyKSB7XFxuICAgICAgICB2YXIgbWVzc2FnZSA9IF9yZWYyLmRhdGE7XFxuICAgICAgICBpZiAobWVzc2FnZS50eXBlICE9PSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8yX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQ2h1bmsgfHwgbWVzc2FnZS5kYXRhLnR5cGUgIT09IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuU3Vycm9nYXRlQXVkaW9DaHVuaykge1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgbWVzc2FnZURhdGEgPSBtZXNzYWdlLmRhdGE7XFxuICAgICAgICB2YXIgX21lc3NhZ2VEYXRhJGRhdGEyID0gbWVzc2FnZURhdGEuZGF0YSxcXG4gICAgICAgICAgc3Vycm9nYXRlID0gX21lc3NhZ2VEYXRhJGRhdGEyLnN1cnJvZ2F0ZSxcXG4gICAgICAgICAgdGltZXN0YW1wID0gX21lc3NhZ2VEYXRhJGRhdGEyLnRpbWVzdGFtcDtcXG4gICAgICAgIHZhciBjaHVua1BlbmRpbmdFbnF1ZXVlID0gY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcC5nZXQodGltZXN0YW1wKTtcXG4gICAgICAgIGlmICghY2h1bmtQZW5kaW5nRW5xdWV1ZSkge1xcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1tXb3JrZXJUcmFuc2Zvcm1zXSBTdXJyb2dhdGUgYXVkaW8gY2h1bmsgbm90IGZvdW5kIGZvciB0aW1lc3RhbXAnLCB0aW1lc3RhbXApO1xcbiAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjaHVua1BlbmRpbmdFbnF1ZXVlLmRhdGEgPSBzdXJyb2dhdGU7XFxuICAgICAgICBjb250cm9sbGVyLmVucXVldWUoY2h1bmtQZW5kaW5nRW5xdWV1ZSk7XFxuICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwW1xcXCJkZWxldGVcXFwiXSh0aW1lc3RhbXApO1xcbiAgICAgIH07XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uIHN0YXJ0KGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBzdXJyb2dhdGVGcmFtZU1lc3NhZ2VIYW5kbGVyLmJpbmQobnVsbCwgY2h1bmtzUGVuZGluZ0VucXVldWVCeVJ0cFRpbWVzdG1hcCwgY29udHJvbGxlciksIHtcXG4gICAgICAgICAgICBvbmNlOiBmYWxzZVxcbiAgICAgICAgICB9KTtcXG4gICAgICAgIH0sXFxuICAgICAgICB0cmFuc2Zvcm06IGZ1bmN0aW9uIHRyYW5zZm9ybShjaHVuaykge1xcbiAgICAgICAgICBjaHVua3NQZW5kaW5nRW5xdWV1ZUJ5UnRwVGltZXN0bWFwLnNldChjaHVuay50aW1lc3RhbXAsIGNodW5rKTtcXG4gICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhLFxcbiAgICAgICAgICAgIGRhdGE6IHtcXG4gICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRW5jb2RlZEF1ZGlvQ2h1bmssXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogY2h1bmsudGltZXN0YW1wLFxcbiAgICAgICAgICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheShjaHVuay5kYXRhKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogY2h1bmsudHlwZVxcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRyYW5zZmVyOiBbY2h1bmsuZGF0YV1cXG4gICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH0sIHtcXG4gICAga2V5OiBcXFwiY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSB7XFxuICAgICAgcmV0dXJuIG5ldyBUcmFuc2Zvcm1TdHJlYW0oe1xcbiAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbiB0cmFuc2Zvcm0oY2h1bmssIGNvbnRyb2xsZXIpIHtcXG4gICAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIuZW5xdWV1ZShjaHVuayk7XFxuICAgICAgICB9XFxuICAgICAgfSk7XFxuICAgIH1cXG4gIH1dKTtcXG59KCk7XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvdHJhbnNmb3Jtcy9mcmFtZVRpbWluZ0luZm9ybWF0aW9uLnRzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX21vZHVsZSwgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5ICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2UgKi8gXFxcIi4vc3JjL3Nkay90cmFuc2Zvcm1hdGlvbi93b3JrZXIvVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlLnRzXFxcIik7XFxuXFxuZnVuY3Rpb24gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIociwgZSkgeyB2YXIgdCA9IFxcXCJ1bmRlZmluZWRcXFwiICE9IHR5cGVvZiBTeW1ib2wgJiYgcltTeW1ib2wuaXRlcmF0b3JdIHx8IHJbXFxcIkBAaXRlcmF0b3JcXFwiXTsgaWYgKCF0KSB7IGlmIChBcnJheS5pc0FycmF5KHIpIHx8ICh0ID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpKSB8fCBlICYmIHIgJiYgXFxcIm51bWJlclxcXCIgPT0gdHlwZW9mIHIubGVuZ3RoKSB7IHQgJiYgKHIgPSB0KTsgdmFyIF9uID0gMCwgRiA9IGZ1bmN0aW9uIEYoKSB7fTsgcmV0dXJuIHsgczogRiwgbjogZnVuY3Rpb24gbigpIHsgcmV0dXJuIF9uID49IHIubGVuZ3RoID8geyBkb25lOiAhMCB9IDogeyBkb25lOiAhMSwgdmFsdWU6IHJbX24rK10gfTsgfSwgZTogZnVuY3Rpb24gZShyKSB7IHRocm93IHI7IH0sIGY6IEYgfTsgfSB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXFxcIik7IH0gdmFyIG8sIGEgPSAhMCwgdSA9ICExOyByZXR1cm4geyBzOiBmdW5jdGlvbiBzKCkgeyB0ID0gdC5jYWxsKHIpOyB9LCBuOiBmdW5jdGlvbiBuKCkgeyB2YXIgciA9IHQubmV4dCgpOyByZXR1cm4gYSA9IHIuZG9uZSwgcjsgfSwgZTogZnVuY3Rpb24gZShyKSB7IHUgPSAhMCwgbyA9IHI7IH0sIGY6IGZ1bmN0aW9uIGYoKSB7IHRyeSB7IGEgfHwgbnVsbCA9PSB0W1xcXCJyZXR1cm5cXFwiXSB8fCB0W1xcXCJyZXR1cm5cXFwiXSgpOyB9IGZpbmFsbHkgeyBpZiAodSkgdGhyb3cgbzsgfSB9IH07IH1cXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkgeyBpZiAocikgeyBpZiAoXFxcInN0cmluZ1xcXCIgPT0gdHlwZW9mIHIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKTsgdmFyIHQgPSB7fS50b1N0cmluZy5jYWxsKHIpLnNsaWNlKDgsIC0xKTsgcmV0dXJuIFxcXCJPYmplY3RcXFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcXFwiTWFwXFxcIiA9PT0gdCB8fCBcXFwiU2V0XFxcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcXFwiQXJndW1lbnRzXFxcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIDogdm9pZCAwOyB9IH1cXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7IChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTsgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07IHJldHVybiBuOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxudmFyIEgyNjRfQ09OU1RBTlRTID0ge1xcbiAgTkFMX1VOSVRfVFlQRV9TRUk6IDYsXFxuICBOQUxfVU5JVF9IRUFERVJfU0laRTogMSxcXG4gIFNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORzogMSxcXG4gIEVNVUxBVElPTl9QUkVWRU5USU9OX0JZVEU6IDB4MDMsXFxuICBTVEFSVF9DT0RFX1BSRUZJWF8zQjogWzB4MDAsIDB4MDAsIDB4MDFdLFxcbiAgU1RBUlRfQ09ERV9QUkVGSVhfNEI6IFsweDAwLCAweDAwLCAweDAwLCAweDAxXVxcbn07XFxudmFyIEJJVFNUUkVBTV9DT05TVEFOVFMgPSB7XFxuICBNSU5fQklUU19GT1JfQ0xPQ0tfVElNRVNUQU1QOiAxMCxcXG4gIE1JTl9CSVRTX0ZPUl9GVUxMX1RJTUVTVEFNUDogMTcsXFxuICBNSU5fQklUU19GT1JfVElNRV9PRkZTRVQ6IDI0XFxufTtcXG5mdW5jdGlvbiBmaW5kTmV4dE5hbFN0YXJ0KGRhdGEsIHBvc2l0aW9uKSB7XFxuICB2YXIgZGF0YUxlbmd0aCA9IGRhdGEubGVuZ3RoO1xcbiAgZm9yICh2YXIgaSA9IHBvc2l0aW9uOyBpIDwgZGF0YUxlbmd0aCAtIDM7IGkrKykge1xcbiAgICBpZiAoZGF0YVtpXSA9PT0gMHgwMCAmJiBkYXRhW2kgKyAxXSA9PT0gMHgwMCkge1xcbiAgICAgIGlmIChkYXRhW2kgKyAyXSA9PT0gMHgwMSkge1xcbiAgICAgICAgcmV0dXJuIGk7XFxuICAgICAgfVxcbiAgICAgIGlmIChpICsgMyA8IGRhdGFMZW5ndGggJiYgZGF0YVtpICsgMl0gPT09IDB4MDAgJiYgZGF0YVtpICsgM10gPT09IDB4MDEpIHtcXG4gICAgICAgIHJldHVybiBpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcbiAgcmV0dXJuIC0xO1xcbn1cXG5mdW5jdGlvbiBleHRyYWN0U2VpUGF5bG9hZChkYXRhLCBzdGFydEluZGV4KSB7XFxuICB2YXIgaW5kZXggPSBzdGFydEluZGV4O1xcbiAgdmFyIGZmQ291bnQgPSAwO1xcbiAgd2hpbGUgKGRhdGFbaW5kZXhdID09PSAweGZmKSB7XFxuICAgIGZmQ291bnQrKztcXG4gICAgaW5kZXgrKztcXG4gIH1cXG4gIHZhciBwYXlsb2FkVHlwZSA9IGZmQ291bnQgKiAyNTUgKyBkYXRhW2luZGV4KytdO1xcblxcbiAgLy8gUGFyc2UgcGF5bG9hZCBzaXplXFxuICBmZkNvdW50ID0gMDtcXG4gIHdoaWxlIChkYXRhW2luZGV4XSA9PT0gMHhmZikge1xcbiAgICBmZkNvdW50Kys7XFxuICAgIGluZGV4Kys7XFxuICB9XFxuICB2YXIgcGF5bG9hZFNpemUgPSBmZkNvdW50ICogMjU1ICsgZGF0YVtpbmRleCsrXTtcXG4gIHJldHVybiB7XFxuICAgIHR5cGU6IHBheWxvYWRUeXBlLFxcbiAgICBwYXlsb2FkOiBkYXRhLnN1YmFycmF5KGluZGV4LCBpbmRleCArIHBheWxvYWRTaXplKSxcXG4gICAgbGVuZ3RoOiBpbmRleCArIHBheWxvYWRTaXplIC0gc3RhcnRJbmRleFxcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVtb3ZlRW11bGF0aW9uUHJldmVudGlvbkJ5dGVzKGRhdGEpIHtcXG4gIHZhciByZXN1bHQgPSBbXTtcXG4gIHZhciB6ZXJvQ291bnQgPSAwO1xcbiAgdmFyIF9pdGVyYXRvciA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKGRhdGEpLFxcbiAgICBfc3RlcDtcXG4gIHRyeSB7XFxuICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7XFxuICAgICAgdmFyIF9ieXRlID0gX3N0ZXAudmFsdWU7XFxuICAgICAgaWYgKHplcm9Db3VudCA9PT0gMiAmJiBfYnl0ZSA9PT0gSDI2NF9DT05TVEFOVFMuRU1VTEFUSU9OX1BSRVZFTlRJT05fQllURSkge1xcbiAgICAgICAgemVyb0NvdW50ID0gMDsgLy8gUmVzZXQgYWZ0ZXIgZmluZGluZyBlbXVsYXRpb24gcHJldmVudGlvbiBieXRlLlxcbiAgICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoX2J5dGUgPT09IDB4MDApIHtcXG4gICAgICAgICAgemVyb0NvdW50Kys7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICB6ZXJvQ291bnQgPSAwO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmVzdWx0LnB1c2goX2J5dGUpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfSBjYXRjaCAoZXJyKSB7XFxuICAgIF9pdGVyYXRvci5lKGVycik7XFxuICB9IGZpbmFsbHkge1xcbiAgICBfaXRlcmF0b3IuZigpO1xcbiAgfVxcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlc3VsdCk7XFxufVxcbmZ1bmN0aW9uIGNvbnZlcnRQaWNTdHJ1Y3RUb051bUNsb2NrVFMocGljU3RydWN0KSB7XFxuICBzd2l0Y2ggKHBpY1N0cnVjdCkge1xcbiAgICBjYXNlIDA6XFxuICAgIGNhc2UgMTpcXG4gICAgY2FzZSAyOlxcbiAgICAgIHJldHVybiAxO1xcbiAgICBjYXNlIDM6XFxuICAgIGNhc2UgNDpcXG4gICAgY2FzZSA3OlxcbiAgICAgIHJldHVybiAyO1xcbiAgICBjYXNlIDU6XFxuICAgIGNhc2UgNjpcXG4gICAgY2FzZSA4OlxcbiAgICAgIHJldHVybiAzO1xcbiAgICBkZWZhdWx0OlxcbiAgICAgIHJldHVybiAwO1xcbiAgfVxcbn1cXG5mdW5jdGlvbiBjcmVhdGVCaXRzdHJlYW1SZWFkZXIoYnVmZmVyKSB7XFxuICB2YXIgYml0T2Zmc2V0ID0gMDtcXG4gIGZ1bmN0aW9uIHJlYWRCaXRzKGJpdHNUb1JlYWQpIHtcXG4gICAgaWYgKGJpdE9mZnNldCArIGJpdHNUb1JlYWQgPiBidWZmZXIubGVuZ3RoICogOCkge1xcbiAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiQ2Fubm90IHJlYWQgW1xcXCIuY29uY2F0KGJpdHNUb1JlYWQsIFxcXCJdIGJpdHMgLSBvdXQgb2YgYm91bmRzXFxcIikpO1xcbiAgICB9XFxuICAgIHZhciB2YWx1ZSA9IDA7XFxuICAgIHZhciBiaXRzUmVtYWluaW5nID0gYml0c1RvUmVhZDtcXG4gICAgd2hpbGUgKGJpdHNSZW1haW5pbmcgPiAwKSB7XFxuICAgICAgdmFyIGJ5dGVPZmZzZXQgPSBNYXRoLmZsb29yKGJpdE9mZnNldCAvIDgpO1xcbiAgICAgIHZhciBiaXRJbkJ5dGUgPSBiaXRPZmZzZXQgJSA4O1xcbiAgICAgIHZhciBiaXRzTGVmdEluQnl0ZSA9IDggLSBiaXRJbkJ5dGU7XFxuICAgICAgdmFyIHJlYWROb3cgPSBNYXRoLm1pbihiaXRzUmVtYWluaW5nLCBiaXRzTGVmdEluQnl0ZSk7XFxuICAgICAgdmFyIG1hc2sgPSAoMSA8PCByZWFkTm93KSAtIDE7XFxuICAgICAgdmFyIGJ5dGVWYWwgPSBidWZmZXJbYnl0ZU9mZnNldF0gPj4gYml0c0xlZnRJbkJ5dGUgLSByZWFkTm93O1xcbiAgICAgIHZhciBiaXRzID0gYnl0ZVZhbCAmIG1hc2s7XFxuICAgICAgdmFsdWUgPSB2YWx1ZSA8PCByZWFkTm93IHwgYml0cztcXG4gICAgICBiaXRPZmZzZXQgKz0gcmVhZE5vdztcXG4gICAgICBiaXRzUmVtYWluaW5nIC09IHJlYWROb3c7XFxuICAgIH1cXG4gICAgcmV0dXJuIHZhbHVlO1xcbiAgfVxcbiAgZnVuY3Rpb24gc2tpcEJpdHMobikge1xcbiAgICBpZiAoYml0T2Zmc2V0ICsgbiA+IGJ1ZmZlci5sZW5ndGggKiA4KSB7XFxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJDYW5ub3Qgc2tpcCBbXFxcIi5jb25jYXQobiwgXFxcIl0gYml0cyAtIG91dCBvZiBib3VuZHNcXFwiKSk7XFxuICAgIH1cXG4gICAgYml0T2Zmc2V0ICs9IG47XFxuICB9XFxuICBmdW5jdGlvbiBnZXRSZW1haW5pbmdCaXRzKCkge1xcbiAgICByZXR1cm4gYnVmZmVyLmxlbmd0aCAqIDggLSBiaXRPZmZzZXQ7XFxuICB9XFxuICByZXR1cm4ge1xcbiAgICByZWFkQml0czogcmVhZEJpdHMsXFxuICAgIHNraXBCaXRzOiBza2lwQml0cyxcXG4gICAgZ2V0UmVtYWluaW5nQml0czogZ2V0UmVtYWluaW5nQml0c1xcbiAgfTtcXG59XFxuZnVuY3Rpb24gcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpIHtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIHNlY29uZHNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMuc2Vjb25kcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIG1pbnV0ZXNfZmxhZywgd2UgYXJlIGRvbmUuXFxuICB9XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IDYpIHtcXG4gICAgcmV0dXJuIGZhbHNlO1xcbiAgfVxcbiAgdHMubWludXRlcyA9IHJlYWRlci5yZWFkQml0cyg2KTtcXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgMSB8fCByZWFkZXIucmVhZEJpdHMoMSkgPT09IDApIHtcXG4gICAgcmV0dXJuIHRydWU7IC8vIE5vIGhvdXJzX2ZsYWcsIHdlIGFyZSBkb25lLlxcbiAgfVxcbiAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCA1KSB7XFxuICAgIHJldHVybiBmYWxzZTtcXG4gIH1cXG4gIHRzLmhvdXJzID0gcmVhZGVyLnJlYWRCaXRzKDUpO1xcbiAgcmV0dXJuIHRydWU7XFxufVxcbmZ1bmN0aW9uIHBhcnNlQ2xvY2tUaW1lc3RhbXAocmVhZGVyKSB7XFxuICBpZiAocmVhZGVyLmdldFJlbWFpbmluZ0JpdHMoKSA8IEJJVFNUUkVBTV9DT05TVEFOVFMuTUlOX0JJVFNfRk9SX0NMT0NLX1RJTUVTVEFNUCkge1xcbiAgICByZXR1cm4gbnVsbDtcXG4gIH1cXG4gIHZhciB0cyA9IHtcXG4gICAgY3RUeXBlOiByZWFkZXIucmVhZEJpdHMoMiksXFxuICAgIG51aXRGaWVsZEJhc2VkRmxhZzogcmVhZGVyLnJlYWRCaXRzKDEpID09PSAxLFxcbiAgICBjb3VudGluZ1R5cGU6IHJlYWRlci5yZWFkQml0cyg1KSxcXG4gICAgZnVsbFRpbWVzdGFtcEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgZGlzY29udGludWl0eUZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgY250RHJvcHBlZEZsYWc6IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMSxcXG4gICAgbkZyYW1lczogcmVhZGVyLnJlYWRCaXRzKDgpXFxuICB9O1xcbiAgaWYgKHRzLmZ1bGxUaW1lc3RhbXBGbGFnKSB7XFxuICAgIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfRlVMTF9USU1FU1RBTVApIHtcXG4gICAgICByZXR1cm4gbnVsbDtcXG4gICAgfVxcbiAgICB0cy5zZWNvbmRzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5taW51dGVzID0gcmVhZGVyLnJlYWRCaXRzKDYpO1xcbiAgICB0cy5ob3VycyA9IHJlYWRlci5yZWFkQml0cyg1KTtcXG4gIH0gZWxzZSB7XFxuICAgIGlmICghcmVhZE9wdGlvbmFsVGltZXN0YW1wRmllbGRzKHJlYWRlciwgdHMpKSB7XFxuICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gIH1cXG4gIGlmIChyZWFkZXIuZ2V0UmVtYWluaW5nQml0cygpIDwgQklUU1RSRUFNX0NPTlNUQU5UUy5NSU5fQklUU19GT1JfVElNRV9PRkZTRVQpIHtcXG4gICAgcmV0dXJuIG51bGw7XFxuICB9XFxuICB0cy50aW1lT2Zmc2V0ID0gcmVhZGVyLnJlYWRCaXRzKDI0KTtcXG4gIHJldHVybiB0cztcXG59XFxuZnVuY3Rpb24gcGFyc2VQaWN0dXJlVGltaW5nKGRhdGEsIGNvbmZpZykge1xcbiAgdmFyIHJlYWRlciA9IGNyZWF0ZUJpdHN0cmVhbVJlYWRlcihyZW1vdmVFbXVsYXRpb25QcmV2ZW50aW9uQnl0ZXMoZGF0YSkpO1xcbiAgdmFyIHJlc3VsdCA9IHtcXG4gICAgcGljU3RydWN0OiB1bmRlZmluZWRcXG4gIH07XFxuICBpZiAoY29uZmlnLmNwYkRwYkRlbGF5c1ByZXNlbnRGbGFnICYmIGNvbmZpZy5jcGJSZW1vdmFsRGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCAmJiBjb25maWcuZHBiT3V0cHV0RGVsYXlMZW5ndGhNaW51czEgIT09IHVuZGVmaW5lZCkge1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmNwYlJlbW92YWxEZWxheUxlbmd0aE1pbnVzMSArIDEpO1xcbiAgICByZWFkZXIuc2tpcEJpdHMoY29uZmlnLmRwYk91dHB1dERlbGF5TGVuZ3RoTWludXMxICsgMSk7XFxuICB9XFxuICBpZiAoY29uZmlnLnBpY1N0cnVjdFByZXNlbnRGbGFnKSB7XFxuICAgIHZhciBwaWNTdHJ1Y3QgPSByZWFkZXIucmVhZEJpdHMoNCk7XFxuICAgIHZhciBudW1DbG9ja1RTID0gY29udmVydFBpY1N0cnVjdFRvTnVtQ2xvY2tUUyhwaWNTdHJ1Y3QpO1xcbiAgICB2YXIgY2xvY2tUaW1lc3RhbXBzID0gW107XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2xvY2tUUzsgaSsrKSB7XFxuICAgICAgaWYgKHJlYWRlci5nZXRSZW1haW5pbmdCaXRzKCkgPCAxKSB7XFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgICAgdmFyIGNsb2NrVGltZXN0YW1wRmxhZyA9IHJlYWRlci5yZWFkQml0cygxKSA9PT0gMTtcXG4gICAgICBpZiAoIWNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgY2xvY2tUaW1lc3RhbXBzLnB1c2goe1xcbiAgICAgICAgICBjbG9ja1RpbWVzdGFtcEZsYWc6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGNvbnRpbnVlO1xcbiAgICAgIH1cXG4gICAgICB2YXIgdHMgPSBwYXJzZUNsb2NrVGltZXN0YW1wKHJlYWRlcik7XFxuICAgICAgaWYgKHRzKSB7XFxuICAgICAgICBjbG9ja1RpbWVzdGFtcHMucHVzaCh7XFxuICAgICAgICAgIGNsb2NrVGltZXN0YW1wRmxhZzogdHJ1ZSxcXG4gICAgICAgICAgY2xvY2tUaW1lc3RhbXA6IHRzXFxuICAgICAgICB9KTtcXG4gICAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8gTm90IGVub3VnaCBiaXRzLCBzdG9wIHByb2Nlc3NpbmcgU0VJXFxuICAgICAgICBicmVhaztcXG4gICAgICB9XFxuICAgIH1cXG4gICAgcmVzdWx0LnBpY1N0cnVjdCA9IHtcXG4gICAgICBudW1DbG9ja1RTOiBudW1DbG9ja1RTLFxcbiAgICAgIGNsb2NrVGltZXN0YW1wczogY2xvY2tUaW1lc3RhbXBzXFxuICAgIH07XFxuICB9XFxuICByZXR1cm4gcmVzdWx0O1xcbn1cXG5mdW5jdGlvbiBkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKGNodW5rKSB7XFxuICB2YXIgcmVjZWl2ZVRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XFxuICB2YXIgY2h1bmtEYXRhID0gbmV3IFVpbnQ4QXJyYXkoY2h1bmsuZGF0YSk7XFxuICB2YXIgY3VycmVudEluZGV4ID0gZmluZE5leHROYWxTdGFydChjaHVua0RhdGEsIDApO1xcbiAgd2hpbGUgKGN1cnJlbnRJbmRleCAhPT0gLTEpIHtcXG4gICAgdmFyIG5leHROYWxTdGFydCA9IGZpbmROZXh0TmFsU3RhcnQoY2h1bmtEYXRhLCBjdXJyZW50SW5kZXggKyAxKTtcXG4gICAgdmFyIG5hbFVuaXRFbmQgPSBuZXh0TmFsU3RhcnQgPT09IC0xID8gY2h1bmtEYXRhLmxlbmd0aCA6IG5leHROYWxTdGFydDtcXG4gICAgdmFyIHN0YXJ0Q29kZUxlbmd0aCA9IGNodW5rRGF0YVtjdXJyZW50SW5kZXggKyAyXSA9PT0gMHgwMSA/IDMgOiA0O1xcbiAgICB2YXIgbmFsVW5pdEhlYWRlckluZGV4ID0gY3VycmVudEluZGV4ICsgc3RhcnRDb2RlTGVuZ3RoO1xcbiAgICB2YXIgbmFsVW5pdFR5cGUgPSBjaHVua0RhdGFbbmFsVW5pdEhlYWRlckluZGV4XSAmIDB4MWY7XFxuICAgIGlmIChuYWxVbml0VHlwZSA9PT0gSDI2NF9DT05TVEFOVFMuTkFMX1VOSVRfVFlQRV9TRUkpIHtcXG4gICAgICB2YXIgc2VpSW5kZXggPSBuYWxVbml0SGVhZGVySW5kZXggKyBIMjY0X0NPTlNUQU5UUy5OQUxfVU5JVF9IRUFERVJfU0laRTtcXG4gICAgICB2YXIgbmFsVW5pdERhdGEgPSBjaHVua0RhdGEuc3ViYXJyYXkoc2VpSW5kZXgsIG5hbFVuaXRFbmQpO1xcbiAgICAgIHZhciBzZWlPZmZzZXQgPSAwO1xcblxcbiAgICAgIC8vIFByb2Nlc3MgU0VJIG1lc3NhZ2VzIHVudGlsIGVuZCBvZiBOQUwgdW5pdFxcbiAgICAgIHdoaWxlIChzZWlPZmZzZXQgPCBuYWxVbml0RGF0YS5sZW5ndGgpIHtcXG4gICAgICAgIC8vIFN0b3AgaWYgcmVtYWluaW5nIGRhdGEgaXMgdG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgU0VJIG1lc3NhZ2VcXG4gICAgICAgIGlmIChzZWlPZmZzZXQgKyAyID4gbmFsVW5pdERhdGEubGVuZ3RoKSB7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHNlaVBheWxvYWQgPSBleHRyYWN0U2VpUGF5bG9hZChuYWxVbml0RGF0YSwgc2VpT2Zmc2V0KTtcXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLnR5cGUgPT09IEgyNjRfQ09OU1RBTlRTLlNFSV9QQVlMT0FEX1RZUEVfUElDX1RJTUlORykge1xcbiAgICAgICAgICB2YXIgX3BhcnNlZFBpY3R1cmVUaW1pbmckO1xcbiAgICAgICAgICB2YXIgcGFyc2VkUGljdHVyZVRpbWluZyA9IHBhcnNlUGljdHVyZVRpbWluZyhzZWlQYXlsb2FkLnBheWxvYWQsIHtcXG4gICAgICAgICAgICBjcGJEcGJEZWxheXNQcmVzZW50RmxhZzogZmFsc2UsXFxuICAgICAgICAgICAgcGljU3RydWN0UHJlc2VudEZsYWc6IHRydWVcXG4gICAgICAgICAgfSk7XFxuICAgICAgICAgIHZhciBmaXJzdENsb2NrVGltZXN0YW1wID0gKF9wYXJzZWRQaWN0dXJlVGltaW5nJCA9IHBhcnNlZFBpY3R1cmVUaW1pbmcucGljU3RydWN0KSA9PT0gbnVsbCB8fCBfcGFyc2VkUGljdHVyZVRpbWluZyQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9wYXJzZWRQaWN0dXJlVGltaW5nJC5jbG9ja1RpbWVzdGFtcHNbMF07XFxuICAgICAgICAgIGlmIChmaXJzdENsb2NrVGltZXN0YW1wICE9PSBudWxsICYmIGZpcnN0Q2xvY2tUaW1lc3RhbXAgIT09IHZvaWQgMCAmJiBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wRmxhZykge1xcbiAgICAgICAgICAgIHZhciBfZmlyc3RDbG9ja1RpbWVzdGFtcCQsIF9maXJzdENsb2NrVGltZXN0YW1wJDIsIF9maXJzdENsb2NrVGltZXN0YW1wJDMsIF9maXJzdENsb2NrVGltZXN0YW1wJDQ7XFxuICAgICAgICAgICAgdmFyIHJ0cFRpbWVzdGFtcCA9IGNodW5rLnRpbWVzdGFtcDtcXG4gICAgICAgICAgICB2YXIgZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24gPSB7XFxuICAgICAgICAgICAgICB0aW1lY29kZTogZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcCA/IHtcXG4gICAgICAgICAgICAgICAgaG91cnM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLmhvdXJzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJCA6IG51bGwsXFxuICAgICAgICAgICAgICAgIG1pbnV0ZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQyID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5taW51dGVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQyIDogbnVsbCxcXG4gICAgICAgICAgICAgICAgc2Vjb25kczogKF9maXJzdENsb2NrVGltZXN0YW1wJDMgPSBmaXJzdENsb2NrVGltZXN0YW1wLmNsb2NrVGltZXN0YW1wLnNlY29uZHMpICE9PSBudWxsICYmIF9maXJzdENsb2NrVGltZXN0YW1wJDMgIT09IHZvaWQgMCA/IF9maXJzdENsb2NrVGltZXN0YW1wJDMgOiBudWxsLFxcbiAgICAgICAgICAgICAgICBmcmFtZXM6IChfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ID0gZmlyc3RDbG9ja1RpbWVzdGFtcC5jbG9ja1RpbWVzdGFtcC5uRnJhbWVzKSAhPT0gbnVsbCAmJiBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0ICE9PSB2b2lkIDAgPyBfZmlyc3RDbG9ja1RpbWVzdGFtcCQ0IDogbnVsbCxcXG4gICAgICAgICAgICAgICAgaXNGcmFtZURyb3A6IGZpcnN0Q2xvY2tUaW1lc3RhbXAuY2xvY2tUaW1lc3RhbXAuY250RHJvcHBlZEZsYWdcXG4gICAgICAgICAgICAgIH0gOiBudWxsLFxcbiAgICAgICAgICAgICAgcmVjZWl2ZVRpbWVzdGFtcDogcmVjZWl2ZVRpbWVzdGFtcFxcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZSh7XFxuICAgICAgICAgICAgICB0eXBlOiBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuTWV0YWRhdGEsXFxuICAgICAgICAgICAgICBkYXRhOiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXy5UcmFuc2Zvcm1NZXNzYWdlRGF0YVR5cGUuRnJhbWVUaW1pbmdJbmZvcm1hdGlvbixcXG4gICAgICAgICAgICAgICAgZGF0YTogKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19kZWZpbmVQcm9wZXJ0eV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHt9LCBydHBUaW1lc3RhbXAsIHtcXG4gICAgICAgICAgICAgICAgICBkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbjogZGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb25cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc2VpT2Zmc2V0ICs9IHNlaVBheWxvYWQubGVuZ3RoO1xcblxcbiAgICAgICAgLy8gU3RvcCBpZiBhbiBpbnZhbGlkIHBheWxvYWQgbGVuZ3RoIHdhcyBkZXRlY3RlZC5cXG4gICAgICAgIGlmIChzZWlQYXlsb2FkLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgICB9XFxuICAgIH1cXG4gICAgY3VycmVudEluZGV4ID0gbmV4dE5hbFN0YXJ0O1xcbiAgfVxcbn1cXG4vKiBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIF9fd2VicGFja19leHBvcnRzX19bXFxcImRlZmF1bHRcXFwiXSA9IChkZWNvZGVGcmFtZVRpbWluZ1RpbWVjb2RlKTtcXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2FzeW5jVG9HZW5lcmF0b3IuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2FzeW5jVG9HZW5lcmF0b3I7IH1cXG4vKiBoYXJtb255IGV4cG9ydCAqLyB9KTtcXG5mdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xcbiAgdHJ5IHtcXG4gICAgdmFyIGkgPSBuW2FdKGMpLFxcbiAgICAgIHUgPSBpLnZhbHVlO1xcbiAgfSBjYXRjaCAobikge1xcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xcbiAgfVxcbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xcbn1cXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XFxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xcbiAgICB2YXIgdCA9IHRoaXMsXFxuICAgICAgZSA9IGFyZ3VtZW50cztcXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XFxuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcXG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcXFwibmV4dFxcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFxcXCJ0aHJvd1xcXCIsIG4pO1xcbiAgICAgIH1cXG4gICAgICBfbmV4dCh2b2lkIDApO1xcbiAgICB9KTtcXG4gIH07XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2NsYXNzQ2FsbENoZWNrOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcXG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcXFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXFxcIik7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVDbGFzcy5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2NyZWF0ZUNsYXNzOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XFxuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcXG4gICAgdmFyIG8gPSByW3RdO1xcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFxcXCJ2YWx1ZVxcXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsICgwLF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoby5rZXkpLCBvKTtcXG4gIH1cXG59XFxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcXG4gIHJldHVybiByICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUucHJvdG90eXBlLCByKSwgdCAmJiBfZGVmaW5lUHJvcGVydGllcyhlLCB0KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIFxcXCJwcm90b3R5cGVcXFwiLCB7XFxuICAgIHdyaXRhYmxlOiAhMVxcbiAgfSksIGU7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX2RlZmluZVByb3BlcnR5OyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90b1Byb3BlcnR5S2V5X2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJvcGVydHlLZXkuanMgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3RvUHJvcGVydHlLZXkuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xcbiAgcmV0dXJuIChyID0gKDAsX3RvUHJvcGVydHlLZXlfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfX1tcXFwiZGVmYXVsdFxcXCJdKShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XFxuICAgIHZhbHVlOiB0LFxcbiAgICBlbnVtZXJhYmxlOiAhMCxcXG4gICAgY29uZmlndXJhYmxlOiAhMCxcXG4gICAgd3JpdGFibGU6ICEwXFxuICB9KSA6IGVbcl0gPSB0LCBlO1xcbn1cXG5cXG5cXG4vKioqLyB9KSxcXG5cXG4vKioqLyBcXFwiLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanNcXFwiOlxcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9QcmltaXRpdmUuanMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKi8gKGZ1bmN0aW9uKF9fdW51c2VkX3dlYnBhY2tfX193ZWJwYWNrX21vZHVsZV9fLCBfX3dlYnBhY2tfZXhwb3J0c19fLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XFxuXFxuLyogaGFybW9ueSBleHBvcnQgKi8gX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18sIHtcXG4vKiBoYXJtb255IGV4cG9ydCAqLyAgIFxcXCJkZWZhdWx0XFxcIjogZnVuY3Rpb24oKSB7IHJldHVybiAvKiBiaW5kaW5nICovIHRvUHJpbWl0aXZlOyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanNcXFwiKTtcXG5cXG5mdW5jdGlvbiB0b1ByaW1pdGl2ZSh0LCByKSB7XFxuICBpZiAoXFxcIm9iamVjdFxcXCIgIT0gKDAsX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKHQpIHx8ICF0KSByZXR1cm4gdDtcXG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xcbiAgaWYgKHZvaWQgMCAhPT0gZSkge1xcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFxcXCJkZWZhdWx0XFxcIik7XFxuICAgIGlmIChcXFwib2JqZWN0XFxcIiAhPSAoMCxfdHlwZW9mX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoaSkpIHJldHVybiBpO1xcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxcXCJAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLlxcXCIpO1xcbiAgfVxcbiAgcmV0dXJuIChcXFwic3RyaW5nXFxcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XFxufVxcblxcblxcbi8qKiovIH0pLFxcblxcbi8qKiovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1Byb3BlcnR5S2V5LmpzXFxcIjpcXG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdG9Qcm9wZXJ0eUtleS5qcyAqKiohXFxuICBcXFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbi8qKiovIChmdW5jdGlvbihfX3VudXNlZF93ZWJwYWNrX19fd2VicGFja19tb2R1bGVfXywgX193ZWJwYWNrX2V4cG9ydHNfXywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xcblxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIF9fd2VicGFja19yZXF1aXJlX18uZChfX3dlYnBhY2tfZXhwb3J0c19fLCB7XFxuLyogaGFybW9ueSBleHBvcnQgKi8gICBcXFwiZGVmYXVsdFxcXCI6IGZ1bmN0aW9uKCkgeyByZXR1cm4gLyogYmluZGluZyAqLyB0b1Byb3BlcnR5S2V5OyB9XFxuLyogaGFybW9ueSBleHBvcnQgKi8gfSk7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF90eXBlb2ZfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdHlwZW9mLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90eXBlb2YuanNcXFwiKTtcXG4vKiBoYXJtb255IGltcG9ydCAqLyB2YXIgX3RvUHJpbWl0aXZlX2pzX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8xX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RvUHJpbWl0aXZlLmpzICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS90b1ByaW1pdGl2ZS5qc1xcXCIpO1xcblxcblxcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xcbiAgdmFyIGkgPSAoMCxfdG9QcmltaXRpdmVfanNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKSh0LCBcXFwic3RyaW5nXFxcIik7XFxuICByZXR1cm4gXFxcInN5bWJvbFxcXCIgPT0gKDAsX3R5cGVvZl9qc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fW1xcXCJkZWZhdWx0XFxcIl0pKGkpID8gaSA6IGkgKyBcXFwiXFxcIjtcXG59XFxuXFxuXFxuLyoqKi8gfSksXFxuXFxuLyoqKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3R5cGVvZi5qc1xcXCI6XFxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vdHlwZW9mLmpzICoqKiFcXG4gIFxcXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqLyAoZnVuY3Rpb24oX191bnVzZWRfd2VicGFja19fX3dlYnBhY2tfbW9kdWxlX18sIF9fd2VicGFja19leHBvcnRzX18sIF9fd2VicGFja19yZXF1aXJlX18pIHtcXG5cXG4vKiBoYXJtb255IGV4cG9ydCAqLyBfX3dlYnBhY2tfcmVxdWlyZV9fLmQoX193ZWJwYWNrX2V4cG9ydHNfXywge1xcbi8qIGhhcm1vbnkgZXhwb3J0ICovICAgXFxcImRlZmF1bHRcXFwiOiBmdW5jdGlvbigpIHsgcmV0dXJuIC8qIGJpbmRpbmcgKi8gX3R5cGVvZjsgfVxcbi8qIGhhcm1vbnkgZXhwb3J0ICovIH0pO1xcbmZ1bmN0aW9uIF90eXBlb2Yobykge1xcbiAgXFxcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXFxcIjtcXG5cXG4gIHJldHVybiBfdHlwZW9mID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIFxcXCJzeW1ib2xcXFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xcbiAgICByZXR1cm4gdHlwZW9mIG87XFxuICB9IDogZnVuY3Rpb24gKG8pIHtcXG4gICAgcmV0dXJuIG8gJiYgXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sICYmIG8uY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvICE9PSBTeW1ib2wucHJvdG90eXBlID8gXFxcInN5bWJvbFxcXCIgOiB0eXBlb2YgbztcXG4gIH0sIF90eXBlb2Yobyk7XFxufVxcblxcblxcbi8qKiovIH0pXFxuXFxuLyoqKioqKi8gXFx0fSk7XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG4vKioqKioqLyBcXHQvLyBUaGUgbW9kdWxlIGNhY2hlXFxuLyoqKioqKi8gXFx0dmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xcbi8qKioqKiovIFxcdFxcbi8qKioqKiovIFxcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXFxuLyoqKioqKi8gXFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xcbi8qKioqKiovIFxcdFxcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxcbi8qKioqKiovIFxcdFxcdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xcbi8qKioqKiovIFxcdFxcdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xcbi8qKioqKiovIFxcdFxcdFxcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcXG4vKioqKioqLyBcXHRcXHR9XFxuLyoqKioqKi8gXFx0XFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcXG4vKioqKioqLyBcXHRcXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcXG4vKioqKioqLyBcXHRcXHRcXHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXFxuLyoqKioqKi8gXFx0XFx0XFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcXG4vKioqKioqLyBcXHRcXHRcXHRleHBvcnRzOiB7fVxcbi8qKioqKiovIFxcdFxcdH07XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0XFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXFxuLyoqKioqKi8gXFx0XFx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKi8gXFx0XFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcXG4vKioqKioqLyBcXHRcXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XFxuLyoqKioqKi8gXFx0fVxcbi8qKioqKiovIFxcdFxcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyoqKioqKi8gXFx0Lyogd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzICovXFxuLyoqKioqKi8gXFx0IWZ1bmN0aW9uKCkge1xcbi8qKioqKiovIFxcdFxcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcXG4vKioqKioqLyBcXHRcXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XFxuLyoqKioqKi8gXFx0XFx0XFx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xcbi8qKioqKiovIFxcdFxcdFxcdFxcdFxcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XFxuLyoqKioqKi8gXFx0XFx0XFx0XFx0fVxcbi8qKioqKiovIFxcdFxcdFxcdH1cXG4vKioqKioqLyBcXHRcXHR9O1xcbi8qKioqKiovIFxcdH0oKTtcXG4vKioqKioqLyBcXHRcXG4vKioqKioqLyBcXHQvKiB3ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kICovXFxuLyoqKioqKi8gXFx0IWZ1bmN0aW9uKCkge1xcbi8qKioqKiovIFxcdFxcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iaiwgcHJvcCkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7IH1cXG4vKioqKioqLyBcXHR9KCk7XFxuLyoqKioqKi8gXFx0XFxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IHt9O1xcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXFxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcz8/cnVsZVNldFsxXS5ydWxlc1sxXS51c2UhLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZS53b3JrZXIudHMgKioqIVxcbiAgXFxcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfYXN5bmNUb0dlbmVyYXRvcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yICovIFxcXCIuL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2sgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NsYXNzQ2FsbENoZWNrLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY3JlYXRlQ2xhc3NfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzJfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY3JlYXRlQ2xhc3MgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIEBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHkgKi8gXFxcIi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2RlZmluZVByb3BlcnR5LmpzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlICovIFxcXCIuL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzXFxcIik7XFxuLyogaGFybW9ueSBpbXBvcnQgKi8gdmFyIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlICovIFxcXCIuL3NyYy9zZGsvdHJhbnNmb3JtYXRpb24vd29ya2VyL1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZS50c1xcXCIpO1xcbi8qIGhhcm1vbnkgaW1wb3J0ICovIHZhciBfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL3RyYW5zZm9ybXMvV29ya2VyVHJhbnNmb3JtcyAqLyBcXFwiLi9zcmMvc2RrL3RyYW5zZm9ybWF0aW9uL3dvcmtlci90cmFuc2Zvcm1zL1dvcmtlclRyYW5zZm9ybXMudHNcXFwiKTtcXG5cXG5cXG5cXG5cXG52YXIgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbmZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgLyohIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgLS0gQ29weXJpZ2h0IChjKSAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuIC0tIGxpY2Vuc2UgKE1JVCk6IGh0dHBzOi8vZ2l0aHViLmNvbS9iYWJlbC9iYWJlbC9ibG9iL21haW4vcGFja2FnZXMvYmFiZWwtaGVscGVycy9MSUNFTlNFICovIHZhciBlLCB0LCByID0gXFxcImZ1bmN0aW9uXFxcIiA9PSB0eXBlb2YgU3ltYm9sID8gU3ltYm9sIDoge30sIG4gPSByLml0ZXJhdG9yIHx8IFxcXCJAQGl0ZXJhdG9yXFxcIiwgbyA9IHIudG9TdHJpbmdUYWcgfHwgXFxcIkBAdG9TdHJpbmdUYWdcXFwiOyBmdW5jdGlvbiBpKHIsIG4sIG8sIGkpIHsgdmFyIGMgPSBuICYmIG4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yID8gbiA6IEdlbmVyYXRvciwgdSA9IE9iamVjdC5jcmVhdGUoYy5wcm90b3R5cGUpOyByZXR1cm4gX3JlZ2VuZXJhdG9yRGVmaW5lMih1LCBcXFwiX2ludm9rZVxcXCIsIGZ1bmN0aW9uIChyLCBuLCBvKSB7IHZhciBpLCBjLCB1LCBmID0gMCwgcCA9IG8gfHwgW10sIHkgPSAhMSwgRyA9IHsgcDogMCwgbjogMCwgdjogZSwgYTogZCwgZjogZC5iaW5kKGUsIDQpLCBkOiBmdW5jdGlvbiBkKHQsIHIpIHsgcmV0dXJuIGkgPSB0LCBjID0gMCwgdSA9IGUsIEcubiA9IHIsIGE7IH0gfTsgZnVuY3Rpb24gZChyLCBuKSB7IGZvciAoYyA9IHIsIHUgPSBuLCB0ID0gMDsgIXkgJiYgZiAmJiAhbyAmJiB0IDwgcC5sZW5ndGg7IHQrKykgeyB2YXIgbywgaSA9IHBbdF0sIGQgPSBHLnAsIGwgPSBpWzJdOyByID4gMyA/IChvID0gbCA9PT0gbikgJiYgKHUgPSBpWyhjID0gaVs0XSkgPyA1IDogKGMgPSAzLCAzKV0sIGlbNF0gPSBpWzVdID0gZSkgOiBpWzBdIDw9IGQgJiYgKChvID0gciA8IDIgJiYgZCA8IGlbMV0pID8gKGMgPSAwLCBHLnYgPSBuLCBHLm4gPSBpWzFdKSA6IGQgPCBsICYmIChvID0gciA8IDMgfHwgaVswXSA+IG4gfHwgbiA+IGwpICYmIChpWzRdID0gciwgaVs1XSA9IG4sIEcubiA9IGwsIGMgPSAwKSk7IH0gaWYgKG8gfHwgciA+IDEpIHJldHVybiBhOyB0aHJvdyB5ID0gITAsIG47IH0gcmV0dXJuIGZ1bmN0aW9uIChvLCBwLCBsKSB7IGlmIChmID4gMSkgdGhyb3cgVHlwZUVycm9yKFxcXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXFxcIik7IGZvciAoeSAmJiAxID09PSBwICYmIGQocCwgbCksIGMgPSBwLCB1ID0gbDsgKHQgPSBjIDwgMiA/IGUgOiB1KSB8fCAheTspIHsgaSB8fCAoYyA/IGMgPCAzID8gKGMgPiAxICYmIChHLm4gPSAtMSksIGQoYywgdSkpIDogRy5uID0gdSA6IEcudiA9IHUpOyB0cnkgeyBpZiAoZiA9IDIsIGkpIHsgaWYgKGMgfHwgKG8gPSBcXFwibmV4dFxcXCIpLCB0ID0gaVtvXSkgeyBpZiAoISh0ID0gdC5jYWxsKGksIHUpKSkgdGhyb3cgVHlwZUVycm9yKFxcXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFxcXCIpOyBpZiAoIXQuZG9uZSkgcmV0dXJuIHQ7IHUgPSB0LnZhbHVlLCBjIDwgMiAmJiAoYyA9IDApOyB9IGVsc2UgMSA9PT0gYyAmJiAodCA9IGlbXFxcInJldHVyblxcXCJdKSAmJiB0LmNhbGwoaSksIGMgPCAyICYmICh1ID0gVHlwZUVycm9yKFxcXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICdcXFwiICsgbyArIFxcXCInIG1ldGhvZFxcXCIpLCBjID0gMSk7IGkgPSBlOyB9IGVsc2UgaWYgKCh0ID0gKHkgPSBHLm4gPCAwKSA/IHUgOiByLmNhbGwobiwgRykpICE9PSBhKSBicmVhazsgfSBjYXRjaCAodCkgeyBpID0gZSwgYyA9IDEsIHUgPSB0OyB9IGZpbmFsbHkgeyBmID0gMTsgfSB9IHJldHVybiB7IHZhbHVlOiB0LCBkb25lOiB5IH07IH07IH0ociwgbywgaSksICEwKSwgdTsgfSB2YXIgYSA9IHt9OyBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fSBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9IGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge30gdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgdmFyIGMgPSBbXVtuXSA/IHQodChbXVtuXSgpKSkgOiAoX3JlZ2VuZXJhdG9yRGVmaW5lMih0ID0ge30sIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCB0KSwgdSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9IEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGMpOyBmdW5jdGlvbiBmKGUpIHsgcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihlLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSkgOiAoZS5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCBvLCBcXFwiR2VuZXJhdG9yRnVuY3Rpb25cXFwiKSksIGUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZSh1KSwgZTsgfSByZXR1cm4gR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIF9yZWdlbmVyYXRvckRlZmluZTIodSwgXFxcImNvbnN0cnVjdG9yXFxcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLCBcXFwiY29uc3RydWN0b3JcXFwiLCBHZW5lcmF0b3JGdW5jdGlvbiksIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiwgX3JlZ2VuZXJhdG9yRGVmaW5lMihHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgbywgXFxcIkdlbmVyYXRvckZ1bmN0aW9uXFxcIiksIF9yZWdlbmVyYXRvckRlZmluZTIodSksIF9yZWdlbmVyYXRvckRlZmluZTIodSwgbywgXFxcIkdlbmVyYXRvclxcXCIpLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIG4sIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pLCBfcmVnZW5lcmF0b3JEZWZpbmUyKHUsIFxcXCJ0b1N0cmluZ1xcXCIsIGZ1bmN0aW9uICgpIHsgcmV0dXJuIFxcXCJbb2JqZWN0IEdlbmVyYXRvcl1cXFwiOyB9KSwgKF9yZWdlbmVyYXRvciA9IGZ1bmN0aW9uIF9yZWdlbmVyYXRvcigpIHsgcmV0dXJuIHsgdzogaSwgbTogZiB9OyB9KSgpOyB9XFxuZnVuY3Rpb24gX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBuLCB0KSB7IHZhciBpID0gT2JqZWN0LmRlZmluZVByb3BlcnR5OyB0cnkgeyBpKHt9LCBcXFwiXFxcIiwge30pOyB9IGNhdGNoIChlKSB7IGkgPSAwOyB9IF9yZWdlbmVyYXRvckRlZmluZTIgPSBmdW5jdGlvbiBfcmVnZW5lcmF0b3JEZWZpbmUoZSwgciwgbiwgdCkgeyBmdW5jdGlvbiBvKHIsIG4pIHsgX3JlZ2VuZXJhdG9yRGVmaW5lMihlLCByLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gdGhpcy5faW52b2tlKHIsIG4sIGUpOyB9KTsgfSByID8gaSA/IGkoZSwgciwgeyB2YWx1ZTogbiwgZW51bWVyYWJsZTogIXQsIGNvbmZpZ3VyYWJsZTogIXQsIHdyaXRhYmxlOiAhdCB9KSA6IGVbcl0gPSBuIDogKG8oXFxcIm5leHRcXFwiLCAwKSwgbyhcXFwidGhyb3dcXFwiLCAxKSwgbyhcXFwicmV0dXJuXFxcIiwgMikpOyB9LCBfcmVnZW5lcmF0b3JEZWZpbmUyKGUsIHIsIG4sIHQpOyB9XFxuLyoqXFxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXFxuICovXFxuXFxuXFxuXFxuXFxudmFyIHdvcmtlciA9IHNlbGY7XFxuLy8gVGhpcyBpcyBob3cgdGhlIGRvY3VtZW50YXRpb24gaW5zdHJ1Y3RzIHRvIGRvIGl0IC0gaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uvd29ya2VyLWxvYWRlclxcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcXG52YXIgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xcbiAgZnVuY3Rpb24gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIoKSB7XFxuICAgICgwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfY2xhc3NDYWxsQ2hlY2tfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzFfX1tcXFwiZGVmYXVsdFxcXCJdKSh0aGlzLCBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcik7XFxuICB9XFxuICByZXR1cm4gKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19jcmVhdGVDbGFzc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMl9fW1xcXCJkZWZhdWx0XFxcIl0pKFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLCBudWxsLCBbe1xcbiAgICBrZXk6IFxcXCJoYW5kbGVBZGRUcmFuc2Zvcm1cXFwiLFxcbiAgICB2YWx1ZTogZnVuY3Rpb24gaGFuZGxlQWRkVHJhbnNmb3JtKHR5cGUpIHtcXG4gICAgICBpZiAoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX2lzUGlwZWxpbmVDb25maWd1cmVkKSB7XFxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiBQaXBlbGluZSBpcyBsb2NrZWQuIEEgdHJhbnNmb3JtIGNhbm5vdCBiZSBhZGRlZCBvbmNlIHRoZSBwaXBlbGluZSBoYXMgYmVlbiBjb25maWd1cmVkJyk7XFxuICAgICAgfVxcbiAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgY2FzZSAnZnJhbWUtdGltaW5nLWluZm9ybWF0aW9uJzpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaChfdHJhbnNmb3Jtc19Xb3JrZXJUcmFuc2Zvcm1zX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV82X19bXFxcImRlZmF1bHRcXFwiXS5jcmVhdGVGcmFtZVRpbWluZ0luZm9ybWF0aW9uVHJhbnNmb3JtKCkpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC12aWRlbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZFZpZGVvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Byb3RlY3RlZC1hdWRpbyc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlRW5jb2RlZEF1ZGlvU3RyZWFtVHJhbnNmb3JtKHdvcmtlcikpO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJ3Bhc3MtdGhyb3VnaCc6XFxuICAgICAgICAgIFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl90cmFuc2Zvcm1zLnB1c2goX3RyYW5zZm9ybXNfV29ya2VyVHJhbnNmb3Jtc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNl9fW1xcXCJkZWZhdWx0XFxcIl0uY3JlYXRlUGFzc1Rocm91Z2hUcmFuc2Zvcm0oKSk7XFxuICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJFcnJvcjogVW5rbm93biB0cmFuc2Zvcm0gdHlwZSBbXFxcIi5jb25jYXQodHlwZSwgXFxcIl1cXFwiKSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9LCB7XFxuICAgIGtleTogXFxcImNvbmZpZ3VyZVBpcGVsaW5lXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcXG4gICAgICB2YXIgX2NvbmZpZ3VyZVBpcGVsaW5lID0gKDAsX2JhYmVsX3J1bnRpbWVfaGVscGVyc19hc3luY1RvR2VuZXJhdG9yX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX19bXFxcImRlZmF1bHRcXFwiXSkoLyojX19QVVJFX18qL19yZWdlbmVyYXRvcigpLm0oZnVuY3Rpb24gX2NhbGxlZShzb3VyY2UsIHNpbmspIHtcXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dCkge1xcbiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5uKSB7XFxuICAgICAgICAgICAgY2FzZSAwOlxcbiAgICAgICAgICAgICAgaWYgKHNvdXJjZSAmJiBzaW5rKSB7XFxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm4gPSAxO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IENvbmZpZ3VyYXRpb24gb2YgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmUgcmVxdWlyZXMgYm90aCBhIHJlYWRiYWxlIHNvdXJjZSBhbmQgd3JpdGFibGUgc2luaycpO1xcbiAgICAgICAgICAgIGNhc2UgMTpcXG4gICAgICAgICAgICAgIGlmIChUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fdHJhbnNmb3Jtcy5sZW5ndGggPT09IDApIHtcXG4gICAgICAgICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucHVzaCgpO1xcbiAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgX2NvbnRleHQubiA9IDI7XFxuICAgICAgICAgICAgICByZXR1cm4gVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuX3RyYW5zZm9ybXMucmVkdWNlUmlnaHQoZnVuY3Rpb24gKHBpcGVsaW5lLCB0cmFuc2Zvcm0pIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpcGVsaW5lLnBpcGVUaHJvdWdoKHRyYW5zZm9ybSk7XFxuICAgICAgICAgICAgICB9LCBzb3VyY2UpLnBpcGVUbyhzaW5rKTtcXG4gICAgICAgICAgICBjYXNlIDI6XFxuICAgICAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5faXNQaXBlbGluZUNvbmZpZ3VyZWQgPSB0cnVlO1xcbiAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtcXG4gICAgICAgICAgICAgICAgdHlwZTogX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLlBpcGVsaW5lQ29uZmlndXJlZCxcXG4gICAgICAgICAgICAgICAgZGF0YToge1xcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyLl93b3JrZXJOYW1lXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGNhc2UgMzpcXG4gICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hKDIpO1xcbiAgICAgICAgICB9XFxuICAgICAgICB9LCBfY2FsbGVlKTtcXG4gICAgICB9KSk7XFxuICAgICAgZnVuY3Rpb24gY29uZmlndXJlUGlwZWxpbmUoX3gsIF94Mikge1xcbiAgICAgICAgcmV0dXJuIF9jb25maWd1cmVQaXBlbGluZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xcbiAgICAgIH1cXG4gICAgICByZXR1cm4gY29uZmlndXJlUGlwZWxpbmU7XFxuICAgIH0oKVxcbiAgfSwge1xcbiAgICBrZXk6IFxcXCJoYW5kbGVNZXNzYWdlXFxcIixcXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoX3JlZikge1xcbiAgICAgIHZhciBtZXNzYWdlID0gX3JlZi5kYXRhO1xcbiAgICAgIHZhciB0eXBlID0gbWVzc2FnZS50eXBlO1xcbiAgICAgIHN3aXRjaCAodHlwZSkge1xcbiAgICAgICAgY2FzZSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJNZXNzYWdlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV81X18uVHJhbnNmb3JtTWVzc2FnZVR5cGUuQWRkVHJhbnNmb3JtOlxcbiAgICAgICAgICBUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5oYW5kbGVBZGRUcmFuc2Zvcm0obWVzc2FnZS5kYXRhKTtcXG4gICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlck1lc3NhZ2VfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzVfXy5UcmFuc2Zvcm1NZXNzYWdlVHlwZS5Db25maWd1cmVQaXBlbGluZTpcXG4gICAgICAgICAgVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuY29uZmlndXJlUGlwZWxpbmUobWVzc2FnZS5kYXRhLnNvdXJjZSwgbWVzc2FnZS5kYXRhLnNpbmspO1xcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLk1ldGFkYXRhOlxcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgX1RyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyTWVzc2FnZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfNV9fLlRyYW5zZm9ybU1lc3NhZ2VUeXBlLkNodW5rOlxcbiAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICgwLF9sYW5nX2Fzc2VydFVucmVhY2hhYmxlX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV80X19bXFxcImRlZmF1bHRcXFwiXSkodHlwZSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XSk7XFxufSgpO1xcbl9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciA9IFRyYW5zZm9ybVN0cmVhbVBpcGVsaW5lV29ya2VyO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl90cmFuc2Zvcm1zXFxcIiwgW10pO1xcbigwLF9iYWJlbF9ydW50aW1lX2hlbHBlcnNfZGVmaW5lUHJvcGVydHlfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzNfX1tcXFwiZGVmYXVsdFxcXCJdKShUcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlciwgXFxcIl9pc1BpcGVsaW5lQ29uZmlndXJlZFxcXCIsIGZhbHNlKTtcXG4oMCxfYmFiZWxfcnVudGltZV9oZWxwZXJzX2RlZmluZVByb3BlcnR5X19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8zX19bXFxcImRlZmF1bHRcXFwiXSkoVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIsIFxcXCJfd29ya2VyTmFtZVxcXCIsIHZvaWQgMCk7XFxuKGZ1bmN0aW9uICgpIHtcXG4gIHdvcmtlci5vbmVycm9yID0gZnVuY3Rpb24gKGVycm9yKSB7XFxuICAgIHJldHVybiBjb25zb2xlLmVycm9yKCdbVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXJdIEVycm9yOiBbJXNdJywgZXJyb3IpO1xcbiAgfTtcXG4gIHdvcmtlci5vbm1lc3NhZ2UgPSBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuaGFuZGxlTWVzc2FnZS5iaW5kKF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlcik7XFxuICBpZiAod29ya2VyLlJUQ1RyYW5zZm9ybUV2ZW50KSB7XFxuICAgIHdvcmtlci5vbnJ0Y3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChfcmVmMikge1xcbiAgICAgIHZhciB0cmFuc2Zvcm1lciA9IF9yZWYyLnRyYW5zZm9ybWVyO1xcbiAgICAgIF9UcmFuc2Zvcm1TdHJlYW1QaXBlbGluZVdvcmtlci5fd29ya2VyTmFtZSA9IHRyYW5zZm9ybWVyLm9wdGlvbnMubmFtZTtcXG4gICAgICB2YXIgc291cmNlID0gdHJhbnNmb3JtZXIucmVhZGFibGU7XFxuICAgICAgdmFyIHNpbmsgPSB0cmFuc2Zvcm1lci53cml0YWJsZTtcXG4gICAgICBfVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIuY29uZmlndXJlUGlwZWxpbmUoc291cmNlLCBzaW5rKTtcXG4gICAgfTtcXG4gIH1cXG59KSgpO1xcbi8qIHVudXNlZCBoYXJtb255IGRlZmF1bHQgZXhwb3J0ICovIHZhciBfX1dFQlBBQ0tfREVGQVVMVF9FWFBPUlRfXyA9IChudWxsKTtcXG4vKioqKioqLyB9KSgpXFxuO1xcblwiLCBcIldvcmtlclwiLCB1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogZXNsaW50LWVudiBicm93c2VyICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVmLCBuby11c2UtYmVmb3JlLWRlZmluZSwgbmV3LWNhcCAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY29udGVudCwgd29ya2VyQ29uc3RydWN0b3IsIHdvcmtlck9wdGlvbnMsIHVybCkge1xuICB2YXIgZ2xvYmFsU2NvcGUgPSBzZWxmIHx8IHdpbmRvdztcblxuICB0cnkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgYmxvYjtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gTmV3IEFQSVxuICAgICAgICBibG9iID0gbmV3IGdsb2JhbFNjb3BlLkJsb2IoW2NvbnRlbnRdKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gQmxvYkJ1aWxkZXIgPSBEZXByZWNhdGVkLCBidXQgd2lkZWx5IGltcGxlbWVudGVkXG4gICAgICAgIHZhciBCbG9iQnVpbGRlciA9IGdsb2JhbFNjb3BlLkJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLldlYktpdEJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1vekJsb2JCdWlsZGVyIHx8IGdsb2JhbFNjb3BlLk1TQmxvYkJ1aWxkZXI7XG4gICAgICAgIGJsb2IgPSBuZXcgQmxvYkJ1aWxkZXIoKTtcbiAgICAgICAgYmxvYi5hcHBlbmQoY29udGVudCk7XG4gICAgICAgIGJsb2IgPSBibG9iLmdldEJsb2IoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIFVSTCA9IGdsb2JhbFNjb3BlLlVSTCB8fCBnbG9iYWxTY29wZS53ZWJraXRVUkw7XG4gICAgICB2YXIgb2JqZWN0VVJMID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICAgIHZhciB3b3JrZXIgPSBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKG9iamVjdFVSTCwgd29ya2VyT3B0aW9ucyk7XG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVSTCk7XG4gICAgICByZXR1cm4gd29ya2VyO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBuZXcgZ2xvYmFsU2NvcGVbd29ya2VyQ29uc3RydWN0b3JdKFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0LFwiLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoY29udGVudCkpLCB3b3JrZXJPcHRpb25zKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoIXVybCkge1xuICAgICAgdGhyb3cgRXJyb3IoXCJJbmxpbmUgd29ya2VyIGlzIG5vdCBzdXBwb3J0ZWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBnbG9iYWxTY29wZVt3b3JrZXJDb25zdHJ1Y3Rvcl0odXJsLCB3b3JrZXJPcHRpb25zKTtcbiAgfVxufTsiLCJmdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShyLCBhKSB7XG4gIChudWxsID09IGEgfHwgYSA+IHIubGVuZ3RoKSAmJiAoYSA9IHIubGVuZ3RoKTtcbiAgZm9yICh2YXIgZSA9IDAsIG4gPSBBcnJheShhKTsgZSA8IGE7IGUrKykgbltlXSA9IHJbZV07XG4gIHJldHVybiBuO1xufVxuZXhwb3J0IHsgX2FycmF5TGlrZVRvQXJyYXkgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gcjtcbn1cbmV4cG9ydCB7IF9hcnJheVdpdGhIb2xlcyBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IGFycmF5TGlrZVRvQXJyYXkgZnJvbSBcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiO1xuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIpO1xufVxuZXhwb3J0IHsgX2FycmF5V2l0aG91dEhvbGVzIGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKGUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gZSkgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO1xuICByZXR1cm4gZTtcbn1cbmV4cG9ydCB7IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIGFzeW5jR2VuZXJhdG9yU3RlcChuLCB0LCBlLCByLCBvLCBhLCBjKSB7XG4gIHRyeSB7XG4gICAgdmFyIGkgPSBuW2FdKGMpLFxuICAgICAgdSA9IGkudmFsdWU7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gdm9pZCBlKG4pO1xuICB9XG4gIGkuZG9uZSA/IHQodSkgOiBQcm9taXNlLnJlc29sdmUodSkudGhlbihyLCBvKTtcbn1cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdCA9IHRoaXMsXG4gICAgICBlID0gYXJndW1lbnRzO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAociwgbykge1xuICAgICAgdmFyIGEgPSBuLmFwcGx5KHQsIGUpO1xuICAgICAgZnVuY3Rpb24gX25leHQobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJuZXh0XCIsIG4pO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gX3Rocm93KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgbik7XG4gICAgICB9XG4gICAgICBfbmV4dCh2b2lkIDApO1xuICAgIH0pO1xuICB9O1xufVxuZXhwb3J0IHsgX2FzeW5jVG9HZW5lcmF0b3IgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhhLCBuKSB7XG4gIGlmICghKGEgaW5zdGFuY2VvZiBuKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTtcbn1cbmV4cG9ydCB7IF9jbGFzc0NhbGxDaGVjayBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbmV4cG9ydCB7IF9jcmVhdGVDbGFzcyBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHRvUHJvcGVydHlLZXkgZnJvbSBcIi4vdG9Qcm9wZXJ0eUtleS5qc1wiO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbmV4cG9ydCB7IF9kZWZpbmVQcm9wZXJ0eSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbmV4cG9ydCB7IF9nZXRQcm90b3R5cGVPZiBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IHNldFByb3RvdHlwZU9mIGZyb20gXCIuL3NldFByb3RvdHlwZU9mLmpzXCI7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfaW5oZXJpdHMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxuZXhwb3J0IHsgX2l0ZXJhYmxlVG9BcnJheUxpbWl0IGFzIGRlZmF1bHQgfTsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxuZXhwb3J0IHsgX25vbkl0ZXJhYmxlUmVzdCBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbmV4cG9ydCB7IF9ub25JdGVyYWJsZVNwcmVhZCBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgbyA9IG5bcl0sIHQuaW5kZXhPZihvKSA+PSAwIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbmV4cG9ydCB7IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmRleE9mKG4pID49IDApIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxuZXhwb3J0IHsgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBfdHlwZW9mIGZyb20gXCIuL3R5cGVvZi5qc1wiO1xuaW1wb3J0IGFzc2VydFRoaXNJbml0aWFsaXplZCBmcm9tIFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIjtcbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHQsIGUpIHtcbiAgaWYgKGUgJiYgKFwib2JqZWN0XCIgPT0gX3R5cGVvZihlKSB8fCBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUpKSByZXR1cm4gZTtcbiAgaWYgKHZvaWQgMCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkRlcml2ZWQgY29uc3RydWN0b3JzIG1heSBvbmx5IHJldHVybiBvYmplY3Qgb3IgdW5kZWZpbmVkXCIpO1xuICByZXR1cm4gYXNzZXJ0VGhpc0luaXRpYWxpemVkKHQpO1xufVxuZXhwb3J0IHsgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4gYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZih0LCBlKSB7XG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2YuYmluZCgpIDogZnVuY3Rpb24gKHQsIGUpIHtcbiAgICByZXR1cm4gdC5fX3Byb3RvX18gPSBlLCB0O1xuICB9LCBfc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5leHBvcnQgeyBfc2V0UHJvdG90eXBlT2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheVdpdGhIb2xlcyBmcm9tIFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiO1xuaW1wb3J0IGl0ZXJhYmxlVG9BcnJheUxpbWl0IGZyb20gXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVJlc3QgZnJvbSBcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCI7XG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShyLCBlKSB7XG4gIHJldHVybiBhcnJheVdpdGhIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBlKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBlKSB8fCBub25JdGVyYWJsZVJlc3QoKTtcbn1cbmV4cG9ydCB7IF9zbGljZWRUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgYXJyYXlXaXRob3V0SG9sZXMgZnJvbSBcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIjtcbmltcG9ydCBpdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vaXRlcmFibGVUb0FycmF5LmpzXCI7XG5pbXBvcnQgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkgZnJvbSBcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIjtcbmltcG9ydCBub25JdGVyYWJsZVNwcmVhZCBmcm9tIFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiO1xuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KHIpIHtcbiAgcmV0dXJuIGFycmF5V2l0aG91dEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheShyKSB8fCB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyKSB8fCBub25JdGVyYWJsZVNwcmVhZCgpO1xufVxuZXhwb3J0IHsgX3RvQ29uc3VtYWJsZUFycmF5IGFzIGRlZmF1bHQgfTsiLCJpbXBvcnQgX3R5cGVvZiBmcm9tIFwiLi90eXBlb2YuanNcIjtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5leHBvcnQgeyB0b1ByaW1pdGl2ZSBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IF90eXBlb2YgZnJvbSBcIi4vdHlwZW9mLmpzXCI7XG5pbXBvcnQgdG9QcmltaXRpdmUgZnJvbSBcIi4vdG9QcmltaXRpdmUuanNcIjtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxuZXhwb3J0IHsgdG9Qcm9wZXJ0eUtleSBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgX3R5cGVvZihvKTtcbn1cbmV4cG9ydCB7IF90eXBlb2YgYXMgZGVmYXVsdCB9OyIsImltcG9ydCBhcnJheUxpa2VUb0FycmF5IGZyb20gXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIjtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxuZXhwb3J0IHsgX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IGFzIGRlZmF1bHQgfTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcblx0XHRmdW5jdGlvbigpIHsgcmV0dXJuIG1vZHVsZTsgfTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbnZhciBnID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKSB8fFxuICB7fVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZyAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZyAmJlxuICAgICdCbG9iJyBpbiBnICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdIZWFkZXJzIGNvbnN0cnVjdG9yOiBleHBlY3RlZCBuYW1lL3ZhbHVlIHBhaXIgdG8gYmUgbGVuZ3RoIDIsIGZvdW5kJyArIGhlYWRlci5sZW5ndGgpXG4gICAgICB9XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5fbm9Cb2R5KSByZXR1cm5cbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICB2YXIgbWF0Y2ggPSAvY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKGJsb2IudHlwZSlcbiAgdmFyIGVuY29kaW5nID0gbWF0Y2ggPyBtYXRjaFsxXSA6ICd1dGYtOCdcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fbm9Cb2R5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgYXMgQXJyYXlCdWZmZXInKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydDT05ORUNUJywgJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BPU1QnLCAnUFVUJywgJ1RSQUNFJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWwgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ0Fib3J0Q29udHJvbGxlcicgaW4gZykge1xuICAgICAgdmFyIGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICByZXR1cm4gY3RybC5zaWduYWw7XG4gICAgfVxuICB9KCkpO1xuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdSZXNwb25zZSAnICsgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgaWYgKHRoaXMuc3RhdHVzIDwgMjAwIHx8IHRoaXMuc3RhdHVzID4gNTk5KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXNwb25zZSc6IFRoZSBzdGF0dXMgcHJvdmlkZWQgKDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIFsyMDAsIDU5OV0uXCIpXG4gIH1cbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLm9rID0gZmFsc2VcbiAgcmVzcG9uc2Uuc3RhdHVzID0gMFxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGcuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICAvLyBUaGlzIGNoZWNrIGlmIHNwZWNpZmljYWxseSBmb3Igd2hlbiBhIHVzZXIgZmV0Y2hlcyBhIGZpbGUgbG9jYWxseSBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICAgICAgLy8gT25seSBpZiB0aGUgc3RhdHVzIGlzIG91dCBvZiBhIG5vcm1hbCByYW5nZVxuICAgICAgaWYgKHJlcXVlc3QudXJsLmluZGV4T2YoJ2ZpbGU6Ly8nKSA9PT0gMCAmJiAoeGhyLnN0YXR1cyA8IDIwMCB8fCB4aHIuc3RhdHVzID4gNTk5KSkge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IDIwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0geGhyLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgdGltZWQgb3V0JykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGcubG9jYXRpb24uaHJlZiA/IGcubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXJcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyB8fCAoZy5IZWFkZXJzICYmIGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIGcuSGVhZGVycykpKSB7XG4gICAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIG5hbWVzLnB1c2gobm9ybWFsaXplTmFtZShuYW1lKSlcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAobmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnLmZldGNoKSB7XG4gIGcuZmV0Y2ggPSBmZXRjaFxuICBnLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGcuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZy5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBDaGFubmVscyBmcm9tICcuL0NoYW5uZWxzJztcbmltcG9ydCBDaGFubmVsU3RhdGUgZnJvbSAnLi9DaGFubmVsU3RhdGUnO1xuXG5leHBvcnQge1xuICBTREssXG4gIENoYW5uZWxzLFxuICBDaGFubmVsU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBDaGFubmVscyxcbiAgQ2hhbm5lbFN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJiYWNrZ3JvdW5kRW50cnlUaW1lIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImlzTm93Rm9yZWdyb3VuZCIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJUZWxlbWV0cnlMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiTG9nZ2luZ0xldmVsTWFwcGluZyIsIkxvZ2dlckRlZmF1bHRzIiwiUGxhaW5Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIiwiZ2V0U3RyaW5nVmFsdWUiLCJuYW1lIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJGZWF0dXJlRW5hYmxlbWVudCIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsInVuZGVmaW5lZCIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiU0RLIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsIlVSTFNlYXJjaFBhcmFtcyIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZXRJbnRlcnZhbCIsInNldEluc3RhbmNlIiwicHJvdmlkZWRHbG9iYWxTY29wZSIsImdldEluc3RhbmNlIiwiX3JlYWRPbmx5SW5zdGFuY2UiLCJzdWJzY3JpYmUiLCJjYWxsYmFjayIsIl9HbG9iYWxTY29wZSIsIl9pbnN0YW5jZSIsImRpc3Bvc2FibGUiLCJfZGlzcG9zZWQiLCJfZGlzcG9zYWJsZSIsImNhbGwiLCJfbGlzdCIsImZvckVhY2giLCJ0b1N0cmluZyIsIm1heERpZ2l0c0luRmxvYXRBZnRlckRvdCIsIk51bWJlcnMiLCJjb3VudE51bWJlckxlbmd0aCIsImluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUiLCJudW1iZXIiLCJjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwiLCJNYXRoIiwiZmxvb3IiLCJjb3VudERpZ2l0c0FmdGVyRGVjaW1hbCIsImZpeFJvdW5kaW5nIiwicHJlY2lzaW9uIiwicG93ZXIiLCJwb3ciLCJyb3VuZCIsImRpZ2l0c0JlZm9yZURlY2ltYWwiLCJvcmlnaW5hbFZhbHVlIiwibW9kaWZpZWRWYWx1ZSIsImNvdW50IiwiU3RyaW5ncyIsInJhbmRvbSIsInJhbmRvbTEzQ2hhcmFjdGVycyIsImxvb3BzIiwiY2VpbCIsIkFycmF5IiwiZmlsbCIsInJlZHVjZSIsInN0cmluZyIsImZ1bmMiLCJhc3NlcnRVbnJlYWNoYWJsZSIsIngiLCJBcHBlbmRlcnMiLCJfYXBwZW5kZXJzIiwiYXBwZW5kZXIiLCJyZW1vdmUiLCJpdGVtcyIsIml0ZW0iLCJMb2dnaW5nTGV2ZWwiLCJDb25zb2xlQXBwZW5kZXIiLCJ0aHJlc2hvbGQiLCJfdGhyZXNob2xkIiwibG9nIiwibG9nTGV2ZWwiLCJtZXNzYWdlIiwiY2F0ZWdvcnkiLCJkYXRlIiwiZnVsbE1lc3NhZ2UiLCJ0b0lTT1N0cmluZyIsIldhcm4iLCJjb25zb2xlIiwiTG9nZ2VyIiwiYXBwZW5kZXJzIiwiX2NhdGVnb3J5IiwidHJhY2UiLCJUcmFjZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJhcmdzIiwiX2tleSIsImRlYnVnIiwiRGVidWciLCJfbGVuMiIsIl9rZXkyIiwiSW5mbyIsIl9sZW4zIiwiX2tleTMiLCJ3YXJuIiwiX2xlbjQiLCJfa2V5NCIsIl9sZW41IiwiX2tleTUiLCJmYXRhbCIsIkZhdGFsIiwiX2xlbjYiLCJfa2V5NiIsImxldmVsIiwicmVwbGFjZVBsYWNlaG9sZGVycyIsIl90aGlzMiIsInJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmciLCJpbmRleCIsInJlcGxhY2VBcmd1bWVudCIsInNwbGljZSIsInN0cmluZ2lmeSIsImFjY3VtdWxhdG9yIiwiY3VycmVudFZhbHVlIiwiYXJyYXkiLCJlcnJvclN0YWNrQWxzb0hhc0Vycm9yTWVzc2FnZSIsInN0YWNrIiwiYXJnIiwiY2FjaGUiLCJfIiwiT2JqZWN0IiwiYXJndW1lbnQiLCJkYXRhIiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwidXJsIiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIl9jb250ZXh0IiwiYXBwZW5kIiwicmVjb3JkcyIsIm1ldGhvZCIsImJvZHkiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJzdGF0dXMiLCJ0ZWxlbWV0cnlMZXZlbFR5cGUiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiZGVmYXVsdFRyYWNrS2luZHMiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJ0cmFja0tpbmRzIiwiZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiY29uZmlndXJhdGlvbiIsIl9hcmdzMyIsIl9jb250ZXh0MyIsIkRpc2FibGVkIiwiaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQiLCJFbmFibGVkIiwiY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdXBwb3J0c0FkZFRyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlcnMiLCJ2aWRlb1RyYW5zY2VpdmVycyIsIm9wdGlvbnMiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl90NiIsImFkZFRyYW5zY2VpdmVyIiwiY3JlYXRlT2ZmZXIiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0cmFja3NLaW5kcyIsImNvdW50VHJhY2tLaW5kcyIsInRyYWNrS2luZENvdW50IiwiYXVkaW8iLCJ2aWRlbyIsImNvdW50ZWRUcmFja0tpbmRzIiwiY291bnRlZERlZmF1bHRUcmFja0tpbmRzIiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiIsIlJ0Y0Nvbm5lY3Rpb25Nb25pdG9yIiwibWVkaWFTdHJlYW0iLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiaXNGb3JlZ3JvdW5kIiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJfdHJhY2tzVG9Nb25pdG9yIiwiZ2V0VHJhY2tzIiwibWFwIiwidHJhY2siLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24yIiwiZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJzZHAiLCJwYXJzZWRTRFAiLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayIsImZvcmVncm91bmQiLCJfaXNNb25pdG9yUnVubmluZyIsIl9tb25pdG9yR2VuZXJhdGlvbiIsIl91cGRhdGVUaW1lb3V0IiwidXBkYXRlU3RhdGlzdGljIiwiX3J0Y1N0YXRpc3RpYyIsIl91cGRhdGVTdGF0aXN0aWMiLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJnZW5lcmF0aW9uIiwidGltZW91dEhhbmRsZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJzdGF0c1Byb21pc2UiLCJ0aW1lb3V0UHJvbWlzZSIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0UmVjZWl2ZWRUaW1lc3RhbXAiLCJnZXRTdGF0c1Byb21pc2VCYXNlZERpc2FibGVkIiwidXBkYXRlU3RhdGlzdGljTGVnYWN5IiwiaWQiLCJnZXRTdGF0cyIsInJlc29sdmUiLCJyYWNlIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDIiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQzIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ2IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNyIsImJ5dGVzIiwiYnl0ZXNSZWNlaXZlZCIsInByZXZpb3VzQnl0ZXNSZWNlaXZlZCIsImJ5dGVzRGVsdGEiLCJ0aW1lRGVsdGEiLCJiaXRyYXRlIiwic3NyYyIsInBhY2tldHNMb3N0IiwicGFja2V0c1JlY2VpdmVkIiwiZ2V0Q29kZWNCeVR5cGUiLCJmcmFtZXNEZWNvZGVkIiwiZnBzIiwiX3VwZGF0ZVN0YXRpc3RpY0xlZ2FjeSIsIl90aGlzMyIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjQiLCJnZXRTdGF0c0xlZ2FjeSIsInJlc3VsdCIsIm5hbWVzIiwic3RhdCIsIl90aGlzMyRfcnRjU3RhdGlzdGljJCIsIl90aGlzMyRfcnRjU3RhdGlzdGljJDIiLCJfc2RwIiwic2RwU3BsaXRCeUxpbmVzIiwic2RwU3BsaXRCeVRyYWNrcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2lzQXVkaW9UcmFja0VuYWJsZWQiLCJpc1RyYWNrQnlUeXBlRW5hYmxlZCIsIl9pc1ZpZGVvVHJhY2tFbmFibGVkIiwic2RwU2VjdGlvbkZvclR5cGUiLCJmaW5kIiwic2RwVHJhY2siLCJfc2RwU3BsaXRCeUxpbmVzJGZpbmQiLCJydG1hcCIsInNkcExpbmUiLCJ1c2VkQ29kZWNMaW5lIiwidXNlZENvZGVjIiwiY29kZWNOYW1lIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb24iLCJjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIsImNvbm5lY3Rpb25TdGF0ZSIsImljZUNvbm5lY3Rpb25TdGF0ZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjUiLCJnZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNiIsInNldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb243IiwiZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQiLCJnZXRUcmFuc2NlaXZlcnMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb244IiwiX2NyZWF0ZU9mZmVyIiwicHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQiLCJyZWplY3QiLCJfY3JlYXRlQW5zd2VyIiwiY3JlYXRlQW5zd2VyIiwiX3gyIiwiX3NldExvY2FsRGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldExvY2FsRGVzY3JpcHRpb24iLCJfeDMiLCJfc2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlNCIsIl9kZXNjcmlwdGlvbiRzZHAiLCJoYXNDcnlwdG8iLCJfY29udGV4dDQiLCJzZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94NCIsImdldFNlbmRlcnMiLCJnZXRSZWNlaXZlcnMiLCJzZWxlY3RvciIsImFkZFN0cmVhbSIsIl90aGlzNCIsImFkZFRyYWNrIiwib250cmFjayIsImhhbmRsZXIiLCJvbmljZWNhbmRpZGF0ZSIsIm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwib25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJjbG9zZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjkiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlIiwic3ViamVjdCIsIl9zdWJqZWN0IiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsIl92YWx1ZSIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiX2kiLCJfYXJyIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9HbG9iYWxTY29wZSRnZXRJbnN0YSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwib25Mb2FkIiwiX2luaXRpYWxpemVkIiwiYWRkV2luZG93RXZlbnRMaXN0ZW5lciIsImluaXQiLCJvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUiLCJwZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJjb25zb2xlTG9nZ2luZ0xldmVsIiwiY29uc29sZUFwcGVuZGVyIiwiYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwid2ViUGxheWVyTG9hZGVyIiwic2hha2FQbGF5ZXJMb2FkZXIiLCJobHNKc0xvYWRlciIsIl90aGlzJF9hcHBsaWNhdGlvbkFjdCIsIl9TREsiLCJzZWdtZW50cyIsInByb3RvY29sIiwidW5zaGlmdCIsImVuZHNXaXRoIiwiam9pbiIsIkJpdHJhdGVTdGF0ZSIsIkJpdHJhdGVNb2RlIiwiRGltZW5zaW9uIiwiQ2hhbm5lbFN0YXRlIiwiVmlkZW9UZWxlbWV0cnkiLCJTZXNzaW9uVGVsZW1ldHJ5IiwiVG9rZW5Db250ZXh0IiwiQ2hhbm5lbENvbnRleHQiLCJFbmNvZGVkU3RyZWFtU2luayIsIlN0cmVhbVRyYWNrVHJhbnNmb3JtIiwiU3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsIlN0YXRlQ29udGV4dCIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwiU3RyZWFtU3Vic2NyaWJlckZhY3RvcnkiLCJEaXNjb3ZlcnkiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmb3JlZ3JvdW5kUmVzdGFydFJlYXNvbkJhY2tncm91bmRUaW1lb3V0IiwiZm9yZWdyb3VuZFJlc3RhcnRSZWFzb25VbmhlYWx0aHkiLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsImJhY2tncm91bmRSZWNvdmVyeUZhaWxzYWZlSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0cmVhbURlbGV0aW9uVGhyZXNob2xkSW5NaWxsaXNlY29uZHMiLCJDaGFubmVsIiwidmlkZW9FbGVtZW50IiwiY2hhbm5lbENvbnRleHRPcHRpb25zIiwidGFyZ2V0TGFnIiwib25SZWFsVGltZVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsIm9uUmVhbFRpbWVTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dE9wdGlvbnMiLCJoYXNJbnNlcnRhYmxlU3RyZWFtcyIsImhhc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtcyIsInZpZGVvU3RyZWFtVHJhbnNmb3JtQ2FsbGJhY2siLCJhdWRpb1N0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiZW5jb2RlZFZpZGVvU3RyZWFtU2luayIsImVuY29kZWRBdWRpb1N0cmVhbVNpbmsiLCJfdG9rZW5Db250ZXh0IiwiX2NoYW5uZWxDb250ZXh0IiwiX3BlZXJDb25uZWN0aW9uQ29udGV4dCIsIl9zdHJlYW1UcmFuc2Zvcm1Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9jaGFubmVsU3RhcnRUaW1lIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5RXhpc3RzIiwiZXhpc3RzIiwiX3JlYWRPbmx5QXV0b011dGVkIiwiYXV0b011dGVkIiwiX3JlYWRPbmx5QXV0b1BhdXNlZCIsImF1dG9QYXVzZWQiLCJfcmVhZE9ubHlUb2tlbkV4cGlyaW5nIiwidG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQbGF5aW5nIiwicGxheWluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlUYXJnZXRMYWciLCJfcmVhZE9ubHlMYWciLCJsYWciLCJfcmVhZE9ubHlCaXRyYXRlTGltaXQiLCJiaXRyYXRlTGltaXQiLCJfcmVhZE9ubHlSZXNvbHV0aW9uIiwicmVzb2x1dGlvbiIsIl9yZWFkT25seUZhaWx1cmVDb3VudCIsImZhaWx1cmVDb3VudCIsIl9yZWFkT25seUVuZFBvaW50IiwiZW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJzdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsImNoYW5uZWxEaXNwb3NhYmxlcyIsIl92aWRlb01ldGFEYXRhQ2hhbmdlZEhhbmRsZXIiLCJoYW5kbGVWaWRlb01ldGFEYXRhQ2hhbmdlZCIsIl9mcmFtZVRpbWluZ0luZm9ybWF0aW9uQ29udGV4dCIsImNvbmZpZ3VyZUZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJfcmVhZE9ubHlJc0ZyYW1lVGltaW5nSW5mb3JtYXRpb25FbmFibGVkIiwiaXNFbmFibGVkIiwiX3JlYWRPbmx5RGVjb2RlZEZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsIl9yZWFkT25seVJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvbiIsInJlbmRlcmVyRGlzcG9zYWJsZXMiLCJ2aWRlb1RlbGVtZXRyeSIsImRhdGFzZXQiLCJzZXR1cExpc3RlbmVyRm9yVGltZVRvRmlyc3RUaW1lIiwic2V0dXBMaXN0ZW5lckZvclJlYnVmZmVyaW5nIiwiU3RvcHBlZCIsInJlc3RhcnRBZnRlclN0b3AiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQbGF5aW5nIiwib25WaWRlb1Jlc29sdXRpb25DaGFuZ2VzIiwiZWxhcHNlZEluTWlsbGlzZWNvbmRzIiwiY2hhbm5lbEluaXRpYWxpemF0aW9uIiwiZ2V0VGltZSIsImxpbWl0Qml0cmF0ZSIsIktlZXAiLCJOb3JtYWwiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsInN0YXJ0IiwiYXV0b21hdGljUmV0cnlPbkZhaWx1cmUiLCJhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsImxhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJzaG91bGRGb3JjZVJlc3RhcnQiLCJpc1N0cmVhbURlbGV0ZWRCeVBsYXRmb3JtIiwiUmVjb25uZWN0aW5nIiwicmVzdGFydE9uRm9yZWdyb3VuZCIsImlzUmV0cnlhYmxlU3RhdGUiLCJfc3RyZWFtU3Vic2NyaWJlciIsImlzU3Vic2NyaWJlckhlYWx0aHkiLCJpc0hlYWx0aHkiLCJpc1N0YXJ0aW5nIiwiaWdub3JlZFN0YXJ0IiwicGF1c2UiLCJzcmNPYmplY3QiLCJJbml0aWFsaXppbmciLCJ3aWR0aCIsInZpZGVvV2lkdGgiLCJoZWlnaHQiLCJ2aWRlb0hlaWdodCIsImVtcHR5IiwiZGlzcG9zYWJsZXMiLCJzZXRCaXRyYXRlTGltaXQiLCJjbGVhckJpdHJhdGVMaW1pdCIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJSZXNldCIsInVwZGF0ZVRhcmdldExhZyIsIl9zdG9wIiwicmVhc29uIiwicHJvY2Vzc1N0b3AiLCJzdG9wIiwiY2xlYW5VcFJlc291cmNlcyIsIl9yZXN1bWUiLCJwbGF5TWVkaWFTdHJlYW1JblZpZGVvRWxlbWVudCIsInJlc3VtZSIsIm11dGUiLCJtdXRlZCIsInVubXV0ZSIsIl9kaXNwb3NlIiwiaXNEaXNwb3NlZCIsImdldFVyaSIsIl9zdGFydCIsInByb2Nlc3NTdGFydCIsIlN0YW5kQnkiLCJPZmZsaW5lIiwiUmVjb3ZlcmluZyIsIlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciIsIkNvbm5lY3Rpb25FcnJvciIsIkNsaWVudFN0YXJ0RXJyb3IiLCJVbmF1dGhvcml6ZWQiLCJHZW9SZXN0cmljdGVkIiwiR2VvQmxvY2tlZCIsIlBhdXNlZCIsIlN0YXJ0aW5nIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiQ29uZmlndXJhdGlvbkVycm9yIiwiaXNTdHJlYW1IZWFsdGh5IiwiX3Byb2Nlc3NTdGFydCIsIl9jYWxsZWU1IiwiX3RoaXM1IiwiaXNSZWNvdmVyeSIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0iLCJ2YWxpZCIsInZhbGlkYXRpb25SZXN1bHQiLCJfU3RyZWFtVHJhY2tUcmFuc2Zvcm0yIiwiX3ZhbGlkIiwiX3ZhbGlkYXRpb25SZXN1bHQiLCJfRW5jb2RlZFN0cmVhbVNpbmskdmEiLCJfdmFsaWQyIiwiX3ZhbGlkYXRpb25SZXN1bHQyIiwiX0VuY29kZWRTdHJlYW1TaW5rJHZhMiIsIl92YWxpZDMiLCJfdmFsaWRhdGlvblJlc3VsdDMiLCJoYXNUcmFuc2Zvcm1TdHJlYW1DYWxsYmFjayIsImhhc0VuY29kZWRTdHJlYW1TaW5rIiwiaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrIiwiX2NvbnRleHQ1IiwidmFsaWRhdGVNZWRpYVN0cmVhbVRyYWNrVHJhbnNmb3JtIiwidmFsaWRhdGVFbmNvZGVkU3RyZWFtU2luayIsImlzSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsInRpbWVvdXRJZCIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJnZXRSZXRyeUludGVydmFsIiwiX3Jlc3RhcnRBZnRlclN0b3AiLCJfY2FsbGVlNiIsIl9jb250ZXh0NiIsIl9wbGF5IiwiX2NhbGxlZTciLCJfY29udGV4dDciLCJwbGF5IiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsIl90aGlzNiIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJkZXN0cm95U3RyZWFtIiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsIl90aGlzNyIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25DYXBhYmlsaXR5IiwiY2FwYWJpbGl0eSIsInNob3VsZEV4dHJhY3RUaW1lY29kZSIsInNob3VsZEV4dHJhY3RUaW1lc3RhbXBzIiwiaXNDaGFubmVsRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1cHBvcnRlZCIsIm9wdGlvbiIsInRyaW0iLCJfcGxheU1lZGlhU3RyZWFtSW5WaWRlb0VsZW1lbnQiLCJfY2FsbGVlOSIsIl90aGlzOCIsInBsYXlQcm9taXNlIiwiX2NvbnRleHQ5IiwiaGFzQXVkaW9UcmFjayIsImZpbHRlciIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlT2ZmIiwiQ2hhbm5lbHMiLCJjcmVhdGVDaGFubmVsIiwiaW5pdGlhbGl6ZWQiLCJjaGFubmVsT3B0aW9ucyIsIm9wdGlvbnNXaXRoUmVhbFRpbWVTdWJzY3JpYmVDYWxsYmFja3MiLCJkZWZhdWx0VGFyZ2V0TGFnIiwiX29wdGlvbnMkdGFyZ2V0TGFnIiwiX29wdGlvbnMkb25SZWFsVGltZVN1IiwiX29wdGlvbnMkb25SZWFsVGltZVN1MiIsInJ0Y0F1ZGlvU3RhdGlzdGljIiwicnRjVmlkZW9TdGF0aXN0aWMiLCJhcHBseVN0YXR1cyIsImFwcGx5U2Vzc2lvbkFuZFN0cmVhbVByb3BlcnRpZXNUb1ZpZGVvRWxlbWVudCIsIm1hcFN1YnNjcmliZVN0YXR1c1RvQ2hhbm5lbFN0YXR1cyIsIm1hcFN1YnNjcmliZVN0YXR1c1RvRXhpc3RzIiwiYXVkaW9UcmFjayIsIm1lZGlhU3RyZWFtVHJhY2siLCJyZWNlaXZlciIsIm1pZCIsInRyYW5zZm9ybVBpcGVsaW5lV29ya2VyIiwidHJhbnNmb3JtTWVzc2FnZVJvdXRlciIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZXMiLCJ2aWRlb1RyYWNrIiwiQXVkaW9Db2RlYyIsIkF1ZGlvQ29kZWNNYXBwaW5nIiwiY29udmVydEF1ZGlvQ29kZWNUb0F1ZGlvQ29kZWNUeXBlIiwiT1BVUyIsIkFBQyIsImNvbnZlcnRBdWRpb0NvZGVjVHlwZVRvQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWNUeXBlIiwiYXVkaW9Db2RlY1N0cmluZyIsInRvVXBwZXJDYXNlIiwiVmlkZW9Db2RlYyIsIlZpZGVvQ29kZWNNYXBwaW5nIiwiY29udmVydFZpZGVvQ29kZWNUb1ZpZGVvQ29kZWNUeXBlIiwiSDI2NCIsIlZQOCIsIlZQOSIsImNvbnZlcnRWaWRlb0NvZGVjVHlwZVRvVmlkZW9Db2RlYyIsInZpZGVvQ29kZWNUeXBlIiwidmlkZW9Db2RlY1N0cmluZyIsIlVpbnQ4QXJyYXkiLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIkZvcmNlIiwiQml0cmF0ZVN0YXRlTWFwcGluZyIsImNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUiLCJiaXRyYXRlU3RhdGUiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiRW5kUG9pbnQiLCJkZWZhdWx0VGltZW91dCIsIl91cmkiLCJfZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJ0aW1lb3V0IiwiYXNTdHJpbmciLCJlbmRQb2ludHMiLCJvayIsInRleHQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJhcGlWZXJzaW9uIiwiX3RpbWVvdXQiLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwiZmluaXNoZWQiLCJidWlsZFBpbmdVcmwiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiaHR0cFJlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMiIsIl9yZXNwb25zZSIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMiLCJvblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2siLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TdWJzY3JpYmVSZXNwb25zZSIsIl9wdWJsaXNoIiwiYm9keVdpdGhPZmZlciIsImJvZHlXaXRob3V0T2ZmZXIiLCJtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwicHVibGlzaCIsIl94NSIsIl94NiIsIl94NyIsInNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJzaGFyZWRTZWNyZXQiLCJtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UiLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsImNhbmRpZGF0ZXMiLCJkaXNjb3ZlcnlDb21wbGV0ZWQiLCJhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UiLCJfYXJnczYiLCJtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbVJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl94MTYiLCJfeDE3IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJzZW5kQmVhY29uIiwiX3gxOCIsIl94MTkiLCJwYXRoIiwicGF0aEFzQXJyYXkiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU3Vic2NyaWJlUmVzcG9uc2UiLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsIm90aGVyUHJvcGVydGllcyIsImpzb24iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfb2JqZWN0U3ByZWFkIiwiY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uIiwiX3gyMCIsIl94MjEiLCJfY29udmVydEh0dHBSZXNwb25zZVRvUHVibGlzaFJlc3BvbnNlIiwiX2NhbGxlZTAiLCJwdWJsaXNoUmVzcG9uc2UiLCJfY29udGV4dDAiLCJfeDIyIiwiX3gyMyIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJfeDI0IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9jYWxsZWUxMCIsIl9jb250ZXh0MTAiLCJfeDI1IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jYWxsZWUxMSIsIl9jb250ZXh0MTEiLCJfeDI2IiwiVHJhbnNmb3JtTWVzc2FnZURhdGFUeXBlIiwiRnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXIiLCJjb250ZXh0IiwiTWFwIiwiY2FuUHJvY2Vzc0ZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJzZXR1cFZpZGVvRWxlbWVudEhhbmRsaW5nIiwicmVuZGVyZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3ViamVjdCIsInNldHVwRnJhbWVUaW1pbmdJbmZvcm1hdGlvblRyYW5zZm9ybSIsInRyYWNrSWQiLCJkZWNvZGVkRnJhbWVUaW1pbmdJbmZvcm1hdGlvblN1YmplY3QiLCJpc0VuYWJsZWRTdWJqZWN0IiwicmVnaXN0ZXJSb3V0ZSIsIkZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJoYW5kbGVGcmFtZVRpbWluZ01lc3NhZ2UiLCJfdHJhbnNmb3JtTmFtZSIsIl9PYmplY3QkZW50cmllcyIsImVudHJpZXMiLCJfT2JqZWN0JGVudHJpZXMkX2kiLCJfc2xpY2VkVG9BcnJheSIsInJ0cFRpbWVzdGFtcCIsIm1ldGFkYXRhIiwicnRwVGltZXN0YW1wTnVtYmVyIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luMiIsImZyYW1lVGltaW5nSW5mb3JtYXRpb24iLCJ0aW1lY29kZSIsInJlY2VpdmVUaW1lc3RhbXAiLCJzb3VyY2VUaW1lc3RhbXAiLCJpbmdlc3RUaW1lc3RhbXAiLCJlbmNvZGVUaW1lc3RhbXAiLCJ0cmFuc2NvZGVUaW1lc3RhbXAiLCJwbGF5YmFja1N0YXRlIiwiX2N1cnJlbnRQbGF5YmFja1N0YXRlIiwiX2RlY29kZWRGcmFtZVRpbWluZ0luZm9ybWF0aW9uQnlSdHBUaW1lc3RhbXAiLCJ2aWRlb0VsZW1lbnRTdWJqZWN0IiwiY2xlYXIiLCJfdmlkZW9FbGVtZW50RGlzcG9zYWJsZXMiLCJzZXR1cFZpZGVvRXZlbnRMaXN0ZW5lcnMiLCJoYW5kbGVWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfYXJtVmlkZW9GcmFtZUNhbGxiYWNrIiwidGltZXN0YW1wc1RvRGVsZXRlIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJfc3RlcCR2YWx1ZSIsImZyYW1lVGltaW5nIiwicmVuZGVyVGltZXN0YW1wIiwicGVyZm9ybWFuY2UiLCJ0aW1lT3JpZ2luIiwiZXJyIiwiX2kyIiwiX3RpbWVzdGFtcHNUb0RlbGV0ZSIsIm9uUGxheWluZyIsIm9uUGF1c2UiLCJvblN0YWxsZWQiLCJvbldhaXRpbmciLCJvbkVuZGVkIiwib25FcnJvciIsIl9hcm1lZFZpZGVvRnJhbWVDYWxsYmFja0lkIiwiY2FuY2VsVmlkZW9GcmFtZUNhbGxiYWNrIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIkluc2VydGFibGVTdHJlYW1zIiwiVmlkZW9GcmFtZURldGVjdG9yIiwiRW5jb2RlZE1lZGlhVHJhbnNmb3JtTWFuYWdlciIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwiZGVmYXVsdFN0cmVhbVNldHVwVGltZW91dCIsIlJlYWxUaW1lU3RyZWFtU3Vic2NyaWJlciIsImNoYW5uZWxDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0Iiwic3RyZWFtVHJhbnNmb3JtQ29udGV4dCIsImZyYW1lVGltaW5nSW5mb3JtYXRpb25Db250ZXh0IiwicmVxdWlyZXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJhbGwiLCJfcmVmMyIsIl9yZWYzJCIsInN1YnNjcmliZU9wdGlvbnMiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfY2hhbm5lbENvbnRleHQiLCJfcmVmNCIsInJldHJ5Q2FsbGJhY2siLCJuYXZpZ2F0b3JJc09uTGluZSIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwibWVkaWFTdHJlYW1Qcm9taXNlIiwib25UcmFja0Rpc2FibGVkIiwic3RyZWFtcyIsInRyYWNrTGlzdGVuZXIiLCJhbnN3ZXIiLCJfcmVmNSIsIm1hcFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzVG9DaGFubmVsU3RhdHVzIiwiX3BlZXJDb25uZWN0aW9uJGN1cnJlIiwiX3RoaXMkX2NoYW5uZWxDb250ZXh0MiIsIl9wZWVyQ29ubmVjdGlvbiRnZXRUciIsIl9wZWVyQ29ubmVjdGlvbiRnZXRUcjIiLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsInJlY2VpdmVycyIsImdldFZpZGVvVHJhY2tzIiwidmlkZW9UcmFja1JlY2VpdmVyIiwic3VwcG9ydHNHZXRUcmFuc2NlaXZlcnMiLCJ0cmFuc2NlaXZlciIsImdldEF1ZGlvVHJhY2tzIiwiYXVkaW9UcmFja1JlY2VpdmVyIiwiY3JlYXRlRW5jb2RlZFN0cmVhbVBpcGVsaW5lIiwicmVxdWlyZXNGcmFtZVRpbWluZ0luZm9ybWF0aW9uIiwiZnJhbWVUaW1pbmdJbmZvcm1hdGlvbk1hbmFnZXJDb250ZXh0IiwicmVxdWlyZXNFbmNvZGVkTWVkaWFUcmFuc2Zvcm0iLCJlbmNvZGVkTWVkaWFUcmFuc2Zvcm1NYW5hZ2VyQ29udGV4dCIsImNvbmZpZ3VyZUVuY29kZWRTdHJlYW1QaXBlbGluZSIsIl9JbnNlcnRhYmxlU3RyZWFtcyRjbyIsImNvbmZpZ3VyZUluc2VydGFibGVTdHJlYW1UcmFuc2Zvcm1hdGlvbiIsInRyYW5zZm9ybWVkU3RyZWFtIiwicnRjQ29ubmVjdGlvbk1vbml0b3IiLCJydGNDb25uZWN0aW9uTW9uaXRvclN0YXRpc3RpY1N1YnNjcmlwdGlvbiIsInJ0Y1N0YXRpc3RpYyIsInN0YXRpc3RpY3MiLCJhdWRpb1RyYWNrRmFpbGVkIiwidmlkZW9UcmFja0ZhaWxlZCIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUyIiwiaXNDbGllbnRPZmZlckZsb3ciLCJpY2VSZXN0YXJ0Iiwib2ZmZXIiLCJfbWVkaWFTdHJlYW0kZ2V0VHJhY2siLCJoYXNBY3RpdmVUcmFja3MiLCJzb21lIiwicmVhZHlTdGF0ZSIsInBhdXNlZCIsImlzUmVuZGVyaW5nRnJhbWVzIiwiUmVhbFRpbWVTdHJlYW1TdWJzY3JpYmVyRmFjdG9yeSIsInRva2VuQ2FwYWJpbGl0aWVzIiwiZGV0ZWN0aW9uVGltZW91dEluTWlsbGlzZWNvbmRzIiwiaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQiLCJzdGFydFRpbWUiLCJyZXNvbHZlZCIsIlN1cnJvZ2F0ZUZyYW1lRGF0YU1hbmFnZXIiLCJTa2lwRnJhbWUiLCJFbmNvZGVkVmlkZW9DaHVuayIsImNodW5rIiwiZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2siLCJFbmNvZGVkQXVkaW9DaHVuayIsImVuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrIiwiX2VuY29kZWRBdWRpb1N0cmVhbUNhbGxiYWNrIiwiZ2V0SW52YWxpZFN1cnJvZ2F0ZUF1ZGlvRGF0YSIsImdldFN1cnJvZ2F0ZUF1ZGlvU2lsZW50UGVyQ29kZWMiLCJfZW5jb2RlZFZpZGVvU3RyZWFtQ2FsbGJhY2siLCJzdXJyb2dhdGUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9JRnJhbWUiLCJnZXRJbnZhbGlkU3Vycm9nYXRlVmlkZW9QRnJhbWUiLCJnZXRTdXJyb2dhdGVWaWRlb0lGcmFtZVBlckNvZGVjIiwiZ2V0U3Vycm9nYXRlVmlkZW9QRnJhbWVQZXJDb2RlYyIsIm1vZGUiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwibmV4dCIsIl9hcnJheUxpa2VUb0FycmF5IiwiY29uc3RydWN0b3IiLCJmcm9tIiwiVHJhbnNmb3JtU3RyZWFtUGlwZWxpbmVXb3JrZXIiLCJUcmFuc2Zvcm1NZXNzYWdlVHlwZSIsIlRyYW5zZm9ybU1lc3NhZ2VSb3V0ZXIiLCJjcmVhdGVUcmFuc2Zvcm1QaXBlbGluZVdvcmtlckZvclRyYWNrIiwid29ya2VyIiwidGVybWluYXRlIiwidmlkZW9UcmFja01lZGlhU3RyZWFtVHJhY2siLCJhdWRpb1RyYWNrTWVkaWFTdHJlYW1UcmFjayIsIl9jb25maWd1cmVFbmNvZGVkU3RyZWFtUGlwZWxpbmUiLCJhZGRUcmFja1RyYW5zZm9ybXMiLCJjb25maWd1cmVSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtcyIsInRyYW5zZm9ybUZ1bmN0aW9uTmFtZSIsInBvc3RNZXNzYWdlIiwiQWRkVHJhbnNmb3JtIiwiY29uZmlndXJlUlRDUnRwU2NyaXB0VHJhbnNmb3JtRm9yVHJhY2siLCJ0cmFja1JlY2VpdmVyIiwidHJhY2tNZWRpYVN0cmVhbVRyYWNrIiwidHJhY2tUcmFuc2Zvcm1QaXBlbGluZVdvcmtlciIsInRyYW5zZm9ybSIsIlBpcGVsaW5lQ29uZmlndXJlZCIsIm9uY2UiLCJjb25maWd1cmVFbmNvZGVkU3RyZWFtc0ZvclRyYWNrIiwiYWN0aW9ucyIsImVuY29kZWRSZWNlaXZlclN0cmVhbXMiLCJDb25maWd1cmVQaXBlbGluZSIsInNvdXJjZSIsInJlYWRhYmxlIiwic2luayIsInRyYW5zZmVyIiwiaW5zZXJ0YWJsZVN0cmVhbVRyYW5zZm9ybUNhbGxiYWNrIiwiY29udHJvbGxlciIsInRyYW5zZm9ybWVyIiwiVHJhbnNmb3JtU3RyZWFtIiwicHJvY2Vzc29yIiwiZ2VuZXJhdG9yIiwicGlwZVRocm91Z2giLCJwaXBlVG8iLCJyZW1vdmVUcmFjayIsImF1ZGlvUHVtcGVyIiwiQXVkaW8iLCJhcHBlbmRDaGlsZCIsInJlbW92ZUNoaWxkIiwiYW5uZXhCRm91ckJ5dGVTdGFydENvZGUiLCJzdXJyb2dhdGVIMjY0Mjh4MTZJRnJhbWUiLCJzdXJyb2dhdGVIMjY0Mjh4MTZQRnJhbWUiLCJfZHVtbXlBdWRpb1NpbGVudFBlckNvZGVjIiwiYnVmZmVyIiwiX3NpbmdsZVplcm9CeXRlIiwiX2lzU2FmYXJpIiwiX3N1cnJvZ2F0ZTI4eDE2SDI2NElGcmFtZSIsIl9kdW1teTJ4MlZpZGVvSUZyYW1lUGVyQ29kZWMiLCJfaXNBbmRyb2lkQ2hyb21lIiwiX3N1cnJvZ2F0ZTI4eDE2UEZyYW1lRnJhbWVOdW1iZXIiLCJfc3Vycm9nYXRlMjh4MTZQRnJhbWVGcmFtZU51bWJlclJlc2V0IiwiX3N1cnJvZ2F0ZTI4eDE2SDI2NFBGcmFtZSIsIl9kdW1teTJ4MlZpZGVvUEZyYW1lUGVyQ29kZWMiLCJfU3Vycm9nYXRlRnJhbWVEYXRhTWFuYWdlciIsImlzQW5kcm9pZCIsIlRyYW5zZm9ybVBpcGVsaW5lTWVzc2FnZVJvdXRlciIsIm1lc3NhZ2VUeXBlIiwicm91dGVNZXNzYWdlIiwiX21lc3NhZ2VSb3V0ZXMiLCJyb3V0ZU1lc3NhZ2VEYXRhIiwiQ2h1bmsiLCJNZXRhZGF0YSIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwidmFsdWVPZiIsImxvZ1JlY29yZCIsIl9sb2dzIiwic2VuZExvZ3NJZkFibGUiLCJsb2dNZXNzYWdlcyIsIl9zZW5kTG9nc0lmQWJsZSIsIm51bWJlck9mTG9nc1RvU2VuZCIsInNpemVPZkxvZ3NUb1NlbmQiLCJnZXRJdGVtU2l6ZSIsImdldExvZ1NpemUiLCJzdW0iLCJkdXJhdGlvbiIsIl9kdXJhdGlvbiIsImlzTmVnYXRpdmUiLCJhYnMiLCJvZmZzZXQiLCJtaWxsaXNlY29uZHMiLCJzZWNvbmRzIiwibWludXRlcyIsImhvdXJzIiwicGFydHMiLCJTdHJpbmciLCJwYWRTdGFydCIsInRhcmdldExlbmd0aCIsInBhZFN0cmluZyIsInJlcGVhdCIsImRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyIsInJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmYiLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCIsIm1heCIsIm1pbiIsIm90aGVyIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsIm5vb3AiLCJjaGFubmVsU3RhcnRUaW1lIiwiX3N0cmVhbUlkIiwiX3N0YXJ0UmVjb3JkaW5nRmlyc3RGcmFtZSIsIl9saXN0ZW5Ub0ZpcnN0VGltZSIsImNhbGxUaW1lVG9GaXJzdEZyYW1lIiwiX2NsZWFyVGltZVRvRmlyc3RGcmFtZUxpc3RlbmVyIiwiX2xpc3RlbkZvclN0YWxsIiwib25TdGFsbCIsIl9saXN0ZW5Gb3JDb250aW51YXRpb24iLCJldmVudCIsIm9uQ29udGludWF0aW9uIiwiX2NsZWFyUmVidWZmZXJpbmdMaXN0ZW5lciIsInB1c2hUaW1lVG9GaXJzdEZyYW1lIiwicHVzaENoYW5uZWxDcmVhdGlvblRpbWVUb0ZpcnN0RnJhbWUiLCJfdGltZVRvRmlyc3RGcmFtZSIsImR1cmF0aW9uU2luY2VQYWdlTG9hZCIsIl9jaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiX3ZpZGVvU3RhbGxlZCIsImJ1ZmZlcmVkIiwiYnVmZmVyTGVuZ3RoIiwiaGFzTm90UHJvZ3Jlc3NlZFNpbmNlTGFzdFByb2dyZXNzRXZlbnQiLCJlbmQiLCJfbGFzdFByb2dyZXNzIiwidGltZVNpbmNlU3RvcCIsIm5ld1Jlc29sdXRpb24iLCJfdmlkZW9SZXNvbHV0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ==