verdaccio 5.3.2 → 5.5.2

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 (71) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/CODE_OF_CONDUCT.md +10 -10
  3. package/CONTRIBUTING.md +28 -27
  4. package/README.md +6 -5
  5. package/SECURITY.md +8 -9
  6. package/build/api/debug/index.js +1 -1
  7. package/build/api/endpoint/api/dist-tags.js +4 -4
  8. package/build/api/endpoint/api/package.js +3 -3
  9. package/build/api/endpoint/api/ping.js +1 -1
  10. package/build/api/endpoint/api/publish.js +11 -11
  11. package/build/api/endpoint/api/star.js +5 -5
  12. package/build/api/endpoint/api/stars.js +1 -1
  13. package/build/api/endpoint/api/user.js +19 -9
  14. package/build/api/endpoint/api/v1/index.js +26 -0
  15. package/build/api/endpoint/api/v1/profile.js +13 -5
  16. package/build/api/endpoint/api/v1/search.js +4 -4
  17. package/build/api/endpoint/api/v1/token.js +20 -11
  18. package/build/api/endpoint/api/whoami.js +1 -1
  19. package/build/api/endpoint/index.js +11 -14
  20. package/build/api/index.js +23 -17
  21. package/build/api/middleware.js +6 -6
  22. package/build/api/rate-limiter.js +24 -0
  23. package/build/api/web/api.js +6 -18
  24. package/build/api/web/endpoint/index.js +51 -0
  25. package/build/api/web/endpoint/package.js +16 -11
  26. package/build/api/web/endpoint/search.js +9 -3
  27. package/build/api/web/endpoint/user.js +11 -5
  28. package/build/api/web/html/renderHTML.js +13 -9
  29. package/build/api/web/html/template.js +1 -1
  30. package/build/api/web/index.js +14 -11
  31. package/build/config/env.js +1 -1
  32. package/build/index.js +1 -1
  33. package/build/lib/auth-utils.js +15 -8
  34. package/build/lib/auth.js +7 -17
  35. package/build/lib/bootstrap.js +8 -8
  36. package/build/lib/cli/cli.js +3 -3
  37. package/build/lib/cli/commands/info.js +3 -3
  38. package/build/lib/cli/commands/init.js +3 -3
  39. package/build/lib/cli/commands/version.js +1 -1
  40. package/build/lib/cli/utils.js +3 -3
  41. package/build/lib/config-path.js +3 -3
  42. package/build/lib/config-utils.js +3 -3
  43. package/build/lib/config.js +16 -31
  44. package/build/lib/constants.js +5 -4
  45. package/build/lib/crypto-utils.js +3 -3
  46. package/build/lib/local-storage.js +7 -15
  47. package/build/lib/logger/formatter/index.js +1 -1
  48. package/build/lib/logger/formatter/prettifier.js +3 -3
  49. package/build/lib/logger/levels.js +1 -1
  50. package/build/lib/logger/logger.js +10 -6
  51. package/build/lib/logger/utils.js +1 -1
  52. package/build/lib/metadata-utils.js +3 -3
  53. package/build/lib/notify/index.js +3 -3
  54. package/build/lib/notify/notify-request.js +5 -5
  55. package/build/lib/plugin-loader.js +4 -4
  56. package/build/lib/search.js +2 -6
  57. package/build/lib/storage-utils.js +3 -3
  58. package/build/lib/storage.js +10 -22
  59. package/build/lib/up-storage.js +14 -45
  60. package/build/lib/uplink-util.js +1 -1
  61. package/build/lib/utils.js +32 -14
  62. package/build/utils/user.js +1 -1
  63. package/conf/README.md +3 -3
  64. package/conf/default.yaml +3 -1
  65. package/conf/docker.yaml +3 -1
  66. package/eslintrc.js +92 -92
  67. package/index.js +1 -1
  68. package/package.json +66 -59
  69. package/prettier.config.js +15 -0
  70. package/tsconfig.json +3 -10
  71. package/yarn-plugins/plugin-postinstall.js +10 -10
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.keyPem = exports.csrPem = exports.certPem = exports.WEB_TITLE = exports.USERS = exports.TOKEN_BEARER = exports.TOKEN_BASIC = exports.TIME_EXPIRATION_7D = exports.TIME_EXPIRATION_24H = exports.SUPPORT_ERRORS = exports.STORAGE = exports.ROLES = exports.PACKAGE_ACCESS = exports.MODULE_NOT_FOUND = exports.LATEST = exports.HTTP_STATUS = exports.HEADER_TYPE = exports.HEADERS = exports.ERROR_CODE = exports.DIST_TAGS = exports.DEFAULT_USER = exports.DEFAULT_UPLINK = exports.DEFAULT_REGISTRY = exports.DEFAULT_PROTOCOL = exports.DEFAULT_PORT = exports.DEFAULT_NO_README = exports.DEFAULT_MIN_LIMIT_PASSWORD = exports.DEFAULT_DOMAIN = exports.CHARACTER_ENCODING = exports.APP_ERROR = exports.API_MESSAGE = exports.API_ERROR = void 0;
6
+ exports.keyPem = exports.csrPem = exports.certPem = exports.WEB_TITLE = exports.USERS = exports.TOKEN_BEARER = exports.TOKEN_BASIC = exports.TIME_EXPIRATION_24H = exports.TIME_EXPIRATION_1H = exports.SUPPORT_ERRORS = exports.STORAGE = exports.ROLES = exports.PACKAGE_ACCESS = exports.MODULE_NOT_FOUND = exports.LATEST = exports.HTTP_STATUS = exports.HEADER_TYPE = exports.HEADERS = exports.ERROR_CODE = exports.DIST_TAGS = exports.DEFAULT_USER = exports.DEFAULT_UPLINK = exports.DEFAULT_REGISTRY = exports.DEFAULT_PROTOCOL = exports.DEFAULT_PORT = exports.DEFAULT_NO_README = exports.DEFAULT_MIN_LIMIT_PASSWORD = exports.DEFAULT_DOMAIN = exports.CHARACTER_ENCODING = exports.APP_ERROR = exports.API_MESSAGE = exports.API_ERROR = void 0;
7
7
 
8
8
  /**
9
9
  * @prettier
@@ -17,8 +17,8 @@ const DEFAULT_DOMAIN = 'localhost';
17
17
  exports.DEFAULT_DOMAIN = DEFAULT_DOMAIN;
18
18
  const TIME_EXPIRATION_24H = '24h';
19
19
  exports.TIME_EXPIRATION_24H = TIME_EXPIRATION_24H;
20
- const TIME_EXPIRATION_7D = '7d';
21
- exports.TIME_EXPIRATION_7D = TIME_EXPIRATION_7D;
20
+ const TIME_EXPIRATION_1H = '1h';
21
+ exports.TIME_EXPIRATION_1H = TIME_EXPIRATION_1H;
22
22
  const DIST_TAGS = 'dist-tags';
23
23
  exports.DIST_TAGS = DIST_TAGS;
24
24
  const LATEST = 'latest';
@@ -42,6 +42,7 @@ const HEADERS = {
42
42
  JSON: 'application/json',
43
43
  CONTENT_TYPE: 'Content-type',
44
44
  CONTENT_LENGTH: 'content-length',
45
+ CACHE_CONTROL: 'Cache-Control',
45
46
  TEXT_PLAIN: 'text/plain',
46
47
  TEXT_HTML: 'text/html',
47
48
  AUTHORIZATION: 'authorization',
@@ -188,4 +189,4 @@ const STORAGE = {
188
189
  DEFAULT_REVISION: '0-0000000000000000'
189
190
  };
190
191
  exports.STORAGE = STORAGE;
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbIkRFRkFVTFRfUE9SVCIsIkRFRkFVTFRfUFJPVE9DT0wiLCJERUZBVUxUX0RPTUFJTiIsIlRJTUVfRVhQSVJBVElPTl8yNEgiLCJUSU1FX0VYUElSQVRJT05fN0QiLCJESVNUX1RBR1MiLCJMQVRFU1QiLCJVU0VSUyIsIkRFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEIiwiREVGQVVMVF9VU0VSIiwia2V5UGVtIiwiY2VydFBlbSIsImNzclBlbSIsIkhFQURFUlMiLCJBQ0NFUFQiLCJBQ0NFUFRfRU5DT0RJTkciLCJVU0VSX0FHRU5UIiwiSlNPTiIsIkNPTlRFTlRfVFlQRSIsIkNPTlRFTlRfTEVOR1RIIiwiVEVYVF9QTEFJTiIsIlRFWFRfSFRNTCIsIkFVVEhPUklaQVRJT04iLCJGT1JXQVJERURfUFJPVE8iLCJGUkFNRVNfT1BUSU9OUyIsIkNTUCIsIkNUTyIsIlhTUyIsIkVUQUciLCJKU09OX0NIQVJTRVQiLCJPQ1RFVF9TVFJFQU0iLCJURVhUX0NIQVJTRVQiLCJXV1dfQVVUSCIsIkdaSVAiLCJDSEFSQUNURVJfRU5DT0RJTkciLCJVVEY4IiwiSEVBREVSX1RZUEUiLCJDT05URU5UX0VOQ09ESU5HIiwiRVJST1JfQ09ERSIsInRva2VuX3JlcXVpcmVkIiwiVE9LRU5fQkFTSUMiLCJUT0tFTl9CRUFSRVIiLCJERUZBVUxUX1JFR0lTVFJZIiwiREVGQVVMVF9VUExJTksiLCJST0xFUyIsIiRBTEwiLCJBTEwiLCIkQVVUSCIsIiRBTk9OWU1PVVMiLCJERVBSRUNBVEVEX0FMTCIsIkRFUFJFQ0FURURfQVVUSCIsIkRFUFJFQ0FURURfQU5PTllNT1VTIiwiSFRUUF9TVEFUVVMiLCJPSyIsIkNSRUFURUQiLCJNVUxUSVBMRV9DSE9JQ0VTIiwiUkVESVJFQ1QiLCJOT1RfTU9ESUZJRUQiLCJCQURfUkVRVUVTVCIsIlVOQVVUSE9SSVpFRCIsIkZPUkJJRERFTiIsIk5PVF9GT1VORCIsIkNPTkZMSUNUIiwiVU5TVVBQT1JURURfTUVESUEiLCJCQURfREFUQSIsIklOVEVSTkFMX0VSUk9SIiwiTk9UX0lNUExFTUVOVEVEIiwiU0VSVklDRV9VTkFWQUlMQUJMRSIsIkxPT1BfREVURUNURUQiLCJBUElfTUVTU0FHRSIsIlBLR19DUkVBVEVEIiwiUEtHX0NIQU5HRUQiLCJQS0dfUkVNT1ZFRCIsIlBLR19QVUJMSVNIRUQiLCJUQVJCQUxMX1VQTE9BREVEIiwiVEFSQkFMTF9SRU1PVkVEIiwiVEFHX1VQREFURUQiLCJUQUdfUkVNT1ZFRCIsIlRBR19BRERFRCIsIkxPR0dFRF9PVVQiLCJTVVBQT1JUX0VSUk9SUyIsIlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSIsIlRGQV9ESVNBQkxFRCIsIlNUT1JBR0VfTk9UX0lNUExFTUVOVCIsIlBBUkFNRVRFUlNfTk9UX1ZBTElEIiwiQVBJX0VSUk9SIiwiUEFTU1dPUkRfU0hPUlQiLCJwYXNzTGVuZ3RoIiwiTVVTVF9CRV9MT0dHRUQiLCJQTFVHSU5fRVJST1IiLCJDT05GSUdfQkFEX0ZPUk1BVCIsIkJBRF9VU0VSTkFNRV9QQVNTV09SRCIsIk5PX1BBQ0tBR0UiLCJQQUNLQUdFX0NBTk5PVF9CRV9BRERFRCIsIk5PVF9BTExPV0VEIiwiTk9UX0FMTE9XRURfUFVCTElTSCIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIlVOS05PV05fRVJST1IiLCJOT1RfUEFDS0FHRV9VUExJTksiLCJVUExJTktfT0ZGTElORV9QVUJMSVNIIiwiVVBMSU5LX09GRkxJTkUiLCJDT05URU5UX01JU01BVENIIiwiTk9UX0ZJTEVfVVBMSU5LIiwiTUFYX1VTRVJTX1JFQUNIRUQiLCJWRVJTSU9OX05PVF9FWElTVCIsIkZJTEVfTk9UX0ZPVU5EIiwiVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMIiwiQkFEX1NUQVRVU19DT0RFIiwiUEFDS0FHRV9FWElTVCIsIkJBRF9BVVRIX0hFQURFUiIsIldFQl9ESVNBQkxFRCIsIkRFUFJFQ0FURURfQkFTSUNfSEVBREVSIiwiQkFEX0ZPUk1BVF9VU0VSX0dST1VQIiwiUkVTT1VSQ0VfVU5BVkFJTEFCTEUiLCJCQURfUEFDS0FHRV9EQVRBIiwiVVNFUk5BTUVfUEFTU1dPUkRfUkVRVUlSRUQiLCJVU0VSTkFNRV9BTFJFQURZX1JFR0lTVEVSRUQiLCJBUFBfRVJST1IiLCJDT05GSUdfTk9UX1ZBTElEIiwiUFJPRklMRV9FUlJPUiIsIlBBU1NXT1JEX1ZBTElEQVRJT04iLCJERUZBVUxUX05PX1JFQURNRSIsIk1PRFVMRV9OT1RfRk9VTkQiLCJXRUJfVElUTEUiLCJQQUNLQUdFX0FDQ0VTUyIsIlNDT1BFIiwiU1RPUkFHRSIsIlBBQ0tBR0VfRklMRV9OQU1FIiwiRklMRV9FWElTVF9FUlJPUiIsIk5PX1NVQ0hfRklMRV9FUlJPUiIsIkRFRkFVTFRfUkVWSVNJT04iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUVPLE1BQU1BLFlBQVksR0FBRyxNQUFyQjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxNQUF6Qjs7QUFDQSxNQUFNQyxjQUFjLEdBQUcsV0FBdkI7O0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsS0FBNUI7O0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsSUFBM0I7O0FBQ0EsTUFBTUMsU0FBUyxHQUFHLFdBQWxCOztBQUNBLE1BQU1DLE1BQU0sR0FBRyxRQUFmOztBQUNBLE1BQU1DLEtBQUssR0FBRyxPQUFkOztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLENBQW5DOztBQUNBLE1BQU1DLFlBQVksR0FBRyxXQUFyQjs7QUFFQSxNQUFNQyxNQUFNLEdBQUcsbUJBQWY7O0FBQ0EsTUFBTUMsT0FBTyxHQUFHLG9CQUFoQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUcsbUJBQWY7O0FBRUEsTUFBTUMsT0FBTyxHQUFHO0FBQ3JCQyxFQUFBQSxNQUFNLEVBQUUsUUFEYTtBQUVyQkMsRUFBQUEsZUFBZSxFQUFFLGlCQUZJO0FBR3JCQyxFQUFBQSxVQUFVLEVBQUUsWUFIUztBQUlyQkMsRUFBQUEsSUFBSSxFQUFFLGtCQUplO0FBS3JCQyxF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QXJCTztBQXNCdkJDLEVBQUFBLHdCQUF3QixFQUFFLDJCQXRCSDtBQXVCdkJDLEVBQUFBLGVBQWUsRUFBRSxpQkF2Qk07QUF3QnZCQyxFQUFBQSxhQUFhLEVBQUUsaUNBeEJRO0FBeUJ2QkMsRUFBQUEsZUFBZSxFQUFFLDBCQXpCTTtBQTBCdkJDLEVBQUFBLFlBQVksRUFBRSw4Q0ExQlM7QUEyQnZCQyxFQUFBQSx1QkFBdUIsRUFBRSw0REEzQkY7QUE0QnZCQyxFQUFBQSxxQkFBcUIsRUFBRSx3Q0E1QkE7QUE2QnZCQyxFQUFBQSxvQkFBb0IsRUFBRSxzQkE3QkM7QUE4QnZCQyxFQUFBQSxnQkFBZ0IsRUFBRSwyQkE5Qks7QUErQnZCQyxFQUFBQSwwQkFBMEIsRUFBRSxtQ0EvQkw7QUFnQ3ZCQyxFQUFBQSwyQkFBMkIsRUFBRTtBQWhDTixDQUFsQjs7QUFtQ0EsTUFBTUMsU0FBUyxHQUFHO0FBQ3ZCQyxFQUFBQSxnQkFBZ0IsRUFBRSxtREFESztBQUV2QkMsRUFBQUEsYUFBYSxFQUFFLDBCQUZRO0FBR3ZCQyxFQUFBQSxtQkFBbUIsRUFBRTtBQUhFLENBQWxCOztBQU1BLE1BQU1DLGlCQUFpQixHQUFHLDhCQUExQjs7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxrQkFBekI7O0FBRUEsTUFBTUMsU0FBUyxHQUFHLFdBQWxCOztBQUVBLE1BQU1DLGNBQWMsR0FBRztBQUM1QkMsRUFBQUEsS0FBSyxFQUFFLE1BRHFCO0FBRTVCL0UsRUFBQUEsR0FBRyxFQUFFO0FBRnVCLENBQXZCOztBQUtBLE1BQU1nRixPQUFPLEdBQUc7QUFDckJDLEVBQUFBLGlCQUFpQixFQUFFLGNBREU7QUFFckJDLEVBQUFBLGdCQUFnQixFQUFFLFNBRkc7QUFHckJDLEVBQUFBLGtCQUFrQixFQUFFLFFBSEM7QUFJckJDLEVBQUFBLGdCQUFnQixFQUFFO0FBSkcsQ0FBaEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5cbi8vIEBmbG93XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlQgPSAnNDg3Myc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUk9UT0NPTCA9ICdodHRwJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RPTUFJTiA9ICdsb2NhbGhvc3QnO1xuZXhwb3J0IGNvbnN0IFRJTUVfRVhQSVJBVElPTl8yNEggPSAnMjRoJztcbmV4cG9ydCBjb25zdCBUSU1FX0VYUElSQVRJT05fN0QgPSAnN2QnO1xuZXhwb3J0IGNvbnN0IERJU1RfVEFHUyA9ICdkaXN0LXRhZ3MnO1xuZXhwb3J0IGNvbnN0IExBVEVTVCA9ICdsYXRlc3QnO1xuZXhwb3J0IGNvbnN0IFVTRVJTID0gJ3VzZXJzJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01JTl9MSU1JVF9QQVNTV09SRCA9IDM7XG5leHBvcnQgY29uc3QgREVGQVVMVF9VU0VSID0gJ0Fub255bW91cyc7XG5cbmV4cG9ydCBjb25zdCBrZXlQZW0gPSAndmVyZGFjY2lvLWtleS5wZW0nO1xuZXhwb3J0IGNvbnN0IGNlcnRQZW0gPSAndmVyZGFjY2lvLWNlcnQucGVtJztcbmV4cG9ydCBjb25zdCBjc3JQZW0gPSAndmVyZGFjY2lvLWNzci5wZW0nO1xuXG5leHBvcnQgY29uc3QgSEVBREVSUyA9IHtcbiAgQUNDRVBUOiAnQWNjZXB0JyxcbiAgQUNDRVBUX0VOQ09ESU5HOiAnQWNjZXB0LUVuY29kaW5nJyxcbiAgVVNFUl9BR0VOVDogJ1VzZXItQWdlbnQnLFxuICBKU09OOiAnYXBwbGljYXRpb24vanNvbicsXG4gIENPTlRFTlRfVFlQRTogJ0NvbnRlbnQtdHlwZScsXG4gIENPTlRFTlRfTEVOR1RIOiAnY29udGVudC1sZW5ndGgnLFxuICBURVhUX1BMQUlOOiAndGV4dC9wbGFpbicsXG4gIFRFWFRfSFRNTDogJ3RleHQvaHRtbCcsXG4gIEFVVEhPUklaQVRJT046ICdhdXRob3JpemF0aW9uJyxcbiAgRk9SV0FSREVEX1BST1RPOiAnWC1Gb3J3YXJkZWQtUHJvdG8nLFxuICBGUkFNRVNfT1BUSU9OUzogJ1gtRnJhbWUtT3B0aW9ucycsXG4gIENTUDogJ0NvbnRlbnQtU2VjdXJpdHktUG9saWN5JyxcbiAgQ1RPOiAnWC1Db250ZW50LVR5cGUtT3B0aW9ucycsXG4gIFhTUzogJ1gtWFNTLVByb3RlY3Rpb24nLFxuICBFVEFHOiAnRVRhZycsXG4gIEpTT05fQ0hBUlNFVDogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxuICBPQ1RFVF9TVFJFQU06ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IGNoYXJzZXQ9dXRmLTgnLFxuICBURVhUX0NIQVJTRVQ6ICd0ZXh0L3BsYWluOyBjaGFyc2V0PXV0Zi04JyxcbiAgV1dXX0FVVEg6ICdXV1ctQXV0aGVudGljYXRlJyxcbiAgR1pJUDogJ2d6aXAnXG59O1xuXG5leHBvcnQgY29uc3QgQ0hBUkFDVEVSX0VOQ09ESU5HID0ge1xuICBVVEY4OiAndXRmOCdcbn07XG5cbmV4cG9ydCBjb25zdCBIRUFERVJfVFlQRSA9IHtcbiAgQ09OVEVOVF9FTkNPRElORzogJ2NvbnRlbnQtZW5jb2RpbmcnLFxuICBDT05URU5UX1RZUEU6ICdjb250ZW50LXR5cGUnLFxuICBDT05URU5UX0xFTkdUSDogJ2NvbnRlbnQtbGVuZ3RoJyxcbiAgQUNDRVBUX0VOQ09ESU5HOiAnYWNjZXB0LWVuY29kaW5nJ1xufTtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREUgPSB7XG4gIHRva2VuX3JlcXVpcmVkOiAndG9rZW4gaXMgcmVxdWlyZWQnXG59O1xuXG5leHBvcnQgY29uc3QgVE9LRU5fQkFTSUMgPSAnQmFzaWMnO1xuZXhwb3J0IGNvbnN0IFRPS0VOX0JFQVJFUiA9ICdCZWFyZXInO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVHSVNUUlkgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVBMSU5LID0gJ25wbWpzJztcblxuZXhwb3J0IGNvbnN0IFJPTEVTID0ge1xuICAkQUxMOiAnJGFsbCcsXG4gIEFMTDogJ2FsbCcsXG4gICRBVVRIOiAnJGF1dGhlbnRpY2F0ZWQnLFxuICAkQU5PTllNT1VTOiAnJGFub255bW91cycsXG4gIERFUFJFQ0FURURfQUxMOiAnQGFsbCcsXG4gIERFUFJFQ0FURURfQVVUSDogJ0BhdXRoZW50aWNhdGVkJyxcbiAgREVQUkVDQVRFRF9BTk9OWU1PVVM6ICdAYW5vbnltb3VzJ1xufTtcblxuZXhwb3J0IGNvbnN0IEhUVFBfU1RBVFVTID0ge1xuICBPSzogMjAwLFxuICBDUkVBVEVEOiAyMDEsXG4gIE1VTFRJUExFX0NIT0lDRVM6IDMwMCxcbiAgUkVESVJFQ1Q6IDMwMixcbiAgTk9UX01PRElGSUVEOiAzMDQsXG4gIEJBRF9SRVFVRVNUOiA0MDAsXG4gIFVOQVVUSE9SSVpFRDogNDAxLFxuICBGT1JCSURERU46IDQwMyxcbiAgTk9UX0ZPVU5EOiA0MDQsXG4gIENPTkZMSUNUOiA0MDksXG4gIFVOU1VQUE9SVEVEX01FRElBOiA0MTUsXG4gIEJBRF9EQVRBOiA0MjIsXG4gIElOVEVSTkFMX0VSUk9SOiA1MDAsXG4gIE5PVF9JTVBMRU1FTlRFRDogNTAxLFxuICBTRVJWSUNFX1VOQVZBSUxBQkxFOiA1MDMsXG4gIExPT1BfREVURUNURUQ6IDUwOFxufTtcblxuZXhwb3J0IGNvbnN0IEFQSV9NRVNTQUdFID0ge1xuICBQS0dfQ1JFQVRFRDogJ2NyZWF0ZWQgbmV3IHBhY2thZ2UnLFxuICBQS0dfQ0hBTkdFRDogJ3BhY2thZ2UgY2hhbmdlZCcsXG4gIFBLR19SRU1PVkVEOiAncGFja2FnZSByZW1vdmVkJyxcbiAgUEtHX1BVQkxJU0hFRDogJ3BhY2thZ2UgcHVibGlzaGVkJyxcbiAgVEFSQkFMTF9VUExPQURFRDogJ3RhcmJhbGwgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgVEFSQkFMTF9SRU1PVkVEOiAndGFyYmFsbCByZW1vdmVkJyxcbiAgVEFHX1VQREFURUQ6ICd0YWdzIHVwZGF0ZWQnLFxuICBUQUdfUkVNT1ZFRDogJ3RhZyByZW1vdmVkJyxcbiAgVEFHX0FEREVEOiAncGFja2FnZSB0YWdnZWQnLFxuICBMT0dHRURfT1VUOiAnTG9nZ2VkIG91dCdcbn07XG5cbmV4cG9ydCBjb25zdCBTVVBQT1JUX0VSUk9SUyA9IHtcbiAgUExVR0lOX01JU1NJTkdfSU5URVJGQUNFOiAndGhlIHBsdWdpbiBkb2VzIG5vdCBwcm92aWRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSByZXF1ZXN0ZWQgZmVhdHVyZScsXG4gIFRGQV9ESVNBQkxFRDogJ3RoZSB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCB5ZXQgc3VwcG9ydGVkJyxcbiAgU1RPUkFHRV9OT1RfSU1QTEVNRU5UOiAndGhlIHN0b3JhZ2UgZG9lcyBub3Qgc3VwcG9ydCB0b2tlbiBzYXZpbmcnLFxuICBQQVJBTUVURVJTX05PVF9WQUxJRDogJ3RoZSBwYXJhbWV0ZXJzIGFyZSBub3QgdmFsaWQnXG59O1xuXG5leHBvcnQgY29uc3QgQVBJX0VSUk9SID0ge1xuICBQQVNTV09SRF9TSE9SVDogKHBhc3NMZW5ndGg6IG51bWJlciA9IERFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEKSA9PlxuICAgIGBUaGUgcHJvdmlkZWQgcGFzc3dvcmQgaXMgdG9vIHNob3J0LiBQbGVhc2UgcGljayBhIHBhc3N3b3JkIGxvbmdlciB0aGFuICR7cGFzc0xlbmd0aH0gY2hhcmFjdGVycy5gLFxuICBNVVNUX0JFX0xPR0dFRDogJ1lvdSBtdXN0IGJlIGxvZ2dlZCBpbiB0byBwdWJsaXNoIHBhY2thZ2VzLicsXG4gIFBMVUdJTl9FUlJPUjogJ2J1ZyBpbiB0aGUgYXV0aCBwbHVnaW4gc3lzdGVtJyxcbiAgQ09ORklHX0JBRF9GT1JNQVQ6ICdjb25maWcgZmlsZSBtdXN0IGJlIGFuIG9iamVjdCcsXG4gIEJBRF9VU0VSTkFNRV9QQVNTV09SRDogJ2JhZCB1c2VybmFtZS9wYXNzd29yZCwgYWNjZXNzIGRlbmllZCcsXG4gIE5PX1BBQ0tBR0U6ICdubyBzdWNoIHBhY2thZ2UgYXZhaWxhYmxlJyxcbiAgUEFDS0FHRV9DQU5OT1RfQkVfQURERUQ6ICd0aGlzIHBhY2thZ2UgY2Fubm90IGJlIGFkZGVkJyxcbiAgQkFEX0RBVEE6ICdiYWQgZGF0YScsXG4gIE5PVF9BTExPV0VEOiAnbm90IGFsbG93ZWQgdG8gYWNjZXNzIHBhY2thZ2UnLFxuICBOT1RfQUxMT1dFRF9QVUJMSVNIOiAnbm90IGFsbG93ZWQgdG8gcHVibGlzaCBwYWNrYWdlJyxcbiAgSU5URVJOQUxfU0VSVkVSX0VSUk9SOiAnaW50ZXJuYWwgc2VydmVyIGVycm9yJyxcbiAgVU5LTk9XTl9FUlJPUjogJ3Vua25vd24gZXJyb3InLFxuICBOT1RfUEFDS0FHRV9VUExJTks6ICdwYWNrYWdlIGRvZXMgbm90IGV4aXN0IG9uIHVwbGluaycsXG4gIFVQTElOS19PRkZMSU5FX1BVQkxJU0g6ICdvbmUgb2YgdGhlIHVwbGlua3MgaXMgZG93biwgcmVmdXNlIHRvIHB1Ymxpc2gnLFxuICBVUExJTktfT0ZGTElORTogJ3VwbGluayBpcyBvZmZsaW5lJyxcbiAgQ09OVEVOVF9NSVNNQVRDSDogJ2NvbnRlbnQgbGVuZ3RoIG1pc21hdGNoJyxcbiAgTk9UX0ZJTEVfVVBMSU5LOiBcImZpbGUgZG9lc24ndCBleGlzdCBvbiB1cGxpbmtcIixcbiAgTUFYX1VTRVJTX1JFQUNIRUQ6ICdtYXhpbXVtIGFtb3VudCBvZiB1c2VycyByZWFjaGVkJyxcbiAgVkVSU0lPTl9OT1RfRVhJU1Q6IFwidGhpcyB2ZXJzaW9uIGRvZXNuJ3QgZXhpc3RcIixcbiAgRklMRV9OT1RfRk9VTkQ6ICdGaWxlIG5vdCBmb3VuZCcsXG4gIFVOU1VQT1JURURfUkVHSVNUUllfQ0FMTDogJ3Vuc3VwcG9ydGVkIHJlZ2lzdHJ5IGNhbGwnLFxuICBCQURfU1RBVFVTX0NPREU6ICdiYWQgc3RhdHVzIGNvZGUnLFxuICBQQUNLQUdFX0VYSVNUOiAndGhpcyBwYWNrYWdlIGlzIGFscmVhZHkgcHJlc2VudCcsXG4gIEJBRF9BVVRIX0hFQURFUjogJ2JhZCBhdXRob3JpemF0aW9uIGhlYWRlcicsXG4gIFdFQl9ESVNBQkxFRDogJ1dlYiBpbnRlcmZhY2UgaXMgZGlzYWJsZWQgaW4gdGhlIGNvbmZpZyBmaWxlJyxcbiAgREVQUkVDQVRFRF9CQVNJQ19IRUFERVI6ICdiYXNpYyBhdXRoZW50aWNhdGlvbiBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIEpXVCBpbnN0ZWFkJyxcbiAgQkFEX0ZPUk1BVF9VU0VSX0dST1VQOiAndXNlciBncm91cHMgaXMgZGlmZmVyZW50IHRoYW4gYW4gYXJyYXknLFxuICBSRVNPVVJDRV9VTkFWQUlMQUJMRTogJ3Jlc291cmNlIHVuYXZhaWxhYmxlJyxcbiAgQkFEX1BBQ0tBR0VfREFUQTogJ2JhZCBpbmNvbWluZyBwYWNrYWdlIGRhdGEnLFxuICBVU0VSTkFNRV9QQVNTV09SRF9SRVFVSVJFRDogJ3VzZXJuYW1lIGFuZCBwYXNzd29yZCBpcyByZXF1aXJlZCcsXG4gIFVTRVJOQU1FX0FMUkVBRFlfUkVHSVNURVJFRDogJ3VzZXJuYW1lIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbn07XG5cbmV4cG9ydCBjb25zdCBBUFBfRVJST1IgPSB7XG4gIENPTkZJR19OT1RfVkFMSUQ6ICdDT05GSUc6IGl0IGRvZXMgbm90IGxvb2sgbGlrZSBhIHZhbGlkIGNvbmZpZyBmaWxlJyxcbiAgUFJPRklMRV9FUlJPUjogJ3Byb2ZpbGUgdW5leHBlY3RlZCBlcnJvcicsXG4gIFBBU1NXT1JEX1ZBTElEQVRJT046ICdub3QgdmFsaWQgcGFzc3dvcmQnXG59O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9OT19SRUFETUUgPSAnRVJST1I6IE5vIFJFQURNRSBkYXRhIGZvdW5kISc7XG5leHBvcnQgY29uc3QgTU9EVUxFX05PVF9GT1VORCA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblxuZXhwb3J0IGNvbnN0IFdFQl9USVRMRSA9ICdWZXJkYWNjaW8nO1xuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9BQ0NFU1MgPSB7XG4gIFNDT1BFOiAnQCovKicsXG4gIEFMTDogJyoqJ1xufTtcblxuZXhwb3J0IGNvbnN0IFNUT1JBR0UgPSB7XG4gIFBBQ0tBR0VfRklMRV9OQU1FOiAncGFja2FnZS5qc29uJyxcbiAgRklMRV9FWElTVF9FUlJPUjogJ0VFWElTVFMnLFxuICBOT19TVUNIX0ZJTEVfRVJST1I6ICdFTk9FTlQnLFxuICBERUZBVUxUX1JFVklTSU9OOiAnMC0wMDAwMDAwMDAwMDAwMDAwJ1xufTtcbiJdfQ==
192
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbIkRFRkFVTFRfUE9SVCIsIkRFRkFVTFRfUFJPVE9DT0wiLCJERUZBVUxUX0RPTUFJTiIsIlRJTUVfRVhQSVJBVElPTl8yNEgiLCJUSU1FX0VYUElSQVRJT05fMUgiLCJESVNUX1RBR1MiLCJMQVRFU1QiLCJVU0VSUyIsIkRFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEIiwiREVGQVVMVF9VU0VSIiwia2V5UGVtIiwiY2VydFBlbSIsImNzclBlbSIsIkhFQURFUlMiLCJBQ0NFUFQiLCJBQ0NFUFRfRU5DT0RJTkciLCJVU0VSX0FHRU5UIiwiSlNPTiIsIkNPTlRFTlRfVFlQRSIsIkNPTlRFTlRfTEVOR1RIIiwiQ0FDSEVfQ09OVFJPTCIsIlRFWFRfUExBSU4iLCJURVhUX0hUTUwiLCJBVVRIT1JJWkFUSU9OIiwiRk9SV0FSREVEX1BST1RPIiwiRlJBTUVTX09QVElPTlMiLCJDU1AiLCJDVE8iLCJYU1MiLCJFVEFHIiwiSlNPTl9DSEFSU0VUIiwiT0NURVRfU1RSRUFNIiwiVEVYVF9DSEFSU0VUIiwiV1dXX0FVVEgiLCJHWklQIiwiQ0hBUkFDVEVSX0VOQ09ESU5HIiwiVVRGOCIsIkhFQURFUl9UWVBFIiwiQ09OVEVOVF9FTkNPRElORyIsIkVSUk9SX0NPREUiLCJ0b2tlbl9yZXF1aXJlZCIsIlRPS0VOX0JBU0lDIiwiVE9LRU5fQkVBUkVSIiwiREVGQVVMVF9SRUdJU1RSWSIsIkRFRkFVTFRfVVBMSU5LIiwiUk9MRVMiLCIkQUxMIiwiQUxMIiwiJEFVVEgiLCIkQU5PTllNT1VTIiwiREVQUkVDQVRFRF9BTEwiLCJERVBSRUNBVEVEX0FVVEgiLCJERVBSRUNBVEVEX0FOT05ZTU9VUyIsIkhUVFBfU1RBVFVTIiwiT0siLCJDUkVBVEVEIiwiTVVMVElQTEVfQ0hPSUNFUyIsIlJFRElSRUNUIiwiTk9UX01PRElGSUVEIiwiQkFEX1JFUVVFU1QiLCJVTkFVVEhPUklaRUQiLCJGT1JCSURERU4iLCJOT1RfRk9VTkQiLCJDT05GTElDVCIsIlVOU1VQUE9SVEVEX01FRElBIiwiQkFEX0RBVEEiLCJJTlRFUk5BTF9FUlJPUiIsIk5PVF9JTVBMRU1FTlRFRCIsIlNFUlZJQ0VfVU5BVkFJTEFCTEUiLCJMT09QX0RFVEVDVEVEIiwiQVBJX01FU1NBR0UiLCJQS0dfQ1JFQVRFRCIsIlBLR19DSEFOR0VEIiwiUEtHX1JFTU9WRUQiLCJQS0dfUFVCTElTSEVEIiwiVEFSQkFMTF9VUExPQURFRCIsIlRBUkJBTExfUkVNT1ZFRCIsIlRBR19VUERBVEVEIiwiVEFHX1JFTU9WRUQiLCJUQUdfQURERUQiLCJMT0dHRURfT1VUIiwiU1VQUE9SVF9FUlJPUlMiLCJQTFVHSU5fTUlTU0lOR19JTlRFUkZBQ0UiLCJURkFfRElTQUJMRUQiLCJTVE9SQUdFX05PVF9JTVBMRU1FTlQiLCJQQVJBTUVURVJTX05PVF9WQUxJRCIsIkFQSV9FUlJPUiIsIlBBU1NXT1JEX1NIT1JUIiwicGFzc0xlbmd0aCIsIk1VU1RfQkVfTE9HR0VEIiwiUExVR0lOX0VSUk9SIiwiQ09ORklHX0JBRF9GT1JNQVQiLCJCQURfVVNFUk5BTUVfUEFTU1dPUkQiLCJOT19QQUNLQUdFIiwiUEFDS0FHRV9DQU5OT1RfQkVfQURERUQiLCJOT1RfQUxMT1dFRCIsIk5PVF9BTExPV0VEX1BVQkxJU0giLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiTk9UX1BBQ0tBR0VfVVBMSU5LIiwiVVBMSU5LX09GRkxJTkVfUFVCTElTSCIsIlVQTElOS19PRkZMSU5FIiwiQ09OVEVOVF9NSVNNQVRDSCIsIk5PVF9GSUxFX1VQTElOSyIsIk1BWF9VU0VSU19SRUFDSEVEIiwiVkVSU0lPTl9OT1RfRVhJU1QiLCJGSUxFX05PVF9GT1VORCIsIlVOU1VQT1JURURfUkVHSVNUUllfQ0FMTCIsIkJBRF9TVEFUVVNfQ09ERSIsIlBBQ0tBR0VfRVhJU1QiLCJCQURfQVVUSF9IRUFERVIiLCJXRUJfRElTQUJMRUQiLCJERVBSRUNBVEVEX0JBU0lDX0hFQURFUiIsIkJBRF9GT1JNQVRfVVNFUl9HUk9VUCIsIlJFU09VUkNFX1VOQVZBSUxBQkxFIiwiQkFEX1BBQ0tBR0VfREFUQSIsIlVTRVJOQU1FX1BBU1NXT1JEX1JFUVVJUkVEIiwiVVNFUk5BTUVfQUxSRUFEWV9SRUdJU1RFUkVEIiwiQVBQX0VSUk9SIiwiQ09ORklHX05PVF9WQUxJRCIsIlBST0ZJTEVfRVJST1IiLCJQQVNTV09SRF9WQUxJREFUSU9OIiwiREVGQVVMVF9OT19SRUFETUUiLCJNT0RVTEVfTk9UX0ZPVU5EIiwiV0VCX1RJVExFIiwiUEFDS0FHRV9BQ0NFU1MiLCJTQ09QRSIsIlNUT1JBR0UiLCJQQUNLQUdFX0ZJTEVfTkFNRSIsIkZJTEVfRVhJU1RfRVJST1IiLCJOT19TVUNIX0ZJTEVfRVJST1IiLCJERUZBVUxUX1JFVklTSU9OIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFTyxNQUFNQSxZQUFZLEdBQUcsTUFBckI7O0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsTUFBekI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHLFdBQXZCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLEtBQTVCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLElBQTNCOztBQUNBLE1BQU1DLFNBQVMsR0FBRyxXQUFsQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUcsUUFBZjs7QUFDQSxNQUFNQyxLQUFLLEdBQUcsT0FBZDs7QUFDQSxNQUFNQywwQkFBMEIsR0FBRyxDQUFuQzs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsV0FBckI7O0FBRUEsTUFBTUMsTUFBTSxHQUFHLG1CQUFmOztBQUNBLE1BQU1DLE9BQU8sR0FBRyxvQkFBaEI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHLG1CQUFmOztBQUVBLE1BQU1DLE9BQU8sR0FBRztBQUNyQkMsRUFBQUEsTUFBTSxFQUFFLFFBRGE7QUFFckJDLEVBQUFBLGVBQWUsRUFBRSxpQkFGSTtBQUdyQkMsRUFBQUEsVUFBVSxFQUFFLFlBSFM7QUFJckJDLEVBQUFBLElBQUksRUFB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bi8vIEBmbG93XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1BPUlQgPSAnNDg3Myc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUk9UT0NPTCA9ICdodHRwJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RPTUFJTiA9ICdsb2NhbGhvc3QnO1xuZXhwb3J0IGNvbnN0IFRJTUVfRVhQSVJBVElPTl8yNEggPSAnMjRoJztcbmV4cG9ydCBjb25zdCBUSU1FX0VYUElSQVRJT05fMUggPSAnMWgnO1xuZXhwb3J0IGNvbnN0IERJU1RfVEFHUyA9ICdkaXN0LXRhZ3MnO1xuZXhwb3J0IGNvbnN0IExBVEVTVCA9ICdsYXRlc3QnO1xuZXhwb3J0IGNvbnN0IFVTRVJTID0gJ3VzZXJzJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX01JTl9MSU1JVF9QQVNTV09SRCA9IDM7XG5leHBvcnQgY29uc3QgREVGQVVMVF9VU0VSID0gJ0Fub255bW91cyc7XG5cbmV4cG9ydCBjb25zdCBrZXlQZW0gPSAndmVyZGFjY2lvLWtleS5wZW0nO1xuZXhwb3J0IGNvbnN0IGNlcnRQZW0gPSAndmVyZGFjY2lvLWNlcnQucGVtJztcbmV4cG9ydCBjb25zdCBjc3JQZW0gPSAndmVyZGFjY2lvLWNzci5wZW0nO1xuXG5leHBvcnQgY29uc3QgSEVBREVSUyA9IHtcbiAgQUNDRVBUOiAnQWNjZXB0JyxcbiAgQUNDRVBUX0VOQ09ESU5HOiAnQWNjZXB0LUVuY29kaW5nJyxcbiAgVVNFUl9BR0VOVDogJ1VzZXItQWdlbnQnLFxuICBKU09OOiAnYXBwbGljYXRpb24vanNvbicsXG4gIENPTlRFTlRfVFlQRTogJ0NvbnRlbnQtdHlwZScsXG4gIENPTlRFTlRfTEVOR1RIOiAnY29udGVudC1sZW5ndGgnLFxuICBDQUNIRV9DT05UUk9MOiAnQ2FjaGUtQ29udHJvbCcsXG4gIFRFWFRfUExBSU46ICd0ZXh0L3BsYWluJyxcbiAgVEVYVF9IVE1MOiAndGV4dC9odG1sJyxcbiAgQVVUSE9SSVpBVElPTjogJ2F1dGhvcml6YXRpb24nLFxuICBGT1JXQVJERURfUFJPVE86ICdYLUZvcndhcmRlZC1Qcm90bycsXG4gIEZSQU1FU19PUFRJT05TOiAnWC1GcmFtZS1PcHRpb25zJyxcbiAgQ1NQOiAnQ29udGVudC1TZWN1cml0eS1Qb2xpY3knLFxuICBDVE86ICdYLUNvbnRlbnQtVHlwZS1PcHRpb25zJyxcbiAgWFNTOiAnWC1YU1MtUHJvdGVjdGlvbicsXG4gIEVUQUc6ICdFVGFnJyxcbiAgSlNPTl9DSEFSU0VUOiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcsXG4gIE9DVEVUX1NUUkVBTTogJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTsgY2hhcnNldD11dGYtOCcsXG4gIFRFWFRfQ0hBUlNFVDogJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLFxuICBXV1dfQVVUSDogJ1dXVy1BdXRoZW50aWNhdGUnLFxuICBHWklQOiAnZ3ppcCcsXG59O1xuXG5leHBvcnQgY29uc3QgQ0hBUkFDVEVSX0VOQ09ESU5HID0ge1xuICBVVEY4OiAndXRmOCcsXG59O1xuXG5leHBvcnQgY29uc3QgSEVBREVSX1RZUEUgPSB7XG4gIENPTlRFTlRfRU5DT0RJTkc6ICdjb250ZW50LWVuY29kaW5nJyxcbiAgQ09OVEVOVF9UWVBFOiAnY29udGVudC10eXBlJyxcbiAgQ09OVEVOVF9MRU5HVEg6ICdjb250ZW50LWxlbmd0aCcsXG4gIEFDQ0VQVF9FTkNPRElORzogJ2FjY2VwdC1lbmNvZGluZycsXG59O1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERSA9IHtcbiAgdG9rZW5fcmVxdWlyZWQ6ICd0b2tlbiBpcyByZXF1aXJlZCcsXG59O1xuXG5leHBvcnQgY29uc3QgVE9LRU5fQkFTSUMgPSAnQmFzaWMnO1xuZXhwb3J0IGNvbnN0IFRPS0VOX0JFQVJFUiA9ICdCZWFyZXInO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVHSVNUUlkgPSAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVVBMSU5LID0gJ25wbWpzJztcblxuZXhwb3J0IGNvbnN0IFJPTEVTID0ge1xuICAkQUxMOiAnJGFsbCcsXG4gIEFMTDogJ2FsbCcsXG4gICRBVVRIOiAnJGF1dGhlbnRpY2F0ZWQnLFxuICAkQU5PTllNT1VTOiAnJGFub255bW91cycsXG4gIERFUFJFQ0FURURfQUxMOiAnQGFsbCcsXG4gIERFUFJFQ0FURURfQVVUSDogJ0BhdXRoZW50aWNhdGVkJyxcbiAgREVQUkVDQVRFRF9BTk9OWU1PVVM6ICdAYW5vbnltb3VzJyxcbn07XG5cbmV4cG9ydCBjb25zdCBIVFRQX1NUQVRVUyA9IHtcbiAgT0s6IDIwMCxcbiAgQ1JFQVRFRDogMjAxLFxuICBNVUxUSVBMRV9DSE9JQ0VTOiAzMDAsXG4gIFJFRElSRUNUOiAzMDIsXG4gIE5PVF9NT0RJRklFRDogMzA0LFxuICBCQURfUkVRVUVTVDogNDAwLFxuICBVTkFVVEhPUklaRUQ6IDQwMSxcbiAgRk9SQklEREVOOiA0MDMsXG4gIE5PVF9GT1VORDogNDA0LFxuICBDT05GTElDVDogNDA5LFxuICBVTlNVUFBPUlRFRF9NRURJQTogNDE1LFxuICBCQURfREFUQTogNDIyLFxuICBJTlRFUk5BTF9FUlJPUjogNTAwLFxuICBOT1RfSU1QTEVNRU5URUQ6IDUwMSxcbiAgU0VSVklDRV9VTkFWQUlMQUJMRTogNTAzLFxuICBMT09QX0RFVEVDVEVEOiA1MDgsXG59O1xuXG5leHBvcnQgY29uc3QgQVBJX01FU1NBR0UgPSB7XG4gIFBLR19DUkVBVEVEOiAnY3JlYXRlZCBuZXcgcGFja2FnZScsXG4gIFBLR19DSEFOR0VEOiAncGFja2FnZSBjaGFuZ2VkJyxcbiAgUEtHX1JFTU9WRUQ6ICdwYWNrYWdlIHJlbW92ZWQnLFxuICBQS0dfUFVCTElTSEVEOiAncGFja2FnZSBwdWJsaXNoZWQnLFxuICBUQVJCQUxMX1VQTE9BREVEOiAndGFyYmFsbCB1cGxvYWRlZCBzdWNjZXNzZnVsbHknLFxuICBUQVJCQUxMX1JFTU9WRUQ6ICd0YXJiYWxsIHJlbW92ZWQnLFxuICBUQUdfVVBEQVRFRDogJ3RhZ3MgdXBkYXRlZCcsXG4gIFRBR19SRU1PVkVEOiAndGFnIHJlbW92ZWQnLFxuICBUQUdfQURERUQ6ICdwYWNrYWdlIHRhZ2dlZCcsXG4gIExPR0dFRF9PVVQ6ICdMb2dnZWQgb3V0Jyxcbn07XG5cbmV4cG9ydCBjb25zdCBTVVBQT1JUX0VSUk9SUyA9IHtcbiAgUExVR0lOX01JU1NJTkdfSU5URVJGQUNFOiAndGhlIHBsdWdpbiBkb2VzIG5vdCBwcm92aWRlIGltcGxlbWVudGF0aW9uIG9mIHRoZSByZXF1ZXN0ZWQgZmVhdHVyZScsXG4gIFRGQV9ESVNBQkxFRDogJ3RoZSB0d28tZmFjdG9yIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCB5ZXQgc3VwcG9ydGVkJyxcbiAgU1RPUkFHRV9OT1RfSU1QTEVNRU5UOiAndGhlIHN0b3JhZ2UgZG9lcyBub3Qgc3VwcG9ydCB0b2tlbiBzYXZpbmcnLFxuICBQQVJBTUVURVJTX05PVF9WQUxJRDogJ3RoZSBwYXJhbWV0ZXJzIGFyZSBub3QgdmFsaWQnLFxufTtcblxuZXhwb3J0IGNvbnN0IEFQSV9FUlJPUiA9IHtcbiAgUEFTU1dPUkRfU0hPUlQ6IChwYXNzTGVuZ3RoOiBudW1iZXIgPSBERUZBVUxUX01JTl9MSU1JVF9QQVNTV09SRCkgPT4gYFRoZSBwcm92aWRlZCBwYXNzd29yZCBpcyB0b28gc2hvcnQuIFBsZWFzZSBwaWNrIGEgcGFzc3dvcmQgbG9uZ2VyIHRoYW4gJHtwYXNzTGVuZ3RofSBjaGFyYWN0ZXJzLmAsXG4gIE1VU1RfQkVfTE9HR0VEOiAnWW91IG11c3QgYmUgbG9nZ2VkIGluIHRvIHB1Ymxpc2ggcGFja2FnZXMuJyxcbiAgUExVR0lOX0VSUk9SOiAnYnVnIGluIHRoZSBhdXRoIHBsdWdpbiBzeXN0ZW0nLFxuICBDT05GSUdfQkFEX0ZPUk1BVDogJ2NvbmZpZyBmaWxlIG11c3QgYmUgYW4gb2JqZWN0JyxcbiAgQkFEX1VTRVJOQU1FX1BBU1NXT1JEOiAnYmFkIHVzZXJuYW1lL3Bhc3N3b3JkLCBhY2Nlc3MgZGVuaWVkJyxcbiAgTk9fUEFDS0FHRTogJ25vIHN1Y2ggcGFja2FnZSBhdmFpbGFibGUnLFxuICBQQUNLQUdFX0NBTk5PVF9CRV9BRERFRDogJ3RoaXMgcGFja2FnZSBjYW5ub3QgYmUgYWRkZWQnLFxuICBCQURfREFUQTogJ2JhZCBkYXRhJyxcbiAgTk9UX0FMTE9XRUQ6ICdub3QgYWxsb3dlZCB0byBhY2Nlc3MgcGFja2FnZScsXG4gIE5PVF9BTExPV0VEX1BVQkxJU0g6ICdub3QgYWxsb3dlZCB0byBwdWJsaXNoIHBhY2thZ2UnLFxuICBJTlRFUk5BTF9TRVJWRVJfRVJST1I6ICdpbnRlcm5hbCBzZXJ2ZXIgZXJyb3InLFxuICBVTktOT1dOX0VSUk9SOiAndW5rbm93biBlcnJvcicsXG4gIE5PVF9QQUNLQUdFX1VQTElOSzogJ3BhY2thZ2UgZG9lcyBub3QgZXhpc3Qgb24gdXBsaW5rJyxcbiAgVVBMSU5LX09GRkxJTkVfUFVCTElTSDogJ29uZSBvZiB0aGUgdXBsaW5rcyBpcyBkb3duLCByZWZ1c2UgdG8gcHVibGlzaCcsXG4gIFVQTElOS19PRkZMSU5FOiAndXBsaW5rIGlzIG9mZmxpbmUnLFxuICBDT05URU5UX01JU01BVENIOiAnY29udGVudCBsZW5ndGggbWlzbWF0Y2gnLFxuICBOT1RfRklMRV9VUExJTks6IFwiZmlsZSBkb2Vzbid0IGV4aXN0IG9uIHVwbGlua1wiLFxuICBNQVhfVVNFUlNfUkVBQ0hFRDogJ21heGltdW0gYW1vdW50IG9mIHVzZXJzIHJlYWNoZWQnLFxuICBWRVJTSU9OX05PVF9FWElTVDogXCJ0aGlzIHZlcnNpb24gZG9lc24ndCBleGlzdFwiLFxuICBGSUxFX05PVF9GT1VORDogJ0ZpbGUgbm90IGZvdW5kJyxcbiAgVU5TVVBPUlRFRF9SRUdJU1RSWV9DQUxMOiAndW5zdXBwb3J0ZWQgcmVnaXN0cnkgY2FsbCcsXG4gIEJBRF9TVEFUVVNfQ09ERTogJ2JhZCBzdGF0dXMgY29kZScsXG4gIFBBQ0tBR0VfRVhJU1Q6ICd0aGlzIHBhY2thZ2UgaXMgYWxyZWFkeSBwcmVzZW50JyxcbiAgQkFEX0FVVEhfSEVBREVSOiAnYmFkIGF1dGhvcml6YXRpb24gaGVhZGVyJyxcbiAgV0VCX0RJU0FCTEVEOiAnV2ViIGludGVyZmFjZSBpcyBkaXNhYmxlZCBpbiB0aGUgY29uZmlnIGZpbGUnLFxuICBERVBSRUNBVEVEX0JBU0lDX0hFQURFUjogJ2Jhc2ljIGF1dGhlbnRpY2F0aW9uIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgSldUIGluc3RlYWQnLFxuICBCQURfRk9STUFUX1VTRVJfR1JPVVA6ICd1c2VyIGdyb3VwcyBpcyBkaWZmZXJlbnQgdGhhbiBhbiBhcnJheScsXG4gIFJFU09VUkNFX1VOQVZBSUxBQkxFOiAncmVzb3VyY2UgdW5hdmFpbGFibGUnLFxuICBCQURfUEFDS0FHRV9EQVRBOiAnYmFkIGluY29taW5nIHBhY2thZ2UgZGF0YScsXG4gIFVTRVJOQU1FX1BBU1NXT1JEX1JFUVVJUkVEOiAndXNlcm5hbWUgYW5kIHBhc3N3b3JkIGlzIHJlcXVpcmVkJyxcbiAgVVNFUk5BTUVfQUxSRUFEWV9SRUdJU1RFUkVEOiAndXNlcm5hbWUgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyxcbn07XG5cbmV4cG9ydCBjb25zdCBBUFBfRVJST1IgPSB7XG4gIENPTkZJR19OT1RfVkFMSUQ6ICdDT05GSUc6IGl0IGRvZXMgbm90IGxvb2sgbGlrZSBhIHZhbGlkIGNvbmZpZyBmaWxlJyxcbiAgUFJPRklMRV9FUlJPUjogJ3Byb2ZpbGUgdW5leHBlY3RlZCBlcnJvcicsXG4gIFBBU1NXT1JEX1ZBTElEQVRJT046ICdub3QgdmFsaWQgcGFzc3dvcmQnLFxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfTk9fUkVBRE1FID0gJ0VSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCEnO1xuZXhwb3J0IGNvbnN0IE1PRFVMRV9OT1RfRk9VTkQgPSAnTU9EVUxFX05PVF9GT1VORCc7XG5cbmV4cG9ydCBjb25zdCBXRUJfVElUTEUgPSAnVmVyZGFjY2lvJztcblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfQUNDRVNTID0ge1xuICBTQ09QRTogJ0AqLyonLFxuICBBTEw6ICcqKicsXG59O1xuXG5leHBvcnQgY29uc3QgU1RPUkFHRSA9IHtcbiAgUEFDS0FHRV9GSUxFX05BTUU6ICdwYWNrYWdlLmpzb24nLFxuICBGSUxFX0VYSVNUX0VSUk9SOiAnRUVYSVNUUycsXG4gIE5PX1NVQ0hfRklMRV9FUlJPUjogJ0VOT0VOVCcsXG4gIERFRkFVTFRfUkVWSVNJT046ICcwLTAwMDAwMDAwMDAwMDAwMDAnLFxufTtcbiJdfQ==
@@ -18,9 +18,9 @@ var _jsonwebtoken = _interopRequireDefault(require("jsonwebtoken"));
18
18
 
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
 
21
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
22
22
 
23
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
24
24
 
25
25
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26
26
 
@@ -84,4 +84,4 @@ async function signPayload(payload, secretOrPrivateKey, options) {
84
84
  function verifyPayload(token, secretOrPrivateKey) {
85
85
  return _jsonwebtoken.default.verify(token, secretOrPrivateKey);
86
86
  }
87
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3J5cHRvLXV0aWxzLnRzIl0sIm5hbWVzIjpbImRlZmF1bHRBbGdvcml0aG0iLCJkZWZhdWx0VGFyYmFsbEhhc2hBbGdvcml0aG0iLCJhZXNFbmNyeXB0IiwiYnVmIiwic2VjcmV0IiwiYyIsImIxIiwidXBkYXRlIiwiYjIiLCJmaW5hbCIsIkJ1ZmZlciIsImNvbmNhdCIsImFlc0RlY3J5cHQiLCJfIiwiYWxsb2MiLCJjcmVhdGVUYXJiYWxsSGFzaCIsInN0cmluZ1RvTUQ1IiwiZGF0YSIsImRpZ2VzdCIsImdlbmVyYXRlUmFuZG9tSGV4U3RyaW5nIiwibGVuZ3RoIiwidG9TdHJpbmciLCJzaWduUGF5bG9hZCIsInBheWxvYWQiLCJzZWNyZXRPclByaXZhdGVLZXkiLCJvcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJqd3QiLCJzaWduIiwibm90QmVmb3JlIiwiZXJyb3IiLCJ0b2tlbiIsInZlcmlmeVBheWxvYWQiLCJ2ZXJpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFJTyxNQUFNQSxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFDQSxNQUFNQywyQkFBMkIsR0FBRyxNQUFwQzs7O0FBRUEsU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBaUNDLE1BQWpDLEVBQXlEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLFFBQU1DLENBQUMsR0FBRywwQkFBYUwsZ0JBQWIsRUFBK0JJLE1BQS9CLENBQVY7QUFDQSxRQUFNRSxFQUFFLEdBQUdELENBQUMsQ0FBQ0UsTUFBRixDQUFTSixHQUFULENBQVg7QUFDQSxRQUFNSyxFQUFFLEdBQUdILENBQUMsQ0FBQ0ksS0FBRixFQUFYO0FBQ0EsU0FBT0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBQ0wsRUFBRCxFQUFLRSxFQUFMLENBQWQsQ0FBUDtBQUNEOztBQUVNLFNBQVNJLFVBQVQsQ0FBb0JULEdBQXBCLEVBQWlDQyxNQUFqQyxFQUF5RDtBQUM5RCxNQUFJO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsVUFBTUMsQ0FBQyxHQUFHLDRCQUFlTCxnQkFBZixFQUFpQ0ksTUFBakMsQ0FBVjtBQUNBLFVBQU1FLEVBQUUsR0FBR0QsQ0FBQyxDQUFDRSxNQUFGLENBQVNKLEdBQVQsQ0FBWDtBQUNBLFVBQU1LLEVBQUUsR0FBR0gsQ0FBQyxDQUFDSSxLQUFGLEVBQVg7QUFDQSxXQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFDTCxFQUFELEVBQUtFLEVBQUwsQ0FBZCxDQUFQO0FBQ0QsR0FSRCxDQVFFLE9BQU9LLENBQVAsRUFBVTtBQUNWLFdBQU9ILE1BQU0sQ0FBQ0ksS0FBUCxDQUFhLENBQWIsQ0FBUDtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0MsaUJBQVQsR0FBbUM7QUFDeEMsU0FBTyx3QkFBV2QsMkJBQVgsQ0FBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNlLFdBQVQsQ0FBcUJDLElBQXJCLEVBQW9EO0FBQ3pELFNBQU8sd0JBQVcsS0FBWCxFQUFrQlYsTUFBbEIsQ0FBeUJVLElBQXpCLEVBQStCQyxNQUEvQixDQUFzQyxLQUF0QyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU0MsdUJBQVQsQ0FBaUNDLE1BQU0sR0FBRyxDQUExQyxFQUFxRDtBQUMxRCxTQUFPLCtCQUFrQkEsTUFBbEIsRUFBMEJDLFFBQTFCLENBQW1DLEtBQW5DLENBQVA7QUFDRDs7QUFFTSxlQUFlQyxXQUFmLENBQ0xDLE9BREssRUFFTEMsa0JBRkssRUFHTEMsT0FISyxFQUlZO0FBQ2pCLFNBQU8sSUFBSUMsT0FBSixDQUFZLFVBQVVDLE9BQVYsRUFBbUJDLE1BQW5CLEVBQTRDO0FBQzdELFdBQU9DLHNCQUFJQyxJQUFKLENBQ0xQLE9BREssRUFFTEMsa0JBRks7QUFJSE8sTUFBQUEsU0FBUyxFQUFFO0FBSlIsT0FLQU4sT0FMQSxHQU9MLENBQUNPLEtBQUQsRUFBUUMsS0FBUixLQUFtQkQsS0FBSyxHQUFHSixNQUFNLENBQUNJLEtBQUQsQ0FBVCxHQUFtQkwsT0FBTyxDQUFDTSxLQUFELENBUDdDLENBQVA7QUFTRCxHQVZNLENBQVA7QUFXRDs7QUFFTSxTQUFTQyxhQUFULENBQXVCRCxLQUF2QixFQUFzQ1Qsa0JBQXRDLEVBQThFO0FBQ25GLFNBQU9LLHNCQUFJTSxNQUFKLENBQVdGLEtBQVgsRUFBa0JULGtCQUFsQixDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVEZWNpcGhlciwgY3JlYXRlQ2lwaGVyLCBjcmVhdGVIYXNoLCBwc2V1ZG9SYW5kb21CeXRlcywgSGFzaCB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgand0IGZyb20gJ2pzb253ZWJ0b2tlbic7XG5cbmltcG9ydCB7IEpXVFNpZ25PcHRpb25zLCBSZW1vdGVVc2VyIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0QWxnb3JpdGhtID0gJ2FlczE5Mic7XG5leHBvcnQgY29uc3QgZGVmYXVsdFRhcmJhbGxIYXNoQWxnb3JpdGhtID0gJ3NoYTEnO1xuXG5leHBvcnQgZnVuY3Rpb24gYWVzRW5jcnlwdChidWY6IEJ1ZmZlciwgc2VjcmV0OiBzdHJpbmcpOiBCdWZmZXIge1xuICAvLyBkZXByZWNhdGVkIChpdCB3aWxsIGJlIG1pZ3JhdGVkIGluIFZlcmRhY2NpbyA1KSwgaXQgaXMgYSBicmVha2luZyBjaGFuZ2VcbiAgLy8gaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9jcnlwdG8uaHRtbCNjcnlwdG9fY3J5cHRvX2NyZWF0ZWNpcGhlcl9hbGdvcml0aG1fcGFzc3dvcmRfb3B0aW9uc1xuICAvLyBodHRwczovL3d3dy5ncmFpbmdlci54eXovY2hhbmdpbmctZnJvbS1jaXBoZXItdG8tY2lwaGVyaXYvXG4gIGNvbnN0IGMgPSBjcmVhdGVDaXBoZXIoZGVmYXVsdEFsZ29yaXRobSwgc2VjcmV0KTtcbiAgY29uc3QgYjEgPSBjLnVwZGF0ZShidWYpO1xuICBjb25zdCBiMiA9IGMuZmluYWwoKTtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2IxLCBiMl0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWVzRGVjcnlwdChidWY6IEJ1ZmZlciwgc2VjcmV0OiBzdHJpbmcpOiBCdWZmZXIge1xuICB0cnkge1xuICAgIC8vIGRlcHJlY2F0ZWQgKGl0IHdpbGwgYmUgbWlncmF0ZWQgaW4gVmVyZGFjY2lvIDUpLCBpdCBpcyBhIGJyZWFraW5nIGNoYW5nZVxuICAgIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY3J5cHRvLmh0bWwjY3J5cHRvX2NyeXB0b19jcmVhdGVkZWNpcGhlcl9hbGdvcml0aG1fcGFzc3dvcmRfb3B0aW9uc1xuICAgIC8vIGh0dHBzOi8vd3d3LmdyYWluZ2VyLnh5ei9jaGFuZ2luZy1mcm9tLWNpcGhlci10by1jaXBoZXJpdi9cbiAgICBjb25zdCBjID0gY3JlYXRlRGVjaXBoZXIoZGVmYXVsdEFsZ29yaXRobSwgc2VjcmV0KTtcbiAgICBjb25zdCBiMSA9IGMudXBkYXRlKGJ1Zik7XG4gICAgY29uc3QgYjIgPSBjLmZpbmFsKCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2IxLCBiMl0pO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGFyYmFsbEhhc2goKTogSGFzaCB7XG4gIHJldHVybiBjcmVhdGVIYXNoKGRlZmF1bHRUYXJiYWxsSGFzaEFsZ29yaXRobSk7XG59XG5cbi8qKlxuICogRXhwcmVzcyBkb2Vzbid0IGRvIEVUQUdTIHdpdGggcmVxdWVzdHMgPD0gMTAyNGJcbiAqIHdlIHVzZSBtZDUgaGVyZSwgaXQgd29ya3Mgd2VsbCBvbiAxaysgYnl0ZXMsIGJ1dCBzdWNrcyB3aXRoIGZld2VyIGRhdGFcbiAqIGNvdWxkIGltcHJvdmUgcGVyZm9ybWFuY2UgdXNpbmcgY3JjMzIgYWZ0ZXIgYmVuY2htYXJrcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb01ENShkYXRhOiBCdWZmZXIgfCBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnbWQ1JykudXBkYXRlKGRhdGEpLmRpZ2VzdCgnaGV4Jyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUhleFN0cmluZyhsZW5ndGggPSA4KTogc3RyaW5nIHtcbiAgcmV0dXJuIHBzZXVkb1JhbmRvbUJ5dGVzKGxlbmd0aCkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2lnblBheWxvYWQoXG4gIHBheWxvYWQ6IFJlbW90ZVVzZXIsXG4gIHNlY3JldE9yUHJpdmF0ZUtleTogc3RyaW5nLFxuICBvcHRpb25zOiBKV1RTaWduT3B0aW9uc1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBqd3Quc2lnbihcbiAgICAgIHBheWxvYWQsXG4gICAgICBzZWNyZXRPclByaXZhdGVLZXksXG4gICAgICB7XG4gICAgICAgIG5vdEJlZm9yZTogJzEnLCAvLyBNYWtlIHN1cmUgdGhlIHRpbWUgd2lsbCBub3Qgcm9sbGJhY2sgOilcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgICAgfSxcbiAgICAgIChlcnJvciwgdG9rZW4pID0+IChlcnJvciA/IHJlamVjdChlcnJvcikgOiByZXNvbHZlKHRva2VuKSlcbiAgICApO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVBheWxvYWQodG9rZW46IHN0cmluZywgc2VjcmV0T3JQcml2YXRlS2V5OiBzdHJpbmcpOiBSZW1vdGVVc2VyIHtcbiAgcmV0dXJuIGp3dC52ZXJpZnkodG9rZW4sIHNlY3JldE9yUHJpdmF0ZUtleSk7XG59XG4iXX0=
87
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3J5cHRvLXV0aWxzLnRzIl0sIm5hbWVzIjpbImRlZmF1bHRBbGdvcml0aG0iLCJkZWZhdWx0VGFyYmFsbEhhc2hBbGdvcml0aG0iLCJhZXNFbmNyeXB0IiwiYnVmIiwic2VjcmV0IiwiYyIsImIxIiwidXBkYXRlIiwiYjIiLCJmaW5hbCIsIkJ1ZmZlciIsImNvbmNhdCIsImFlc0RlY3J5cHQiLCJfIiwiYWxsb2MiLCJjcmVhdGVUYXJiYWxsSGFzaCIsInN0cmluZ1RvTUQ1IiwiZGF0YSIsImRpZ2VzdCIsImdlbmVyYXRlUmFuZG9tSGV4U3RyaW5nIiwibGVuZ3RoIiwidG9TdHJpbmciLCJzaWduUGF5bG9hZCIsInBheWxvYWQiLCJzZWNyZXRPclByaXZhdGVLZXkiLCJvcHRpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJqd3QiLCJzaWduIiwibm90QmVmb3JlIiwiZXJyb3IiLCJ0b2tlbiIsInZlcmlmeVBheWxvYWQiLCJ2ZXJpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7Ozs7Ozs7Ozs7QUFJTyxNQUFNQSxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFDQSxNQUFNQywyQkFBMkIsR0FBRyxNQUFwQzs7O0FBRUEsU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBaUNDLE1BQWpDLEVBQXlEO0FBQzlEO0FBQ0E7QUFDQTtBQUNBLFFBQU1DLENBQUMsR0FBRywwQkFBYUwsZ0JBQWIsRUFBK0JJLE1BQS9CLENBQVY7QUFDQSxRQUFNRSxFQUFFLEdBQUdELENBQUMsQ0FBQ0UsTUFBRixDQUFTSixHQUFULENBQVg7QUFDQSxRQUFNSyxFQUFFLEdBQUdILENBQUMsQ0FBQ0ksS0FBRixFQUFYO0FBQ0EsU0FBT0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsQ0FBQ0wsRUFBRCxFQUFLRSxFQUFMLENBQWQsQ0FBUDtBQUNEOztBQUVNLFNBQVNJLFVBQVQsQ0FBb0JULEdBQXBCLEVBQWlDQyxNQUFqQyxFQUF5RDtBQUM5RCxNQUFJO0FBQ0Y7QUFDQTtBQUNBO0FBQ0EsVUFBTUMsQ0FBQyxHQUFHLDRCQUFlTCxnQkFBZixFQUFpQ0ksTUFBakMsQ0FBVjtBQUNBLFVBQU1FLEVBQUUsR0FBR0QsQ0FBQyxDQUFDRSxNQUFGLENBQVNKLEdBQVQsQ0FBWDtBQUNBLFVBQU1LLEVBQUUsR0FBR0gsQ0FBQyxDQUFDSSxLQUFGLEVBQVg7QUFDQSxXQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxDQUFDTCxFQUFELEVBQUtFLEVBQUwsQ0FBZCxDQUFQO0FBQ0QsR0FSRCxDQVFFLE9BQU9LLENBQVAsRUFBVTtBQUNWLFdBQU9ILE1BQU0sQ0FBQ0ksS0FBUCxDQUFhLENBQWIsQ0FBUDtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0MsaUJBQVQsR0FBbUM7QUFDeEMsU0FBTyx3QkFBV2QsMkJBQVgsQ0FBUDtBQUNEO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLFNBQVNlLFdBQVQsQ0FBcUJDLElBQXJCLEVBQW9EO0FBQ3pELFNBQU8sd0JBQVcsS0FBWCxFQUFrQlYsTUFBbEIsQ0FBeUJVLElBQXpCLEVBQStCQyxNQUEvQixDQUFzQyxLQUF0QyxDQUFQO0FBQ0Q7O0FBRU0sU0FBU0MsdUJBQVQsQ0FBaUNDLE1BQU0sR0FBRyxDQUExQyxFQUFxRDtBQUMxRCxTQUFPLCtCQUFrQkEsTUFBbEIsRUFBMEJDLFFBQTFCLENBQW1DLEtBQW5DLENBQVA7QUFDRDs7QUFFTSxlQUFlQyxXQUFmLENBQTJCQyxPQUEzQixFQUFnREMsa0JBQWhELEVBQTRFQyxPQUE1RSxFQUFzSDtBQUMzSCxTQUFPLElBQUlDLE9BQUosQ0FBWSxVQUFVQyxPQUFWLEVBQW1CQyxNQUFuQixFQUE0QztBQUM3RCxXQUFPQyxzQkFBSUMsSUFBSixDQUNMUCxPQURLLEVBRUxDLGtCQUZLO0FBSUhPLE1BQUFBLFNBQVMsRUFBRTtBQUpSLE9BS0FOLE9BTEEsR0FPTCxDQUFDTyxLQUFELEVBQVFDLEtBQVIsS0FBbUJELEtBQUssR0FBR0osTUFBTSxDQUFDSSxLQUFELENBQVQsR0FBbUJMLE9BQU8sQ0FBQ00sS0FBRCxDQVA3QyxDQUFQO0FBU0QsR0FWTSxDQUFQO0FBV0Q7O0FBRU0sU0FBU0MsYUFBVCxDQUF1QkQsS0FBdkIsRUFBc0NULGtCQUF0QyxFQUE4RTtBQUNuRixTQUFPSyxzQkFBSU0sTUFBSixDQUFXRixLQUFYLEVBQWtCVCxrQkFBbEIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFzaCwgY3JlYXRlQ2lwaGVyLCBjcmVhdGVEZWNpcGhlciwgY3JlYXRlSGFzaCwgcHNldWRvUmFuZG9tQnl0ZXMgfSBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGp3dCBmcm9tICdqc29ud2VidG9rZW4nO1xuXG5pbXBvcnQgeyBKV1RTaWduT3B0aW9ucywgUmVtb3RlVXNlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFsZ29yaXRobSA9ICdhZXMxOTInO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRUYXJiYWxsSGFzaEFsZ29yaXRobSA9ICdzaGExJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFlc0VuY3J5cHQoYnVmOiBCdWZmZXIsIHNlY3JldDogc3RyaW5nKTogQnVmZmVyIHtcbiAgLy8gZGVwcmVjYXRlZCAoaXQgd2lsbCBiZSBtaWdyYXRlZCBpbiBWZXJkYWNjaW8gNSksIGl0IGlzIGEgYnJlYWtpbmcgY2hhbmdlXG4gIC8vIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvY3J5cHRvLmh0bWwjY3J5cHRvX2NyeXB0b19jcmVhdGVjaXBoZXJfYWxnb3JpdGhtX3Bhc3N3b3JkX29wdGlvbnNcbiAgLy8gaHR0cHM6Ly93d3cuZ3JhaW5nZXIueHl6L2NoYW5naW5nLWZyb20tY2lwaGVyLXRvLWNpcGhlcml2L1xuICBjb25zdCBjID0gY3JlYXRlQ2lwaGVyKGRlZmF1bHRBbGdvcml0aG0sIHNlY3JldCk7XG4gIGNvbnN0IGIxID0gYy51cGRhdGUoYnVmKTtcbiAgY29uc3QgYjIgPSBjLmZpbmFsKCk7XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFtiMSwgYjJdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFlc0RlY3J5cHQoYnVmOiBCdWZmZXIsIHNlY3JldDogc3RyaW5nKTogQnVmZmVyIHtcbiAgdHJ5IHtcbiAgICAvLyBkZXByZWNhdGVkIChpdCB3aWxsIGJlIG1pZ3JhdGVkIGluIFZlcmRhY2NpbyA1KSwgaXQgaXMgYSBicmVha2luZyBjaGFuZ2VcbiAgICAvLyBodHRwczovL25vZGVqcy5vcmcvYXBpL2NyeXB0by5odG1sI2NyeXB0b19jcnlwdG9fY3JlYXRlZGVjaXBoZXJfYWxnb3JpdGhtX3Bhc3N3b3JkX29wdGlvbnNcbiAgICAvLyBodHRwczovL3d3dy5ncmFpbmdlci54eXovY2hhbmdpbmctZnJvbS1jaXBoZXItdG8tY2lwaGVyaXYvXG4gICAgY29uc3QgYyA9IGNyZWF0ZURlY2lwaGVyKGRlZmF1bHRBbGdvcml0aG0sIHNlY3JldCk7XG4gICAgY29uc3QgYjEgPSBjLnVwZGF0ZShidWYpO1xuICAgIGNvbnN0IGIyID0gYy5maW5hbCgpO1xuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtiMSwgYjJdKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRhcmJhbGxIYXNoKCk6IEhhc2gge1xuICByZXR1cm4gY3JlYXRlSGFzaChkZWZhdWx0VGFyYmFsbEhhc2hBbGdvcml0aG0pO1xufVxuXG4vKipcbiAqIEV4cHJlc3MgZG9lc24ndCBkbyBFVEFHUyB3aXRoIHJlcXVlc3RzIDw9IDEwMjRiXG4gKiB3ZSB1c2UgbWQ1IGhlcmUsIGl0IHdvcmtzIHdlbGwgb24gMWsrIGJ5dGVzLCBidXQgc3Vja3Mgd2l0aCBmZXdlciBkYXRhXG4gKiBjb3VsZCBpbXByb3ZlIHBlcmZvcm1hbmNlIHVzaW5nIGNyYzMyIGFmdGVyIGJlbmNobWFya3MuXG4gKiBAcGFyYW0ge09iamVjdH0gZGF0YVxuICogQHJldHVybiB7U3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nVG9NRDUoZGF0YTogQnVmZmVyIHwgc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ21kNScpLnVwZGF0ZShkYXRhKS5kaWdlc3QoJ2hleCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21IZXhTdHJpbmcobGVuZ3RoID0gOCk6IHN0cmluZyB7XG4gIHJldHVybiBwc2V1ZG9SYW5kb21CeXRlcyhsZW5ndGgpLnRvU3RyaW5nKCdoZXgnKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNpZ25QYXlsb2FkKHBheWxvYWQ6IFJlbW90ZVVzZXIsIHNlY3JldE9yUHJpdmF0ZUtleTogc3RyaW5nLCBvcHRpb25zOiBKV1RTaWduT3B0aW9ucyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gand0LnNpZ24oXG4gICAgICBwYXlsb2FkLFxuICAgICAgc2VjcmV0T3JQcml2YXRlS2V5LFxuICAgICAge1xuICAgICAgICBub3RCZWZvcmU6ICcxJywgLy8gTWFrZSBzdXJlIHRoZSB0aW1lIHdpbGwgbm90IHJvbGxiYWNrIDopXG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICB9LFxuICAgICAgKGVycm9yLCB0b2tlbikgPT4gKGVycm9yID8gcmVqZWN0KGVycm9yKSA6IHJlc29sdmUodG9rZW4pKVxuICAgICk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5UGF5bG9hZCh0b2tlbjogc3RyaW5nLCBzZWNyZXRPclByaXZhdGVLZXk6IHN0cmluZyk6IFJlbW90ZVVzZXIge1xuICByZXR1cm4gand0LnZlcmlmeSh0b2tlbiwgc2VjcmV0T3JQcml2YXRlS2V5KTtcbn1cbiJdfQ==
@@ -7,29 +7,27 @@ exports.default = void 0;
7
7
 
8
8
  var _assert = _interopRequireDefault(require("assert"));
9
9
 
10
- var _url = _interopRequireDefault(require("url"));
11
-
12
10
  var _debug = _interopRequireDefault(require("debug"));
13
11
 
14
12
  var _lodash = _interopRequireDefault(require("lodash"));
15
13
 
14
+ var _url = _interopRequireDefault(require("url"));
15
+
16
16
  var _localStorage = _interopRequireDefault(require("@verdaccio/local-storage"));
17
17
 
18
18
  var _streams = require("@verdaccio/streams");
19
19
 
20
20
  var _pluginLoader = _interopRequireDefault(require("../lib/plugin-loader"));
21
21
 
22
- var _utils = require("./utils");
23
-
24
- var _storageUtils = require("./storage-utils");
25
-
26
22
  var _constants = require("./constants");
27
23
 
28
24
  var _cryptoUtils = require("./crypto-utils");
29
25
 
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
+ var _storageUtils = require("./storage-utils");
27
+
28
+ var _utils = require("./utils");
31
29
 
32
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
31
 
34
32
  const debug = (0, _debug.default)('verdaccio:local-storage');
35
33
  /**
@@ -38,12 +36,6 @@ const debug = (0, _debug.default)('verdaccio:local-storage');
38
36
 
39
37
  class LocalStorage {
40
38
  constructor(config, logger) {
41
- _defineProperty(this, "config", void 0);
42
-
43
- _defineProperty(this, "storagePlugin", void 0);
44
-
45
- _defineProperty(this, "logger", void 0);
46
-
47
39
  this.logger = logger;
48
40
  this.config = config;
49
41
  this.storagePlugin = this._loadStorage(config, logger);
@@ -904,4 +896,4 @@ class LocalStorage {
904
896
 
905
897
  var _default = LocalStorage;
906
898
  exports.default = _default;
907
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkxvY2FsU3RvcmFnZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwic3RvcmFnZVBsdWdpbiIsIl9sb2FkU3RvcmFnZSIsImFkZFBhY2thZ2UiLCJuYW1lIiwicGtnIiwiY2FsbGJhY2siLCJzdG9yYWdlIiwiX2dldExvY2FsU3RvcmFnZSIsIl8iLCJpc05pbCIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiY3JlYXRlUGFja2FnZSIsImVyciIsImlzTnVsbCIsImNvZGUiLCJTVE9SQUdFIiwiRklMRV9FWElTVF9FUlJPUiIsIkhUVFBfU1RBVFVTIiwiQ09ORkxJQ1QiLCJnZXRDb25mbGljdCIsImxhdGVzdCIsInZlcnNpb25zIiwicmVtb3ZlUGFja2FnZSIsInJlYWRQYWNrYWdlIiwiZGF0YSIsIk5PX1NVQ0hfRklMRV9FUlJPUiIsIk5PVF9GT1VORCIsInJlbW92ZSIsInJlbW92ZUZhaWxlZCIsImVycm9yIiwiZ2V0QmFkRGF0YSIsIm1lc3NhZ2UiLCJkZWxldGVQYWNrYWdlIiwiUEFDS0FHRV9GSUxFX05BTUUiLCJhdHRhY2htZW50cyIsIk9iamVjdCIsImtleXMiLCJfYXR0YWNobWVudHMiLCJfZGVsZXRlQXR0YWNobWVudHMiLCJ1cGRhdGVWZXJzaW9ucyIsInBhY2thZ2VJbmZvIiwiX3JlYWRDcmVhdGVQYWNrYWdlIiwicGFja2FnZUxvY2FsSnNvbiIsImNoYW5nZSIsInJlYWRtZSIsInZlcnNpb25JZCIsInZlcnNpb24iLCJjb250cmlidXRvcnMiLCJkaXN0IiwidGFyYmFsbCIsInVybE9iamVjdCIsIlVybE5vZGUiLCJwYXJzZSIsImZpbGVuYW1lIiwicGF0aG5hbWUiLCJyZXBsYWNlIiwiX2Rpc3RmaWxlcyIsImhhc2giLCJ1cmwiLCJzaGEiLCJzaGFzdW0iLCJ1cExpbmsiLCJTeW1ib2wiLCJmb3IiLCJfdXBkYXRlVXBsaW5rVG9SZW1vdGVQcm90b2NvbCIsInRhZyIsIkRJU1RfVEFHUyIsInVwIiwiX3VwbGlua3MiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJuZWVkX2NoYW5nZSIsImV0YWciLCJmZXRjaGVkIiwiaXNFcXVhbCIsInRpbWUiLCJfd3JpdGVQYWNrYWdlIiwiYWRkVmVyc2lvbiIsIm1ldGFkYXRhIiwiX3VwZGF0ZVBhY2thZ2UiLCJjYiIsImhhc1ZlcnNpb24iLCJpc1N0cmluZyIsImVycm9yTWVzc2FnZSIsImdldEJhZFJlcXVlc3QiLCJjdXJyZW50RGF0ZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWF0ZWQiLCJhZGQiLCJhZGRGYWlsZWQiLCJtZXJnZVRhZ3MiLCJwa2dOYW1lIiwidGFncyIsIl9nZXRWZXJzaW9uTm90Rm91bmQiLCJBUElfRVJST1IiLCJWRVJTSU9OX05PVF9FWElTVCIsIl9nZXRGaWxlTm90QXZhaWxhYmxlIiwiY2hhbmdlUGFja2FnZSIsImluY29taW5nUGtnIiwicmV2aXNpb24iLCJsb2NhbERhdGEiLCJpbmNvbWluZ1ZlcnNpb24iLCJpbmZvIiwiZmlsZSIsImluY29taW5nRGVwcmVjYXRlZCIsImRlcHJlY2F0ZWQiLCJtb2RpZmllZCIsIlVTRVJTIiwicmVtb3ZlVGFyYmFsbCIsImFkZFRhcmJhbGwiLCJsZW5ndGgiLCJzaGFPbmVIYXNoIiwidXBsb2FkU3RyZWFtIiwiVXBsb2FkVGFyYmFsbCIsIl90cmFuc2Zvcm0iLCJhYm9ydCIsImRvbmUiLCJhcmdzIiwidXBkYXRlIiwiYXBwbGllZERhdGEiLCJhcHBseSIsInByb2Nlc3MiLCJuZXh0VGljayIsImVtaXQiLCJnZXRGb3JiaWRkZW4iLCJ3cml0ZVN0cmVhbSIsIndyaXRlVGFyYmFsbCIsIm9uIiwiZ2V0UGFja2FnZU1ldGFkYXRhIiwiX2VyciIsIl9yZXMiLCJ1cGRhdGVyIiwiZGlnZXN0IiwicGlwZSIsImdldFRhcmJhbGwiLCJfY3JlYXRlRmFpbHVyZVN0cmVhbVJlc3BvbnNlIiwiX3N0cmVhbVN1Y2Nlc3NSZWFkVGFyQmFsbCIsInN0cmVhbSIsIlJlYWRUYXJiYWxsIiwicmVhZFRhcmJhbGxTdHJlYW0iLCJyZWFkVGFyYmFsbCIsImU0MDQiLCJjb250ZW50IiwiX3JlYWRQYWNrYWdlIiwic2VhcmNoIiwic3RhcnRLZXkiLCJvcHRpb25zIiwib2JqZWN0TW9kZSIsIl9zZWFyY2hFYWNoUGFja2FnZSIsIml0ZW0iLCJwYXJzZUludCIsInJlc3VsdCIsInB1c2giLCJvbkVuZCIsImVuZCIsImdldFBhY2thZ2VTdG9yYWdlIiwiX2ludGVybmFsRXJyb3IiLCJvblBhY2thZ2UiLCJ3YXJuIiwidmFsaWRhdGVOYW1lIiwiX2NyZWF0ZU5ld1BhY2thZ2UiLCJnZXRJbnRlcm5hbEVycm9yIiwidXBkYXRlSGFuZGxlciIsInVwZGF0ZVBhY2thZ2UiLCJiaW5kIiwibm9ybWFsaXplUGFja2FnZSIsImpzb24iLCJzYXZlUGFja2FnZSIsIl9zZXREZWZhdWx0UmV2aXNpb24iLCJfcmV2IiwiREVGQVVMVF9SRVZJU0lPTiIsIl9kZWJ1ZyIsInVubGlua05leHQiLCJpc0VtcHR5IiwiYXR0YWNobWVudCIsInNoaWZ0IiwidXBMaW5rS2V5IiwidGFyYmFsbFVybCIsInVwbGlua1VybCIsInVwbGlua3MiLCJob3N0IiwicHJvdG9jb2wiLCJyZWdpc3RyeSIsImZvcm1hdCIsImdldFNlY3JldCIsInNlY3JldEtleSIsInNldFNlY3JldCIsImNoZWNrU2VjcmV0S2V5IiwiU3RvcmFnZSIsIl9sb2FkU3RvcmVQbHVnaW4iLCJMb2NhbERhdGFiYXNlIiwicGx1Z2luX3BhcmFtcyIsInBsdWdpbnMiLCJzdG9yZSIsInBsdWdpbiIsImhlYWQiLCJzYXZlVG9rZW4iLCJ0b2tlbiIsImlzRnVuY3Rpb24iLCJQcm9taXNlIiwicmVqZWN0IiwiZ2V0Q29kZSIsIlNFUlZJQ0VfVU5BVkFJTEFCTEUiLCJTVVBQT1JUX0VSUk9SUyIsIlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSIsImRlbGV0ZVRva2VuIiwidXNlciIsInRva2VuS2V5IiwicmVh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a00sT0FBVixDQUFrQjFMLHVCQUFZMkwsbUJBQTlCLEVBQW1EQywwQkFBZUMsd0JBQWxFLENBQWYsQ0FBUDtBQUNEOztBQUVELFdBQU8sS0FBSy9NLGFBQUwsQ0FBbUJ1TSxTQUFuQixDQUE2QkMsS0FBN0IsQ0FBUDtBQUNEOztBQUVNUSxFQUFBQSxXQUFXLENBQUNDLElBQUQsRUFBZUMsUUFBZixFQUErQztBQUMvRCxRQUFJMU0sZ0JBQUVpTSxVQUFGLENBQWEsS0FBS3pNLGFBQUwsQ0FBbUJnTixXQUFoQyxNQUFpRCxLQUFyRCxFQUE0RDtBQUMxRCxhQUFPTixPQUFPLENBQUNDLE1BQVIsQ0FBZWpNLGlCQUFVa00sT0FBVixDQUFrQjFMLHVCQUFZMkwsbUJBQTlCLEVBQW1EQywwQkFBZUMsd0JBQWxFLENBQWYsQ0FBUDtBQUNEOztBQUVELFdBQU8sS0FBSy9NLGFBQUwsQ0FBbUJnTixXQUFuQixDQUErQkMsSUFBL0IsRUFBcUNDLFFBQXJDLENBQVA7QUFDRDs7QUFFTUMsRUFBQUEsVUFBVSxDQUFDQyxNQUFELEVBQXdDO0FBQ3ZELFFBQUk1TSxnQkFBRWlNLFVBQUYsQ0FBYSxLQUFLek0sYUFBTCxDQUFtQm1OLFVBQWhDLE1BQWdELEtBQXBELEVBQTJEO0FBQ3pELGFBQU9ULE9BQU8sQ0FBQ0MsTUFBUixDQUFlak0saUJBQVVrTSxPQUFWLENBQWtCMUwsdUJBQVkyTCxtQkFBOUIsRUFBbURDLDBCQUFlQyx3QkFBbEUsQ0FBZixDQUFQO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLL00sYUFBTCxDQUFtQm1OLFVBQW5CLENBQThCQyxNQUE5QixDQUFQO0FBQ0Q7O0FBdjBCb0M7O2VBMDBCeEJ4TixZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IFVybE5vZGUgZnJvbSAndXJsJztcbmltcG9ydCBidWlsRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBMb2NhbERhdGFiYXNlIGZyb20gJ0B2ZXJkYWNjaW8vbG9jYWwtc3RvcmFnZSc7XG5pbXBvcnQgeyBVcGxvYWRUYXJiYWxsLCBSZWFkVGFyYmFsbCB9IGZyb20gJ0B2ZXJkYWNjaW8vc3RyZWFtcyc7XG5pbXBvcnQge1xuICBUb2tlbixcbiAgVG9rZW5GaWx0ZXIsXG4gIFBhY2thZ2UsXG4gIENvbmZpZyxcbiAgSVVwbG9hZFRhcmJhbGwsXG4gIElSZWFkVGFyYmFsbCxcbiAgTWVyZ2VUYWdzLFxuICBWZXJzaW9uLFxuICBEaXN0RmlsZSxcbiAgQ2FsbGJhY2ssXG4gIExvZ2dlcixcbiAgSVBsdWdpblN0b3JhZ2UsXG4gIElQYWNrYWdlU3RvcmFnZSxcbiAgQXV0aG9yLFxuICBDYWxsYmFja0FjdGlvbixcbiAgb25TZWFyY2hQYWNrYWdlLFxuICBvbkVuZFNlYXJjaFBhY2thZ2UsXG4gIFN0b3JhZ2VVcGRhdGVDYWxsYmFjayxcbn0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgeyBWZXJkYWNjaW9FcnJvciB9IGZyb20gJ0B2ZXJkYWNjaW8vY29tbW9ucy1hcGknO1xuaW1wb3J0IGxvYWRQbHVnaW4gZnJvbSAnLi4vbGliL3BsdWdpbi1sb2FkZXInO1xuaW1wb3J0IHsgSVN0b3JhZ2UsIFN0cmluZ1ZhbHVlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRXJyb3JDb2RlLCBpc09iamVjdCwgZ2V0TGF0ZXN0VmVyc2lvbiwgdGFnVmVyc2lvbiwgdmFsaWRhdGVOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZSwgbm9ybWFsaXplUGFja2FnZSwgZ2VuZXJhdGVSZXZpc2lvbiwgZ2V0TGF0ZXN0UmVhZG1lLCBjbGVhblVwUmVhZG1lLCBub3JtYWxpemVDb250cmlidXRvcnMgfSBmcm9tICcuL3N0b3JhZ2UtdXRpbHMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBESVNUX1RBR1MsIEhUVFBfU1RBVFVTLCBTVE9SQUdFLCBTVVBQT1JUX0VSUk9SUywgVVNFUlMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBjcmVhdGVUYXJiYWxsSGFzaCB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7IHByZXBhcmVTZWFyY2hQYWNrYWdlIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcblxuY29uc3QgZGVidWcgPSBidWlsRGVidWcoJ3ZlcmRhY2Npbzpsb2NhbC1zdG9yYWdlJyk7XG4vKipcbiAqIEltcGxlbWVudHMgU3RvcmFnZSBpbnRlcmZhY2UgKHNhbWUgZm9yIHN0b3JhZ2UuanMsIGxvY2FsLXN0b3JhZ2UuanMsIHVwLXN0b3JhZ2UuanMpLlxuICovXG5jbGFzcyBMb2NhbFN0b3JhZ2UgaW1wbGVtZW50cyBJU3RvcmFnZSB7XG4gIHB1YmxpYyBjb25maWc6IENvbmZpZztcbiAgcHVibGljIHN0b3JhZ2VQbHVnaW46IElQbHVnaW5TdG9yYWdlPENvbmZpZz47XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWcsIGxvZ2dlcjogTG9nZ2VyKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5zdG9yYWdlUGx1Z2luID0gdGhpcy5fbG9hZFN0b3JhZ2UoY29uZmlnLCBsb2dnZXIpO1xuICB9XG5cbiAgcHVibGljIGFkZFBhY2thZ2UobmFtZTogc3RyaW5nLCBwa2c6IFBhY2thZ2UsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IGFueSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcblxuICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCd0aGlzIHBhY2thZ2UgY2Fubm90IGJlIGFkZGVkJykpO1xuICAgIH1cblxuICAgIHN0b3JhZ2UuY3JlYXRlUGFja2FnZShuYW1lLCBnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZShuYW1lKSwgKGVycikgPT4ge1xuICAgICAgLy8gRklYTUU6IGl0IHdpbGwgYmUgZml4ZWQgaGVyZSBodHRwczovL2dpdGh1Yi5jb20vdmVyZGFjY2lvL3ZlcmRhY2Npby9wdWxsLzEzNjBcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChfLmlzTnVsbChlcnIpID09PSBmYWxzZSAmJiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuRklMRV9FWElTVF9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuQ09ORkxJQ1QpKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Q29uZmxpY3QoKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxhdGVzdCA9IGdldExhdGVzdFZlcnNpb24ocGtnKTtcbiAgICAgIGlmIChfLmlzTmlsKGxhdGVzdCkgPT09IGZhbHNlICYmIHBrZy52ZXJzaW9uc1tsYXRlc3RdKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBwa2cudmVyc2lvbnNbbGF0ZXN0XSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBwYWNrYWdlLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHB1YmxpYyByZW1vdmVQYWNrYWdlKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogYW55ID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuICAgIGRlYnVnKCdbc3RvcmFnZV0gcmVtb3ZpbmcgcGFja2FnZSAlbycsIG5hbWUpO1xuICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgIH1cblxuICAgIHN0b3JhZ2UucmVhZFBhY2thZ2UobmFtZSwgKGVyciwgZGF0YTogUGFja2FnZSk6IHZvaWQgPT4ge1xuICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgIH1cblxuICAgICAgZGF0YSA9IG5vcm1hbGl6ZVBhY2thZ2UoZGF0YSk7XG5cbiAgICAgIHRoaXMuc3RvcmFnZVBsdWdpbi5yZW1vdmUobmFtZSwgKHJlbW92ZUZhaWxlZDogRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHJlbW92ZUZhaWxlZCkge1xuICAgICAgICAgIC8vIFRoaXMgd2lsbCBoYXBwZW4gd2hlbiBkYXRhYmFzZSBpcyBsb2NrZWRcbiAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcih7IG5hbWUgfSwgYFtzdG9yYWdlL3JlbW92ZVBhY2thZ2VdIHRoZSBkYXRhYmFzZSBpcyBsb2NrZWQsIHJlbW92ZWQgaGFzIGZhaWxlZCBmb3IgQHtuYW1lfWApO1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0QmFkRGF0YShyZW1vdmVGYWlsZWQubWVzc2FnZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RvcmFnZS5kZWxldGVQYWNrYWdlKFNUT1JBR0UuUEFDS0FHRV9GSUxFX05BTUUsIChlcnIpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgYXR0YWNobWVudHMgPSBPYmplY3Qua2V5cyhkYXRhLl9hdHRhY2htZW50cyk7XG5cbiAgICAgICAgICB0aGlzLl9kZWxldGVBdHRhY2htZW50cyhzdG9yYWdlLCBhdHRhY2htZW50cywgY2FsbGJhY2spO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN5bmNocm9uaXplIHJlbW90ZSBwYWNrYWdlIGluZm8gd2l0aCB0aGUgbG9jYWwgb25lXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IHBhY2thZ2VJbmZvXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVWZXJzaW9ucyhuYW1lOiBzdHJpbmcsIHBhY2thZ2VJbmZvOiBQYWNrYWdlLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICB0aGlzLl9yZWFkQ3JlYXRlUGFja2FnZShuYW1lLCAoZXJyLCBwYWNrYWdlTG9jYWxKc29uKTogdm9pZCA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuXG4gICAgICBsZXQgY2hhbmdlID0gZmFsc2U7XG4gICAgICAvLyB1cGRhdGluZyByZWFkbWVcbiAgICAgIHBhY2thZ2VMb2NhbEpzb24ucmVhZG1lID0gZ2V0TGF0ZXN0UmVhZG1lKHBhY2thZ2VJbmZvKTtcbiAgICAgIGlmIChwYWNrYWdlSW5mby5yZWFkbWUgIT09IHBhY2thZ2VMb2NhbEpzb24ucmVhZG1lKSB7XG4gICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IHZlcnNpb25JZCBpbiBwYWNrYWdlSW5mby52ZXJzaW9ucykge1xuICAgICAgICBpZiAoXy5pc05pbChwYWNrYWdlTG9jYWxKc29uLnZlcnNpb25zW3ZlcnNpb25JZF0pKSB7XG4gICAgICAgICAgbGV0IHZlcnNpb24gPSBwYWNrYWdlSW5mby52ZXJzaW9uc1t2ZXJzaW9uSWRdO1xuXG4gICAgICAgICAgLy8gd2UgZG9uJ3Qga2VlcCByZWFkbWUgZm9yIHBhY2thZ2UgdmVyc2lvbnMsXG4gICAgICAgICAgLy8gb25seSBvbmUgcmVhZG1lIHBlciBwYWNrYWdlXG4gICAgICAgICAgdmVyc2lvbiA9IGNsZWFuVXBSZWFkbWUodmVyc2lvbik7XG4gICAgICAgICAgdmVyc2lvbi5jb250cmlidXRvcnMgPSBub3JtYWxpemVDb250cmlidXRvcnModmVyc2lvbi5jb250cmlidXRvcnMgYXMgQXV0aG9yW10pO1xuXG4gICAgICAgICAgY2hhbmdlID0gdHJ1ZTtcbiAgICAgICAgICBwYWNrYWdlTG9jYWxKc29uLnZlcnNpb25zW3ZlcnNpb25JZF0gPSB2ZXJzaW9uO1xuXG4gICAgICAgICAgaWYgKHZlcnNpb24uZGlzdCAmJiB2ZXJzaW9uLmRpc3QudGFyYmFsbCkge1xuICAgICAgICAgICAgY29uc3QgdXJsT2JqZWN0OiBhbnkgPSBVcmxOb2RlLnBhcnNlKHZlcnNpb24uZGlzdC50YXJiYWxsKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gdXJsT2JqZWN0LnBhdGhuYW1lLnJlcGxhY2UoL14uKlxcLy8sICcnKTtcblxuICAgICAgICAgICAgLy8gd2UgZG8gTk9UIG92ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgcmVjb3Jkc1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwocGFja2FnZUxvY2FsSnNvbi5fZGlzdGZpbGVzW2ZpbGVuYW1lXSkpIHtcbiAgICAgICAgICAgICAgY29uc3QgaGFzaDogRGlzdEZpbGUgPSAocGFja2FnZUxvY2FsSnNvbi5fZGlzdGZpbGVzW2ZpbGVuYW1lXSA9IHtcbiAgICAgICAgICAgICAgICB1cmw6IHZlcnNpb24uZGlzdC50YXJiYWxsLFxuICAgICAgICAgICAgICAgIHNoYTogdmVyc2lvbi5kaXN0LnNoYXN1bSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIC8qIGVzbGludCBzcGFjZWQtY29tbWVudDogMCAqL1xuICAgICAgICAgICAgICAvLyAkRmxvd0ZpeE1lXG4gICAgICAgICAgICAgIGNvbnN0IHVwTGluazogc3RyaW5nID0gdmVyc2lvbltTeW1ib2wuZm9yKCdfX3ZlcmRhY2Npb191cGxpbmsnKV07XG5cbiAgICAgICAgICAgICAgaWYgKF8uaXNOaWwodXBMaW5rKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVcGxpbmtUb1JlbW90ZVByb3RvY29sKGhhc2gsIHVwTGluayk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCB0YWcgaW4gcGFja2FnZUluZm9bRElTVF9UQUdTXSkge1xuICAgICAgICBpZiAoIXBhY2thZ2VMb2NhbEpzb25bRElTVF9UQUdTXVt0YWddIHx8IHBhY2thZ2VMb2NhbEpzb25bRElTVF9UQUdTXVt0YWddICE9PSBwYWNrYWdlSW5mb1tESVNUX1RBR1NdW3RhZ10pIHtcbiAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHBhY2thZ2VMb2NhbEpzb25bRElTVF9UQUdTXVt0YWddID0gcGFja2FnZUluZm9bRElTVF9UQUdTXVt0YWddO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgdXAgaW4gcGFja2FnZUluZm8uX3VwbGlua3MpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYWNrYWdlSW5mby5fdXBsaW5rcywgdXApKSB7XG4gICAgICAgICAgY29uc3QgbmVlZF9jaGFuZ2UgPVxuICAgICAgICAgICAgIWlzT2JqZWN0KHBhY2thZ2VMb2NhbEpzb24uX3VwbGlua3NbdXBdKSB8fFxuICAgICAgICAgICAgcGFja2FnZUluZm8uX3VwbGlua3NbdXBdLmV0YWcgIT09IHBhY2thZ2VMb2NhbEpzb24uX3VwbGlua3NbdXBdLmV0YWcgfHxcbiAgICAgICAgICAgIHBhY2thZ2VJbmZvLl91cGxpbmtzW3VwXS5mZXRjaGVkICE9PSBwYWNrYWdlTG9jYWxKc29uLl91cGxpbmtzW3VwXS5mZXRjaGVkO1xuXG4gICAgICAgICAgaWYgKG5lZWRfY2hhbmdlKSB7XG4gICAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgICAgcGFja2FnZUxvY2FsSnNvbi5fdXBsaW5rc1t1cF0gPSBwYWNrYWdlSW5mby5fdXBsaW5rc1t1cF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgndGltZScgaW4gcGFja2FnZUluZm8gJiYgIV8uaXNFcXVhbChwYWNrYWdlTG9jYWxKc29uLnRpbWUsIHBhY2thZ2VJbmZvLnRpbWUpKSB7XG4gICAgICAgIHBhY2thZ2VMb2NhbEpzb24udGltZSA9IHBhY2thZ2VJbmZvLnRpbWU7XG4gICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChjaGFuZ2UpIHtcbiAgICAgICAgZGVidWcoJ3VwZGF0aW5nIHBhY2thZ2UgJW8gaW5mbycsIG5hbWUpO1xuICAgICAgICB0aGlzLl93cml0ZVBhY2thZ2UobmFtZSwgcGFja2FnZUxvY2FsSnNvbiwgZnVuY3Rpb24gKGVycik6IHZvaWQge1xuICAgICAgICAgIGNhbGxiYWNrKGVyciwgcGFja2FnZUxvY2FsSnNvbik7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgcGFja2FnZUxvY2FsSnNvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IHZlcnNpb24gdG8gYSBwcmV2aW91cyBsb2NhbCBwYWNrYWdlLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7Kn0gbWV0YWRhdGFcbiAgICogQHBhcmFtIHsqfSB0YWdcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIGFkZFZlcnNpb24obmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIG1ldGFkYXRhOiBWZXJzaW9uLCB0YWc6IFN0cmluZ1ZhbHVlLCBjYWxsYmFjazogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgbmFtZSxcbiAgICAgIChkYXRhLCBjYjogQ2FsbGJhY2spOiB2b2lkID0+IHtcbiAgICAgICAgLy8ga2VlcCBvbmx5IG9uZSByZWFkbWUgcGVyIHBhY2thZ2VcbiAgICAgICAgZGF0YS5yZWFkbWUgPSBtZXRhZGF0YS5yZWFkbWU7XG5cbiAgICAgICAgLy8gVE9ETzogbG9kYXNoIHJlbW92ZVxuICAgICAgICBtZXRhZGF0YSA9IGNsZWFuVXBSZWFkbWUobWV0YWRhdGEpO1xuICAgICAgICBtZXRhZGF0YS5jb250cmlidXRvcnMgPSBub3JtYWxpemVDb250cmlidXRvcnMobWV0YWRhdGEuY29udHJpYnV0b3JzIGFzIEF1dGhvcltdKTtcblxuICAgICAgICBjb25zdCBoYXNWZXJzaW9uID0gZGF0YS52ZXJzaW9uc1t2ZXJzaW9uXSAhPSBudWxsO1xuICAgICAgICBpZiAoaGFzVmVyc2lvbikge1xuICAgICAgICAgIHJldHVybiBjYihFcnJvckNvZGUuZ2V0Q29uZmxpY3QoKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiB1cGxvYWRlZCB0YXJiYWxsIGhhcyBhIGRpZmZlcmVudCBzaGFzdW0sIGl0J3MgdmVyeSBsaWtlbHkgdGhhdCB3ZSBoYXZlIHNvbWUga2luZCBvZiBlcnJvclxuICAgICAgICBpZiAoaXNPYmplY3QobWV0YWRhdGEuZGlzdCkgJiYgXy5pc1N0cmluZyhtZXRhZGF0YS5kaXN0LnRhcmJhbGwpKSB7XG4gICAgICAgICAgY29uc3QgdGFyYmFsbCA9IG1ldGFkYXRhLmRpc3QudGFyYmFsbC5yZXBsYWNlKC8uKlxcLy8sICcnKTtcblxuICAgICAgICAgIGlmIChpc09iamVjdChkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXSkpIHtcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKGRhdGEuX2F0dGFjaG1lbnRzW3RhcmJhbGxdLnNoYXN1bSkgPT09IGZhbHNlICYmIF8uaXNOaWwobWV0YWRhdGEuZGlzdC5zaGFzdW0pID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBpZiAoZGF0YS5fYXR0YWNobWVudHNbdGFyYmFsbF0uc2hhc3VtICE9IG1ldGFkYXRhLmRpc3Quc2hhc3VtKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYHNoYXN1bSBlcnJvciwgJHtkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXS5zaGFzdW19ICE9ICR7bWV0YWRhdGEuZGlzdC5zaGFzdW19YDtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEJhZFJlcXVlc3QoZXJyb3JNZXNzYWdlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIC8vIHNvbWUgb2xkIHN0b3JhZ2UgZG8gbm90IGhhdmUgdGhpcyBmaWVsZCAjNzQwXG4gICAgICAgICAgICBpZiAoXy5pc05pbChkYXRhLnRpbWUpKSB7XG4gICAgICAgICAgICAgIGRhdGEudGltZSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkYXRhLnRpbWVbJ21vZGlmaWVkJ10gPSBjdXJyZW50RGF0ZTtcblxuICAgICAgICAgICAgaWYgKCdjcmVhdGVkJyBpbiBkYXRhLnRpbWUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGRhdGEudGltZS5jcmVhdGVkID0gY3VycmVudERhdGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEudGltZVt2ZXJzaW9uXSA9IGN1cnJlbnREYXRlO1xuICAgICAgICAgICAgZGF0YS5fYXR0YWNobWVudHNbdGFyYmFsbF0udmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS52ZXJzaW9uc1t2ZXJzaW9uXSA9IG1ldGFkYXRhO1xuICAgICAgICB0YWdWZXJzaW9uKGRhdGEsIHZlcnNpb24sIHRhZyk7XG5cbiAgICAgICAgdGhpcy5zdG9yYWdlUGx1Z2luLmFkZChuYW1lLCAoYWRkRmFpbGVkKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKGFkZEZhaWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRCYWREYXRhKGFkZEZhaWxlZC5tZXNzYWdlKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2IoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIGEgbmV3IGxpc3Qgb2YgdGFncyBmb3IgYSBsb2NhbCBwYWNrYWdlcyB3aXRoIHRoZSBleGlzdGluZyBvbmUuXG4gICAqIEBwYXJhbSB7Kn0gcGtnTmFtZVxuICAgKiBAcGFyYW0geyp9IHRhZ3NcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIG1lcmdlVGFncyhwa2dOYW1lOiBzdHJpbmcsIHRhZ3M6IE1lcmdlVGFncywgY2FsbGJhY2s6IENhbGxiYWNrQWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fdXBkYXRlUGFja2FnZShcbiAgICAgIHBrZ05hbWUsXG4gICAgICAoZGF0YSwgY2IpOiB2b2lkID0+IHtcbiAgICAgICAgLyogZXNsaW50IGd1YXJkLWZvci1pbjogMCAqL1xuICAgICAgICBmb3IgKGNvbnN0IHRhZyBpbiB0YWdzKSB7XG4gICAgICAgICAgLy8gdGhpcyBoYW5kbGUgZGlzdC10YWcgcm0gY29tbWFuZFxuICAgICAgICAgIGlmIChfLmlzTnVsbCh0YWdzW3RhZ10pKSB7XG4gICAgICAgICAgICBkZWxldGUgZGF0YVtESVNUX1RBR1NdW3RhZ107XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXy5pc05pbChkYXRhLnZlcnNpb25zW3RhZ3NbdGFnXV0pKSB7XG4gICAgICAgICAgICByZXR1cm4gY2IodGhpcy5fZ2V0VmVyc2lvbk5vdEZvdW5kKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB2ZXJzaW9uOiBzdHJpbmcgPSB0YWdzW3RhZ107XG4gICAgICAgICAgdGFnVmVyc2lvbihkYXRhLCB2ZXJzaW9uLCB0YWcpO1xuICAgICAgICB9XG4gICAgICAgIGNiKG51bGwpO1xuICAgICAgfSxcbiAgICAgIGNhbGxiYWNrXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdmVyc2lvbiBub3QgZm91bmRcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0VmVyc2lvbk5vdEZvdW5kKCk6IFZlcmRhY2Npb0Vycm9yIHtcbiAgICByZXR1cm4gRXJyb3JDb2RlLmdldE5vdEZvdW5kKEFQSV9FUlJPUi5WRVJTSU9OX05PVF9FWElTVCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGZpbGUgbm8gYXZhaWxhYmxlXG4gICAqIEByZXR1cm4ge1N0cmluZ31cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldEZpbGVOb3RBdmFpbGFibGUoKTogVmVyZGFjY2lvRXJyb3Ige1xuICAgIHJldHVybiBFcnJvckNvZGUuZ2V0Tm90Rm91bmQoJ25vIHN1Y2ggZmlsZSBhdmFpbGFibGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHBhY2thZ2UgbWV0YWRhdGEsIHRhZ3MgYW5kIGF0dGFjaG1lbnRzICh0YXJiYWxscykuXG4gICAqIE5vdGU6IEN1cnJlbnRseSBzdXBwb3J0cyB1bnB1Ymxpc2hpbmcgYW5kIGRlcHJlY2F0aW9uLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBpbmNvbWluZ1BrZ1xuICAgKiBAcGFyYW0geyp9IHJldmlzaW9uXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwdWJsaWMgY2hhbmdlUGFja2FnZShuYW1lOiBzdHJpbmcsIGluY29taW5nUGtnOiBQYWNrYWdlLCByZXZpc2lvbjogc3RyaW5nIHwgdm9pZCwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgaWYgKCFpc09iamVjdChpbmNvbWluZ1BrZy52ZXJzaW9ucykgfHwgIWlzT2JqZWN0KGluY29taW5nUGtnW0RJU1RfVEFHU10pKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcih7IG5hbWUgfSwgYGNoYW5nZVBhY2thZ2UgYmFkIGRhdGEgZm9yIEB7bmFtZX1gKTtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0QmFkRGF0YSgpKTtcbiAgICB9XG4gICAgZGVidWcoJ2NoYW5nZVBhY2thZ2UgdWRhcHRpbmcgcGFja2FnZSBmb3IgJW8nLCBuYW1lKTtcbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgbmFtZSxcbiAgICAgIChsb2NhbERhdGE6IFBhY2thZ2UsIGNiOiBDYWxsYmFja0FjdGlvbik6IHZvaWQgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNpb24gaW4gbG9jYWxEYXRhLnZlcnNpb25zKSB7XG4gICAgICAgICAgY29uc3QgaW5jb21pbmdWZXJzaW9uID0gaW5jb21pbmdQa2cudmVyc2lvbnNbdmVyc2lvbl07XG4gICAgICAgICAgaWYgKF8uaXNOaWwoaW5jb21pbmdWZXJzaW9uKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IG5hbWU6IG5hbWUsIHZlcnNpb246IHZlcnNpb24gfSwgJ3VucHVibGlzaGluZyBAe25hbWV9QEB7dmVyc2lvbn0nKTtcblxuICAgICAgICAgICAgLy8gRklYTUU6IEkgcHJlZmVyIHJldHVybiBhIG5ldyBvYmplY3QgcmF0aGVyIG11dGF0ZSB0aGUgbWV0YWRhdGFcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbERhdGEudmVyc2lvbnNbdmVyc2lvbl07XG4gICAgICAgICAgICBkZWxldGUgbG9jYWxEYXRhLnRpbWUhW3ZlcnNpb25dO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGUgaW4gbG9jYWxEYXRhLl9hdHRhY2htZW50cykge1xuICAgICAgICAgICAgICBpZiAobG9jYWxEYXRhLl9hdHRhY2htZW50c1tmaWxlXS52ZXJzaW9uID09PSB2ZXJzaW9uKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsRGF0YS5fYXR0YWNobWVudHNbZmlsZV0udmVyc2lvbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGluY29taW5nVmVyc2lvbiwgJ2RlcHJlY2F0ZWQnKSkge1xuICAgICAgICAgICAgY29uc3QgaW5jb21pbmdEZXByZWNhdGVkID0gaW5jb21pbmdWZXJzaW9uLmRlcHJlY2F0ZWQ7XG4gICAgICAgICAgICBpZiAoaW5jb21pbmdEZXByZWNhdGVkICE9IGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXS5kZXByZWNhdGVkKSB7XG4gICAgICAgICAgICAgIGlmICghaW5jb21pbmdEZXByZWNhdGVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IG5hbWU6IG5hbWUsIHZlcnNpb246IHZlcnNpb24gfSwgJ3VuZGVwcmVjYXRpbmcgQHtuYW1lfUBAe3ZlcnNpb259Jyk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXS5kZXByZWNhdGVkO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oeyBuYW1lOiBuYW1lLCB2ZXJzaW9uOiB2ZXJzaW9uIH0sICdkZXByZWNhdGluZyBAe25hbWV9QEB7dmVyc2lvbn0nKTtcbiAgICAgICAgICAgICAgICBsb2NhbERhdGEudmVyc2lvbnNbdmVyc2lvbl0uZGVwcmVjYXRlZCA9IGluY29taW5nRGVwcmVjYXRlZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsb2NhbERhdGEudGltZSEubW9kaWZpZWQgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9jYWxEYXRhW1VTRVJTXSA9IGluY29taW5nUGtnW1VTRVJTXTtcbiAgICAgICAgbG9jYWxEYXRhW0RJU1RfVEFHU10gPSBpbmNvbWluZ1BrZ1tESVNUX1RBR1NdO1xuICAgICAgICBjYihudWxsKTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhcmJhbGwuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGZpbGVuYW1lXG4gICAqIEBwYXJhbSB7Kn0gcmV2aXNpb25cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhcmJhbGwobmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nLCByZXZpc2lvbjogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkIHtcbiAgICBhc3NlcnQodmFsaWRhdGVOYW1lKGZpbGVuYW1lKSk7XG5cbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgbmFtZSxcbiAgICAgIChkYXRhLCBjYik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZGF0YS5fYXR0YWNobWVudHNbZmlsZW5hbWVdKSB7XG4gICAgICAgICAgZGVsZXRlIGRhdGEuX2F0dGFjaG1lbnRzW2ZpbGVuYW1lXTtcbiAgICAgICAgICBjYihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYih0aGlzLl9nZXRGaWxlTm90QXZhaWxhYmxlKCkpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgKGVycjogVmVyZGFjY2lvRXJyb3IpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG5cbiAgICAgICAgaWYgKHN0b3JhZ2UpIHtcbiAgICAgICAgICBzdG9yYWdlLmRlbGV0ZVBhY2thZ2UoZmlsZW5hbWUsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFyYmFsbC5cbiAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lXG4gICAqIEByZXR1cm4ge1N0cmVhbX1cbiAgICovXG4gIHB1YmxpYyBhZGRUYXJiYWxsKG5hbWU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IElVcGxvYWRUYXJiYWxsIHtcbiAgICBhc3NlcnQodmFsaWRhdGVOYW1lKGZpbGVuYW1lKSk7XG5cbiAgICBsZXQgbGVuZ3RoID0gMDtcbiAgICBjb25zdCBzaGFPbmVIYXNoID0gY3JlYXRlVGFyYmFsbEhhc2goKTtcbiAgICBjb25zdCB1cGxvYWRTdHJlYW06IElVcGxvYWRUYXJiYWxsID0gbmV3IFVwbG9hZFRhcmJhbGwoe30pO1xuICAgIGNvbnN0IF90cmFuc2Zvcm0gPSB1cGxvYWRTdHJlYW0uX3RyYW5zZm9ybTtcbiAgICBjb25zdCBzdG9yYWdlID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgdXBsb2FkU3RyZWFtLmFib3J0ID0gZnVuY3Rpb24gKCk6IHZvaWQge307XG4gICAgdXBsb2FkU3RyZWFtLmRvbmUgPSBmdW5jdGlvbiAoKTogdm9pZCB7fTtcblxuICAgIHVwbG9hZFN0cmVhbS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGRhdGEsIC4uLmFyZ3MpOiB2b2lkIHtcbiAgICAgIHNoYU9uZUhhc2gudXBkYXRlKGRhdGEpO1xuICAgICAgLy8gbWVhc3VyZSB0aGUgbGVuZ3RoIGZvciB2YWxpZGF0aW9uIHJlYXNvbnNcbiAgICAgIGxlbmd0aCArPSBkYXRhLmxlbmd0aDtcbiAgICAgIGNvbnN0IGFwcGxpZWREYXRhID0gW2RhdGEsIC4uLmFyZ3NdO1xuICAgICAgLy8gRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXMgYXBwcm9hY2gsIHRzYyBjb21wbGFpbnNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIF90cmFuc2Zvcm0uYXBwbHkodXBsb2FkU3RyZWFtLCBhcHBsaWVkRGF0YSk7XG4gICAgfTtcblxuICAgIGlmIChuYW1lID09PSAnX19wcm90b19fJykge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljaygoKTogdm9pZCA9PiB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oKSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB1cGxvYWRTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKCFzdG9yYWdlKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpOiB2b2lkID0+IHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgXCJjYW4ndCB1cGxvYWQgdGhpcyBwYWNrYWdlXCIpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gdXBsb2FkU3RyZWFtO1xuICAgIH1cblxuICAgIGNvbnN0IHdyaXRlU3RyZWFtOiBJVXBsb2FkVGFyYmFsbCA9IHN0b3JhZ2Uud3JpdGVUYXJiYWxsKGZpbGVuYW1lKTtcblxuICAgIHdyaXRlU3RyZWFtLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5GSUxFX0VYSVNUX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5DT05GTElDVCkge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBFcnJvckNvZGUuZ2V0Q29uZmxpY3QoKSk7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5hYm9ydCgpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgIC8vIGNoZWNrIGlmIHBhY2thZ2UgZXhpc3RzIHRvIHRocm93IGFuIGFwcHJvcHJpYXRlIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5nZXRQYWNrYWdlTWV0YWRhdGEobmFtZSwgZnVuY3Rpb24gKF9lcnI6IFZlcmRhY2Npb0Vycm9yLCBfcmVzOiBQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKF9lcnIpIHtcbiAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIF9lcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgd3JpdGVTdHJlYW0ub24oJ29wZW4nLCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAvLyByZS1lbWl0dGluZyBvcGVuIGJlY2F1c2UgaXQncyBoYW5kbGVkIGluIHN0b3JhZ2UuanNcbiAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgfSk7XG5cbiAgICB3cml0ZVN0cmVhbS5vbignc3VjY2VzcycsICgpOiB2b2lkID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGZ1bmN0aW9uIHVwZGF0ZXIoZGF0YSwgY2IpOiB2b2lkIHtcbiAgICAgICAgICBkYXRhLl9hdHRhY2htZW50c1tmaWxlbmFtZV0gPSB7XG4gICAgICAgICAgICBzaGFzdW06IHNoYU9uZUhhc2guZGlnZXN0KCdoZXgnKSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB1cGxvYWRTdHJlYW0uYWJvcnQgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICB3cml0ZVN0cmVhbS5hYm9ydCgpO1xuICAgIH07XG5cbiAgICB1cGxvYWRTdHJlYW0uZG9uZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmICghbGVuZ3RoKSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRCYWREYXRhKCdyZWZ1c2luZyB0byBhY2NlcHQgemVyby1sZW5ndGggZmlsZScpKTtcbiAgICAgICAgd3JpdGVTdHJlYW0uYWJvcnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdyaXRlU3RyZWFtLmRvbmUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdXBsb2FkU3RyZWFtLnBpcGUod3JpdGVTdHJlYW0pO1xuXG4gICAgcmV0dXJuIHVwbG9hZFN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSB0YXJiYWxsLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBmaWxlbmFtZVxuICAgKiBAcmV0dXJuIHtSZWFkVGFyYmFsbH1cbiAgICovXG4gIHB1YmxpYyBnZXRUYXJiYWxsKG5hbWU6IHN0cmluZywgZmlsZW5hbWU6IHN0cmluZyk6IElSZWFkVGFyYmFsbCB7XG4gICAgYXNzZXJ0KHZhbGlkYXRlTmFtZShmaWxlbmFtZSkpO1xuXG4gICAgY29uc3Qgc3RvcmFnZTogSVBhY2thZ2VTdG9yYWdlID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVGYWlsdXJlU3RyZWFtUmVzcG9uc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyZWFtU3VjY2Vzc1JlYWRUYXJCYWxsKHN0b3JhZ2UsIGZpbGVuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJlYW0gdGhhdCBlbWl0cyBhIHJlYWQgZmFpbHVyZS5cbiAgICogQHByaXZhdGVcbiAgICogQHJldHVybiB7UmVhZFRhcmJhbGx9XG4gICAqL1xuICBwcml2YXRlIF9jcmVhdGVGYWlsdXJlU3RyZWFtUmVzcG9uc2UoKTogSVJlYWRUYXJiYWxsIHtcbiAgICBjb25zdCBzdHJlYW06IElSZWFkVGFyYmFsbCA9IG5ldyBSZWFkVGFyYmFsbCh7fSk7XG5cbiAgICBwcm9jZXNzLm5leHRUaWNrKCgpOiB2b2lkID0+IHtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIHRoaXMuX2dldEZpbGVOb3RBdmFpbGFibGUoKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJlYW0gdGhhdCBlbWl0cyB0aGUgdGFyYmFsbCBkYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yYWdlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBmaWxlbmFtZVxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJuIHtSZWFkVGFyYmFsbH1cbiAgICovXG4gIHByaXZhdGUgX3N0cmVhbVN1Y2Nlc3NSZWFkVGFyQmFsbChzdG9yYWdlOiBhbnksIGZpbGVuYW1lOiBzdHJpbmcpOiBJUmVhZFRhcmJhbGwge1xuICAgIGNvbnN0IHN0cmVhbTogSVJlYWRUYXJiYWxsID0gbmV3IFJlYWRUYXJiYWxsKHt9KTtcbiAgICBjb25zdCByZWFkVGFyYmFsbFN0cmVhbSA9IHN0b3JhZ2UucmVhZFRhcmJhbGwoZmlsZW5hbWUpO1xuICAgIGNvbnN0IGU0MDQgPSBFcnJvckNvZGUuZ2V0Tm90Rm91bmQ7XG5cbiAgICBzdHJlYW0uYWJvcnQgPSBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc05pbChyZWFkVGFyYmFsbFN0cmVhbSkgPT09IGZhbHNlKSB7XG4gICAgICAgIHJlYWRUYXJiYWxsU3RyZWFtLmFib3J0KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5OT19TVUNIX0ZJTEVfRVJST1IgfHwgZXJyLmNvZGUgPT09IEhUVFBfU1RBVFVTLk5PVF9GT1VORCkge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlNDA0KCdubyBzdWNoIGZpbGUgYXZhaWxhYmxlJykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLm9uKCdjb250ZW50LWxlbmd0aCcsIGZ1bmN0aW9uIChjb250ZW50KTogdm9pZCB7XG4gICAgICBzdHJlYW0uZW1pdCgnY29udGVudC1sZW5ndGgnLCBjb250ZW50KTtcbiAgICB9KTtcblxuICAgIHJlYWRUYXJiYWxsU3RyZWFtLm9uKCdvcGVuJywgZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgLy8gcmUtZW1pdHRpbmcgb3BlbiBiZWNhdXNlIGl0J3MgaGFuZGxlZCBpbiBzdG9yYWdlLmpzXG4gICAgICBzdHJlYW0uZW1pdCgnb3BlbicpO1xuICAgICAgcmVhZFRhcmJhbGxTdHJlYW0ucGlwZShzdHJlYW0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHN0cmVhbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBhIHBhY2thZ2UgYnkgbmFtZS5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwdWJsaWMgZ2V0UGFja2FnZU1ldGFkYXRhKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrID0gKCk6IHZvaWQgPT4ge30pOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBJUGFja2FnZVN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Tm90Rm91bmQoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVhZFBhY2thZ2UobmFtZSwgc3RvcmFnZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaCBhIGxvY2FsIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7Kn0gc3RhcnRLZXlcbiAgICogQHBhcmFtIHsqfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHVibGljIHNlYXJjaChzdGFydEtleTogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBJUmVhZFRhcmJhbGwge1xuICAgIGNvbnN0IHN0cmVhbSA9IG5ldyBSZWFkVGFyYmFsbCh7IG9iamVjdE1vZGU6IHRydWUgfSk7XG5cbiAgICB0aGlzLl9zZWFyY2hFYWNoUGFja2FnZShcbiAgICAgIChpdGVtOiBQYWNrYWdlLCBjYjogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaXRlbS50aW1lID4gcGFyc2VJbnQoc3RhcnRLZXksIDEwKSkge1xuICAgICAgICAgIHRoaXMuZ2V0UGFja2FnZU1ldGFkYXRhKGl0ZW0ubmFtZSwgKGVycjogVmVyZGFjY2lvRXJyb3IsIGRhdGE6IFBhY2thZ2UpOiB2b2lkID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZShpdGVtLnRpbWUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBwcmVwYXJlU2VhcmNoUGFja2FnZShkYXRhLCB0aW1lKTtcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKHJlc3VsdCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIHN0cmVhbS5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYihudWxsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYihudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIG9uRW5kKGVycik6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gc3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgd3JhcHBlciB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBwYWNrYWdlIGxvY2F0aW9uLlxuICAgKiBAcGFyYW0ge09iamVjdH0gcGtnTmFtZSBwYWNrYWdlIG5hbWUuXG4gICAqIEByZXR1cm4ge09iamVjdH1cbiAgICovXG4gIHByaXZhdGUgX2dldExvY2FsU3RvcmFnZShwa2dOYW1lOiBzdHJpbmcpOiBJUGFja2FnZVN0b3JhZ2Uge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4uZ2V0UGFja2FnZVN0b3JhZ2UocGtnTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCBhIGpzb24gZmlsZSBmcm9tIHN0b3JhZ2UuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBzdG9yYWdlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gICAqL1xuICBwcml2YXRlIF9yZWFkUGFja2FnZShuYW1lOiBzdHJpbmcsIHN0b3JhZ2U6IGFueSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgc3RvcmFnZS5yZWFkUGFja2FnZShuYW1lLCAoZXJyLCByZXN1bHQpOiB2b2lkID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2sodGhpcy5faW50ZXJuYWxFcnJvcihlcnIsIFNUT1JBR0UuUEFDS0FHRV9GSUxFX05BTUUsICdlcnJvciByZWFkaW5nJykpO1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjayhlcnIsIG5vcm1hbGl6ZVBhY2thZ2UocmVzdWx0KSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogV2Fsa3MgdGhyb3VnaCBlYWNoIHBhY2thZ2UgYW5kIGNhbGxzIGBvbl9wYWNrYWdlYCBvbiB0aGVtLlxuICAgKiBAcGFyYW0geyp9IG9uUGFja2FnZVxuICAgKiBAcGFyYW0geyp9IG9uRW5kXG4gICAqL1xuICBwcml2YXRlIF9zZWFyY2hFYWNoUGFja2FnZShvblBhY2thZ2U6IG9uU2VhcmNoUGFja2FnZSwgb25FbmQ6IG9uRW5kU2VhcmNoUGFja2FnZSk6IHZvaWQge1xuICAgIC8vIHNhdmUgd2FpdCB3aGV0aGVyIHBsdWdpbiBzdGlsbCBkbyBub3Qgc3VwcG9ydCBzZWFyY2ggZnVuY3Rpb25hbGl0eVxuICAgIGlmIChfLmlzTmlsKHRoaXMuc3RvcmFnZVBsdWdpbi5zZWFyY2gpKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKCdwbHVnaW4gc2VhcmNoIG5vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICAgIG9uRW5kKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmFnZVBsdWdpbi5zZWFyY2gob25QYWNrYWdlLCBvbkVuZCwgdmFsaWRhdGVOYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgZWl0aGVyIGEgcHJldmlvdXMgY3JlYXRlZCBsb2NhbCBwYWNrYWdlIG9yIGEgYm9pbGVycGxhdGUuXG4gICAqIEBwYXJhbSB7Kn0gcGtnTmFtZVxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHJpdmF0ZSBfcmVhZENyZWF0ZVBhY2thZ2UocGtnTmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBhbnkgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UocGtnTmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHRoaXMuX2NyZWF0ZU5ld1BhY2thZ2UocGtnTmFtZSwgY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN0b3JhZ2UucmVhZFBhY2thZ2UocGtnTmFtZSwgKGVyciwgZGF0YSk6IHZvaWQgPT4ge1xuICAgICAgLy8gVE9ETzogcmFjZSBjb25kaXRpb25cbiAgICAgIGlmIChfLmlzTmlsKGVycikgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5OT19TVUNIX0ZJTEVfRVJST1IgfHwgZXJyLmNvZGUgPT09IEhUVFBfU1RBVFVTLk5PVF9GT1VORCkge1xuICAgICAgICAgIGRhdGEgPSBnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZShwa2dOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2sodGhpcy5faW50ZXJuYWxFcnJvcihlcnIsIFNUT1JBR0UuUEFDS0FHRV9GSUxFX05BTUUsICdlcnJvciByZWFkaW5nJykpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKG51bGwsIG5vcm1hbGl6ZVBhY2thZ2UoZGF0YSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlTmV3UGFja2FnZShuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFjayk6IENhbGxiYWNrIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgbm9ybWFsaXplUGFja2FnZShnZW5lcmF0ZVBhY2thZ2VUZW1wbGF0ZShuYW1lKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBpbnRlcm5hbCBlcnJvclxuICAgKiBAcGFyYW0geyp9IGVyclxuICAgKiBAcGFyYW0geyp9IGZpbGVcbiAgICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gICAqIEByZXR1cm4ge09iamVjdH0gRXJyb3IgaW5zdGFuY2VcbiAgICovXG4gIHByaXZhdGUgX2ludGVybmFsRXJyb3IoZXJyOiBzdHJpbmcsIGZpbGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogVmVyZGFjY2lvRXJyb3Ige1xuICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgZXJyOiBlcnIsIGZpbGU6IGZpbGUgfSwgYCR7bWVzc2FnZX0gIEB7ZmlsZX06IEB7IWVyci5tZXNzYWdlfWApO1xuXG4gICAgcmV0dXJuIEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHsqfSBuYW1lIHBhY2thZ2UgbmFtZVxuICAgKiBAcGFyYW0geyp9IHVwZGF0ZUhhbmRsZXIgZnVuY3Rpb24ocGFja2FnZSwgY2IpIC0gdXBkYXRlIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2sgY2FsbGJhY2sgdGhhdCBnZXRzIGludm9rZWQgYWZ0ZXIgaXQncyBhbGwgdXBkYXRlZFxuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVBhY2thZ2UobmFtZTogc3RyaW5nLCB1cGRhdGVIYW5kbGVyOiBTdG9yYWdlVXBkYXRlQ2FsbGJhY2ssIGNhbGxiYWNrOiBDYWxsYmFja0FjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IElQYWNrYWdlU3RvcmFnZSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcblxuICAgIGlmICghc3RvcmFnZSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICB9XG5cbiAgICBzdG9yYWdlLnVwZGF0ZVBhY2thZ2UobmFtZSwgdXBkYXRlSGFuZGxlciwgdGhpcy5fd3JpdGVQYWNrYWdlLmJpbmQodGhpcyksIG5vcm1hbGl6ZVBhY2thZ2UsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHJldmlzaW9uIChfcmV2KSBzdHJpbmcgZm9yIGEgcGFja2FnZS5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0ganNvblxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHJpdmF0ZSBfd3JpdGVQYWNrYWdlKG5hbWU6IHN0cmluZywganNvbjogUGFja2FnZSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogYW55ID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuICAgIGlmIChfLmlzTmlsKHN0b3JhZ2UpKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgc3RvcmFnZS5zYXZlUGFja2FnZShuYW1lLCB0aGlzLl9zZXREZWZhdWx0UmV2aXNpb24oanNvbiksIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERlZmF1bHRSZXZpc2lvbihqc29uOiBQYWNrYWdlKTogUGFja2FnZSB7XG4gICAgLy8gY2FsY3VsYXRlIHJldmlzaW9uIGZyb20gY291Y2ggZGJcbiAgICBpZiAoXy5pc1N0cmluZyhqc29uLl9yZXYpID09PSBmYWxzZSkge1xuICAgICAganNvbi5fcmV2ID0gU1RPUkFHRS5ERUZBVUxUX1JFVklTSU9OO1xuICAgIH1cblxuICAgIC8vIHRoaXMgaXMgaW50ZW5kZWQgaW4gZGVidWcgbW9kZSB3ZSBkbyBub3Qgd2FudCBtb2RpZnkgdGhlIHN0b3JlIHJldmlzaW9uXG4gICAgaWYgKF8uaXNOaWwodGhpcy5jb25maWcuX2RlYnVnKSkge1xuICAgICAganNvbi5fcmV2ID0gZ2VuZXJhdGVSZXZpc2lvbihqc29uLl9yZXYpO1xuICAgIH1cblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVsZXRlQXR0YWNobWVudHMoc3RvcmFnZTogYW55LCBhdHRhY2htZW50czogc3RyaW5nW10sIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGRlYnVnKCdbc3RvcmFnZS9fZGVsZXRlQXR0YWNobWVudHNdIGRlbGV0ZSBhdHRhY2htZW50cyB0b3RhbDogJW8nLCBhdHRhY2htZW50cz8ubGVuZ3RoKTtcbiAgICBjb25zdCB1bmxpbmtOZXh0ID0gZnVuY3Rpb24gKGNiKTogdm9pZCB7XG4gICAgICBpZiAoXy5pc0VtcHR5KGF0dGFjaG1lbnRzKSkge1xuICAgICAgICByZXR1cm4gY2IoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXR0YWNobWVudCA9IGF0dGFjaG1lbnRzLnNoaWZ0KCk7XG4gICAgICBzdG9yYWdlLmRlbGV0ZVBhY2thZ2UoYXR0YWNobWVudCwgZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICB1bmxpbmtOZXh0KGNiKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB1bmxpbmtOZXh0KGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIC8vIHRyeSB0byB1bmxpbmsgdGhlIGRpcmVjdG9yeSwgYnV0IGlnbm9yZSBlcnJvcnMgYmVjYXVzZSBpdCBjYW4gZmFpbFxuICAgICAgc3RvcmFnZS5yZW1vdmVQYWNrYWdlKGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZSB0aGUgZGlzdCBmaWxlIHJlbWFpbnMgYXMgdGhlIHNhbWUgcHJvdG9jb2xcbiAgICogQHBhcmFtIHtPYmplY3R9IGhhc2ggbWV0YWRhdGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IHVwTGlua0tleSByZWdpc3RyeSBrZXlcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZVVwbGlua1RvUmVtb3RlUHJvdG9jb2woaGFzaDogRGlzdEZpbGUsIHVwTGlua0tleTogc3RyaW5nKTogdm9pZCB7XG4gICAgLy8gaWYgd2UgZ290IHRoaXMgaW5mb3JtYXRpb24gZnJvbSBhIGtub3duIHJlZ2lzdHJ5LFxuICAgIC8vIHVzZSB0aGUgc2FtZSBwcm90b2NvbCBmb3IgdGhlIHRhcmJhbGxcbiAgICAvL1xuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vcmxpZHdrYS9zaW5vcGlhL2lzc3Vlcy8xNjZcbiAgICBjb25zdCB0YXJiYWxsVXJsOiBhbnkgPSBVcmxOb2RlLnBhcnNlKGhhc2gudXJsKTtcbiAgICBjb25zdCB1cGxpbmtVcmw6IGFueSA9IFVybE5vZGUucGFyc2UodGhpcy5jb25maWcudXBsaW5rc1t1cExpbmtLZXldLnVybCk7XG5cbiAgICBpZiAodXBsaW5rVXJsLmhvc3QgPT09IHRhcmJhbGxVcmwuaG9zdCkge1xuICAgICAgdGFyYmFsbFVybC5wcm90b2NvbCA9IHVwbGlua1VybC5wcm90b2NvbDtcbiAgICAgIGhhc2gucmVnaXN0cnkgPSB1cExpbmtLZXk7XG4gICAgICBoYXNoLnVybCA9IFVybE5vZGUuZm9ybWF0KHRhcmJhbGxVcmwpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTZWNyZXQoY29uZmlnOiBDb25maWcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWNyZXRLZXkgPSBhd2FpdCB0aGlzLnN0b3JhZ2VQbHVnaW4uZ2V0U2VjcmV0KCk7XG5cbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlUGx1Z2luLnNldFNlY3JldChjb25maWcuY2hlY2tTZWNyZXRLZXkoc2VjcmV0S2V5KSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2FkU3RvcmFnZShjb25maWc6IENvbmZpZywgbG9nZ2VyOiBMb2dnZXIpOiBJUGx1Z2luU3RvcmFnZTxDb25maWc+IHtcbiAgICBjb25zdCBTdG9yYWdlID0gdGhpcy5fbG9hZFN0b3JlUGx1Z2luKCk7XG5cbiAgICBpZiAoXy5pc05pbChTdG9yYWdlKSkge1xuICAgICAgYXNzZXJ0KHRoaXMuY29uZmlnLnN0b3JhZ2UsICdDT05GSUc6IHN0b3JhZ2UgcGF0aCBub3QgZGVmaW5lZCcpO1xuICAgICAgcmV0dXJuIG5ldyBMb2NhbERhdGFiYXNlKHRoaXMuY29uZmlnLCBsb2dnZXIpO1xuICAgIH1cbiAgICByZXR1cm4gU3RvcmFnZSBhcyBJUGx1Z2luU3RvcmFnZTxDb25maWc+O1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9hZFN0b3JlUGx1Z2luKCk6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4gfCB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW5fcGFyYW1zID0ge1xuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGxvZ2dlcjogdGhpcy5sb2dnZXIsXG4gICAgfTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgY29uc3QgcGx1Z2luczogSVBsdWdpblN0b3JhZ2U8Q29uZmlnPltdID0gbG9hZFBsdWdpbjxJUGx1Z2luU3RvcmFnZTxDb25maWc+PihcbiAgICAgIHRoaXMuY29uZmlnLFxuICAgICAgdGhpcy5jb25maWcuc3RvcmUsXG4gICAgICBwbHVnaW5fcGFyYW1zLFxuICAgICAgKHBsdWdpbik6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4gPT4ge1xuICAgICAgICByZXR1cm4gcGx1Z2luLmdldFBhY2thZ2VTdG9yYWdlO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gXy5oZWFkKHBsdWdpbnMpO1xuICB9XG5cbiAgcHVibGljIHNhdmVUb2tlbih0b2tlbjogVG9rZW4pOiBQcm9taXNlPGFueT4ge1xuICAgIGlmIChfLmlzRnVuY3Rpb24odGhpcy5zdG9yYWdlUGx1Z2luLnNhdmVUb2tlbikgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5zYXZlVG9rZW4odG9rZW4pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZVRva2VuKHVzZXI6IHN0cmluZywgdG9rZW5LZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnN0b3JhZ2VQbHVnaW4uZGVsZXRlVG9rZW4pID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNVUFBPUlRfRVJST1JTLlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4uZGVsZXRlVG9rZW4odXNlciwgdG9rZW5LZXkpO1xuICB9XG5cbiAgcHVibGljIHJlYWRUb2tlbnMoZmlsdGVyOiBUb2tlbkZpbHRlcik6IFByb21pc2U8VG9rZW5bXT4ge1xuICAgIGlmIChfLmlzRnVuY3Rpb24odGhpcy5zdG9yYWdlUGx1Z2luLnJlYWRUb2tlbnMpID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlNFUlZJQ0VfVU5BVkFJTEFCTEUsIFNVUFBPUlRfRVJST1JTLlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4ucmVhZFRva2VucyhmaWx0ZXIpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvY2FsU3RvcmFnZTtcbiJdfQ==
899
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbG9jYWwtc3RvcmFnZS50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsIkxvY2FsU3RvcmFnZSIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwibG9nZ2VyIiwic3RvcmFnZVBsdWdpbiIsIl9sb2FkU3RvcmFnZSIsImFkZFBhY2thZ2UiLCJuYW1lIiwicGtnIiwiY2FsbGJhY2siLCJzdG9yYWdlIiwiX2dldExvY2FsU3RvcmFnZSIsIl8iLCJpc05pbCIsIkVycm9yQ29kZSIsImdldE5vdEZvdW5kIiwiY3JlYXRlUGFja2FnZSIsImVyciIsImlzTnVsbCIsImNvZGUiLCJTVE9SQUdFIiwiRklMRV9FWElTVF9FUlJPUiIsIkhUVFBfU1RBVFVTIiwiQ09ORkxJQ1QiLCJnZXRDb25mbGljdCIsImxhdGVzdCIsInZlcnNpb25zIiwicmVtb3ZlUGFja2FnZSIsInJlYWRQYWNrYWdlIiwiZGF0YSIsIk5PX1NVQ0hfRklMRV9FUlJPUiIsIk5PVF9GT1VORCIsInJlbW92ZSIsInJlbW92ZUZhaWxlZCIsImVycm9yIiwiZ2V0QmFkRGF0YSIsIm1lc3NhZ2UiLCJkZWxldGVQYWNrYWdlIiwiUEFDS0FHRV9GSUxFX05BTUUiLCJhdHRhY2htZW50cyIsIk9iamVjdCIsImtleXMiLCJfYXR0YWNobWVudHMiLCJfZGVsZXRlQXR0YWNobWVudHMiLCJ1cGRhdGVWZXJzaW9ucyIsInBhY2thZ2VJbmZvIiwiX3JlYWRDcmVhdGVQYWNrYWdlIiwicGFja2FnZUxvY2FsSnNvbiIsImNoYW5nZSIsInJlYWRtZSIsInZlcnNpb25JZCIsInZlcnNpb24iLCJjb250cmlidXRvcnMiLCJkaXN0IiwidGFyYmFsbCIsInVybE9iamVjdCIsIlVybE5vZGUiLCJwYXJzZSIsImZpbGVuYW1lIiwicGF0aG5hbWUiLCJyZXBsYWNlIiwiX2Rpc3RmaWxlcyIsImhhc2giLCJ1cmwiLCJzaGEiLCJzaGFzdW0iLCJ1cExpbmsiLCJTeW1ib2wiLCJmb3IiLCJfdXBkYXRlVXBsaW5rVG9SZW1vdGVQcm90b2NvbCIsInRhZyIsIkRJU1RfVEFHUyIsInVwIiwiX3VwbGlua3MiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJuZWVkX2NoYW5nZSIsImV0YWciLCJmZXRjaGVkIiwiaXNFcXVhbCIsInRpbWUiLCJfd3JpdGVQYWNrYWdlIiwiYWRkVmVyc2lvbiIsIm1ldGFkYXRhIiwiX3VwZGF0ZVBhY2thZ2UiLCJjYiIsImhhc1ZlcnNpb24iLCJpc1N0cmluZyIsImVycm9yTWVzc2FnZSIsImdldEJhZFJlcXVlc3QiLCJjdXJyZW50RGF0ZSIsIkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWF0ZWQiLCJhZGQiLCJhZGRGYWlsZWQiLCJtZXJnZVRhZ3MiLCJwa2dOYW1lIiwidGFncyIsIl9nZXRWZXJzaW9uTm90Rm91bmQiLCJBUElfRVJST1IiLCJWRVJTSU9OX05PVF9FWElTVCIsIl9nZXRGaWxlTm90QXZhaWxhYmxlIiwiY2hhbmdlUGFja2FnZSIsImluY29taW5nUGtnIiwicmV2aXNpb24iLCJsb2NhbERhdGEiLCJpbmNvbWluZ1ZlcnNpb24iLCJpbmZvIiwiZmlsZSIsImluY29taW5nRGVwcmVjYXRlZCIsImRlcHJlY2F0ZWQiLCJtb2RpZmllZCIsIlVTRVJTIiwicmVtb3ZlVGFyYmFsbCIsImFkZFRhcmJhbGwiLCJsZW5ndGgiLCJzaGFPbmVIYXNoIiwidXBsb2FkU3RyZWFtIiwiVXBsb2FkVGFyYmFsbCIsIl90cmFuc2Zvcm0iLCJhYm9ydCIsImRvbmUiLCJhcmdzIiwidXBkYXRlIiwiYXBwbGllZERhdGEiLCJhcHBseSIsInByb2Nlc3MiLCJuZXh0VGljayIsImVtaXQiLCJnZXRGb3JiaWRkZW4iLCJ3cml0ZVN0cmVhbSIsIndyaXRlVGFyYmFsbCIsIm9uIiwiZ2V0UGFja2FnZU1ldGFkYXRhIiwiX2VyciIsIl9yZXMiLCJ1cGRhdGVyIiwiZGlnZXN0IiwicGlwZSIsImdldFRhcmJhbGwiLCJfY3JlYXRlRmFpbHVyZVN0cmVhbVJlc3BvbnNlIiwiX3N0cmVhbVN1Y2Nlc3NSZWFkVGFyQmFsbCIsInN0cmVhbSIsIlJlYWRUYXJiYWxsIiwicmVhZFRhcmJhbGxTdHJlYW0iLCJyZWFkVGFyYmFsbCIsImU0MDQiLCJjb250ZW50IiwiX3JlYWRQYWNrYWdlIiwic2VhcmNoIiwic3RhcnRLZXkiLCJvcHRpb25zIiwib2JqZWN0TW9kZSIsIl9zZWFyY2hFYWNoUGFja2FnZSIsIml0ZW0iLCJwYXJzZUludCIsInJlc3VsdCIsInB1c2giLCJvbkVuZCIsImVuZCIsImdldFBhY2thZ2VTdG9yYWdlIiwiX2ludGVybmFsRXJyb3IiLCJvblBhY2thZ2UiLCJ3YXJuIiwidmFsaWRhdGVOYW1lIiwiX2NyZWF0ZU5ld1BhY2thZ2UiLCJnZXRJbnRlcm5hbEVycm9yIiwidXBkYXRlSGFuZGxlciIsInVwZGF0ZVBhY2thZ2UiLCJiaW5kIiwibm9ybWFsaXplUGFja2FnZSIsImpzb24iLCJzYXZlUGFja2FnZSIsIl9zZXREZWZhdWx0UmV2aXNpb24iLCJfcmV2IiwiREVGQVVMVF9SRVZJU0lPTiIsIl9kZWJ1ZyIsInVubGlua05leHQiLCJpc0VtcHR5IiwiYXR0YWNobWVudCIsInNoaWZ0IiwidXBMaW5rS2V5IiwidGFyYmFsbFVybCIsInVwbGlua1VybCIsInVwbGlua3MiLCJob3N0IiwicHJvdG9jb2wiLCJyZWdpc3RyeSIsImZvcm1hdCIsImdldFNlY3JldCIsInNlY3JldEtleSIsInNldFNlY3JldCIsImNoZWNrU2VjcmV0S2V5IiwiU3RvcmFnZSIsIl9sb2FkU3RvcmVQbHVnaW4iLCJMb2NhbERhdGFiYXNlIiwicGx1Z2luX3BhcmFtcyIsInBsdWdpbnMiLCJzdG9yZSIsInBsdWdpbiIsImhlYWQiLCJzYXZlVG9rZW4iLCJ0b2tlbiIsImlzRnVuY3Rpb24iLCJQcm9taXNlIiwicmVqZWN0IiwiZ2V0Q29kZSIsIlNFUlZJQ0VfVU5BVkFJTEFCTEUiLCJTVVBQT1JUX0VSUk9SUyIsIlBMVUdJTl9NSVNTSU5HX0lOVEVSRkFDRSIsImRlbGV0ZVRva2VuIiwidXNlciIsInRva2VuS2V5IiwicmVh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WTJMLG1CQUE5QixFQUFtREMsMEJBQWVDLHdCQUFsRSxDQUFmLENBQVA7QUFDRDs7QUFFRCxXQUFPLEtBQUsvTSxhQUFMLENBQW1CdU0sU0FBbkIsQ0FBNkJDLEtBQTdCLENBQVA7QUFDRDs7QUFFTVEsRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVBQWVDLFFBQWYsRUFBK0M7QUFDL0QsUUFBSTFNLGdCQUFFaU0sVUFBRixDQUFhLEtBQUt6TSxhQUFMLENBQW1CZ04sV0FBaEMsTUFBaUQsS0FBckQsRUFBNEQ7QUFDMUQsYUFBT04sT0FBTyxDQUFDQyxNQUFSLENBQWVqTSxpQkFBVWtNLE9BQVYsQ0FBa0IxTCx1QkFBWTJMLG1CQUE5QixFQUFtREMsMEJBQWVDLHdCQUFsRSxDQUFmLENBQVA7QUFDRDs7QUFFRCxXQUFPLEtBQUsvTSxhQUFMLENBQW1CZ04sV0FBbkIsQ0FBK0JDLElBQS9CLEVBQXFDQyxRQUFyQyxDQUFQO0FBQ0Q7O0FBRU1DLEVBQUFBLFVBQVUsQ0FBQ0MsTUFBRCxFQUF3QztBQUN2RCxRQUFJNU0sZ0JBQUVpTSxVQUFGLENBQWEsS0FBS3pNLGFBQUwsQ0FBbUJtTixVQUFoQyxNQUFnRCxLQUFwRCxFQUEyRDtBQUN6RCxhQUFPVCxPQUFPLENBQUNDLE1BQVIsQ0FBZWpNLGlCQUFVa00sT0FBVixDQUFrQjFMLHVCQUFZMkwsbUJBQTlCLEVBQW1EQywwQkFBZUMsd0JBQWxFLENBQWYsQ0FBUDtBQUNEOztBQUVELFdBQU8sS0FBSy9NLGFBQUwsQ0FBbUJtTixVQUFuQixDQUE4QkMsTUFBOUIsQ0FBUDtBQUNEOztBQWwwQm9DOztlQXEwQnhCeE4sWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBidWlsRGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBVcmxOb2RlIGZyb20gJ3VybCc7XG5cbmltcG9ydCB7IFZlcmRhY2Npb0Vycm9yIH0gZnJvbSAnQHZlcmRhY2Npby9jb21tb25zLWFwaSc7XG5pbXBvcnQgTG9jYWxEYXRhYmFzZSBmcm9tICdAdmVyZGFjY2lvL2xvY2FsLXN0b3JhZ2UnO1xuaW1wb3J0IHsgUmVhZFRhcmJhbGwsIFVwbG9hZFRhcmJhbGwgfSBmcm9tICdAdmVyZGFjY2lvL3N0cmVhbXMnO1xuaW1wb3J0IHtcbiAgQXV0aG9yLFxuICBDYWxsYmFjayxcbiAgQ2FsbGJhY2tBY3Rpb24sXG4gIENvbmZpZyxcbiAgRGlzdEZpbGUsXG4gIElQYWNrYWdlU3RvcmFnZSxcbiAgSVBsdWdpblN0b3JhZ2UsXG4gIElSZWFkVGFyYmFsbCxcbiAgSVVwbG9hZFRhcmJhbGwsXG4gIExvZ2dlcixcbiAgTWVyZ2VUYWdzLFxuICBQYWNrYWdlLFxuICBTdG9yYWdlVXBkYXRlQ2FsbGJhY2ssXG4gIFRva2VuLFxuICBUb2tlbkZpbHRlcixcbiAgVmVyc2lvbixcbiAgb25FbmRTZWFyY2hQYWNrYWdlLFxuICBvblNlYXJjaFBhY2thZ2UsXG59IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuXG5pbXBvcnQgeyBJU3RvcmFnZSwgU3RyaW5nVmFsdWUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgbG9hZFBsdWdpbiBmcm9tICcuLi9saWIvcGx1Z2luLWxvYWRlcic7XG5pbXBvcnQgeyBBUElfRVJST1IsIERJU1RfVEFHUywgSFRUUF9TVEFUVVMsIFNUT1JBR0UsIFNVUFBPUlRfRVJST1JTLCBVU0VSUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGNyZWF0ZVRhcmJhbGxIYXNoIH0gZnJvbSAnLi9jcnlwdG8tdXRpbHMnO1xuaW1wb3J0IHsgY2xlYW5VcFJlYWRtZSwgZ2VuZXJhdGVQYWNrYWdlVGVtcGxhdGUsIGdlbmVyYXRlUmV2aXNpb24sIGdldExhdGVzdFJlYWRtZSwgbm9ybWFsaXplQ29udHJpYnV0b3JzLCBub3JtYWxpemVQYWNrYWdlIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IHByZXBhcmVTZWFyY2hQYWNrYWdlIH0gZnJvbSAnLi9zdG9yYWdlLXV0aWxzJztcbmltcG9ydCB7IEVycm9yQ29kZSwgZ2V0TGF0ZXN0VmVyc2lvbiwgaXNPYmplY3QsIHRhZ1ZlcnNpb24sIHZhbGlkYXRlTmFtZSB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBkZWJ1ZyA9IGJ1aWxEZWJ1ZygndmVyZGFjY2lvOmxvY2FsLXN0b3JhZ2UnKTtcbi8qKlxuICogSW1wbGVtZW50cyBTdG9yYWdlIGludGVyZmFjZSAoc2FtZSBmb3Igc3RvcmFnZS5qcywgbG9jYWwtc3RvcmFnZS5qcywgdXAtc3RvcmFnZS5qcykuXG4gKi9cbmNsYXNzIExvY2FsU3RvcmFnZSBpbXBsZW1lbnRzIElTdG9yYWdlIHtcbiAgcHVibGljIGNvbmZpZzogQ29uZmlnO1xuICBwdWJsaWMgc3RvcmFnZVBsdWdpbjogSVBsdWdpblN0b3JhZ2U8Q29uZmlnPjtcbiAgcHVibGljIGxvZ2dlcjogTG9nZ2VyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZywgbG9nZ2VyOiBMb2dnZXIpIHtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnN0b3JhZ2VQbHVnaW4gPSB0aGlzLl9sb2FkU3RvcmFnZShjb25maWcsIGxvZ2dlcik7XG4gIH1cblxuICBwdWJsaWMgYWRkUGFja2FnZShuYW1lOiBzdHJpbmcsIHBrZzogUGFja2FnZSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogYW55ID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Tm90Rm91bmQoJ3RoaXMgcGFja2FnZSBjYW5ub3QgYmUgYWRkZWQnKSk7XG4gICAgfVxuXG4gICAgc3RvcmFnZS5jcmVhdGVQYWNrYWdlKG5hbWUsIGdlbmVyYXRlUGFja2FnZVRlbXBsYXRlKG5hbWUpLCAoZXJyKSA9PiB7XG4gICAgICAvLyBGSVhNRTogaXQgd2lsbCBiZSBmaXhlZCBoZXJlIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJkYWNjaW8vdmVyZGFjY2lvL3B1bGwvMTM2MFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKF8uaXNOdWxsKGVycikgPT09IGZhbHNlICYmIChlcnIuY29kZSA9PT0gU1RPUkFHRS5GSUxFX0VYSVNUX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5DT05GTElDVCkpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRDb25mbGljdCgpKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGF0ZXN0ID0gZ2V0TGF0ZXN0VmVyc2lvbihwa2cpO1xuICAgICAgaWYgKF8uaXNOaWwobGF0ZXN0KSA9PT0gZmFsc2UgJiYgcGtnLnZlcnNpb25zW2xhdGVzdF0pIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHBrZy52ZXJzaW9uc1tsYXRlc3RdKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHVibGljIHJlbW92ZVBhY2thZ2UobmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBhbnkgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG4gICAgZGVidWcoJ1tzdG9yYWdlXSByZW1vdmluZyBwYWNrYWdlICVvJywgbmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhFcnJvckNvZGUuZ2V0Tm90Rm91bmQoKSk7XG4gICAgfVxuXG4gICAgc3RvcmFnZS5yZWFkUGFja2FnZShuYW1lLCAoZXJyLCBkYXRhOiBQYWNrYWdlKTogdm9pZCA9PiB7XG4gICAgICBpZiAoXy5pc05pbChlcnIpID09PSBmYWxzZSkge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuTk9fU1VDSF9GSUxFX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgfVxuXG4gICAgICBkYXRhID0gbm9ybWFsaXplUGFja2FnZShkYXRhKTtcblxuICAgICAgdGhpcy5zdG9yYWdlUGx1Z2luLnJlbW92ZShuYW1lLCAocmVtb3ZlRmFpbGVkOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAocmVtb3ZlRmFpbGVkKSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIGhhcHBlbiB3aGVuIGRhdGFiYXNlIGlzIGxvY2tlZFxuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgbmFtZSB9LCBgW3N0b3JhZ2UvcmVtb3ZlUGFja2FnZV0gdGhlIGRhdGFiYXNlIGlzIGxvY2tlZCwgcmVtb3ZlZCBoYXMgZmFpbGVkIGZvciBAe25hbWV9YCk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRCYWREYXRhKHJlbW92ZUZhaWxlZC5tZXNzYWdlKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzdG9yYWdlLmRlbGV0ZVBhY2thZ2UoU1RPUkFHRS5QQUNLQUdFX0ZJTEVfTkFNRSwgKGVycik6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhdHRhY2htZW50cyA9IE9iamVjdC5rZXlzKGRhdGEuX2F0dGFjaG1lbnRzKTtcblxuICAgICAgICAgIHRoaXMuX2RlbGV0ZUF0dGFjaG1lbnRzKHN0b3JhZ2UsIGF0dGFjaG1lbnRzLCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3luY2hyb25pemUgcmVtb3RlIHBhY2thZ2UgaW5mbyB3aXRoIHRoZSBsb2NhbCBvbmVcbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gcGFja2FnZUluZm9cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZVZlcnNpb25zKG5hbWU6IHN0cmluZywgcGFja2FnZUluZm86IFBhY2thZ2UsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIHRoaXMuX3JlYWRDcmVhdGVQYWNrYWdlKG5hbWUsIChlcnIsIHBhY2thZ2VMb2NhbEpzb24pOiB2b2lkID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICB9XG5cbiAgICAgIGxldCBjaGFuZ2UgPSBmYWxzZTtcbiAgICAgIC8vIHVwZGF0aW5nIHJlYWRtZVxuICAgICAgcGFja2FnZUxvY2FsSnNvbi5yZWFkbWUgPSBnZXRMYXRlc3RSZWFkbWUocGFja2FnZUluZm8pO1xuICAgICAgaWYgKHBhY2thZ2VJbmZvLnJlYWRtZSAhPT0gcGFja2FnZUxvY2FsSnNvbi5yZWFkbWUpIHtcbiAgICAgICAgY2hhbmdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgdmVyc2lvbklkIGluIHBhY2thZ2VJbmZvLnZlcnNpb25zKSB7XG4gICAgICAgIGlmIChfLmlzTmlsKHBhY2thZ2VMb2NhbEpzb24udmVyc2lvbnNbdmVyc2lvbklkXSkpIHtcbiAgICAgICAgICBsZXQgdmVyc2lvbiA9IHBhY2thZ2VJbmZvLnZlcnNpb25zW3ZlcnNpb25JZF07XG5cbiAgICAgICAgICAvLyB3ZSBkb24ndCBrZWVwIHJlYWRtZSBmb3IgcGFja2FnZSB2ZXJzaW9ucyxcbiAgICAgICAgICAvLyBvbmx5IG9uZSByZWFkbWUgcGVyIHBhY2thZ2VcbiAgICAgICAgICB2ZXJzaW9uID0gY2xlYW5VcFJlYWRtZSh2ZXJzaW9uKTtcbiAgICAgICAgICB2ZXJzaW9uLmNvbnRyaWJ1dG9ycyA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyh2ZXJzaW9uLmNvbnRyaWJ1dG9ycyBhcyBBdXRob3JbXSk7XG5cbiAgICAgICAgICBjaGFuZ2UgPSB0cnVlO1xuICAgICAgICAgIHBhY2thZ2VMb2NhbEpzb24udmVyc2lvbnNbdmVyc2lvbklkXSA9IHZlcnNpb247XG5cbiAgICAgICAgICBpZiAodmVyc2lvbi5kaXN0ICYmIHZlcnNpb24uZGlzdC50YXJiYWxsKSB7XG4gICAgICAgICAgICBjb25zdCB1cmxPYmplY3Q6IGFueSA9IFVybE5vZGUucGFyc2UodmVyc2lvbi5kaXN0LnRhcmJhbGwpO1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSB1cmxPYmplY3QucGF0aG5hbWUucmVwbGFjZSgvXi4qXFwvLywgJycpO1xuXG4gICAgICAgICAgICAvLyB3ZSBkbyBOT1Qgb3ZlcndyaXRlIGFueSBleGlzdGluZyByZWNvcmRzXG4gICAgICAgICAgICBpZiAoXy5pc05pbChwYWNrYWdlTG9jYWxKc29uLl9kaXN0ZmlsZXNbZmlsZW5hbWVdKSkge1xuICAgICAgICAgICAgICBjb25zdCBoYXNoOiBEaXN0RmlsZSA9IChwYWNrYWdlTG9jYWxKc29uLl9kaXN0ZmlsZXNbZmlsZW5hbWVdID0ge1xuICAgICAgICAgICAgICAgIHVybDogdmVyc2lvbi5kaXN0LnRhcmJhbGwsXG4gICAgICAgICAgICAgICAgc2hhOiB2ZXJzaW9uLmRpc3Quc2hhc3VtLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgLyogZXNsaW50IHNwYWNlZC1jb21tZW50OiAwICovXG4gICAgICAgICAgICAgIC8vICRGbG93Rml4TWVcbiAgICAgICAgICAgICAgY29uc3QgdXBMaW5rOiBzdHJpbmcgPSB2ZXJzaW9uW1N5bWJvbC5mb3IoJ19fdmVyZGFjY2lvX3VwbGluaycpXTtcblxuICAgICAgICAgICAgICBpZiAoXy5pc05pbCh1cExpbmspID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVwbGlua1RvUmVtb3RlUHJvdG9jb2woaGFzaCwgdXBMaW5rKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHRhZyBpbiBwYWNrYWdlSW5mb1tESVNUX1RBR1NdKSB7XG4gICAgICAgIGlmICghcGFja2FnZUxvY2FsSnNvbltESVNUX1RBR1NdW3RhZ10gfHwgcGFja2FnZUxvY2FsSnNvbltESVNUX1RBR1NdW3RhZ10gIT09IHBhY2thZ2VJbmZvW0RJU1RfVEFHU11bdGFnXSkge1xuICAgICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgcGFja2FnZUxvY2FsSnNvbltESVNUX1RBR1NdW3RhZ10gPSBwYWNrYWdlSW5mb1tESVNUX1RBR1NdW3RhZ107XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCB1cCBpbiBwYWNrYWdlSW5mby5fdXBsaW5rcykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhY2thZ2VJbmZvLl91cGxpbmtzLCB1cCkpIHtcbiAgICAgICAgICBjb25zdCBuZWVkX2NoYW5nZSA9XG4gICAgICAgICAgICAhaXNPYmplY3QocGFja2FnZUxvY2FsSnNvbi5fdXBsaW5rc1t1cF0pIHx8XG4gICAgICAgICAgICBwYWNrYWdlSW5mby5fdXBsaW5rc1t1cF0uZXRhZyAhPT0gcGFja2FnZUxvY2FsSnNvbi5fdXBsaW5rc1t1cF0uZXRhZyB8fFxuICAgICAgICAgICAgcGFja2FnZUluZm8uX3VwbGlua3NbdXBdLmZldGNoZWQgIT09IHBhY2thZ2VMb2NhbEpzb24uX3VwbGlua3NbdXBdLmZldGNoZWQ7XG5cbiAgICAgICAgICBpZiAobmVlZF9jaGFuZ2UpIHtcbiAgICAgICAgICAgIGNoYW5nZSA9IHRydWU7XG4gICAgICAgICAgICBwYWNrYWdlTG9jYWxKc29uLl91cGxpbmtzW3VwXSA9IHBhY2thZ2VJbmZvLl91cGxpbmtzW3VwXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCd0aW1lJyBpbiBwYWNrYWdlSW5mbyAmJiAhXy5pc0VxdWFsKHBhY2thZ2VMb2NhbEpzb24udGltZSwgcGFja2FnZUluZm8udGltZSkpIHtcbiAgICAgICAgcGFja2FnZUxvY2FsSnNvbi50aW1lID0gcGFja2FnZUluZm8udGltZTtcbiAgICAgICAgY2hhbmdlID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICBkZWJ1ZygndXBkYXRpbmcgcGFja2FnZSAlbyBpbmZvJywgbmFtZSk7XG4gICAgICAgIHRoaXMuX3dyaXRlUGFja2FnZShuYW1lLCBwYWNrYWdlTG9jYWxKc29uLCBmdW5jdGlvbiAoZXJyKTogdm9pZCB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyLCBwYWNrYWdlTG9jYWxKc29uKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBwYWNrYWdlTG9jYWxKc29uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgdmVyc2lvbiB0byBhIHByZXZpb3VzIGxvY2FsIHBhY2thZ2UuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZlcnNpb25cbiAgICogQHBhcmFtIHsqfSBtZXRhZGF0YVxuICAgKiBAcGFyYW0geyp9IHRhZ1xuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgYWRkVmVyc2lvbihuYW1lOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgbWV0YWRhdGE6IFZlcnNpb24sIHRhZzogU3RyaW5nVmFsdWUsIGNhbGxiYWNrOiBDYWxsYmFja0FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICBuYW1lLFxuICAgICAgKGRhdGEsIGNiOiBDYWxsYmFjayk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBrZWVwIG9ubHkgb25lIHJlYWRtZSBwZXIgcGFja2FnZVxuICAgICAgICBkYXRhLnJlYWRtZSA9IG1ldGFkYXRhLnJlYWRtZTtcblxuICAgICAgICAvLyBUT0RPOiBsb2Rhc2ggcmVtb3ZlXG4gICAgICAgIG1ldGFkYXRhID0gY2xlYW5VcFJlYWRtZShtZXRhZGF0YSk7XG4gICAgICAgIG1ldGFkYXRhLmNvbnRyaWJ1dG9ycyA9IG5vcm1hbGl6ZUNvbnRyaWJ1dG9ycyhtZXRhZGF0YS5jb250cmlidXRvcnMgYXMgQXV0aG9yW10pO1xuXG4gICAgICAgIGNvbnN0IGhhc1ZlcnNpb24gPSBkYXRhLnZlcnNpb25zW3ZlcnNpb25dICE9IG51bGw7XG4gICAgICAgIGlmIChoYXNWZXJzaW9uKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRDb25mbGljdCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHVwbG9hZGVkIHRhcmJhbGwgaGFzIGEgZGlmZmVyZW50IHNoYXN1bSwgaXQncyB2ZXJ5IGxpa2VseSB0aGF0IHdlIGhhdmUgc29tZSBraW5kIG9mIGVycm9yXG4gICAgICAgIGlmIChpc09iamVjdChtZXRhZGF0YS5kaXN0KSAmJiBfLmlzU3RyaW5nKG1ldGFkYXRhLmRpc3QudGFyYmFsbCkpIHtcbiAgICAgICAgICBjb25zdCB0YXJiYWxsID0gbWV0YWRhdGEuZGlzdC50YXJiYWxsLnJlcGxhY2UoLy4qXFwvLywgJycpO1xuXG4gICAgICAgICAgaWYgKGlzT2JqZWN0KGRhdGEuX2F0dGFjaG1lbnRzW3RhcmJhbGxdKSkge1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwoZGF0YS5fYXR0YWNobWVudHNbdGFyYmFsbF0uc2hhc3VtKSA9PT0gZmFsc2UgJiYgXy5pc05pbChtZXRhZGF0YS5kaXN0LnNoYXN1bSkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgIGlmIChkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXS5zaGFzdW0gIT0gbWV0YWRhdGEuZGlzdC5zaGFzdW0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgc2hhc3VtIGVycm9yLCAke2RhdGEuX2F0dGFjaG1lbnRzW3RhcmJhbGxdLnNoYXN1bX0gIT0gJHttZXRhZGF0YS5kaXN0LnNoYXN1bX1gO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihFcnJvckNvZGUuZ2V0QmFkUmVxdWVzdChlcnJvck1lc3NhZ2UpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICAgICAgICAgICAgLy8gc29tZSBvbGQgc3RvcmFnZSBkbyBub3QgaGF2ZSB0aGlzIGZpZWxkICM3NDBcbiAgICAgICAgICAgIGlmIChfLmlzTmlsKGRhdGEudGltZSkpIHtcbiAgICAgICAgICAgICAgZGF0YS50aW1lID0ge307XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRhdGEudGltZVsnbW9kaWZpZWQnXSA9IGN1cnJlbnREYXRlO1xuXG4gICAgICAgICAgICBpZiAoJ2NyZWF0ZWQnIGluIGRhdGEudGltZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgZGF0YS50aW1lLmNyZWF0ZWQgPSBjdXJyZW50RGF0ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0YS50aW1lW3ZlcnNpb25dID0gY3VycmVudERhdGU7XG4gICAgICAgICAgICBkYXRhLl9hdHRhY2htZW50c1t0YXJiYWxsXS52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhLnZlcnNpb25zW3ZlcnNpb25dID0gbWV0YWRhdGE7XG4gICAgICAgIHRhZ1ZlcnNpb24oZGF0YSwgdmVyc2lvbiwgdGFnKTtcblxuICAgICAgICB0aGlzLnN0b3JhZ2VQbHVnaW4uYWRkKG5hbWUsIChhZGRGYWlsZWQpOiB2b2lkID0+IHtcbiAgICAgICAgICBpZiAoYWRkRmFpbGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2IoRXJyb3JDb2RlLmdldEJhZERhdGEoYWRkRmFpbGVkLm1lc3NhZ2UpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYigpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYSBuZXcgbGlzdCBvZiB0YWdzIGZvciBhIGxvY2FsIHBhY2thZ2VzIHdpdGggdGhlIGV4aXN0aW5nIG9uZS5cbiAgICogQHBhcmFtIHsqfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7Kn0gdGFnc1xuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgbWVyZ2VUYWdzKHBrZ05hbWU6IHN0cmluZywgdGFnczogTWVyZ2VUYWdzLCBjYWxsYmFjazogQ2FsbGJhY2tBY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVQYWNrYWdlKFxuICAgICAgcGtnTmFtZSxcbiAgICAgIChkYXRhLCBjYik6IHZvaWQgPT4ge1xuICAgICAgICAvKiBlc2xpbnQgZ3VhcmQtZm9yLWluOiAwICovXG4gICAgICAgIGZvciAoY29uc3QgdGFnIGluIHRhZ3MpIHtcbiAgICAgICAgICAvLyB0aGlzIGhhbmRsZSBkaXN0LXRhZyBybSBjb21tYW5kXG4gICAgICAgICAgaWYgKF8uaXNOdWxsKHRhZ3NbdGFnXSkpIHtcbiAgICAgICAgICAgIGRlbGV0ZSBkYXRhW0RJU1RfVEFHU11bdGFnXTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChfLmlzTmlsKGRhdGEudmVyc2lvbnNbdGFnc1t0YWddXSkpIHtcbiAgICAgICAgICAgIHJldHVybiBjYih0aGlzLl9nZXRWZXJzaW9uTm90Rm91bmQoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHZlcnNpb246IHN0cmluZyA9IHRhZ3NbdGFnXTtcbiAgICAgICAgICB0YWdWZXJzaW9uKGRhdGEsIHZlcnNpb24sIHRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgY2IobnVsbCk7XG4gICAgICB9LFxuICAgICAgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB2ZXJzaW9uIG5vdCBmb3VuZFxuICAgKiBAcmV0dXJuIHtTdHJpbmd9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9nZXRWZXJzaW9uTm90Rm91bmQoKTogVmVyZGFjY2lvRXJyb3Ige1xuICAgIHJldHVybiBFcnJvckNvZGUuZ2V0Tm90Rm91bmQoQVBJX0VSUk9SLlZFUlNJT05fTk9UX0VYSVNUKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gZmlsZSBubyBhdmFpbGFibGVcbiAgICogQHJldHVybiB7U3RyaW5nfVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0RmlsZU5vdEF2YWlsYWJsZSgpOiBWZXJkYWNjaW9FcnJvciB7XG4gICAgcmV0dXJuIEVycm9yQ29kZS5nZXROb3RGb3VuZCgnbm8gc3VjaCBmaWxlIGF2YWlsYWJsZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcGFja2FnZSBtZXRhZGF0YSwgdGFncyBhbmQgYXR0YWNobWVudHMgKHRhcmJhbGxzKS5cbiAgICogTm90ZTogQ3VycmVudGx5IHN1cHBvcnRzIHVucHVibGlzaGluZyBhbmQgZGVwcmVjYXRpb24uXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGluY29taW5nUGtnXG4gICAqIEBwYXJhbSB7Kn0gcmV2aXNpb25cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHB1YmxpYyBjaGFuZ2VQYWNrYWdlKG5hbWU6IHN0cmluZywgaW5jb21pbmdQa2c6IFBhY2thZ2UsIHJldmlzaW9uOiBzdHJpbmcgfCB2b2lkLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBpZiAoIWlzT2JqZWN0KGluY29taW5nUGtnLnZlcnNpb25zKSB8fCAhaXNPYmplY3QoaW5jb21pbmdQa2dbRElTVF9UQUdTXSkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKHsgbmFtZSB9LCBgY2hhbmdlUGFja2FnZSBiYWQgZGF0YSBmb3IgQHtuYW1lfWApO1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRCYWREYXRhKCkpO1xuICAgIH1cbiAgICBkZWJ1ZygnY2hhbmdlUGFja2FnZSB1ZGFwdGluZyBwYWNrYWdlIGZvciAlbycsIG5hbWUpO1xuICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICBuYW1lLFxuICAgICAgKGxvY2FsRGF0YTogUGFja2FnZSwgY2I6IENhbGxiYWNrQWN0aW9uKTogdm9pZCA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgdmVyc2lvbiBpbiBsb2NhbERhdGEudmVyc2lvbnMpIHtcbiAgICAgICAgICBjb25zdCBpbmNvbWluZ1ZlcnNpb24gPSBpbmNvbWluZ1BrZy52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgICAgICAgICBpZiAoXy5pc05pbChpbmNvbWluZ1ZlcnNpb24pKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgbmFtZTogbmFtZSwgdmVyc2lvbjogdmVyc2lvbiB9LCAndW5wdWJsaXNoaW5nIEB7bmFtZX1AQHt2ZXJzaW9ufScpO1xuXG4gICAgICAgICAgICAvLyBGSVhNRTogSSBwcmVmZXIgcmV0dXJuIGEgbmV3IG9iamVjdCByYXRoZXIgbXV0YXRlIHRoZSBtZXRhZGF0YVxuICAgICAgICAgICAgZGVsZXRlIGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXTtcbiAgICAgICAgICAgIGRlbGV0ZSBsb2NhbERhdGEudGltZSFbdmVyc2lvbl07XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZSBpbiBsb2NhbERhdGEuX2F0dGFjaG1lbnRzKSB7XG4gICAgICAgICAgICAgIGlmIChsb2NhbERhdGEuX2F0dGFjaG1lbnRzW2ZpbGVdLnZlcnNpb24gPT09IHZlcnNpb24pIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxEYXRhLl9hdHRhY2htZW50c1tmaWxlXS52ZXJzaW9uO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaW5jb21pbmdWZXJzaW9uLCAnZGVwcmVjYXRlZCcpKSB7XG4gICAgICAgICAgICBjb25zdCBpbmNvbWluZ0RlcHJlY2F0ZWQgPSBpbmNvbWluZ1ZlcnNpb24uZGVwcmVjYXRlZDtcbiAgICAgICAgICAgIGlmIChpbmNvbWluZ0RlcHJlY2F0ZWQgIT0gbG9jYWxEYXRhLnZlcnNpb25zW3ZlcnNpb25dLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgICAgICAgaWYgKCFpbmNvbWluZ0RlcHJlY2F0ZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKHsgbmFtZTogbmFtZSwgdmVyc2lvbjogdmVyc2lvbiB9LCAndW5kZXByZWNhdGluZyBAe25hbWV9QEB7dmVyc2lvbn0nKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbG9jYWxEYXRhLnZlcnNpb25zW3ZlcnNpb25dLmRlcHJlY2F0ZWQ7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyh7IG5hbWU6IG5hbWUsIHZlcnNpb246IHZlcnNpb24gfSwgJ2RlcHJlY2F0aW5nIEB7bmFtZX1AQHt2ZXJzaW9ufScpO1xuICAgICAgICAgICAgICAgIGxvY2FsRGF0YS52ZXJzaW9uc1t2ZXJzaW9uXS5kZXByZWNhdGVkID0gaW5jb21pbmdEZXByZWNhdGVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxvY2FsRGF0YS50aW1lIS5tb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsb2NhbERhdGFbVVNFUlNdID0gaW5jb21pbmdQa2dbVVNFUlNdO1xuICAgICAgICBsb2NhbERhdGFbRElTVF9UQUdTXSA9IGluY29taW5nUGtnW0RJU1RfVEFHU107XG4gICAgICAgIGNiKG51bGwpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuICAvKipcbiAgICogUmVtb3ZlIGEgdGFyYmFsbC5cbiAgICogQHBhcmFtIHsqfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gZmlsZW5hbWVcbiAgICogQHBhcmFtIHsqfSByZXZpc2lvblxuICAgKiBAcGFyYW0geyp9IGNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFyYmFsbChuYW1lOiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcsIHJldmlzaW9uOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFja0FjdGlvbik6IHZvaWQge1xuICAgIGFzc2VydCh2YWxpZGF0ZU5hbWUoZmlsZW5hbWUpKTtcblxuICAgIHRoaXMuX3VwZGF0ZVBhY2thZ2UoXG4gICAgICBuYW1lLFxuICAgICAgKGRhdGEsIGNiKTogdm9pZCA9PiB7XG4gICAgICAgIGlmIChkYXRhLl9hdHRhY2htZW50c1tmaWxlbmFtZV0pIHtcbiAgICAgICAgICBkZWxldGUgZGF0YS5fYXR0YWNobWVudHNbZmlsZW5hbWVdO1xuICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNiKHRoaXMuX2dldEZpbGVOb3RBdmFpbGFibGUoKSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAoZXJyOiBWZXJkYWNjaW9FcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcblxuICAgICAgICBpZiAoc3RvcmFnZSkge1xuICAgICAgICAgIHN0b3JhZ2UuZGVsZXRlUGFja2FnZShmaWxlbmFtZSwgY2FsbGJhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YXJiYWxsLlxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gZmlsZW5hbWVcbiAgICogQHJldHVybiB7U3RyZWFtfVxuICAgKi9cbiAgcHVibGljIGFkZFRhcmJhbGwobmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogSVVwbG9hZFRhcmJhbGwge1xuICAgIGFzc2VydCh2YWxpZGF0ZU5hbWUoZmlsZW5hbWUpKTtcblxuICAgIGxldCBsZW5ndGggPSAwO1xuICAgIGNvbnN0IHNoYU9uZUhhc2ggPSBjcmVhdGVUYXJiYWxsSGFzaCgpO1xuICAgIGNvbnN0IHVwbG9hZFN0cmVhbTogSVVwbG9hZFRhcmJhbGwgPSBuZXcgVXBsb2FkVGFyYmFsbCh7fSk7XG4gICAgY29uc3QgX3RyYW5zZm9ybSA9IHVwbG9hZFN0cmVhbS5fdHJhbnNmb3JtO1xuICAgIGNvbnN0IHN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG5cbiAgICB1cGxvYWRTdHJlYW0uYWJvcnQgPSBmdW5jdGlvbiAoKTogdm9pZCB7fTtcbiAgICB1cGxvYWRTdHJlYW0uZG9uZSA9IGZ1bmN0aW9uICgpOiB2b2lkIHt9O1xuXG4gICAgdXBsb2FkU3RyZWFtLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgLi4uYXJncyk6IHZvaWQge1xuICAgICAgc2hhT25lSGFzaC51cGRhdGUoZGF0YSk7XG4gICAgICAvLyBtZWFzdXJlIHRoZSBsZW5ndGggZm9yIHZhbGlkYXRpb24gcmVhc29uc1xuICAgICAgbGVuZ3RoICs9IGRhdGEubGVuZ3RoO1xuICAgICAgY29uc3QgYXBwbGllZERhdGEgPSBbZGF0YSwgLi4uYXJnc107XG4gICAgICAvLyBGSVhNRTogbm90IHN1cmUgYWJvdXQgdGhpcyBhcHByb2FjaCwgdHNjIGNvbXBsYWluc1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgX3RyYW5zZm9ybS5hcHBseSh1cGxvYWRTdHJlYW0sIGFwcGxpZWREYXRhKTtcbiAgICB9O1xuXG4gICAgaWYgKG5hbWUgPT09ICdfX3Byb3RvX18nKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKCgpOiB2b2lkID0+IHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgRXJyb3JDb2RlLmdldEZvcmJpZGRlbigpKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHVwbG9hZFN0cmVhbTtcbiAgICB9XG5cbiAgICBpZiAoIXN0b3JhZ2UpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soKCk6IHZvaWQgPT4ge1xuICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBcImNhbid0IHVwbG9hZCB0aGlzIHBhY2thZ2VcIik7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB1cGxvYWRTdHJlYW07XG4gICAgfVxuXG4gICAgY29uc3Qgd3JpdGVTdHJlYW06IElVcGxvYWRUYXJiYWxsID0gc3RvcmFnZS53cml0ZVRhcmJhbGwoZmlsZW5hbWUpO1xuXG4gICAgd3JpdGVTdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLkZJTEVfRVhJU1RfRVJST1IgfHwgZXJyLmNvZGUgPT09IEhUVFBfU1RBVFVTLkNPTkZMSUNUKSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIEVycm9yQ29kZS5nZXRDb25mbGljdCgpKTtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmFib3J0KCk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuTk9fU1VDSF9GSUxFX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgcGFja2FnZSBleGlzdHMgdG8gdGhyb3cgYW4gYXBwcm9wcmlhdGUgbWVzc2FnZVxuICAgICAgICB0aGlzLmdldFBhY2thZ2VNZXRhZGF0YShuYW1lLCBmdW5jdGlvbiAoX2VycjogVmVyZGFjY2lvRXJyb3IsIF9yZXM6IFBhY2thZ2UpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoX2Vycikge1xuICAgICAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgX2Vycik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwbG9hZFN0cmVhbS5lbWl0KCdlcnJvcicsIGVycik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB3cml0ZVN0cmVhbS5vbignb3BlbicsIGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIC8vIHJlLWVtaXR0aW5nIG9wZW4gYmVjYXVzZSBpdCdzIGhhbmRsZWQgaW4gc3RvcmFnZS5qc1xuICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ29wZW4nKTtcbiAgICB9KTtcblxuICAgIHdyaXRlU3RyZWFtLm9uKCdzdWNjZXNzJywgKCk6IHZvaWQgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlUGFja2FnZShcbiAgICAgICAgbmFtZSxcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlcihkYXRhLCBjYik6IHZvaWQge1xuICAgICAgICAgIGRhdGEuX2F0dGFjaG1lbnRzW2ZpbGVuYW1lXSA9IHtcbiAgICAgICAgICAgIHNoYXN1bTogc2hhT25lSGFzaC5kaWdlc3QoJ2hleCcpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY2IobnVsbCk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uIChlcnIpOiB2b2lkIHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1cGxvYWRTdHJlYW0uZW1pdCgnc3VjY2VzcycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHVwbG9hZFN0cmVhbS5hYm9ydCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIHdyaXRlU3RyZWFtLmFib3J0KCk7XG4gICAgfTtcblxuICAgIHVwbG9hZFN0cmVhbS5kb25lID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgaWYgKCFsZW5ndGgpIHtcbiAgICAgICAgdXBsb2FkU3RyZWFtLmVtaXQoJ2Vycm9yJywgRXJyb3JDb2RlLmdldEJhZERhdGEoJ3JlZnVzaW5nIHRvIGFjY2VwdCB6ZXJvLWxlbmd0aCBmaWxlJykpO1xuICAgICAgICB3cml0ZVN0cmVhbS5hYm9ydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd3JpdGVTdHJlYW0uZG9uZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB1cGxvYWRTdHJlYW0ucGlwZSh3cml0ZVN0cmVhbSk7XG5cbiAgICByZXR1cm4gdXBsb2FkU3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHRhcmJhbGwuXG4gICAqIEBwYXJhbSB7Kn0gbmFtZVxuICAgKiBAcGFyYW0geyp9IGZpbGVuYW1lXG4gICAqIEByZXR1cm4ge1JlYWRUYXJiYWxsfVxuICAgKi9cbiAgcHVibGljIGdldFRhcmJhbGwobmFtZTogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKTogSVJlYWRUYXJiYWxsIHtcbiAgICBhc3NlcnQodmFsaWRhdGVOYW1lKGZpbGVuYW1lKSk7XG5cbiAgICBjb25zdCBzdG9yYWdlOiBJUGFja2FnZVN0b3JhZ2UgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG5cbiAgICBpZiAoXy5pc05pbChzdG9yYWdlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUZhaWx1cmVTdHJlYW1SZXNwb25zZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJlYW1TdWNjZXNzUmVhZFRhckJhbGwoc3RvcmFnZSwgZmlsZW5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHN0cmVhbSB0aGF0IGVtaXRzIGEgcmVhZCBmYWlsdXJlLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJuIHtSZWFkVGFyYmFsbH1cbiAgICovXG4gIHByaXZhdGUgX2NyZWF0ZUZhaWx1cmVTdHJlYW1SZXNwb25zZSgpOiBJUmVhZFRhcmJhbGwge1xuICAgIGNvbnN0IHN0cmVhbTogSVJlYWRUYXJiYWxsID0gbmV3IFJlYWRUYXJiYWxsKHt9KTtcblxuICAgIHByb2Nlc3MubmV4dFRpY2soKCk6IHZvaWQgPT4ge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgdGhpcy5fZ2V0RmlsZU5vdEF2YWlsYWJsZSgpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gc3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHN0cmVhbSB0aGF0IGVtaXRzIHRoZSB0YXJiYWxsIGRhdGFcbiAgICogQHBhcmFtIHtPYmplY3R9IHN0b3JhZ2VcbiAgICogQHBhcmFtIHtTdHJpbmd9IGZpbGVuYW1lXG4gICAqIEBwcml2YXRlXG4gICAqIEByZXR1cm4ge1JlYWRUYXJiYWxsfVxuICAgKi9cbiAgcHJpdmF0ZSBfc3RyZWFtU3VjY2Vzc1JlYWRUYXJCYWxsKHN0b3JhZ2U6IGFueSwgZmlsZW5hbWU6IHN0cmluZyk6IElSZWFkVGFyYmFsbCB7XG4gICAgY29uc3Qgc3RyZWFtOiBJUmVhZFRhcmJhbGwgPSBuZXcgUmVhZFRhcmJhbGwoe30pO1xuICAgIGNvbnN0IHJlYWRUYXJiYWxsU3RyZWFtID0gc3RvcmFnZS5yZWFkVGFyYmFsbChmaWxlbmFtZSk7XG4gICAgY29uc3QgZTQwNCA9IEVycm9yQ29kZS5nZXROb3RGb3VuZDtcblxuICAgIHN0cmVhbS5hYm9ydCA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgIGlmIChfLmlzTmlsKHJlYWRUYXJiYWxsU3RyZWFtKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmVhZFRhcmJhbGxTdHJlYW0uYWJvcnQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0ub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVycikge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGU0MDQoJ25vIHN1Y2ggZmlsZSBhdmFpbGFibGUnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0ub24oJ2NvbnRlbnQtbGVuZ3RoJywgZnVuY3Rpb24gKGNvbnRlbnQpOiB2b2lkIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdjb250ZW50LWxlbmd0aCcsIGNvbnRlbnQpO1xuICAgIH0pO1xuXG4gICAgcmVhZFRhcmJhbGxTdHJlYW0ub24oJ29wZW4nLCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAvLyByZS1lbWl0dGluZyBvcGVuIGJlY2F1c2UgaXQncyBoYW5kbGVkIGluIHN0b3JhZ2UuanNcbiAgICAgIHN0cmVhbS5lbWl0KCdvcGVuJyk7XG4gICAgICByZWFkVGFyYmFsbFN0cmVhbS5waXBlKHN0cmVhbSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc3RyZWFtO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgcGFja2FnZSBieSBuYW1lLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBjYWxsYmFja1xuICAgKiBAcmV0dXJuIHtGdW5jdGlvbn1cbiAgICovXG4gIHB1YmxpYyBnZXRQYWNrYWdlTWV0YWRhdGEobmFtZTogc3RyaW5nLCBjYWxsYmFjazogQ2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7fSk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IElQYWNrYWdlU3RvcmFnZSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShuYW1lKTtcbiAgICBpZiAoXy5pc05pbChzdG9yYWdlKSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKEVycm9yQ29kZS5nZXROb3RGb3VuZCgpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yZWFkUGFja2FnZShuYW1lLCBzdG9yYWdlLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGEgbG9jYWwgcGFja2FnZS5cbiAgICogQHBhcmFtIHsqfSBzdGFydEtleVxuICAgKiBAcGFyYW0geyp9IG9wdGlvbnNcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwdWJsaWMgc2VhcmNoKHN0YXJ0S2V5OiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IElSZWFkVGFyYmFsbCB7XG4gICAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRUYXJiYWxsKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMuX3NlYXJjaEVhY2hQYWNrYWdlKFxuICAgICAgKGl0ZW06IFBhY2thZ2UsIGNiOiBDYWxsYmFja0FjdGlvbik6IHZvaWQgPT4ge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmIChpdGVtLnRpbWUgPiBwYXJzZUludChzdGFydEtleSwgMTApKSB7XG4gICAgICAgICAgdGhpcy5nZXRQYWNrYWdlTWV0YWRhdGEoaXRlbS5uYW1lLCAoZXJyOiBWZXJkYWNjaW9FcnJvciwgZGF0YTogUGFja2FnZSk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKGl0ZW0udGltZSkudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHByZXBhcmVTZWFyY2hQYWNrYWdlKGRhdGEsIHRpbWUpO1xuICAgICAgICAgICAgaWYgKF8uaXNOaWwocmVzdWx0KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgc3RyZWFtLnB1c2gocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNiKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24gb25FbmQoZXJyKTogdm9pZCB7XG4gICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzdHJlYW0uZW5kKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBzdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmUgYSB3cmFwcGVyIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIHBhY2thZ2UgbG9jYXRpb24uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwa2dOYW1lIHBhY2thZ2UgbmFtZS5cbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKi9cbiAgcHJpdmF0ZSBfZ2V0TG9jYWxTdG9yYWdlKHBrZ05hbWU6IHN0cmluZyk6IElQYWNrYWdlU3RvcmFnZSB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5nZXRQYWNrYWdlU3RvcmFnZShwa2dOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGEganNvbiBmaWxlIGZyb20gc3RvcmFnZS5cbiAgICogQHBhcmFtIHtPYmplY3R9IHN0b3JhZ2VcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAgICovXG4gIHByaXZhdGUgX3JlYWRQYWNrYWdlKG5hbWU6IHN0cmluZywgc3RvcmFnZTogYW55LCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBzdG9yYWdlLnJlYWRQYWNrYWdlKG5hbWUsIChlcnIsIHJlc3VsdCk6IHZvaWQgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09IFNUT1JBR0UuTk9fU1VDSF9GSUxFX0VSUk9SIHx8IGVyci5jb2RlID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLl9pbnRlcm5hbEVycm9yKGVyciwgU1RPUkFHRS5QQUNLQUdFX0ZJTEVfTkFNRSwgJ2Vycm9yIHJlYWRpbmcnKSk7XG4gICAgICB9XG5cbiAgICAgIGNhbGxiYWNrKGVyciwgbm9ybWFsaXplUGFja2FnZShyZXN1bHQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXYWxrcyB0aHJvdWdoIGVhY2ggcGFja2FnZSBhbmQgY2FsbHMgYG9uX3BhY2thZ2VgIG9uIHRoZW0uXG4gICAqIEBwYXJhbSB7Kn0gb25QYWNrYWdlXG4gICAqIEBwYXJhbSB7Kn0gb25FbmRcbiAgICovXG4gIHByaXZhdGUgX3NlYXJjaEVhY2hQYWNrYWdlKG9uUGFja2FnZTogb25TZWFyY2hQYWNrYWdlLCBvbkVuZDogb25FbmRTZWFyY2hQYWNrYWdlKTogdm9pZCB7XG4gICAgLy8gc2F2ZSB3YWl0IHdoZXRoZXIgcGx1Z2luIHN0aWxsIGRvIG5vdCBzdXBwb3J0IHNlYXJjaCBmdW5jdGlvbmFsaXR5XG4gICAgaWYgKF8uaXNOaWwodGhpcy5zdG9yYWdlUGx1Z2luLnNlYXJjaCkpIHtcbiAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ3BsdWdpbiBzZWFyY2ggbm90IGltcGxlbWVudGVkIHlldCcpO1xuICAgICAgb25FbmQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yYWdlUGx1Z2luLnNlYXJjaChvblBhY2thZ2UsIG9uRW5kLCB2YWxpZGF0ZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBlaXRoZXIgYSBwcmV2aW91cyBjcmVhdGVkIGxvY2FsIHBhY2thZ2Ugb3IgYSBib2lsZXJwbGF0ZS5cbiAgICogQHBhcmFtIHsqfSBwa2dOYW1lXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwcml2YXRlIF9yZWFkQ3JlYXRlUGFja2FnZShwa2dOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2U6IGFueSA9IHRoaXMuX2dldExvY2FsU3RvcmFnZShwa2dOYW1lKTtcbiAgICBpZiAoXy5pc05pbChzdG9yYWdlKSkge1xuICAgICAgdGhpcy5fY3JlYXRlTmV3UGFja2FnZShwa2dOYW1lLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RvcmFnZS5yZWFkUGFja2FnZShwa2dOYW1lLCAoZXJyLCBkYXRhKTogdm9pZCA9PiB7XG4gICAgICAvLyBUT0RPOiByYWNlIGNvbmRpdGlvblxuICAgICAgaWYgKF8uaXNOaWwoZXJyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSBTVE9SQUdFLk5PX1NVQ0hfRklMRV9FUlJPUiB8fCBlcnIuY29kZSA9PT0gSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKSB7XG4gICAgICAgICAgZGF0YSA9IGdlbmVyYXRlUGFja2FnZVRlbXBsYXRlKHBrZ05hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayh0aGlzLl9pbnRlcm5hbEVycm9yKGVyciwgU1RPUkFHRS5QQUNLQUdFX0ZJTEVfTkFNRSwgJ2Vycm9yIHJlYWRpbmcnKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2sobnVsbCwgbm9ybWFsaXplUGFja2FnZShkYXRhKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVOZXdQYWNrYWdlKG5hbWU6IHN0cmluZywgY2FsbGJhY2s6IENhbGxiYWNrKTogQ2FsbGJhY2sge1xuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBub3JtYWxpemVQYWNrYWdlKGdlbmVyYXRlUGFja2FnZVRlbXBsYXRlKG5hbWUpKSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGludGVybmFsIGVycm9yXG4gICAqIEBwYXJhbSB7Kn0gZXJyXG4gICAqIEBwYXJhbSB7Kn0gZmlsZVxuICAgKiBAcGFyYW0geyp9IG1lc3NhZ2VcbiAgICogQHJldHVybiB7T2JqZWN0fSBFcnJvciBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBfaW50ZXJuYWxFcnJvcihlcnI6IHN0cmluZywgZmlsZTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBWZXJkYWNjaW9FcnJvciB7XG4gICAgdGhpcy5sb2dnZXIuZXJyb3IoeyBlcnI6IGVyciwgZmlsZTogZmlsZSB9LCBgJHttZXNzYWdlfSAgQHtmaWxlfTogQHshZXJyLm1lc3NhZ2V9YCk7XG5cbiAgICByZXR1cm4gRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0geyp9IG5hbWUgcGFja2FnZSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdXBkYXRlSGFuZGxlciBmdW5jdGlvbihwYWNrYWdlLCBjYikgLSB1cGRhdGUgZnVuY3Rpb25cbiAgICogQHBhcmFtIHsqfSBjYWxsYmFjayBjYWxsYmFjayB0aGF0IGdldHMgaW52b2tlZCBhZnRlciBpdCdzIGFsbCB1cGRhdGVkXG4gICAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlUGFja2FnZShuYW1lOiBzdHJpbmcsIHVwZGF0ZUhhbmRsZXI6IFN0b3JhZ2VVcGRhdGVDYWxsYmFjaywgY2FsbGJhY2s6IENhbGxiYWNrQWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3Qgc3RvcmFnZTogSVBhY2thZ2VTdG9yYWdlID0gdGhpcy5fZ2V0TG9jYWxTdG9yYWdlKG5hbWUpO1xuXG4gICAgaWYgKCFzdG9yYWdlKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soRXJyb3JDb2RlLmdldE5vdEZvdW5kKCkpO1xuICAgIH1cblxuICAgIHN0b3JhZ2UudXBkYXRlUGFja2FnZShuYW1lLCB1cGRhdGVIYW5kbGVyLCB0aGlzLl93cml0ZVBhY2thZ2UuYmluZCh0aGlzKSwgbm9ybWFsaXplUGFja2FnZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcmV2aXNpb24gKF9yZXYpIHN0cmluZyBmb3IgYSBwYWNrYWdlLlxuICAgKiBAcGFyYW0geyp9IG5hbWVcbiAgICogQHBhcmFtIHsqfSBqc29uXG4gICAqIEBwYXJhbSB7Kn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7RnVuY3Rpb259XG4gICAqL1xuICBwcml2YXRlIF93cml0ZVBhY2thZ2UobmFtZTogc3RyaW5nLCBqc29uOiBQYWNrYWdlLCBjYWxsYmFjazogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yYWdlOiBhbnkgPSB0aGlzLl9nZXRMb2NhbFN0b3JhZ2UobmFtZSk7XG4gICAgaWYgKF8uaXNOaWwoc3RvcmFnZSkpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICBzdG9yYWdlLnNhdmVQYWNrYWdlKG5hbWUsIHRoaXMuX3NldERlZmF1bHRSZXZpc2lvbihqc29uKSwgY2FsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RGVmYXVsdFJldmlzaW9uKGpzb246IFBhY2thZ2UpOiBQYWNrYWdlIHtcbiAgICAvLyBjYWxjdWxhdGUgcmV2aXNpb24gZnJvbSBjb3VjaCBkYlxuICAgIGlmIChfLmlzU3RyaW5nKGpzb24uX3JldikgPT09IGZhbHNlKSB7XG4gICAgICBqc29uLl9yZXYgPSBTVE9SQUdFLkRFRkFVTFRfUkVWSVNJT047XG4gICAgfVxuXG4gICAgLy8gdGhpcyBpcyBpbnRlbmRlZCBpbiBkZWJ1ZyBtb2RlIHdlIGRvIG5vdCB3YW50IG1vZGlmeSB0aGUgc3RvcmUgcmV2aXNpb25cbiAgICBpZiAoXy5pc05pbCh0aGlzLmNvbmZpZy5fZGVidWcpKSB7XG4gICAgICBqc29uLl9yZXYgPSBnZW5lcmF0ZVJldmlzaW9uKGpzb24uX3Jldik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBwcml2YXRlIF9kZWxldGVBdHRhY2htZW50cyhzdG9yYWdlOiBhbnksIGF0dGFjaG1lbnRzOiBzdHJpbmdbXSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgZGVidWcoJ1tzdG9yYWdlL19kZWxldGVBdHRhY2htZW50c10gZGVsZXRlIGF0dGFjaG1lbnRzIHRvdGFsOiAlbycsIGF0dGFjaG1lbnRzPy5sZW5ndGgpO1xuICAgIGNvbnN0IHVubGlua05leHQgPSBmdW5jdGlvbiAoY2IpOiB2b2lkIHtcbiAgICAgIGlmIChfLmlzRW1wdHkoYXR0YWNobWVudHMpKSB7XG4gICAgICAgIHJldHVybiBjYigpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBhdHRhY2htZW50ID0gYXR0YWNobWVudHMuc2hpZnQoKTtcbiAgICAgIHN0b3JhZ2UuZGVsZXRlUGFja2FnZShhdHRhY2htZW50LCBmdW5jdGlvbiAoKTogdm9pZCB7XG4gICAgICAgIHVubGlua05leHQoY2IpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHVubGlua05leHQoZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgLy8gdHJ5IHRvIHVubGluayB0aGUgZGlyZWN0b3J5LCBidXQgaWdub3JlIGVycm9ycyBiZWNhdXNlIGl0IGNhbiBmYWlsXG4gICAgICBzdG9yYWdlLnJlbW92ZVBhY2thZ2UoZnVuY3Rpb24gKGVycik6IHZvaWQge1xuICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoZSBkaXN0IGZpbGUgcmVtYWlucyBhcyB0aGUgc2FtZSBwcm90b2NvbFxuICAgKiBAcGFyYW0ge09iamVjdH0gaGFzaCBtZXRhZGF0YVxuICAgKiBAcGFyYW0ge1N0cmluZ30gdXBMaW5rS2V5IHJlZ2lzdHJ5IGtleVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlVXBsaW5rVG9SZW1vdGVQcm90b2NvbChoYXNoOiBEaXN0RmlsZSwgdXBMaW5rS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBpZiB3ZSBnb3QgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIGEga25vd24gcmVnaXN0cnksXG4gICAgLy8gdXNlIHRoZSBzYW1lIHByb3RvY29sIGZvciB0aGUgdGFyYmFsbFxuICAgIC8vXG4gICAgLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ybGlkd2thL3Npbm9waWEvaXNzdWVzLzE2NlxuICAgIGNvbnN0IHRhcmJhbGxVcmw6IGFueSA9IFVybE5vZGUucGFyc2UoaGFzaC51cmwpO1xuICAgIGNvbnN0IHVwbGlua1VybDogYW55ID0gVXJsTm9kZS5wYXJzZSh0aGlzLmNvbmZpZy51cGxpbmtzW3VwTGlua0tleV0udXJsKTtcblxuICAgIGlmICh1cGxpbmtVcmwuaG9zdCA9PT0gdGFyYmFsbFVybC5ob3N0KSB7XG4gICAgICB0YXJiYWxsVXJsLnByb3RvY29sID0gdXBsaW5rVXJsLnByb3RvY29sO1xuICAgICAgaGFzaC5yZWdpc3RyeSA9IHVwTGlua0tleTtcbiAgICAgIGhhc2gudXJsID0gVXJsTm9kZS5mb3JtYXQodGFyYmFsbFVybCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNlY3JldChjb25maWc6IENvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IHRoaXMuc3RvcmFnZVBsdWdpbi5nZXRTZWNyZXQoKTtcblxuICAgIHJldHVybiB0aGlzLnN0b3JhZ2VQbHVnaW4uc2V0U2VjcmV0KGNvbmZpZy5jaGVja1NlY3JldEtleShzZWNyZXRLZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRTdG9yYWdlKGNvbmZpZzogQ29uZmlnLCBsb2dnZXI6IExvZ2dlcik6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4ge1xuICAgIGNvbnN0IFN0b3JhZ2UgPSB0aGlzLl9sb2FkU3RvcmVQbHVnaW4oKTtcblxuICAgIGlmIChfLmlzTmlsKFN0b3JhZ2UpKSB7XG4gICAgICBhc3NlcnQodGhpcy5jb25maWcuc3RvcmFnZSwgJ0NPTkZJRzogc3RvcmFnZSBwYXRoIG5vdCBkZWZpbmVkJyk7XG4gICAgICByZXR1cm4gbmV3IExvY2FsRGF0YWJhc2UodGhpcy5jb25maWcsIGxvZ2dlcik7XG4gICAgfVxuICAgIHJldHVybiBTdG9yYWdlIGFzIElQbHVnaW5TdG9yYWdlPENvbmZpZz47XG4gIH1cblxuICBwcml2YXRlIF9sb2FkU3RvcmVQbHVnaW4oKTogSVBsdWdpblN0b3JhZ2U8Q29uZmlnPiB8IHZvaWQge1xuICAgIGNvbnN0IHBsdWdpbl9wYXJhbXMgPSB7XG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgbG9nZ2VyOiB0aGlzLmxvZ2dlcixcbiAgICB9O1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICBjb25zdCBwbHVnaW5zOiBJUGx1Z2luU3RvcmFnZTxDb25maWc+W10gPSBsb2FkUGx1Z2luPElQbHVnaW5TdG9yYWdlPENvbmZpZz4+KHRoaXMuY29uZmlnLCB0aGlzLmNvbmZpZy5zdG9yZSwgcGx1Z2luX3BhcmFtcywgKHBsdWdpbik6IElQbHVnaW5TdG9yYWdlPENvbmZpZz4gPT4ge1xuICAgICAgcmV0dXJuIHBsdWdpbi5nZXRQYWNrYWdlU3RvcmFnZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfLmhlYWQocGx1Z2lucyk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZVRva2VuKHRva2VuOiBUb2tlbik6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnN0b3JhZ2VQbHVnaW4uc2F2ZVRva2VuKSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5TRVJWSUNFX1VOQVZBSUxBQkxFLCBTVVBQT1JUX0VSUk9SUy5QTFVHSU5fTUlTU0lOR19JTlRFUkZBQ0UpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlUGx1Z2luLnNhdmVUb2tlbih0b2tlbik7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlVG9rZW4odXNlcjogc3RyaW5nLCB0b2tlbktleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoXy5pc0Z1bmN0aW9uKHRoaXMuc3RvcmFnZVBsdWdpbi5kZWxldGVUb2tlbikgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5kZWxldGVUb2tlbih1c2VyLCB0b2tlbktleSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZFRva2VucyhmaWx0ZXI6IFRva2VuRmlsdGVyKTogUHJvbWlzZTxUb2tlbltdPiB7XG4gICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnN0b3JhZ2VQbHVnaW4ucmVhZFRva2VucykgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3JDb2RlLmdldENvZGUoSFRUUF9TVEFUVVMuU0VSVklDRV9VTkFWQUlMQUJMRSwgU1VQUE9SVF9FUlJPUlMuUExVR0lOX01JU1NJTkdfSU5URVJGQUNFKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZVBsdWdpbi5yZWFkVG9rZW5zKGZpbHRlcik7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9jYWxTdG9yYWdlO1xuIl19
@@ -14,4 +14,4 @@ module.exports = function prettyFactory(options) {
14
14
  return (0, _prettifier.printMessage)(inputData, options, true) + breakLike;
15
15
  };
16
16
  };
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2Zvcm1hdHRlci9pbmRleC50cyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicHJldHR5RmFjdG9yeSIsIm9wdGlvbnMiLCJicmVha0xpa2UiLCJpbnB1dERhdGEiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQXNFO0FBQ3JGO0FBQ0EsUUFBTUMsU0FBUyxHQUFHLElBQWxCO0FBQ0EsU0FBUUMsU0FBRCxJQUF1QjtBQUM1QjtBQUNBLFdBQU8sOEJBQWFBLFNBQWIsRUFBd0JGLE9BQXhCLEVBQWlDLElBQWpDLElBQXlDQyxTQUFoRDtBQUNELEdBSEQ7QUFJRCxDQVBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJpbnRNZXNzYWdlLCBQcmV0dHlPcHRpb25zRXh0ZW5kZWQgfSBmcm9tICcuL3ByZXR0aWZpZXInO1xuXG5leHBvcnQgdHlwZSBQcmV0dHlGYWN0b3J5ID0gKHBhcmFtKSA9PiBzdHJpbmc7XG5cbi8qXG4gb3B0aW9ucyBlZzpcbiB7IG1lc3NhZ2VLZXk6ICdtc2cnLCBsZXZlbEZpcnN0OiB0cnVlLCBwcmV0dHlTdGFtcDogZmFsc2UgfVxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJldHR5RmFjdG9yeShvcHRpb25zOiBQcmV0dHlPcHRpb25zRXh0ZW5kZWQpOiBQcmV0dHlGYWN0b3J5IHtcbiAgLy8gdGhlIGJyZWFrIGxpbmUgbXVzdCBoYXBwZW5zIGluIHRoZSBwcmV0dGlmeSBjb21wb25lbnRcbiAgY29uc3QgYnJlYWtMaWtlID0gJ1xcbic7XG4gIHJldHVybiAoaW5wdXREYXRhKTogc3RyaW5nID0+IHtcbiAgICAvLyBGSVhNRTogcmV2aWV3IGNvbG9ycyBieSBkZWZhdWx0IGlzIHRydWVcbiAgICByZXR1cm4gcHJpbnRNZXNzYWdlKGlucHV0RGF0YSwgb3B0aW9ucywgdHJ1ZSkgKyBicmVha0xpa2U7XG4gIH07XG59O1xuIl19
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvbG9nZ2VyL2Zvcm1hdHRlci9pbmRleC50cyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicHJldHR5RmFjdG9yeSIsIm9wdGlvbnMiLCJicmVha0xpa2UiLCJpbnB1dERhdGEiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFFQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLFNBQVNDLGFBQVQsQ0FBdUJDLE9BQXZCLEVBQXNFO0FBQ3JGO0FBQ0EsUUFBTUMsU0FBUyxHQUFHLElBQWxCO0FBQ0EsU0FBUUMsU0FBRCxJQUF1QjtBQUM1QjtBQUNBLFdBQU8sOEJBQWFBLFNBQWIsRUFBd0JGLE9BQXhCLEVBQWlDLElBQWpDLElBQXlDQyxTQUFoRDtBQUNELEdBSEQ7QUFJRCxDQVBEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJldHR5T3B0aW9uc0V4dGVuZGVkLCBwcmludE1lc3NhZ2UgfSBmcm9tICcuL3ByZXR0aWZpZXInO1xuXG5leHBvcnQgdHlwZSBQcmV0dHlGYWN0b3J5ID0gKHBhcmFtKSA9PiBzdHJpbmc7XG5cbi8qXG4gb3B0aW9ucyBlZzpcbiB7IG1lc3NhZ2VLZXk6ICdtc2cnLCBsZXZlbEZpcnN0OiB0cnVlLCBwcmV0dHlTdGFtcDogZmFsc2UgfVxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJldHR5RmFjdG9yeShvcHRpb25zOiBQcmV0dHlPcHRpb25zRXh0ZW5kZWQpOiBQcmV0dHlGYWN0b3J5IHtcbiAgLy8gdGhlIGJyZWFrIGxpbmUgbXVzdCBoYXBwZW5zIGluIHRoZSBwcmV0dGlmeSBjb21wb25lbnRcbiAgY29uc3QgYnJlYWtMaWtlID0gJ1xcbic7XG4gIHJldHVybiAoaW5wdXREYXRhKTogc3RyaW5nID0+IHtcbiAgICAvLyBGSVhNRTogcmV2aWV3IGNvbG9ycyBieSBkZWZhdWx0IGlzIHRydWVcbiAgICByZXR1cm4gcHJpbnRNZXNzYWdlKGlucHV0RGF0YSwgb3B0aW9ucywgdHJ1ZSkgKyBicmVha0xpa2U7XG4gIH07XG59O1xuIl19