New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@axway/amplify-sdk

Package Overview
Dependencies
Maintainers
19
Versions
63
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@axway/amplify-sdk - npm Package Compare versions

Comparing version 2.1.4 to 2.1.5

4

CHANGELOG.md

@@ -0,1 +1,5 @@

# v2.1.5 (May 11, 2021)
* fix: Set correct user agent for platform calls.
# v2.1.4 (May 10, 2021)

@@ -2,0 +6,0 @@

5

dist/auth.js

@@ -81,2 +81,4 @@ "use strict";

* `secure`, which is the default.
* @param {Number} [opts.interactiveLoginTimeout] - The number of milliseconds to wait before
* timing out.
* @param {String} [opts.password] - The password used to authenticate. Requires a `username`.

@@ -232,2 +234,3 @@ * @param {String} [opts.platformUrl] - The URL to redirect the browser to after a

serviceAccount: opts.serviceAccount || this.serviceAccount,
timeout: opts.timeout || opts.interactiveLoginTimeout || this.interactiveLoginTimeout,
tokenStore: this.tokenStore,

@@ -549,2 +552,2 @@ username: opts.username || this.username

exports.default = Auth;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsibG9nIiwid2FybiIsImFsZXJ0IiwiaGlnaGxpZ2h0IiwibWFnZW50YSIsIm5vdGUiLCJzbm9vcGxvZ2ciLCJzdHlsZXMiLCJBdXRoIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiYmFzZVVybCIsInZhbHVlIiwiY2xpZW50SWQiLCJjbGllbnRTZWNyZXQiLCJlbnYiLCJnb3QiLCJyZXF1ZXN0IiwiaW5pdCIsInJlcXVlc3RPcHRpb25zIiwiaW50ZXJhY3RpdmVMb2dpblRpbWVvdXQiLCJtZXNzYWdlcyIsInBhc3N3b3JkIiwicmVhbG0iLCJwbGF0Zm9ybVVybCIsInNlY3JldEZpbGUiLCJzZXJ2aWNlQWNjb3VudCIsInVzZXJuYW1lIiwidG9rZW5TdG9yZSIsIlRva2VuU3RvcmUiLCJJTlZBTElEX1BBUkFNRVRFUiIsInRva2VuU3RvcmVUeXBlIiwidW5kZWZpbmVkIiwiU2VjdXJlU3RvcmUiLCJlIiwiY29kZSIsIlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSIsIkZpbGVTdG9yZSIsIk1lbW9yeVN0b3JlIiwiYXBwbHlEZWZhdWx0cyIsIm5hbWUiLCJlbnZpcm9ubWVudHMiLCJyZXNvbHZlIiwiSU5WQUxJRF9WQUxVRSIsImNyZWF0ZUF1dGhlbnRpY2F0b3IiLCJhdXRoZW50aWNhdG9yIiwiQXV0aGVudGljYXRvciIsIklOVkFMSURfQVJVR01FTlQiLCJPd25lclBhc3N3b3JkIiwiQ2xpZW50U2VjcmV0IiwiU2lnbmVkSldUIiwiUEtDRSIsImZpbmQiLCJhY2NvdW50TmFtZSIsImhhc2giLCJhY2NvdW50IiwiZ2V0IiwicHJvcCIsImF1dGgiLCJleHBpcmVkIiwiYWNjZXNzIiwicmVmcmVzaCIsImV4cGlyZXMiLCJEYXRlIiwibm93IiwiZ2V0VG9rZW4iLCJlcnIiLCJtZXNzYWdlIiwiZGVsZXRlIiwiZ2V0SW5mbyIsInN0YXR1c0NvZGUiLCJsaXN0IiwibG9naW4iLCJsb2dvdXQiLCJhY2NvdW50cyIsImFsbCIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsInJldm9rZWQiLCJjbGVhciIsImVudHJ5IiwiaXNQbGF0Zm9ybSIsInVybCIsInRva2VucyIsImlkX3Rva2VuIiwicmVzcG9uc2VUeXBlIiwicmV0cnkiLCJzdGF0dXMiLCJzZXJ2ZXJJbmZvIiwid2VsbEtub3duIiwiYm9keSIsInJlc3BvbnNlIiwidXBkYXRlQWNjb3VudCIsInNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsTUFBTTtBQUFFQSxFQUFBQSxHQUFGO0FBQU9DLEVBQUFBO0FBQVAsSUFBZ0Isd0JBQVUsa0JBQVYsQ0FBdEI7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLEtBQUY7QUFBU0MsRUFBQUEsU0FBVDtBQUFvQkMsRUFBQUEsT0FBcEI7QUFBNkJDLEVBQUFBO0FBQTdCLElBQXNDQyxtQkFBVUMsTUFBdEQ7QUFFQTtBQUNBO0FBQ0E7O0FBQ2UsTUFBTUMsSUFBTixDQUFXO0FBQ3pCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFHQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLEVBQUFBLFdBQVcsQ0FBQ0MsSUFBSSxHQUFHLEVBQVIsRUFBWTtBQUFBLHdDQXhDVixJQXdDVTs7QUFDdEIsUUFBSSxDQUFDQSxJQUFELElBQVMsT0FBT0EsSUFBUCxLQUFnQixRQUE3QixFQUF1QztBQUN0QyxZ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QixDQUFOO0FBQ0E7QUFDRDs7QUFsYXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEUgZnJvbSAnLi9lcnJvcnMnO1xuXG5pbXBvcnQgQXV0aGVudGljYXRvciBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL2F1dGhlbnRpY2F0b3InO1xuaW1wb3J0IENsaWVudFNlY3JldCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL2NsaWVudC1zZWNyZXQnO1xuaW1wb3J0IE93bmVyUGFzc3dvcmQgZnJvbSAnLi9hdXRoZW50aWNhdG9ycy9vd25lci1wYXNzd29yZCc7XG5pbXBvcnQgUEtDRSBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL3BrY2UnO1xuaW1wb3J0IFNpZ25lZEpXVCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL3NpZ25lZC1qd3QnO1xuXG5pbXBvcnQgRmlsZVN0b3JlIGZyb20gJy4vc3RvcmVzL2ZpbGUtc3RvcmUnO1xuaW1wb3J0IE1lbW9yeVN0b3JlIGZyb20gJy4vc3RvcmVzL21lbW9yeS1zdG9yZSc7XG5pbXBvcnQgU2VjdXJlU3RvcmUgZnJvbSAnLi9zdG9yZXMvc2VjdXJlLXN0b3JlJztcbmltcG9ydCBUb2tlblN0b3JlIGZyb20gJy4vc3RvcmVzL3Rva2VuLXN0b3JlJztcblxuaW1wb3J0IGdldEVuZHBvaW50cyBmcm9tICcuL2VuZHBvaW50cyc7XG5pbXBvcnQgc25vb3Bsb2dnIGZyb20gJ3Nub29wbG9nZyc7XG5cbmltcG9ydCAqIGFzIGVudmlyb25tZW50cyBmcm9tICcuL2Vudmlyb25tZW50cyc7XG5pbXBvcnQgKiBhcyByZXF1ZXN0IGZyb20gJ0BheHdheS9hbXBsaWZ5LXJlcXVlc3QnO1xuXG5jb25zdCB7IGxvZywgd2FybiB9ID0gc25vb3Bsb2dnKCdhbXBsaWZ5LXNkazphdXRoJyk7XG5jb25zdCB7IGFsZXJ0LCBoaWdobGlnaHQsIG1hZ2VudGEsIG5vdGUgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbi8qKlxuICogQXV0aGVudGljYXRlcyB0aGUgbWFjaGluZSBhbmQgcmV0cmVpdmVzIHRoZSBhdXRoIHRva2VuLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdXRoIHtcblx0LyoqXG5cdCAqIFRoZSBzdG9yZSB0byBwZXJzaXN0IHRoZSB0b2tlbi5cblx0ICpcblx0ICogQHR5cGUge1Rva2VuU3RvcmV9XG5cdCAqIEBhY2Nlc3MgcHJpdmF0ZVxuXHQgKi9cblx0dG9rZW5TdG9yZSA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBhdXRoZW50aWNhdGlvbiBpbnN0YW5jZSBieSBzZXR0aW5nIHRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBjcmVhdGluZyB0aGVcblx0ICogdG9rZW4gc3RvcmUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCBvdXRnb2luZyByZXF1ZXN0cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudElkXSAtIFRoZSBjbGllbnQgaWQgdG8gc3BlY2lmeSB3aGVuIGF1dGhlbnRpY2F0aW5nLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50U2VjcmV0XSAtIFRoZSBzZWNyZXQgdG9rZW4gdG8gdXNlIHRvIGF1dGhlbnRpY2F0ZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVudj1wcm9kXSAtIFRoZSBlbnZpcm9ubWVudCBuYW1lLiBNdXN0IGJlIGBkZXZgLCBgcHJlcHJvZGAsIG9yIGBwcm9kYC5cblx0ICogVGhlIGVudmlyb25tZW50IGlzIGEgc2hvcnRoYW5kIHdheSBvZiBzcGVjaWZ5aW5nIGEgQXh3YXkgZGVmYXVsdCBiYXNlIFVSTC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gW29wdHMuZ290XSAtIEEgcmVmZXJlbmNlIHRvIGEgYGdvdGAgSFRUUCBjbGllbnQuIElmIG5vdCBkZWZpbmVkLCB0aGVcblx0ICogZGVmYXVsdCBgZ290YCBpbnN0YW5jZSB3aWxsIGJlIHVzZWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5ob21lRGlyXSAtIFRoZSBwYXRoIHRvIHRoZSBob21lIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBgbGliYFxuXHQgKiBkaXJlY3Rvcnkgd2hlcmUgYGtleXRhcmAgaXMgbG9jYXRlZC4gVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgd2hlbiBgdG9rZW5TdG9yZVR5cGVgIGlzIHNldCB0b1xuXHQgKiBgc2VjdXJlYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnBsYXRmb3JtVXJsXSAtIFRoZSBVUkwgdG8gcmVkaXJlY3QgdGhlIGJyb3dzZXIgdG8gYWZ0ZXIgYVxuXHQgKiBzdWNjZXNzZnVsIGxvZ2luLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucmVhbG1dIC0gVGhlIG5hbWUgb2YgdGhlIHJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMucmVxdWVzdE9wdGlvbnNdIC0gQW4gb3B0aW9ucyBvYmplY3QgdG8gcGFzcyBpbnRvIEFtcGxpZnkgQ0xJIFV0aWxzIHRvXG5cdCAqIGNyZWF0ZSB0aGUgYGdvdGAgSFRUUCBjbGllbnQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWNyZXRGaWxlXSAtIFRoZSBwYXRoIHRvIHRoZSBqd3Qgc2VjcmV0IGZpbGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWN1cmVTZXJ2aWNlTmFtZT1cIkF4d2F5IEFNUExJRlkgQXV0aFwiXSAtIFRoZSBuYW1lIG9mIHRoZSBjb25zdW1lclxuXHQgKiB1c2luZyB0aGlzIGxpYnJhcnkgd2hlbiB1c2luZyB0aGUgXCJzZWN1cmVcIiB0b2tlbiBzdG9yZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMudG9rZW5SZWZyZXNoVGhyZXNob2xkPTBdIC0gVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgYWNjZXNzXG5cdCAqIHRva2VuIGV4cGlyZXMgYW5kIHNob3VsZCBiZSByZWZyZXNoZWQuXG5cdCAqIEBwYXJhbSB7VG9rZW5TdG9yZX0gW29wdHMudG9rZW5TdG9yZV0gLSBBIHRva2VuIHN0b3JlIGluc3RhbmNlIGZvciBwZXJzaXN0aW5nIHRoZSB0b2tlbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy50b2tlblN0b3JlRGlyXSAtIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRva2VuIHN0b3JlIGlzIHNhdmVkLiBSZXF1aXJlZFxuXHQgKiB3aGVuIHRoZSBgdG9rZW5TdG9yZVR5cGVgIGlzIGBzZWN1cmVgIG9yIGBmaWxlYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnRva2VuU3RvcmVUeXBlPXNlY3VyZV0gLSBUaGUgdHlwZSBvZiBzdG9yZSB0byBwZXJzaXN0IHRoZSBhY2Nlc3MgdG9rZW4uXG5cdCAqIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlOiBgYXV0b2AsIGBzZWN1cmVgLCBgZmlsZWAsIG9yIGBtZW1vcnlgLiBJZiB2YWx1ZSBpcyBgYXV0b2AsIGl0IHdpbGxcblx0ICogYXR0ZW1wdCB0byB1c2UgYHNlY3VyZWAsIHRoZW4gYGZpbGVgLCB0aGVuIGBtZW1vcnlgLiBJZiBzZXQgdG8gYG51bGxgLCB0aGVuIGl0IHdpbGwgbm90XG5cdCAqIHBlcnNpc3QgdGhlIGFjY2VzcyB0b2tlbi5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVzZXJuYW1lXSAtIFRoZSB1c2VybmFtZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gUmVxdWlyZXMgYSBgcGFzc3dvcmRgLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcblx0XHRcdGJhc2VVcmw6ICAgICAgICB7IHZhbHVlOiBvcHRzLmJhc2VVcmwgfSxcblx0XHRcdGNsaWVudElkOiAgICAgICB7IHZhbHVlOiBvcHRzLmNsaWVudElkIH0sXG5cdFx0XHRjbGllbnRTZWNyZXQ6ICAgeyB2YWx1ZTogb3B0cy5jbGllbnRTZWNyZXQgfSxcblx0XHRcdGVudjogICAgICAgICAgICB7IHZhbHVlOiBvcHRzLmVudiB9LFxuXHRcdFx0Z290OiAgICAgICAgICAgIHsgdmFsdWU6IG9wdHMuZ290IHx8IHJlcXVlc3QuaW5pdChvcHRzLnJlcXVlc3RPcHRpb25zKSB9LFxuXHRcdFx0aW50ZXJhY3RpdmVMb2dpblRpbWVvdXQ6IHsgdmFsdWU6IG9wdHMuaW50ZXJhY3RpdmVMb2dpblRpbWVvdXQgfSxcblx0XHRcdG1lc3NhZ2VzOiAgICAgICB7IHZhbHVlOiBvcHRzLm1lc3NhZ2VzIH0sXG5cdFx0XHRwYXNzd29yZDogICAgICAgeyB2YWx1ZTogb3B0cy5wYXNzd29yZCB9LFxuXHRcdFx0cmVhbG06ICAgICAgICAgIHsgdmFsdWU6IG9wdHMucmVhbG0gfSxcblx0XHRcdHBsYXRmb3JtVXJsOiAgICB7IHZhbHVlOiBvcHRzLnBsYXRmb3JtVXJsIH0sXG5cdFx0XHRzZWNyZXRGaWxlOiAgICAgeyB2YWx1ZTogb3B0cy5zZWNyZXRGaWxlIH0sXG5cdFx0XHRzZXJ2aWNlQWNjb3VudDogeyB2YWx1ZTogb3B0cy5zZXJ2aWNlQWNjb3VudCB9LFxuXHRcdFx0dXNlcm5hbWU6ICAgICAgIHsgdmFsdWU6IG9wdHMudXNlcm5hbWUgfVxuXHRcdH0pO1xuXG5cdFx0aWYgKG9wdHMudG9rZW5TdG9yZSkge1xuXHRcdFx0aWYgKCEob3B0cy50b2tlblN0b3JlIGluc3RhbmNlb2YgVG9rZW5TdG9yZSkpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX1BBUkFNRVRFUignRXhwZWN0ZWQgdGhlIHRva2VuIHN0b3JlIHRvIGJlIGEgXCJUb2tlblN0b3JlXCIgaW5zdGFuY2UnKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG9wdHMudG9rZW5TdG9yZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgdG9rZW5TdG9yZVR5cGUgPSBvcHRzLnRva2VuU3RvcmVUeXBlID09PSB1bmRlZmluZWQgPyAnc2VjdXJlJyA6IG9wdHMudG9rZW5TdG9yZVR5cGU7XG5cdFx0XHRzd2l0Y2ggKHRva2VuU3RvcmVUeXBlKSB7XG5cdFx0XHRcdGNhc2UgJ2F1dG8nOlxuXHRcdFx0XHRjYXNlICdzZWN1cmUnOlxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgU2VjdXJlU3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0XHRcdFx0XHRcdGlmICh0b2tlblN0b3JlVHlwZSA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGxldCAnYXV0bycgZmFsbCB0aHJvdWdoXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ0VSUl9LRVlUQVJfTk9UX0ZPVU5EJykge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBFLlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSgnU2VjdXJlIHRva2VuIHN0b3JlIGlzIG5vdCBhdmFpbGFibGUuXFxuUGxlYXNlIHJlaW5zdGFsbCBvciByZWJ1aWxkIHRoaXMgYXBwbGljYXRpb24uJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdmaWxlJzpcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy50b2tlblN0b3JlID0gbmV3IEZpbGVTdG9yZShvcHRzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHRcdFx0XHRcdFx0aWYgKHRva2VuU3RvcmVUeXBlID09PSAnYXV0bycgJiYgZS5jb2RlID09PSAnRVJSX01JU1NJTkdfUkVRVUlSRURfUEFSQU1FVEVSJykge1xuXHRcdFx0XHRcdFx0XHQvLyBsZXQgJ2F1dG8nIGZhbGwgdGhyb3VnaFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnbWVtb3J5Jzpcblx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgTWVtb3J5U3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZXMgdGhlIG9wdGlvbnMgY29udGFpbnMgdGhlIGNvbmZpZ3VyYWJsZSBzZXR0aW5ncy4gVmFsaWRhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb2RlXG5cdCAqIHJlcXVpcmluZyB0aGUgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGFwcGx5RGVmYXVsdHMob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG5hbWUgPSBvcHRzLmVudiB8fCB0aGlzLmVudjtcblx0XHRjb25zdCBlbnYgPSBlbnZpcm9ubWVudHMucmVzb2x2ZShuYW1lKTtcblx0XHRpZiAoIWVudikge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX1ZBTFVFKGBJbnZhbGlkIGVudmlyb25tZW50OiAke25hbWV9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gY29weSB0aGUgb3B0aW9ucyBzbyB3ZSBkb24ndCBtb2RpZnkgdGhlIG9yaWdpbmFsIG9iamVjdCBzaW5jZSB3ZSBkb24ndCBvd24gaXRcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4ub3B0cyxcblx0XHRcdGJhc2VVcmw6ICAgICAgICBvcHRzLmJhc2VVcmwgfHwgdGhpcy5iYXNlVXJsIHx8IGVudi5iYXNlVXJsLFxuXHRcdFx0Y2xpZW50SWQ6ICAgICAgIG9wdHMuY2xpZW50SWQgfHwgdGhpcy5jbGllbnRJZCxcblx0XHRcdGNsaWVudFNlY3JldDogICBvcHRzLmNsaWVudFNlY3JldCB8fCB0aGlzLmNsaWVudFNlY3JldCxcblx0XHRcdGVudjogICAgICAgICAgICBuYW1lLFxuXHRcdFx0Z290OiAgICAgICAgICAgIG9wdHMuZ290IHx8IHRoaXMuZ290LFxuXHRcdFx0bWVzc2FnZXM6ICAgICAgIG9wdHMubWVzc2FnZXMgfHwgdGhpcy5tZXNzYWdlcyxcblx0XHRcdHBhc3N3b3JkOiAgICAgICBvcHRzLnBhc3N3b3JkIHx8IHRoaXMucGFzc3dvcmQsXG5cdFx0XHRwbGF0Zm9ybVVybDogICAgb3B0cy5wbGF0Zm9ybVVybCB8fCB0aGlzLnBsYXRmb3JtVXJsLFxuXHRcdFx0cmVhbG06ICAgICAgICAgIG9wdHMucmVhbG0gfHwgdGhpcy5yZWFsbSxcblx0XHRcdHNlY3JldEZpbGU6ICAgICBvcHRzLnNlY3JldEZpbGUgfHwgdGhpcy5zZWNyZXRGaWxlLFxuXHRcdFx0c2VydmljZUFjY291bnQ6IG9wdHMuc2VydmljZUFjY291bnQgfHwgdGhpcy5zZXJ2aWNlQWNjb3VudCxcblx0XHRcdHRva2VuU3RvcmU6ICAgICB0aGlzLnRva2VuU3RvcmUsXG5cdFx0XHR1c2VybmFtZTogICAgICAgb3B0cy51c2VybmFtZSB8fCB0aGlzLnVzZXJuYW1lXG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGF1dGhldG5pY2F0b3IgYmFzZWQgb24gdGhlIHN1cHBsaWVkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNsaWVudFNlY3JldF0gLSBUaGUgc2VjcmV0IHRva2VuIHRvIHVzZSB0byBhdXRoZW50aWNhdGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnNlY3JldEZpbGVdIC0gVGhlIHBhdGggdG8gdGhlIGp3dCBzZWNyZXQgZmlsZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy51c2VybmFtZV0gLSBUaGUgdXNlcm5hbWUgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHBhc3N3b3JkYC5cblx0ICogQHJldHVybnMge0F1dGhlbnRpY2F0b3J9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRjcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMgPSB7fSkge1xuXHRcdGlmIChvcHRzLmF1dGhlbnRpY2F0b3IpIHtcblx0XHRcdGlmICghKG9wdHMuYXV0aGVudGljYXRvciBpbnN0YW5jZW9mIEF1dGhlbnRpY2F0b3IpKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUlVHTUVOVCgnRXhwZWN0ZWQgYXV0aGVudGljYXRvciB0byBiZSBhbiBBdXRoZW50aWNhdG9yIGluc3RhbmNlLicpO1xuXHRcdFx0fVxuXHRcdFx0bG9nKGBVc2luZyBleGlzdGluZyAke2hpZ2hsaWdodChvcHRzLmF1dGhlbnRpY2F0b3IuY29uc3RydWN0b3IubmFtZSl9IGF1dGhlbnRpY2F0b3JgKTtcblx0XHRcdHJldHVybiBvcHRzLmF1dGhlbnRpY2F0b3I7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLnVzZXJuYW1lID09PSAnc3RyaW5nJyAmJiBvcHRzLnVzZXJuYW1lICYmIHR5cGVvZiBvcHRzLnBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuXHRcdFx0bG9nKGBDcmVhdGluZyAke2hpZ2hsaWdodCgnT3duZXJQYXNzd29yZCcpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0XHRyZXR1cm4gbmV3IE93bmVyUGFzc3dvcmQob3B0cyk7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBvcHRzLmNsaWVudFNlY3JldCA9PT0gJ3N0cmluZycgJiYgb3B0cy5jbGllbnRTZWNyZXQpIHtcblx0XHRcdGxvZyhgQ3JlYXRpbmcgJHtoaWdobGlnaHQoJ0NsaWVudFNlY3JldCcpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0XHRyZXR1cm4gbmV3IENsaWVudFNlY3JldChvcHRzKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMuc2VjcmV0RmlsZSA9PT0gJ3N0cmluZycgJiYgb3B0cy5zZWNyZXRGaWxlKSB7XG5cdFx0XHRsb2coYENyZWF0aW5nICR7aGlnaGxpZ2h0KCdTaWduZWRKV1QnKX0gYXV0aGVudGljYXRvcmApO1xuXHRcdFx0cmV0dXJuIG5ldyBTaWduZWRKV1Qob3B0cyk7XG5cdFx0fVxuXG5cdFx0bG9nKGBDcmVhdGluZyAke2hpZ2hsaWdodCgnUEtDRScpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0cmV0dXJuIG5ldyBQS0NFKG9wdHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlcyB0aGUgYWNjZXNzIHRva2VuLiBJZiB0aGUgYXV0aGVudGljYXRvciBpcyBpbnRlcmFjdGl2ZSBhbmQgdGhlIGF1dGhlbnRpY2F0b3IgaGFzIG5vdFxuXHQgKiB5ZXQgYXV0aGVudGljYXRlZCB3aXRoIHRoZSBzZXJ2ZXIsIGFuIGVycm9yIGlzIHRocm93bi5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R8U3RyaW5nfSBvcHRzIC0gUmVxdWlyZWQgb3B0aW9ucyBvciBhIHN0cmluZyBjb250YWluaW5nIHRoZSBoYXNoIG9yIGFjY291bnRcblx0ICogbmFtZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IG9wdHMuYWNjb3VudE5hbWUgLSBUaGUgYWNjb3VudCBuYW1lIHRvIHJldHJpZXZlLlxuXHQgKiBAcGFyYW0ge0F1dGhlbnRpY2F0b3J9IFtvcHRzLmF1dGhlbnRpY2F0b3JdIC0gQW4gYXV0aGVudGljYXRvciBpbnN0YW5jZSB0byB1c2UuIElmIG5vdFxuXHQgKiBzcGVjaWZpZWQsIG9uZSB3aWxsIGJlIGF1dG8tc2VsZWN0ZWQgYmFzZWQgb24gdGhlIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byBmaWx0ZXIgYnkuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPD9PYmplY3Q+fVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgZmluZChvcHRzID0ge30pIHtcblx0XHRpZiAoIXRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0bG9nKCdDYW5ub3QgZ2V0IGFjY291bnQsIG5vIHRva2VuIHN0b3JlJyk7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRsZXQgYXV0aGVudGljYXRvcjtcblxuXHRcdGlmICh0eXBlb2Ygb3B0cyA9PT0gJ3N0cmluZycpIHtcblx0XHRcdG9wdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHMoeyBhY2NvdW50TmFtZTogb3B0cywgaGFzaDogb3B0cyB9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3B0cyA9IHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblx0XHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cdFx0XHRsb2coYEF1dGhlbnRpY2F0b3IgaGFzaDogJHtoaWdobGlnaHQoYXV0aGVudGljYXRvci5oYXNoKX1gKTtcblx0XHRcdG9wdHMuaGFzaCA9IGF1dGhlbnRpY2F0b3IuaGFzaDtcblx0XHR9XG5cblx0XHRjb25zdCBhY2NvdW50ID0gYXdhaXQgdGhpcy50b2tlblN0b3JlLmdldChvcHRzKTtcblx0XHRpZiAoIWFjY291bnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBjb3B5IG92ZXIgdGhlIGNvcnJlY3QgYXV0aCBwYXJhbXNcblx0XHRmb3IgKGNvbnN0IHByb3Agb2YgWyAnYmFzZVVybCcsICdjbGllbnRJZCcsICdyZWFsbScsICdlbnYnIF0pIHtcblx0XHRcdGlmIChhY2NvdW50LmF1dGhbcHJvcF0gJiYgb3B0c1twcm9wXSAhPT0gYWNjb3VudC5hdXRoW3Byb3BdKSB7XG5cdFx0XHRcdGxvZyhgT3ZlcnJpZGluZyBcIiR7cHJvcH1cIiBhdXRoIHBhcmFtIHdpdGggYWNjb3VudCdzOiAke29wdHNbcHJvcF19IC0+ICR7YWNjb3VudC5hdXRoW3Byb3BdfWApO1xuXHRcdFx0XHRvcHRzW3Byb3BdID0gYWNjb3VudC5hdXRoW3Byb3BdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRhdXRoZW50aWNhdG9yID0gdGhpcy5jcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMpO1xuXG5cdFx0aWYgKGFjY291bnQuYXV0aC5leHBpcmVkKSB7XG5cdFx0XHQvLyByZWZyZXNoIHRoZSBhY2Nlc3MgdG9rZW4gaWYgdGhlIHJlZnJlc2ggdG9rZW4gaXMgdmFsaWRcblx0XHRcdGxvZyhgQWNjZXNzIHRva2VuIGZvciBhY2NvdW50ICR7aGlnaGxpZ2h0KGFjY291bnQubmFtZSB8fCBhY2NvdW50Lmhhc2gpfSBoYXMgZXhwaXJlZGApO1xuXG5cdFx0XHRjb25zdCB7IGFjY2VzcywgcmVmcmVzaCB9ID0gYWNjb3VudC5hdXRoLmV4cGlyZXM7XG5cdFx0XHRpZiAoKHJlZnJlc2ggfHwgYWNjZXNzKSA8IERhdGUubm93KCkpIHtcblx0XHRcdFx0bG9nKGBVbmFibGUgdG8gcmVmcmVzaCBhY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9IGJlY2F1c2UgcmVmcmVzaCB0b2tlbiBpcyBhbHNvIGV4cGlyZWRgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHRsb2coYFJlZnJlc2hpbmcgYWNjZXNzIHRva2VuIGZvciBhY2NvdW50ICR7aGlnaGxpZ2h0KGFjY291bnQubmFtZSB8fCBhY2NvdW50Lmhhc2gpfWApO1xuXHRcdFx0XHRyZXR1cm4gYXdhaXQgYXV0aGVudGljYXRvci5nZXRUb2tlbigpO1xuXHRcdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRcdGlmIChlcnIuY29kZSA9PT0gJ0VJTlZBTElER1JBTlQnKSB7XG5cdFx0XHRcdFx0d2FybihlcnIubWVzc2FnZSk7XG5cdFx0XHRcdFx0bG9nKGBSZW1vdmluZyBpbnZhbGlkIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9IGR1ZSB0byBpbnZhbGlkIHJlZnJlc2ggdG9rZW5gKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnRva2VuU3RvcmUuZGVsZXRlKGFjY291bnQubmFtZSwgb3B0cy5iYXNlVXJsKTtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aHJvdyBlcnI7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmdldEluZm8oYWNjb3VudCk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRpZiAoZXJyLnN0YXR1c0NvZGUgPT09IDQwMSkge1xuXHRcdFx0XHR3YXJuKGBSZW1vdmluZyBpbnZhbGlkIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9IGR1ZSB0byBzdGFsZSB0b2tlbmApO1xuXHRcdFx0XHRhd2FpdCB0aGlzLnRva2VuU3RvcmUuZGVsZXRlKGFjY291bnQubmFtZSwgb3B0cy5iYXNlVXJsKTtcblx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBlcnI7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgYSBsaXN0IG9mIGFsbCB2YWxpZCBhY2Nlc3MgdG9rZW5zLlxuXHQgKlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheT59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBsaXN0KCkge1xuXHRcdGlmICh0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdHJldHVybiBhd2FpdCB0aGlzLnRva2VuU3RvcmUubGlzdCgpO1xuXHRcdH1cblx0XHRyZXR1cm4gW107XG5cdH1cblxuXHQvKipcblx0ICogQXV0aGVudGljYXRlcyB1c2luZyB0aGUgY29uZmlndXJlZCBhdXRoZW50aWNhdG9yLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ3xBcnJheS48U3RyaW5nPn0gW29wdC5hcHBdIC0gVGhlIHdlYiBicm93c2VyIGFwcCB0byBvcGVuIHRoZSBgdGFyZ2V0YCB3aXRoLCBvclxuXHQgKiBhbiBhcnJheSB3aXRoIHRoZSBhcHAgYW5kIGFwcCBhcmd1bWVudHMuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIG91dGdvaW5nIHJlcXVlc3RzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50SWRdIC0gVGhlIGNsaWVudCBpZCB0byBzcGVjaWZ5IHdoZW4gYXV0aGVudGljYXRpbmcuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jb2RlXSAtIFRoZSBhdXRoZW50aWNhdGlvbiBjb2RlIGZyb20gYSBzdWNjZXNzZnVsIGludGVyYWN0aXZlIGxvZ2luLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZW52PXByb2RdIC0gVGhlIGVudmlyb25tZW50IG5hbWUuIE11c3QgYmUgYGRldmAsIGBwcmVwcm9kYCwgb3IgYHByb2RgLlxuXHQgKiBUaGUgZW52aXJvbm1lbnQgaXMgYSBzaG9ydGhhbmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBBeHdheSBkZWZhdWx0IGJhc2UgVVJMLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLm1hbnVhbD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaXQgd2lsbCByZXR1cm4gdGhlIGF1dGggVVJMIGluc3RlYWQgb2Zcblx0ICogbGF1bmNoaW5nIHRoZSBhdXRoIFVSTCBpbiB0aGUgZGVmYXVsdCBicm93c2VyLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy5vbk9wZW5Ccm93c2VyXSAtIEEgY2FsbGJhY2sgd2hlbiB0aGUgd2ViIGJyb3dzZXIgaXMgYWJvdXQgdG8gYmVcblx0ICogbGF1bmNoZWQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5yZWFsbV0gLSBUaGUgbmFtZSBvZiB0aGUgcmVhbG0gdG8gYXV0aGVudGljYXRlIHdpdGguXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy50aW1lb3V0XSAtIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHRpbWluZyBvdXQuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IFJlc29sdmVzIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhY2Nlc3MgdG9rZW4sIGFjY291bnQgbmFtZSwgYW5kXG5cdCAqIHVzZXIgaW5mby5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvZ2luKG9wdHMgPSB7fSkge1xuXHRcdG9wdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHMob3B0cyk7XG5cdFx0Y29uc3QgYXV0aGVudGljYXRvciA9IHRoaXMuY3JlYXRlQXV0aGVudGljYXRvcihvcHRzKTtcblx0XHRyZXR1cm4gYXdhaXQgYXV0aGVudGljYXRvci5sb2dpbihvcHRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXZva2VzIGFsbCBvciBzcGVjaWZpYyBhdXRoZW50aWNhdGVkIGFjY291bnRzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIFJlcXVpcmVkIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7QXJyYXkuPFN0cmluZz59IG9wdHMuYWNjb3VudHMgLSBBIGxpc3Qgb2YgYWNjb3VudHMgbmFtZXMuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gb3B0cy5hbGwgLSBXaGVuIGB0cnVlYCwgcmV2b2tlcyBhbGwgYWNjb3VudHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB1c2VkIHRvIGZpbHRlciBhY2NvdW50cy5cblx0ICogQHJldHVybnMge1Byb21pc2U8QXJyYXk+fSBSZXNvbHZlcyBhIGxpc3Qgb2YgcmV2b2tlZCBjcmVkZW50aWFscy5cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvZ291dCh7IGFjY291bnRzLCBhbGwsIGJhc2VVcmwgfSA9IHt9KSB7XG5cdFx0aWYgKCF0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdGxvZygnTm8gdG9rZW4gc3RvcmUsIHJldHVybmluZyBlbXB0eSBhcnJheScpO1xuXHRcdFx0cmV0dXJuIFtdO1xuXHRcdH1cblxuXHRcdGlmICghYWxsKSB7XG5cdFx0XHRpZiAoIWFjY291bnRzKSB7XG5cdFx0XHRcdHRocm93IEUuSU5WQUxJRF9BUkdVTUVOVCgnRXhwZWN0ZWQgYWNjb3VudHMgdG8gYmUgYSBsaXN0IG9mIGFjY291bnRzJyk7XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIGFjY291bnRzID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRhY2NvdW50cyA9IFsgYWNjb3VudHMgXTtcblx0XHRcdH1cblx0XHRcdGlmICghQXJyYXkuaXNBcnJheShhY2NvdW50cykpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBhY2NvdW50cyB0byBiZSBhIGxpc3Qgb2YgYWNjb3VudHMnKTtcblx0XHRcdH1cblx0XHRcdGlmICghYWNjb3VudHMubGVuZ3RoKSB7XG5cdFx0XHRcdHJldHVybiBbXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgcmV2b2tlZDtcblx0XHRpZiAoYWxsKSB7XG5cdFx0XHRyZXZva2VkID0gYXdhaXQgdGhpcy50b2tlblN0b3JlLmNsZWFyKGJhc2VVcmwpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXZva2VkID0gYXdhaXQgdGhpcy50b2tlblN0b3JlLmRlbGV0ZShhY2NvdW50cywgYmFzZVVybCk7XG5cdFx0fVxuXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkocmV2b2tlZCkpIHtcblx0XHRcdGZvciAoY29uc3QgZW50cnkgb2YgcmV2b2tlZCkge1xuXHRcdFx0XHQvLyBkb24ndCBsb2dvdXQgb2YgcGxhdGZvcm0gYWNjb3VudHMgaGVyZSwgaXQncyBkb25lIGluIHRoZSBBbXBsaWZ5IFNESyBieSBvcGVuaW5nIHRoZSBicm93c2VyXG5cdFx0XHRcdGlmICghZW50cnkuaXNQbGF0Zm9ybSkge1xuXHRcdFx0XHRcdGNvbnN0IHVybCA9IGAke2dldEVuZHBvaW50cyhlbnRyeS5hdXRoKS5sb2dvdXR9P2lkX3Rva2VuX2hpbnQ9JHtlbnRyeS5hdXRoLnRva2Vucy5pZF90b2tlbn1gO1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCB7IHN0YXR1c0NvZGUgfSA9IGF3YWl0IHRoaXMuZ290KHVybCwgeyByZXNwb25zZVR5cGU6ICdqc29uJywgcmV0cnk6IDAgfSk7XG5cdFx0XHRcdFx0XHRsb2coYFN1Y2Nlc3NmdWxseSBsb2dnZWQgb3V0ICR7aGlnaGxpZ2h0KGVudHJ5Lm5hbWUpfSAke21hZ2VudGEoc3RhdHVzQ29kZSl9ICR7bm90ZShgKCR7ZW50cnkuYXV0aC5iYXNlVXJsfSwgJHtlbnRyeS5hdXRoLnJlYWxtfSlgKX1gKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRcdGxvZyhgRmFpbGVkIHRvIGxvZyBvdXQgJHtoaWdobGlnaHQoZW50cnkubmFtZSl9ICR7YWxlcnQoZXJyLnN0YXR1cyl9ICR7bm90ZShgKCR7ZW50cnkuYXV0aC5iYXNlVXJsfSwgJHtlbnRyeS5hdXRoLnJlYWxtfSlgKX1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmV2b2tlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBEaXNjb3ZlcnMgYXZhaWxhYmxlIGVuZHBvaW50cyBiYXNlZCBvbiB0aGUgYXV0aGVudGljYXRpb24gc2VydmVyJ3MgT3BlbklEIGNvbmZpZ3VyYXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5iYXNlVXJsXSAtIFRoZSBiYXNlIFVSTCB0byB1c2UgZm9yIGFsbCBvdXRnb2luZyByZXF1ZXN0cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmVudj1wcm9kXSAtIFRoZSBlbnZpcm9ubWVudCBuYW1lLiBNdXN0IGJlIGBkZXZgLCBgcHJlcHJvZGAsIG9yIGBwcm9kYC5cblx0ICogVGhlIGVudmlyb25tZW50IGlzIGEgc2hvcnRoYW5kIHdheSBvZiBzcGVjaWZ5aW5nIGEgQXh3YXkgZGVmYXVsdCBiYXNlIFVSTC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVybF0gLSBBbiBvcHRpb25hbCBVUkwgdG8gZGlzY292ZXIgdGhlIGF2YWlsYWJsZSBlbmRwb2ludHMuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBzZXJ2ZXJJbmZvKG9wdHMgPSB7fSkge1xuXHRcdG9wdHMgPSB0aGlzLmFwcGx5RGVmYXVsdHMob3B0cyk7XG5cblx0XHRsZXQgeyB1cmwgfSA9IG9wdHM7XG5cblx0XHRpZiAoIXVybCkge1xuXHRcdFx0dXJsID0gZ2V0RW5kcG9pbnRzKG9wdHMpLndlbGxLbm93bjtcblx0XHR9XG5cblx0XHRpZiAoIXVybCB8fCB0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBVUkwgdG8gYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdFx0fVxuXG5cdFx0dHJ5IHtcblx0XHRcdGxvZyhgRmV0Y2hpbmcgc2VydmVyIGluZm86ICR7aGlnaGxpZ2h0KHVybCl9Li4uYCk7XG5cdFx0XHRyZXR1cm4gKGF3YWl0IHRoaXMuZ290KHVybCwgeyByZXNwb25zZVR5cGU6ICdqc29uJywgcmV0cnk6IDAgfSkpLmJvZHk7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRpZiAoZXJyLm5hbWUgIT09ICdQYXJzZUVycm9yJykge1xuXHRcdFx0XHRlcnIubWVzc2FnZSA9IGBGYWlsZWQgdG8gZ2V0IHNlcnZlciBpbmZvIChzdGF0dXMgJHtlcnIucmVzcG9uc2Uuc3RhdHVzQ29kZX0pYDtcblx0XHRcdH1cblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSBzdG9yZWQgYWNjb3VudC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IGFjY291bnQgLSBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgYWNjb3VudCBpbmZvLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHVwZGF0ZUFjY291bnQoYWNjb3VudCkge1xuXHRcdGlmICh0aGlzLnRva2VuU3RvcmUpIHtcblx0XHRcdGF3YWl0IHRoaXMudG9rZW5TdG9yZS5zZXQoYWNjb3VudCk7XG5cdFx0fVxuXHR9XG59XG4iXSwiZmlsZSI6ImF1dGguanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsibG9nIiwid2FybiIsImFsZXJ0IiwiaGlnaGxpZ2h0IiwibWFnZW50YSIsIm5vdGUiLCJzbm9vcGxvZ2ciLCJzdHlsZXMiLCJBdXRoIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiRSIsIklOVkFMSURfQVJHVU1FTlQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiYmFzZVVybCIsInZhbHVlIiwiY2xpZW50SWQiLCJjbGllbnRTZWNyZXQiLCJlbnYiLCJnb3QiLCJyZXF1ZXN0IiwiaW5pdCIsInJlcXVlc3RPcHRpb25zIiwiaW50ZXJhY3RpdmVMb2dpblRpbWVvdXQiLCJtZXNzYWdlcyIsInBhc3N3b3JkIiwicmVhbG0iLCJwbGF0Zm9ybVVybCIsInNlY3JldEZpbGUiLCJzZXJ2aWNlQWNjb3VudCIsInVzZXJuYW1lIiwidG9rZW5TdG9yZSIsIlRva2VuU3RvcmUiLCJJTlZBTElEX1BBUkFNRVRFUiIsInRva2VuU3RvcmVUeXBlIiwidW5kZWZpbmVkIiwiU2VjdXJlU3RvcmUiLCJlIiwiY29kZSIsIlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSIsIkZpbGVTdG9yZSIsIk1lbW9yeVN0b3JlIiwiYXBwbHlEZWZhdWx0cyIsIm5hbWUiLCJlbnZpcm9ubWVudHMiLCJyZXNvbHZlIiwiSU5WQUxJRF9WQUxVRSIsInRpbWVvdXQiLCJjcmVhdGVBdXRoZW50aWNhdG9yIiwiYXV0aGVudGljYXRvciIsIkF1dGhlbnRpY2F0b3IiLCJJTlZBTElEX0FSVUdNRU5UIiwiT3duZXJQYXNzd29yZCIsIkNsaWVudFNlY3JldCIsIlNpZ25lZEpXVCIsIlBLQ0UiLCJmaW5kIiwiYWNjb3VudE5hbWUiLCJoYXNoIiwiYWNjb3VudCIsImdldCIsInByb3AiLCJhdXRoIiwiZXhwaXJlZCIsImFjY2VzcyIsInJlZnJlc2giLCJleHBpcmVzIiwiRGF0ZSIsIm5vdyIsImdldFRva2VuIiwiZXJyIiwibWVzc2FnZSIsImRlbGV0ZSIsImdldEluZm8iLCJzdGF0dXNDb2RlIiwibGlzdCIsImxvZ2luIiwibG9nb3V0IiwiYWNjb3VudHMiLCJhbGwiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJyZXZva2VkIiwiY2xlYXIiLCJlbnRyeSIsImlzUGxhdGZvcm0iLCJ1cmwiLCJ0b2tlbnMiLCJpZF90b2tlbiIsInJlc3BvbnNlVHlwZSIsInJldHJ5Iiwic3RhdHVzIiwic2VydmVySW5mbyIsIndlbGxLbm93biIsImJvZHkiLCJyZXNwb25zZSIsInVwZGF0ZUFjY291bnQiLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLE1BQU07QUFBRUEsRUFBQUEsR0FBRjtBQUFPQyxFQUFBQTtBQUFQLElBQWdCLHdCQUFVLGtCQUFWLENBQXRCO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxLQUFGO0FBQVNDLEVBQUFBLFNBQVQ7QUFBb0JDLEVBQUFBLE9BQXBCO0FBQTZCQyxFQUFBQTtBQUE3QixJQUFzQ0MsbUJBQVVDLE1BQXREO0FBRUE7QUFDQTtBQUNBOztBQUNlLE1BQU1DLElBQU4sQ0FBVztBQUN6QjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBR0M7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQ0MsRUFBQUEsV0FBVyxDQUFDQyxJQUFJLEdBQUcsRUFBUixFQUFZO0FBQUEsd0NBMUNWLElBMENVOztBQUN0QixRQUFJLENBQUNBLElBQUQsSUFBUyxPQUFPQSxJQUFQLEtBQWdC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QUFDQTs7O0FBQ29CLFFBQWIyQixhQUFhLENBQUN0QyxPQUFELEVBQVU7QUFDNUIsUUFBSSxLQUFLNUIsVUFBVCxFQUFxQjtBQUNwQixZQUFNLEtBQUtBLFVBQUwsQ0FBZ0JtRSxHQUFoQixDQUFvQnZDLE9BQXBCLENBQU47QUFDQTtBQUNEOztBQXJhd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRSBmcm9tICcuL2Vycm9ycyc7XG5cbmltcG9ydCBBdXRoZW50aWNhdG9yIGZyb20gJy4vYXV0aGVudGljYXRvcnMvYXV0aGVudGljYXRvcic7XG5pbXBvcnQgQ2xpZW50U2VjcmV0IGZyb20gJy4vYXV0aGVudGljYXRvcnMvY2xpZW50LXNlY3JldCc7XG5pbXBvcnQgT3duZXJQYXNzd29yZCBmcm9tICcuL2F1dGhlbnRpY2F0b3JzL293bmVyLXBhc3N3b3JkJztcbmltcG9ydCBQS0NFIGZyb20gJy4vYXV0aGVudGljYXRvcnMvcGtjZSc7XG5pbXBvcnQgU2lnbmVkSldUIGZyb20gJy4vYXV0aGVudGljYXRvcnMvc2lnbmVkLWp3dCc7XG5cbmltcG9ydCBGaWxlU3RvcmUgZnJvbSAnLi9zdG9yZXMvZmlsZS1zdG9yZSc7XG5pbXBvcnQgTWVtb3J5U3RvcmUgZnJvbSAnLi9zdG9yZXMvbWVtb3J5LXN0b3JlJztcbmltcG9ydCBTZWN1cmVTdG9yZSBmcm9tICcuL3N0b3Jlcy9zZWN1cmUtc3RvcmUnO1xuaW1wb3J0IFRva2VuU3RvcmUgZnJvbSAnLi9zdG9yZXMvdG9rZW4tc3RvcmUnO1xuXG5pbXBvcnQgZ2V0RW5kcG9pbnRzIGZyb20gJy4vZW5kcG9pbnRzJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcblxuaW1wb3J0ICogYXMgZW52aXJvbm1lbnRzIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmltcG9ydCAqIGFzIHJlcXVlc3QgZnJvbSAnQGF4d2F5L2FtcGxpZnktcmVxdWVzdCc7XG5cbmNvbnN0IHsgbG9nLCB3YXJuIH0gPSBzbm9vcGxvZ2coJ2FtcGxpZnktc2RrOmF1dGgnKTtcbmNvbnN0IHsgYWxlcnQsIGhpZ2hsaWdodCwgbWFnZW50YSwgbm90ZSB9ID0gc25vb3Bsb2dnLnN0eWxlcztcblxuLyoqXG4gKiBBdXRoZW50aWNhdGVzIHRoZSBtYWNoaW5lIGFuZCByZXRyZWl2ZXMgdGhlIGF1dGggdG9rZW4uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1dGgge1xuXHQvKipcblx0ICogVGhlIHN0b3JlIHRvIHBlcnNpc3QgdGhlIHRva2VuLlxuXHQgKlxuXHQgKiBAdHlwZSB7VG9rZW5TdG9yZX1cblx0ICogQGFjY2VzcyBwcml2YXRlXG5cdCAqL1xuXHR0b2tlblN0b3JlID0gbnVsbDtcblxuXHQvKipcblx0ICogSW5pdGlhbGl6ZXMgdGhlIGF1dGhlbnRpY2F0aW9uIGluc3RhbmNlIGJ5IHNldHRpbmcgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYW5kIGNyZWF0aW5nIHRoZVxuXHQgKiB0b2tlbiBzdG9yZS5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIG91dGdvaW5nIHJlcXVlc3RzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50SWRdIC0gVGhlIGNsaWVudCBpZCB0byBzcGVjaWZ5IHdoZW4gYXV0aGVudGljYXRpbmcuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRTZWNyZXRdIC0gVGhlIHNlY3JldCB0b2tlbiB0byB1c2UgdG8gYXV0aGVudGljYXRlLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZW52PXByb2RdIC0gVGhlIGVudmlyb25tZW50IG5hbWUuIE11c3QgYmUgYGRldmAsIGBwcmVwcm9kYCwgb3IgYHByb2RgLlxuXHQgKiBUaGUgZW52aXJvbm1lbnQgaXMgYSBzaG9ydGhhbmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBBeHdheSBkZWZhdWx0IGJhc2UgVVJMLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbb3B0cy5nb3RdIC0gQSByZWZlcmVuY2UgdG8gYSBgZ290YCBIVFRQIGNsaWVudC4gSWYgbm90IGRlZmluZWQsIHRoZVxuXHQgKiBkZWZhdWx0IGBnb3RgIGluc3RhbmNlIHdpbGwgYmUgdXNlZC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmhvbWVEaXJdIC0gVGhlIHBhdGggdG8gdGhlIGhvbWUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGBsaWJgXG5cdCAqIGRpcmVjdG9yeSB3aGVyZSBga2V5dGFyYCBpcyBsb2NhdGVkLiBUaGlzIG9wdGlvbiBpcyByZXF1aXJlZCB3aGVuIGB0b2tlblN0b3JlVHlwZWAgaXMgc2V0IHRvXG5cdCAqIGBzZWN1cmVgLCB3aGljaCBpcyB0aGUgZGVmYXVsdC5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLmludGVyYWN0aXZlTG9naW5UaW1lb3V0XSAtIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlXG5cdCAqIHRpbWluZyBvdXQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5wYXNzd29yZF0gLSBUaGUgcGFzc3dvcmQgdXNlZCB0byBhdXRoZW50aWNhdGUuIFJlcXVpcmVzIGEgYHVzZXJuYW1lYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnBsYXRmb3JtVXJsXSAtIFRoZSBVUkwgdG8gcmVkaXJlY3QgdGhlIGJyb3dzZXIgdG8gYWZ0ZXIgYVxuXHQgKiBzdWNjZXNzZnVsIGxvZ2luLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucmVhbG1dIC0gVGhlIG5hbWUgb2YgdGhlIHJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHMucmVxdWVzdE9wdGlvbnNdIC0gQW4gb3B0aW9ucyBvYmplY3QgdG8gcGFzcyBpbnRvIEFtcGxpZnkgQ0xJIFV0aWxzIHRvXG5cdCAqIGNyZWF0ZSB0aGUgYGdvdGAgSFRUUCBjbGllbnQuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWNyZXRGaWxlXSAtIFRoZSBwYXRoIHRvIHRoZSBqd3Qgc2VjcmV0IGZpbGUuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5zZWN1cmVTZXJ2aWNlTmFtZT1cIkF4d2F5IEFNUExJRlkgQXV0aFwiXSAtIFRoZSBuYW1lIG9mIHRoZSBjb25zdW1lclxuXHQgKiB1c2luZyB0aGlzIGxpYnJhcnkgd2hlbiB1c2luZyB0aGUgXCJzZWN1cmVcIiB0b2tlbiBzdG9yZS5cblx0ICogQHBhcmFtIHtCb29sZWFufSBbb3B0cy5zZXJ2aWNlQWNjb3VudD1mYWxzZV0gLSBXaGVuIGB0cnVlYCwgaW5kaWNhdGVzIGF1dGhlbnRpY2F0aW9uIGlzIGJlaW5nXG5cdCAqIHJlcXVlc3RlZCBieSBhIHNlcnZpY2UgaW5zdGVhZCBvZiBhIHVzZXIuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMudG9rZW5SZWZyZXNoVGhyZXNob2xkPTBdIC0gVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgYWNjZXNzXG5cdCAqIHRva2VuIGV4cGlyZXMgYW5kIHNob3VsZCBiZSByZWZyZXNoZWQuXG5cdCAqIEBwYXJhbSB7VG9rZW5TdG9yZX0gW29wdHMudG9rZW5TdG9yZV0gLSBBIHRva2VuIHN0b3JlIGluc3RhbmNlIGZvciBwZXJzaXN0aW5nIHRoZSB0b2tlbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy50b2tlblN0b3JlRGlyXSAtIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRva2VuIHN0b3JlIGlzIHNhdmVkLiBSZXF1aXJlZFxuXHQgKiB3aGVuIHRoZSBgdG9rZW5TdG9yZVR5cGVgIGlzIGBzZWN1cmVgIG9yIGBmaWxlYC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnRva2VuU3RvcmVUeXBlPXNlY3VyZV0gLSBUaGUgdHlwZSBvZiBzdG9yZSB0byBwZXJzaXN0IHRoZSBhY2Nlc3MgdG9rZW4uXG5cdCAqIFBvc3NpYmxlIHZhbHVlcyBpbmNsdWRlOiBgYXV0b2AsIGBzZWN1cmVgLCBgZmlsZWAsIG9yIGBtZW1vcnlgLiBJZiB2YWx1ZSBpcyBgYXV0b2AsIGl0IHdpbGxcblx0ICogYXR0ZW1wdCB0byB1c2UgYHNlY3VyZWAsIHRoZW4gYGZpbGVgLCB0aGVuIGBtZW1vcnlgLiBJZiBzZXQgdG8gYG51bGxgLCB0aGVuIGl0IHdpbGwgbm90XG5cdCAqIHBlcnNpc3QgdGhlIGFjY2VzcyB0b2tlbi5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVzZXJuYW1lXSAtIFRoZSB1c2VybmFtZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gUmVxdWlyZXMgYSBgcGFzc3dvcmRgLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMsIHtcblx0XHRcdGJhc2VVcmw6ICAgICAgICB7IHZhbHVlOiBvcHRzLmJhc2VVcmwgfSxcblx0XHRcdGNsaWVudElkOiAgICAgICB7IHZhbHVlOiBvcHRzLmNsaWVudElkIH0sXG5cdFx0XHRjbGllbnRTZWNyZXQ6ICAgeyB2YWx1ZTogb3B0cy5jbGllbnRTZWNyZXQgfSxcblx0XHRcdGVudjogICAgICAgICAgICB7IHZhbHVlOiBvcHRzLmVudiB9LFxuXHRcdFx0Z290OiAgICAgICAgICAgIHsgdmFsdWU6IG9wdHMuZ290IHx8IHJlcXVlc3QuaW5pdChvcHRzLnJlcXVlc3RPcHRpb25zKSB9LFxuXHRcdFx0aW50ZXJhY3RpdmVMb2dpblRpbWVvdXQ6IHsgdmFsdWU6IG9wdHMuaW50ZXJhY3RpdmVMb2dpblRpbWVvdXQgfSxcblx0XHRcdG1lc3NhZ2VzOiAgICAgICB7IHZhbHVlOiBvcHRzLm1lc3NhZ2VzIH0sXG5cdFx0XHRwYXNzd29yZDogICAgICAgeyB2YWx1ZTogb3B0cy5wYXNzd29yZCB9LFxuXHRcdFx0cmVhbG06ICAgICAgICAgIHsgdmFsdWU6IG9wdHMucmVhbG0gfSxcblx0XHRcdHBsYXRmb3JtVXJsOiAgICB7IHZhbHVlOiBvcHRzLnBsYXRmb3JtVXJsIH0sXG5cdFx0XHRzZWNyZXRGaWxlOiAgICAgeyB2YWx1ZTogb3B0cy5zZWNyZXRGaWxlIH0sXG5cdFx0XHRzZXJ2aWNlQWNjb3VudDogeyB2YWx1ZTogb3B0cy5zZXJ2aWNlQWNjb3VudCB9LFxuXHRcdFx0dXNlcm5hbWU6ICAgICAgIHsgdmFsdWU6IG9wdHMudXNlcm5hbWUgfVxuXHRcdH0pO1xuXG5cdFx0aWYgKG9wdHMudG9rZW5TdG9yZSkge1xuXHRcdFx0aWYgKCEob3B0cy50b2tlblN0b3JlIGluc3RhbmNlb2YgVG9rZW5TdG9yZSkpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX1BBUkFNRVRFUignRXhwZWN0ZWQgdGhlIHRva2VuIHN0b3JlIHRvIGJlIGEgXCJUb2tlblN0b3JlXCIgaW5zdGFuY2UnKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudG9rZW5TdG9yZSA9IG9wdHMudG9rZW5TdG9yZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgdG9rZW5TdG9yZVR5cGUgPSBvcHRzLnRva2VuU3RvcmVUeXBlID09PSB1bmRlZmluZWQgPyAnc2VjdXJlJyA6IG9wdHMudG9rZW5TdG9yZVR5cGU7XG5cdFx0XHRzd2l0Y2ggKHRva2VuU3RvcmVUeXBlKSB7XG5cdFx0XHRcdGNhc2UgJ2F1dG8nOlxuXHRcdFx0XHRjYXNlICdzZWN1cmUnOlxuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgU2VjdXJlU3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHQvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cblx0XHRcdFx0XHRcdGlmICh0b2tlblN0b3JlVHlwZSA9PT0gJ2F1dG8nKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGxldCAnYXV0bycgZmFsbCB0aHJvdWdoXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGUuY29kZSA9PT0gJ0VSUl9LRVlUQVJfTk9UX0ZPVU5EJykge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBFLlNFQ1VSRV9TVE9SRV9VTkFWQUlMQUJMRSgnU2VjdXJlIHRva2VuIHN0b3JlIGlzIG5vdCBhdmFpbGFibGUuXFxuUGxlYXNlIHJlaW5zdGFsbCBvciByZWJ1aWxkIHRoaXMgYXBwbGljYXRpb24uJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aHJvdyBlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRjYXNlICdmaWxlJzpcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0dGhpcy50b2tlblN0b3JlID0gbmV3IEZpbGVTdG9yZShvcHRzKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXHRcdFx0XHRcdFx0aWYgKHRva2VuU3RvcmVUeXBlID09PSAnYXV0bycgJiYgZS5jb2RlID09PSAnRVJSX01JU1NJTkdfUkVRVUlSRURfUEFSQU1FVEVSJykge1xuXHRcdFx0XHRcdFx0XHQvLyBsZXQgJ2F1dG8nIGZhbGwgdGhyb3VnaFxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhyb3cgZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0Y2FzZSAnbWVtb3J5Jzpcblx0XHRcdFx0XHR0aGlzLnRva2VuU3RvcmUgPSBuZXcgTWVtb3J5U3RvcmUob3B0cyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEVuc3VyZXMgdGhlIG9wdGlvbnMgY29udGFpbnMgdGhlIGNvbmZpZ3VyYWJsZSBzZXR0aW5ncy4gVmFsaWRhdGlvbiBpcyBoYW5kbGVkIGJ5IHRoZSBjb2RlXG5cdCAqIHJlcXVpcmluZyB0aGUgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGFwcGx5RGVmYXVsdHMob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBvcHRpb25zIHRvIGJlIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG5hbWUgPSBvcHRzLmVudiB8fCB0aGlzLmVudjtcblx0XHRjb25zdCBlbnYgPSBlbnZpcm9ubWVudHMucmVzb2x2ZShuYW1lKTtcblx0XHRpZiAoIWVudikge1xuXHRcdFx0dGhyb3cgRS5JTlZBTElEX1ZBTFVFKGBJbnZhbGlkIGVudmlyb25tZW50OiAke25hbWV9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gY29weSB0aGUgb3B0aW9ucyBzbyB3ZSBkb24ndCBtb2RpZnkgdGhlIG9yaWdpbmFsIG9iamVjdCBzaW5jZSB3ZSBkb24ndCBvd24gaXRcblx0XHRyZXR1cm4ge1xuXHRcdFx0Li4ub3B0cyxcblx0XHRcdGJhc2VVcmw6ICAgICAgICBvcHRzLmJhc2VVcmwgfHwgdGhpcy5iYXNlVXJsIHx8IGVudi5iYXNlVXJsLFxuXHRcdFx0Y2xpZW50SWQ6ICAgICAgIG9wdHMuY2xpZW50SWQgfHwgdGhpcy5jbGllbnRJZCxcblx0XHRcdGNsaWVudFNlY3JldDogICBvcHRzLmNsaWVudFNlY3JldCB8fCB0aGlzLmNsaWVudFNlY3JldCxcblx0XHRcdGVudjogICAgICAgICAgICBuYW1lLFxuXHRcdFx0Z290OiAgICAgICAgICAgIG9wdHMuZ290IHx8IHRoaXMuZ290LFxuXHRcdFx0bWVzc2FnZXM6ICAgICAgIG9wdHMubWVzc2FnZXMgfHwgdGhpcy5tZXNzYWdlcyxcblx0XHRcdHBhc3N3b3JkOiAgICAgICBvcHRzLnBhc3N3b3JkIHx8IHRoaXMucGFzc3dvcmQsXG5cdFx0XHRwbGF0Zm9ybVVybDogICAgb3B0cy5wbGF0Zm9ybVVybCB8fCB0aGlzLnBsYXRmb3JtVXJsLFxuXHRcdFx0cmVhbG06ICAgICAgICAgIG9wdHMucmVhbG0gfHwgdGhpcy5yZWFsbSxcblx0XHRcdHNlY3JldEZpbGU6ICAgICBvcHRzLnNlY3JldEZpbGUgfHwgdGhpcy5zZWNyZXRGaWxlLFxuXHRcdFx0c2VydmljZUFjY291bnQ6IG9wdHMuc2VydmljZUFjY291bnQgfHwgdGhpcy5zZXJ2aWNlQWNjb3VudCxcblx0XHRcdHRpbWVvdXQ6ICAgICAgICBvcHRzLnRpbWVvdXQgfHwgb3B0cy5pbnRlcmFjdGl2ZUxvZ2luVGltZW91dCB8fCB0aGlzLmludGVyYWN0aXZlTG9naW5UaW1lb3V0LFxuXHRcdFx0dG9rZW5TdG9yZTogICAgIHRoaXMudG9rZW5TdG9yZSxcblx0XHRcdHVzZXJuYW1lOiAgICAgICBvcHRzLnVzZXJuYW1lIHx8IHRoaXMudXNlcm5hbWVcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gYXV0aGV0bmljYXRvciBiYXNlZCBvbiB0aGUgc3VwcGxpZWQgb3B0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtBdXRoZW50aWNhdG9yfSBbb3B0cy5hdXRoZW50aWNhdG9yXSAtIEFuIGF1dGhlbnRpY2F0b3IgaW5zdGFuY2UgdG8gdXNlLiBJZiBub3Rcblx0ICogc3BlY2lmaWVkLCBvbmUgd2lsbCBiZSBhdXRvLXNlbGVjdGVkIGJhc2VkIG9uIHRoZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuY2xpZW50U2VjcmV0XSAtIFRoZSBzZWNyZXQgdG9rZW4gdG8gdXNlIHRvIGF1dGhlbnRpY2F0ZS5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnBhc3N3b3JkXSAtIFRoZSBwYXNzd29yZCB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gUmVxdWlyZXMgYSBgdXNlcm5hbWVgLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuc2VjcmV0RmlsZV0gLSBUaGUgcGF0aCB0byB0aGUgand0IHNlY3JldCBmaWxlLlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRzLnNlcnZpY2VBY2NvdW50PWZhbHNlXSAtIFdoZW4gYHRydWVgLCBpbmRpY2F0ZXMgYXV0aGVudGljYXRpb24gaXMgYmVpbmdcblx0ICogcmVxdWVzdGVkIGJ5IGEgc2VydmljZSBpbnN0ZWFkIG9mIGEgdXNlci5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnVzZXJuYW1lXSAtIFRoZSB1c2VybmFtZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4gUmVxdWlyZXMgYSBgcGFzc3dvcmRgLlxuXHQgKiBAcmV0dXJucyB7QXV0aGVudGljYXRvcn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKG9wdHMuYXV0aGVudGljYXRvcikge1xuXHRcdFx0aWYgKCEob3B0cy5hdXRoZW50aWNhdG9yIGluc3RhbmNlb2YgQXV0aGVudGljYXRvcikpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSVUdNRU5UKCdFeHBlY3RlZCBhdXRoZW50aWNhdG9yIHRvIGJlIGFuIEF1dGhlbnRpY2F0b3IgaW5zdGFuY2UuJyk7XG5cdFx0XHR9XG5cdFx0XHRsb2coYFVzaW5nIGV4aXN0aW5nICR7aGlnaGxpZ2h0KG9wdHMuYXV0aGVudGljYXRvci5jb25zdHJ1Y3Rvci5uYW1lKX0gYXV0aGVudGljYXRvcmApO1xuXHRcdFx0cmV0dXJuIG9wdHMuYXV0aGVudGljYXRvcjtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMudXNlcm5hbWUgPT09ICdzdHJpbmcnICYmIG9wdHMudXNlcm5hbWUgJiYgdHlwZW9mIG9wdHMucGFzc3dvcmQgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRsb2coYENyZWF0aW5nICR7aGlnaGxpZ2h0KCdPd25lclBhc3N3b3JkJyl9IGF1dGhlbnRpY2F0b3JgKTtcblx0XHRcdHJldHVybiBuZXcgT3duZXJQYXNzd29yZChvcHRzKTtcblx0XHR9XG5cblx0XHRpZiAodHlwZW9mIG9wdHMuY2xpZW50U2VjcmV0ID09PSAnc3RyaW5nJyAmJiBvcHRzLmNsaWVudFNlY3JldCkge1xuXHRcdFx0bG9nKGBDcmVhdGluZyAke2hpZ2hsaWdodCgnQ2xpZW50U2VjcmV0Jyl9IGF1dGhlbnRpY2F0b3JgKTtcblx0XHRcdHJldHVybiBuZXcgQ2xpZW50U2VjcmV0KG9wdHMpO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2Ygb3B0cy5zZWNyZXRGaWxlID09PSAnc3RyaW5nJyAmJiBvcHRzLnNlY3JldEZpbGUpIHtcblx0XHRcdGxvZyhgQ3JlYXRpbmcgJHtoaWdobGlnaHQoJ1NpZ25lZEpXVCcpfSBhdXRoZW50aWNhdG9yYCk7XG5cdFx0XHRyZXR1cm4gbmV3IFNpZ25lZEpXVChvcHRzKTtcblx0XHR9XG5cblx0XHRsb2coYENyZWF0aW5nICR7aGlnaGxpZ2h0KCdQS0NFJyl9IGF1dGhlbnRpY2F0b3JgKTtcblx0XHRyZXR1cm4gbmV3IFBLQ0Uob3B0cyk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBhY2Nlc3MgdG9rZW4uIElmIHRoZSBhdXRoZW50aWNhdG9yIGlzIGludGVyYWN0aXZlIGFuZCB0aGUgYXV0aGVudGljYXRvciBoYXMgbm90XG5cdCAqIHlldCBhdXRoZW50aWNhdGVkIHdpdGggdGhlIHNlcnZlciwgYW4gZXJyb3IgaXMgdGhyb3duLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd9IG9wdHMgLSBSZXF1aXJlZCBvcHRpb25zIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGhhc2ggb3IgYWNjb3VudFxuXHQgKiBuYW1lLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gb3B0cy5hY2NvdW50TmFtZSAtIFRoZSBhY2NvdW50IG5hbWUgdG8gcmV0cmlldmUuXG5cdCAqIEBwYXJhbSB7QXV0aGVudGljYXRvcn0gW29wdHMuYXV0aGVudGljYXRvcl0gLSBBbiBhdXRoZW50aWNhdG9yIGluc3RhbmNlIHRvIHVzZS4gSWYgbm90XG5cdCAqIHNwZWNpZmllZCwgb25lIHdpbGwgYmUgYXV0by1zZWxlY3RlZCBiYXNlZCBvbiB0aGUgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIGZpbHRlciBieS5cblx0ICogQHJldHVybnMge1Byb21pc2U8P09iamVjdD59XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBmaW5kKG9wdHMgPSB7fSkge1xuXHRcdGlmICghdGhpcy50b2tlblN0b3JlKSB7XG5cdFx0XHRsb2coJ0Nhbm5vdCBnZXQgYWNjb3VudCwgbm8gdG9rZW4gc3RvcmUnKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGxldCBhdXRoZW50aWNhdG9yO1xuXG5cdFx0aWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJykge1xuXHRcdFx0b3B0cyA9IHRoaXMuYXBwbHlEZWZhdWx0cyh7IGFjY291bnROYW1lOiBvcHRzLCBoYXNoOiBvcHRzIH0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvcHRzID0gdGhpcy5hcHBseURlZmF1bHRzKG9wdHMpO1xuXHRcdFx0YXV0aGVudGljYXRvciA9IHRoaXMuY3JlYXRlQXV0aGVudGljYXRvcihvcHRzKTtcblx0XHRcdGxvZyhgQXV0aGVudGljYXRvciBoYXNoOiAke2hpZ2hsaWdodChhdXRoZW50aWNhdG9yLmhhc2gpfWApO1xuXHRcdFx0b3B0cy5oYXNoID0gYXV0aGVudGljYXRvci5oYXNoO1xuXHRcdH1cblxuXHRcdGNvbnN0IGFjY291bnQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuZ2V0KG9wdHMpO1xuXHRcdGlmICghYWNjb3VudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdC8vIGNvcHkgb3ZlciB0aGUgY29ycmVjdCBhdXRoIHBhcmFtc1xuXHRcdGZvciAoY29uc3QgcHJvcCBvZiBbICdiYXNlVXJsJywgJ2NsaWVudElkJywgJ3JlYWxtJywgJ2VudicgXSkge1xuXHRcdFx0aWYgKGFjY291bnQuYXV0aFtwcm9wXSAmJiBvcHRzW3Byb3BdICE9PSBhY2NvdW50LmF1dGhbcHJvcF0pIHtcblx0XHRcdFx0bG9nKGBPdmVycmlkaW5nIFwiJHtwcm9wfVwiIGF1dGggcGFyYW0gd2l0aCBhY2NvdW50J3M6ICR7b3B0c1twcm9wXX0gLT4gJHthY2NvdW50LmF1dGhbcHJvcF19YCk7XG5cdFx0XHRcdG9wdHNbcHJvcF0gPSBhY2NvdW50LmF1dGhbcHJvcF07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGF1dGhlbnRpY2F0b3IgPSB0aGlzLmNyZWF0ZUF1dGhlbnRpY2F0b3Iob3B0cyk7XG5cblx0XHRpZiAoYWNjb3VudC5hdXRoLmV4cGlyZWQpIHtcblx0XHRcdC8vIHJlZnJlc2ggdGhlIGFjY2VzcyB0b2tlbiBpZiB0aGUgcmVmcmVzaCB0b2tlbiBpcyB2YWxpZFxuXHRcdFx0bG9nKGBBY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9IGhhcyBleHBpcmVkYCk7XG5cblx0XHRcdGNvbnN0IHsgYWNjZXNzLCByZWZyZXNoIH0gPSBhY2NvdW50LmF1dGguZXhwaXJlcztcblx0XHRcdGlmICgocmVmcmVzaCB8fCBhY2Nlc3MpIDwgRGF0ZS5ub3coKSkge1xuXHRcdFx0XHRsb2coYFVuYWJsZSB0byByZWZyZXNoIGFjY2VzcyB0b2tlbiBmb3IgYWNjb3VudCAke2hpZ2hsaWdodChhY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNoKX0gYmVjYXVzZSByZWZyZXNoIHRva2VuIGlzIGFsc28gZXhwaXJlZGApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGxvZyhgUmVmcmVzaGluZyBhY2Nlc3MgdG9rZW4gZm9yIGFjY291bnQgJHtoaWdobGlnaHQoYWNjb3VudC5uYW1lIHx8IGFjY291bnQuaGFzaCl9YCk7XG5cdFx0XHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmdldFRva2VuKCk7XG5cdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0aWYgKGVyci5jb2RlID09PSAnRUlOVkFMSURHUkFOVCcpIHtcblx0XHRcdFx0XHR3YXJuKGVyci5tZXNzYWdlKTtcblx0XHRcdFx0XHRsb2coYFJlbW92aW5nIGludmFsaWQgYWNjb3VudCAke2hpZ2hsaWdodChhY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNoKX0gZHVlIHRvIGludmFsaWQgcmVmcmVzaCB0b2tlbmApO1xuXHRcdFx0XHRcdGF3YWl0IHRoaXMudG9rZW5TdG9yZS5kZWxldGUoYWNjb3VudC5uYW1lLCBvcHRzLmJhc2VVcmwpO1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHRocm93IGVycjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0cmV0dXJuIGF3YWl0IGF1dGhlbnRpY2F0b3IuZ2V0SW5mbyhhY2NvdW50KTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGlmIChlcnIuc3RhdHVzQ29kZSA9PT0gNDAxKSB7XG5cdFx0XHRcdHdhcm4oYFJlbW92aW5nIGludmFsaWQgYWNjb3VudCAke2hpZ2hsaWdodChhY2NvdW50Lm5hbWUgfHwgYWNjb3VudC5oYXNoKX0gZHVlIHRvIHN0YWxlIHRva2VuYCk7XG5cdFx0XHRcdGF3YWl0IHRoaXMudG9rZW5TdG9yZS5kZWxldGUoYWNjb3VudC5uYW1lLCBvcHRzLmJhc2VVcmwpO1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHRcdHRocm93IGVycjtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHZhbGlkIGFjY2VzcyB0b2tlbnMuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlPEFycmF5Pn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxpc3QoKSB7XG5cdFx0aWYgKHRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0cmV0dXJuIGF3YWl0IHRoaXMudG9rZW5TdG9yZS5saXN0KCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBdXRoZW50aWNhdGVzIHVzaW5nIHRoZSBjb25maWd1cmVkIGF1dGhlbnRpY2F0b3IuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfEFycmF5LjxTdHJpbmc+fSBbb3B0LmFwcF0gLSBUaGUgd2ViIGJyb3dzZXIgYXBwIHRvIG9wZW4gdGhlIGB0YXJnZXRgIHdpdGgsIG9yXG5cdCAqIGFuIGFycmF5IHdpdGggdGhlIGFwcCBhbmQgYXBwIGFyZ3VtZW50cy5cblx0ICogQHBhcmFtIHtBdXRoZW50aWNhdG9yfSBbb3B0cy5hdXRoZW50aWNhdG9yXSAtIEFuIGF1dGhlbnRpY2F0b3IgaW5zdGFuY2UgdG8gdXNlLiBJZiBub3Rcblx0ICogc3BlY2lmaWVkLCBvbmUgd2lsbCBiZSBhdXRvLXNlbGVjdGVkIGJhc2VkIG9uIHRoZSBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuYmFzZVVybF0gLSBUaGUgYmFzZSBVUkwgdG8gdXNlIGZvciBhbGwgb3V0Z29pbmcgcmVxdWVzdHMuXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5jbGllbnRJZF0gLSBUaGUgY2xpZW50IGlkIHRvIHNwZWNpZnkgd2hlbiBhdXRoZW50aWNhdGluZy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmNvZGVdIC0gVGhlIGF1dGhlbnRpY2F0aW9uIGNvZGUgZnJvbSBhIHN1Y2Nlc3NmdWwgaW50ZXJhY3RpdmUgbG9naW4uXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBbb3B0cy5lbnY9cHJvZF0gLSBUaGUgZW52aXJvbm1lbnQgbmFtZS4gTXVzdCBiZSBgZGV2YCwgYHByZXByb2RgLCBvciBgcHJvZGAuXG5cdCAqIFRoZSBlbnZpcm9ubWVudCBpcyBhIHNob3J0aGFuZCB3YXkgb2Ygc3BlY2lmeWluZyBhIEF4d2F5IGRlZmF1bHQgYmFzZSBVUkwuXG5cdCAqIEBwYXJhbSB7Qm9vbGVhbn0gW29wdHMubWFudWFsPWZhbHNlXSAtIFdoZW4gYHRydWVgLCBpdCB3aWxsIHJldHVybiB0aGUgYXV0aCBVUkwgaW5zdGVhZCBvZlxuXHQgKiBsYXVuY2hpbmcgdGhlIGF1dGggVVJMIGluIHRoZSBkZWZhdWx0IGJyb3dzZXIuXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IFtvcHRzLm9uT3BlbkJyb3dzZXJdIC0gQSBjYWxsYmFjayB3aGVuIHRoZSB3ZWIgYnJvd3NlciBpcyBhYm91dCB0byBiZVxuXHQgKiBsYXVuY2hlZC5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLnJlYWxtXSAtIFRoZSBuYW1lIG9mIHRoZSByZWFsbSB0byBhdXRoZW50aWNhdGUgd2l0aC5cblx0ICogQHBhcmFtIHtOdW1iZXJ9IFtvcHRzLnRpbWVvdXRdIC0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCBiZWZvcmUgdGltaW5nIG91dC5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gUmVzb2x2ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGFjY2VzcyB0b2tlbiwgYWNjb3VudCBuYW1lLCBhbmRcblx0ICogdXNlciBpbmZvLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9naW4ob3B0cyA9IHt9KSB7XG5cdFx0b3B0cyA9IHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblx0XHRjb25zdCBhdXRoZW50aWNhdG9yID0gdGhpcy5jcmVhdGVBdXRoZW50aWNhdG9yKG9wdHMpO1xuXHRcdHJldHVybiBhd2FpdCBhdXRoZW50aWNhdG9yLmxvZ2luKG9wdHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldm9rZXMgYWxsIG9yIHNwZWNpZmljIGF1dGhlbnRpY2F0ZWQgYWNjb3VudHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIC0gUmVxdWlyZWQgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtBcnJheS48U3RyaW5nPn0gb3B0cy5hY2NvdW50cyAtIEEgbGlzdCBvZiBhY2NvdW50cyBuYW1lcy5cblx0ICogQHBhcmFtIHtCb29sZWFufSBvcHRzLmFsbCAtIFdoZW4gYHRydWVgLCByZXZva2VzIGFsbCBhY2NvdW50cy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHVzZWQgdG8gZmlsdGVyIGFjY291bnRzLlxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZTxBcnJheT59IFJlc29sdmVzIGEgbGlzdCBvZiByZXZva2VkIGNyZWRlbnRpYWxzLlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgbG9nb3V0KHsgYWNjb3VudHMsIGFsbCwgYmFzZVVybCB9ID0ge30pIHtcblx0XHRpZiAoIXRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0bG9nKCdObyB0b2tlbiBzdG9yZSwgcmV0dXJuaW5nIGVtcHR5IGFycmF5Jyk7XG5cdFx0XHRyZXR1cm4gW107XG5cdFx0fVxuXG5cdFx0aWYgKCFhbGwpIHtcblx0XHRcdGlmICghYWNjb3VudHMpIHtcblx0XHRcdFx0dGhyb3cgRS5JTlZBTElEX0FSR1VNRU5UKCdFeHBlY3RlZCBhY2NvdW50cyB0byBiZSBhIGxpc3Qgb2YgYWNjb3VudHMnKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YgYWNjb3VudHMgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdGFjY291bnRzID0gWyBhY2NvdW50cyBdO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFBcnJheS5pc0FycmF5KGFjY291bnRzKSkge1xuXHRcdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIGFjY291bnRzIHRvIGJlIGEgbGlzdCBvZiBhY2NvdW50cycpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFhY2NvdW50cy5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuIFtdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCByZXZva2VkO1xuXHRcdGlmIChhbGwpIHtcblx0XHRcdHJldm9rZWQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuY2xlYXIoYmFzZVVybCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldm9rZWQgPSBhd2FpdCB0aGlzLnRva2VuU3RvcmUuZGVsZXRlKGFjY291bnRzLCBiYXNlVXJsKTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheShyZXZva2VkKSkge1xuXHRcdFx0Zm9yIChjb25zdCBlbnRyeSBvZiByZXZva2VkKSB7XG5cdFx0XHRcdC8vIGRvbid0IGxvZ291dCBvZiBwbGF0Zm9ybSBhY2NvdW50cyBoZXJlLCBpdCdzIGRvbmUgaW4gdGhlIEFtcGxpZnkgU0RLIGJ5IG9wZW5pbmcgdGhlIGJyb3dzZXJcblx0XHRcdFx0aWYgKCFlbnRyeS5pc1BsYXRmb3JtKSB7XG5cdFx0XHRcdFx0Y29uc3QgdXJsID0gYCR7Z2V0RW5kcG9pbnRzKGVudHJ5LmF1dGgpLmxvZ291dH0/aWRfdG9rZW5faGludD0ke2VudHJ5LmF1dGgudG9rZW5zLmlkX3Rva2VufWA7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGNvbnN0IHsgc3RhdHVzQ29kZSB9ID0gYXdhaXQgdGhpcy5nb3QodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2pzb24nLCByZXRyeTogMCB9KTtcblx0XHRcdFx0XHRcdGxvZyhgU3VjY2Vzc2Z1bGx5IGxvZ2dlZCBvdXQgJHtoaWdobGlnaHQoZW50cnkubmFtZSl9ICR7bWFnZW50YShzdGF0dXNDb2RlKX0gJHtub3RlKGAoJHtlbnRyeS5hdXRoLmJhc2VVcmx9LCAke2VudHJ5LmF1dGgucmVhbG19KWApfWApO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdFx0bG9nKGBGYWlsZWQgdG8gbG9nIG91dCAke2hpZ2hsaWdodChlbnRyeS5uYW1lKX0gJHthbGVydChlcnIuc3RhdHVzKX0gJHtub3RlKGAoJHtlbnRyeS5hdXRoLmJhc2VVcmx9LCAke2VudHJ5LmF1dGgucmVhbG19KWApfWApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXZva2VkO1xuXHR9XG5cblx0LyoqXG5cdCAqIERpc2NvdmVycyBhdmFpbGFibGUgZW5kcG9pbnRzIGJhc2VkIG9uIHRoZSBhdXRoZW50aWNhdGlvbiBzZXJ2ZXIncyBPcGVuSUQgY29uZmlndXJhdGlvbi5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IFtvcHRzXSAtIFZhcmlvdXMgb3B0aW9ucy5cblx0ICogQHBhcmFtIHtTdHJpbmd9IFtvcHRzLmJhc2VVcmxdIC0gVGhlIGJhc2UgVVJMIHRvIHVzZSBmb3IgYWxsIG91dGdvaW5nIHJlcXVlc3RzLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMuZW52PXByb2RdIC0gVGhlIGVudmlyb25tZW50IG5hbWUuIE11c3QgYmUgYGRldmAsIGBwcmVwcm9kYCwgb3IgYHByb2RgLlxuXHQgKiBUaGUgZW52aXJvbm1lbnQgaXMgYSBzaG9ydGhhbmQgd2F5IG9mIHNwZWNpZnlpbmcgYSBBeHdheSBkZWZhdWx0IGJhc2UgVVJMLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMucmVhbG1dIC0gVGhlIG5hbWUgb2YgdGhlIHJlYWxtIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gW29wdHMudXJsXSAtIEFuIG9wdGlvbmFsIFVSTCB0byBkaXNjb3ZlciB0aGUgYXZhaWxhYmxlIGVuZHBvaW50cy5cblx0ICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn1cblx0ICogQGFjY2VzcyBwdWJsaWNcblx0ICovXG5cdGFzeW5jIHNlcnZlckluZm8ob3B0cyA9IHt9KSB7XG5cdFx0b3B0cyA9IHRoaXMuYXBwbHlEZWZhdWx0cyhvcHRzKTtcblxuXHRcdGxldCB7IHVybCB9ID0gb3B0cztcblxuXHRcdGlmICghdXJsKSB7XG5cdFx0XHR1cmwgPSBnZXRFbmRwb2ludHMob3B0cykud2VsbEtub3duO1xuXHRcdH1cblxuXHRcdGlmICghdXJsIHx8IHR5cGVvZiB1cmwgIT09ICdzdHJpbmcnKSB7XG5cdFx0XHR0aHJvdyBFLklOVkFMSURfQVJHVU1FTlQoJ0V4cGVjdGVkIFVSTCB0byBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcblx0XHR9XG5cblx0XHR0cnkge1xuXHRcdFx0bG9nKGBGZXRjaGluZyBzZXJ2ZXIgaW5mbzogJHtoaWdobGlnaHQodXJsKX0uLi5gKTtcblx0XHRcdHJldHVybiAoYXdhaXQgdGhpcy5nb3QodXJsLCB7IHJlc3BvbnNlVHlwZTogJ2pzb24nLCByZXRyeTogMCB9KSkuYm9keTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGlmIChlcnIubmFtZSAhPT0gJ1BhcnNlRXJyb3InKSB7XG5cdFx0XHRcdGVyci5tZXNzYWdlID0gYEZhaWxlZCB0byBnZXQgc2VydmVyIGluZm8gKHN0YXR1cyAke2Vyci5yZXNwb25zZS5zdGF0dXNDb2RlfSlgO1xuXHRcdFx0fVxuXHRcdFx0dGhyb3cgZXJyO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGUgdGhlIHN0b3JlZCBhY2NvdW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gYWNjb3VudCAtIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBhY2NvdW50IGluZm8uXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0YXN5bmMgdXBkYXRlQWNjb3VudChhY2NvdW50KSB7XG5cdFx0aWYgKHRoaXMudG9rZW5TdG9yZSkge1xuXHRcdFx0YXdhaXQgdGhpcy50b2tlblN0b3JlLnNldChhY2NvdW50KTtcblx0XHR9XG5cdH1cbn1cbiJdLCJmaWxlIjoiYXV0aC5qcyJ9

@@ -47,3 +47,4 @@ "use strict";

* @param {Object} [opts] - Various options.
* @param {Number} [opts.timeout] - The number of milliseconds to wait before timing out.
* @param {Number} [opts.timeout=120000] - The number of milliseconds to wait before timing
* out.
* @access public

@@ -289,2 +290,2 @@ */

exports.default = Server;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcnZlci5qcyJdLCJuYW1lcyI6WyJlcnJvciIsImxvZyIsImdyZWVuIiwiaGlnaGxpZ2h0IiwicmVkIiwic25vb3Bsb2dnIiwic3R5bGVzIiwiZGVmYXVsdFBvcnQiLCJkZWZhdWx0VGltZW91dCIsIlNlcnZlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsIlR5cGVFcnJvciIsInBlbmRpbmciLCJNYXAiLCJwb3J0Iiwic2VydmVyIiwic2VydmVyVVJMIiwidGltZW91dCIsImNyZWF0ZUNhbGxiYWNrIiwiaGFuZGxlciIsInJlcXVlc3RJZCIsImNyeXB0byIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImNyZWF0ZVNlcnZlciIsImNhbmNlbCIsInJlcXVlc3QiLCJnZXQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lciIsImRlbGV0ZSIsInN0b3AiLCJzdGFydCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0Iiwic2V0VGltZW91dCIsIkUiLCJBVVRIX1RJTUVPVVQiLCJ1cmwiLCJob3N0IiwiY29ubmVjdGlvbnMiLCJjYWxsYmFja1JlZ0V4cCIsImh0dHAiLCJyZXEiLCJyZXMiLCJVUkwiLCJpZCIsInBhdGhuYW1lIiwibSIsIm1hdGNoIiwiRXJyb3IiLCJoZWFkIiwib3JpZ1dyaXRlSGVhZCIsIndyaXRlSGVhZCIsInN0YXR1cyIsIm1lc3NhZ2UiLCJoZWFkZXJzIiwiU3RyaW5nIiwiaCIsIkxvY2F0aW9uIiwiY2FsbCIsImVuZCIsIm9yaWdFbmQiLCJkYXRhIiwiZW5jb2RpbmciLCJjYWxsYmFjayIsInJlc3VsdCIsImVyciIsInRlbXBsYXRlIiwicGF0aCIsIl9fZGlybmFtZSIsImVqcyIsInJlbmRlciIsImZzIiwicmVhZEZpbGUiLCJ0aXRsZSIsImRlc3Ryb3kiLCJjb25ucyIsIk9iamVjdCIsInZhbHVlcyIsImxlbmd0aCIsImNvbm4iLCJjbG9zZSIsIm9uIiwia2V5IiwicmVtb3RlQWRkcmVzcyIsInJlbW90ZVBv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R0FBYyxJQUFkO0FBQ0EsYUFBS0MsU0FBTCxHQUFpQixJQUFqQjtBQUNBaEIsUUFBQUEsR0FBRyxDQUFDLGlDQUFELENBQUg7QUFDQSxjQUFNZSxNQUFNLENBQUNnRSxPQUFQLEVBQU47QUFDQS9FLFFBQUFBLEdBQUcsQ0FBQywyQkFBRCxDQUFIO0FBQ0EsT0FUb0MsQ0FXckM7OztBQUNBLFlBQU1zRSxHQUFHLEdBQUcsSUFBSWpCLEtBQUosQ0FBVSxnQkFBVixDQUFaOztBQUNBLFdBQUssTUFBTSxDQUFFSixFQUFGLEVBQU07QUFBRWIsUUFBQUEsTUFBRjtBQUFVTixRQUFBQTtBQUFWLE9BQU4sQ0FBWCxJQUF3QyxLQUFLbEIsT0FBTCxDQUFhaUYsT0FBYixFQUF4QyxFQUFnRTtBQUMvRDdGLFFBQUFBLEdBQUcsQ0FBRSxxQkFBb0JFLFNBQVMsQ0FBQytDLEVBQUQsQ0FBSyxFQUFwQyxDQUFIO0FBQ0FwQixRQUFBQSxZQUFZLENBQUNDLEtBQUQsQ0FBWjtBQUNBTSxRQUFBQSxNQUFNLENBQUNrQyxHQUFELENBQU47QUFDQSxhQUFLMUQsT0FBTCxDQUFhbUIsTUFBYixDQUFvQmtCLEVBQXBCO0FBQ0E7QUFDRDtBQUNEOztBQXZOMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgRSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgZWpzIGZyb20gJ2Vqcyc7XG5pbXBvcnQgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IGdldFBvcnQgZnJvbSAnZ2V0LXBvcnQnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBzbm9vcGxvZ2cgZnJvbSAnc25vb3Bsb2dnJztcblxuY29uc3QgeyBlcnJvciwgbG9nIH0gPSBzbm9vcGxvZ2coJ2FtcGxpZnktYXV0aDpzZXJ2ZXInKTtcbmNvbnN0IHsgZ3JlZW4sIGhpZ2hsaWdodCwgcmVkIH0gPSBzbm9vcGxvZ2cuc3R5bGVzO1xuXG5jb25zdCBkZWZhdWx0UG9ydCA9IDMwMDA7XG5jb25zdCBkZWZhdWx0VGltZW91dCA9IDEyMDAwMDsgLy8gMiBtaW51dGVzXG5cbi8qKlxuICogQW4gSFRUUCBzZXJ2ZXIgdG8gbGlzdGVuIGZvciByZWRpcmVjdCBjYWxsYmFja3MuXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlcnZlciB7XG5cdC8qKlxuXHQgKiBJbml0aWFsaXplcyB0aGUgc2VydmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdIC0gVmFyaW91cyBvcHRpb25zLlxuXHQgKiBAcGFyYW0ge051bWJlcn0gW29wdHMudGltZW91dF0gLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSB0aW1pbmcgb3V0LlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHR0aGlzLnBlbmRpbmcgPSBuZXcgTWFwKCk7XG5cdFx0dGhpcy5wb3J0ID0gbnVsbDtcblx0XHR0aGlzLnNlcnZlciA9IG51bGw7XG5cdFx0dGhpcy5zZXJ2ZXJVUkwgPSBudWxsO1xuXHRcdHRoaXMudGltZW91dCA9IG9wdHMudGltZW91dCB8fCBkZWZhdWx0VGltZW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgY2FsbGJhY2sgVVJMLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaGFuZGxlcl0gLSBBIHJlc3BvbnNlIGhhbmRsZXIgZm9yIGEgcmVxdWVzdCBjYWxsYmFjay5cblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVDYWxsYmFjayhoYW5kbGVyKSB7XG5cdFx0Y29uc3QgcmVxdWVzdElkID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnRvU3RyaW5nKCdoZXgnKS50b1VwcGVyQ2FzZSgpO1xuXG5cdFx0bG9nKGBDcmVhdGluZyBjYWxsYmFjazogJHtyZXF1ZXN0SWR9YCk7XG5cblx0XHRhd2FpdCB0aGlzLmNyZWF0ZVNlcnZlcigpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhbmNlbDogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCByZXF1ZXN0ID0gdGhpcy5wZW5kaW5nLmdldChyZXF1ZXN0SWQpO1xuXHRcdFx0XHRpZiAocmVxdWVzdCkge1xuXHRcdFx0XHRcdGxvZyhgQ2FuY2VsbGluZyByZXF1ZXN0ICR7aGlnaGxpZ2h0KHJlcXVlc3RJZCl9YCk7XG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHJlcXVlc3QudGltZXIpO1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZy5kZWxldGUocmVxdWVzdElkKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnN0b3AoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHN0YXJ0OiAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdHRoaXMucGVuZGluZy5zZXQocmVxdWVzdElkLCB7XG5cdFx0XHRcdFx0aGFuZGxlcixcblx0XHRcdFx0XHRyZXNvbHZlLFxuXHRcdFx0XHRcdHJlamVjdCxcblx0XHRcdFx0XHR0aW1lcjogc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXF1ZXN0ID0gdGhpcy5wZW5kaW5nLmdldChyZXF1ZXN0SWQpO1xuXHRcdFx0XHRcdFx0aWYgKHJlcXVlc3QpIHtcblx0XHRcdFx0XHRcdFx0bG9nKGBSZXF1ZXN0ICR7aGlnaGxpZ2h0KHJlcXVlc3RJZCl9IHRpbWVkIG91dGApO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBlbmRpbmcuZGVsZXRlKHJlcXVlc3RJZCk7XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3QucmVqZWN0KEUuQVVUSF9USU1FT1VUKCdBdXRoZW50aWNhdGlvbiBmYWlsZWQ6IFRpbWVkIG91dCcpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuc3RvcCgpO1xuXHRcdFx0XHRcdH0sIHRoaXMudGltZW91dClcblx0XHRcdFx0fSk7XG5cdFx0XHR9KSxcblx0XHRcdHVybDogYCR7dGhpcy5zZXJ2ZXJVUkx9L2NhbGxiYWNrLyR7cmVxdWVzdElkfWBcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIHNlcnZlciBpZiBpdCdzIG5vdCBhbHJlYWR5IGNyZWF0ZWQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGFzeW5jIGNyZWF0ZVNlcnZlcigpIHtcblx0XHRpZiAodGhpcy5zZXJ2ZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBob3N0ID0gJ2xvY2FsaG9zdCc7IC8vIHRoaXMgaGFzIHRvIGJlIGxvY2FsaG9zdCBiZWNhdXNlIHBsYXRmb3JtIHdoaXRlbGlzdHMgaXRcblx0XHRjb25zdCBwb3J0ID0gdGhpcy5wb3J0ID0gdGhpcy5wb3J0IHx8IGF3YWl0IGdldFBvcnQoeyBob3N0LCBwb3J0OiBkZWZhdWx0UG9ydCB9KTtcblx0XHRjb25zdCBjb25uZWN0aW9ucyA9IHt9O1xuXHRcdGNvbnN0IGNhbGxiYWNrUmVnRXhwID0gL15cXC9jYWxsYmFja1xcLyhbQS1aMC05XSspLztcblx0XHRjb25zdCBzZXJ2ZXJVUkwgPSBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWA7XG5cblx0XHR0aGlzLnNlcnZlclVSTCA9IHNlcnZlclVSTDtcblxuXHRcdGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybCwgc2VydmVyVVJMKTtcblx0XHRcdFx0bGV0IGlkO1xuXHRcdFx0XHRsZXQgcmVxdWVzdDtcblx0XHRcdFx0bG9nKGBJbmNvbWluZyByZXF1ZXN0OiAke2hpZ2hsaWdodCh1cmwucGF0aG5hbWUpfWApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgbSA9IHVybC5wYXRobmFtZS5tYXRjaChjYWxsYmFja1JlZ0V4cCk7XG5cdFx0XHRcdFx0aWYgKCFtKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0JhZCBSZXF1ZXN0Jyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWQgPSBtWzFdO1xuXHRcdFx0XHRcdHJlcXVlc3QgPSB0aGlzLnBlbmRpbmcuZ2V0KGlkKTtcblx0XHRcdFx0XHRpZiAoIXJlcXVlc3QpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSZXF1ZXN0IElEJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGV0IGhlYWQgPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvcmlnV3JpdGVIZWFkID0gcmVzLndyaXRlSGVhZDtcblx0XHRcdFx0XHRyZXMud3JpdGVIZWFkID0gZnVuY3Rpb24gKHN0YXR1cywgbWVzc2FnZSwgaGVhZGVycykge1xuXHRcdFx0XHRcdFx0aGVhZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRsb2coYCR7KHN0YXR1cyA+PSA0MDAgPyByZWQgOiBncmVlbikoU3RyaW5nKHN0YXR1cykpfSAke3VybC5wYXRobmFtZX0gKCR7aWR9KWApO1xuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cyA9PT0gMzAyKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGggPSBoZWFkZXJzIHx8ICh0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcgJiYgbWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRcdGxvZyhgUmVkaXJlY3RpbmcgY2xpZW50IHRvICR7aGlnaGxpZ2h0KGg/LkxvY2F0aW9uIHx8ICdub3doZXJlIScpfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIG9yaWdXcml0ZUhlYWQuY2FsbChyZXMsIHN0YXR1cywgbWVzc2FnZSwgaGVhZGVycyk7XG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdGxldCBlbmQgPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvcmlnRW5kID0gcmVzLmVuZDtcblx0XHRcdFx0XHRyZXMuZW5kID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0XHRcdFx0ZW5kID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBvcmlnRW5kLmNhbGwocmVzLCBkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spO1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRsZXQgcmVzdWx0O1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcmVxdWVzdC5oYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBhd2FpdCByZXF1ZXN0LmhhbmRsZXIocmVxLCByZXMsIHVybCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCFlbmQpIHtcblx0XHRcdFx0XHRcdGlmIChoZWFkKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGFzc3VtZSBubyBib2R5XG5cdFx0XHRcdFx0XHRcdHJlcy5lbmQoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlcy53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicgfSk7XG5cdFx0XHRcdFx0XHRcdHJlcy5lbmQoJ09LJyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHJlcXVlc3QudGltZXIpO1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZy5kZWxldGUoaWQpO1xuXHRcdFx0XHRcdHJlcXVlc3QucmVzb2x2ZSh7IHJlc3VsdCwgdXJsIH0pO1xuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRsb2coYCR7cmVkKGVyci5zdGF0dXMgfHwgJzQwMCcpfSAke3VybC5wYXRobmFtZX1gKTtcblx0XHRcdFx0XHRlcnJvcihlcnIpO1xuXG5cdFx0XHRcdFx0cmVzLndyaXRlSGVhZChlcnIuc3RhdHVzIHx8IDQwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG5cdFx0XHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vdGVtcGxhdGVzL2Vycm9yLmh0bWwuZWpzJyk7XG5cdFx0XHRcdFx0cmVzLmVuZChlanMucmVuZGVyKGF3YWl0IGZzLnJlYWRGaWxlKHRlbXBsYXRlLCAndXRmLTgnKSwge1xuXHRcdFx0XHRcdFx0dGl0bGU6ICdFcnJvcicsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiBlcnIubWVzc2FnZVxuXHRcdFx0XHRcdH0pKTtcblxuXHRcdFx0XHRcdGlmIChyZXF1ZXN0KSB7XG5cdFx0XHRcdFx0XHRjbGVhclRpbWVvdXQocmVxdWVzdC50aW1lcik7XG5cdFx0XHRcdFx0XHR0aGlzLnBlbmRpbmcuZGVsZXRlKGlkKTtcblx0XHRcdFx0XHRcdHJlcXVlc3QucmVqZWN0KGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5zZXJ2ZXIuZGVzdHJveSA9IGFzeW5jIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG5cdFx0XHRcdGNvbnN0IGNvbm5zID0gT2JqZWN0LnZhbHVlcyhjb25uZWN0aW9ucyk7XG5cdFx0XHRcdGxvZyhgRGVzdHJveWluZyAke2Nvbm5zLmxlbmd0aH0gY29ubmVjdGlvbiR7Y29ubnMubGVuZ3RoID09PSAxID8gJycgOiAncyd9YCk7XG5cdFx0XHRcdGZvciAoY29uc3QgY29ubiBvZiBjb25ucykge1xuXHRcdFx0XHRcdGNvbm4uZGVzdHJveSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxvZygnQ2xvc2luZyBIVFRQIHNlcnZlci4uLicpO1xuXHRcdFx0XHRhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRoaXMuY2xvc2UocmVzb2x2ZSkpO1xuXHRcdFx0XHRsb2coJ0hUVFAgc2VydmVyIGNsb3NlZCcpO1xuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy5zZXJ2ZXJcblx0XHRcdFx0Lm9uKCdjb25uZWN0aW9uJywgZnVuY3Rpb24gKGNvbm4pIHtcblx0XHRcdFx0XHRjb25zdCBrZXkgPSBgJHtjb25uLnJlbW90ZUFkZHJlc3N9OiR7Y29ubi5yZW1vdGVQb3J0fWA7XG5cdFx0XHRcdFx0Y29ubmVjdGlvbnNba2V5XSA9IGNvbm47XG5cdFx0XHRcdFx0Y29ubi5vbignY2xvc2UnLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRkZWxldGUgY29ubmVjdGlvbnNba2V5XTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0Lm9uKCdlcnJvcicsIHJlamVjdClcblx0XHRcdFx0Lm9uKCdsaXN0ZW5pbmcnLCAoKSA9PiB7XG5cdFx0XHRcdFx0bG9nKGBMb2NhbCBIVFRQIHNlcnZlciBzdGFydGVkOiAke2hpZ2hsaWdodChzZXJ2ZXJVUkwpfWApO1xuXHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0Lmxpc3Rlbihwb3J0LCBob3N0KTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdG9wcyB0aGUgY2FsbGJhY2sgc2VydmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtmb3JjZV0gLSBXaGVuIGB0cnVlYCwgc3RvcHMgdGhlIHNlcnZlciwgZHJvcHMgYWxsIGNvbm5lY3Rpb25zLCBhbmQgcmVqZWN0c1xuXHQgKiBhbGwgcGVuZGluZyBjYWxsYmFja3MuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAbWVtYmVyb2YgU2VydmVyXG5cdCAqL1xuXHRhc3luYyBzdG9wKGZvcmNlKSB7XG5cdFx0aWYgKGZvcmNlIHx8IHRoaXMucGVuZGluZy5zaXplID09PSAwKSB7XG5cdFx0XHRjb25zdCB7IHNlcnZlciB9ID0gdGhpcztcblx0XHRcdGlmIChzZXJ2ZXIpIHtcblx0XHRcdFx0dGhpcy5wb3J0ID0gbnVsbDtcblx0XHRcdFx0dGhpcy5zZXJ2ZXIgPSBudWxsO1xuXHRcdFx0XHR0aGlzLnNlcnZlclVSTCA9IG51bGw7XG5cdFx0XHRcdGxvZygnRGVzdHJveWluZyBsb2NhbCBIVFRQIHNlcnZlci4uLicpO1xuXHRcdFx0XHRhd2FpdCBzZXJ2ZXIuZGVzdHJveSgpO1xuXHRcdFx0XHRsb2coJ0xvY2FsIEhUVFAgc2VydmVyIHN0b3BwZWQnKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gd2UgbmVlZCB0byBub3RpZnkgYWxsIHBlbmRpbmcgbG9naW5zIHRoYXQgdGhlIHNlcnZlciB3YXMgc2h1dCBkb3duXG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ1NlcnZlciBzdG9wcGVkJyk7XG5cdFx0XHRmb3IgKGNvbnN0IFsgaWQsIHsgcmVqZWN0LCB0aW1lciB9IF0gb2YgdGhpcy5wZW5kaW5nLmVudHJpZXMoKSkge1xuXHRcdFx0XHRsb2coYFJlamVjdGluZyByZXF1ZXN0ICR7aGlnaGxpZ2h0KGlkKX1gKTtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVyKTtcblx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdHRoaXMucGVuZGluZy5kZWxldGUoaWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sImZpbGUiOiJzZXJ2ZXIuanMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcnZlci5qcyJdLCJuYW1lcyI6WyJlcnJvciIsImxvZyIsImdyZWVuIiwiaGlnaGxpZ2h0IiwicmVkIiwic25vb3Bsb2dnIiwic3R5bGVzIiwiZGVmYXVsdFBvcnQiLCJkZWZhdWx0VGltZW91dCIsIlNlcnZlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsIlR5cGVFcnJvciIsInBlbmRpbmciLCJNYXAiLCJwb3J0Iiwic2VydmVyIiwic2VydmVyVVJMIiwidGltZW91dCIsImNyZWF0ZUNhbGxiYWNrIiwiaGFuZGxlciIsInJlcXVlc3RJZCIsImNyeXB0byIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJ0b1VwcGVyQ2FzZSIsImNyZWF0ZVNlcnZlciIsImNhbmNlbCIsInJlcXVlc3QiLCJnZXQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lciIsImRlbGV0ZSIsInN0b3AiLCJzdGFydCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0Iiwic2V0VGltZW91dCIsIkUiLCJBVVRIX1RJTUVPVVQiLCJ1cmwiLCJob3N0IiwiY29ubmVjdGlvbnMiLCJjYWxsYmFja1JlZ0V4cCIsImh0dHAiLCJyZXEiLCJyZXMiLCJVUkwiLCJpZCIsInBhdGhuYW1lIiwibSIsIm1hdGNoIiwiRXJyb3IiLCJoZWFkIiwib3JpZ1dyaXRlSGVhZCIsIndyaXRlSGVhZCIsInN0YXR1cyIsIm1lc3NhZ2UiLCJoZWFkZXJzIiwiU3RyaW5nIiwiaCIsIkxvY2F0aW9uIiwiY2FsbCIsImVuZCIsIm9yaWdFbmQiLCJkYXRhIiwiZW5jb2RpbmciLCJjYWxsYmFjayIsInJlc3VsdCIsImVyciIsInRlbXBsYXRlIiwicGF0aCIsIl9fZGlybmFtZSIsImVqcyIsInJlbmRlciIsImZzIiwicmVhZEZpbGUiLCJ0aXRsZSIsImRlc3Ryb3kiLCJjb25ucyIsIk9iamVjdCIsInZhbHVlcyIsImxlbmd0aCIsImNvbm4iLCJjbG9zZSIsIm9uIiwia2V5IiwicmVtb3RlQWRkcmVzcyIsInJlbW90ZVBv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TUFBTCxHQUFjLElBQWQ7QUFDQSxhQUFLQyxTQUFMLEdBQWlCLElBQWpCO0FBQ0FoQixRQUFBQSxHQUFHLENBQUMsaUNBQUQsQ0FBSDtBQUNBLGNBQU1lLE1BQU0sQ0FBQ2dFLE9BQVAsRUFBTjtBQUNBL0UsUUFBQUEsR0FBRyxDQUFDLDJCQUFELENBQUg7QUFDQSxPQVRvQyxDQVdyQzs7O0FBQ0EsWUFBTXNFLEdBQUcsR0FBRyxJQUFJakIsS0FBSixDQUFVLGdCQUFWLENBQVo7O0FBQ0EsV0FBSyxNQUFNLENBQUVKLEVBQUYsRUFBTTtBQUFFYixRQUFBQSxNQUFGO0FBQVVOLFFBQUFBO0FBQVYsT0FBTixDQUFYLElBQXdDLEtBQUtsQixPQUFMLENBQWFpRixPQUFiLEVBQXhDLEVBQWdFO0FBQy9EN0YsUUFBQUEsR0FBRyxDQUFFLHFCQUFvQkUsU0FBUyxDQUFDK0MsRUFBRCxDQUFLLEVBQXBDLENBQUg7QUFDQXBCLFFBQUFBLFlBQVksQ0FBQ0MsS0FBRCxDQUFaO0FBQ0FNLFFBQUFBLE1BQU0sQ0FBQ2tDLEdBQUQsQ0FBTjtBQUNBLGFBQUsxRCxPQUFMLENBQWFtQixNQUFiLENBQW9Ca0IsRUFBcEI7QUFDQTtBQUNEO0FBQ0Q7O0FBeE4wQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCBFIGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCBlanMgZnJvbSAnZWpzJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgZ2V0UG9ydCBmcm9tICdnZXQtcG9ydCc7XG5pbXBvcnQgaHR0cCBmcm9tICdodHRwJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNub29wbG9nZyBmcm9tICdzbm9vcGxvZ2cnO1xuXG5jb25zdCB7IGVycm9yLCBsb2cgfSA9IHNub29wbG9nZygnYW1wbGlmeS1hdXRoOnNlcnZlcicpO1xuY29uc3QgeyBncmVlbiwgaGlnaGxpZ2h0LCByZWQgfSA9IHNub29wbG9nZy5zdHlsZXM7XG5cbmNvbnN0IGRlZmF1bHRQb3J0ID0gMzAwMDtcbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMTIwMDAwOyAvLyAyIG1pbnV0ZXNcblxuLyoqXG4gKiBBbiBIVFRQIHNlcnZlciB0byBsaXN0ZW4gZm9yIHJlZGlyZWN0IGNhbGxiYWNrcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VydmVyIHtcblx0LyoqXG5cdCAqIEluaXRpYWxpemVzIHRoZSBzZXJ2ZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0c10gLSBWYXJpb3VzIG9wdGlvbnMuXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBbb3B0cy50aW1lb3V0PTEyMDAwMF0gLSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSB0aW1pbmdcblx0ICogb3V0LlxuXHQgKiBAYWNjZXNzIHB1YmxpY1xuXHQgKi9cblx0Y29uc3RydWN0b3Iob3B0cyA9IHt9KSB7XG5cdFx0aWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgb3B0aW9ucyB0byBiZSBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHR0aGlzLnBlbmRpbmcgPSBuZXcgTWFwKCk7XG5cdFx0dGhpcy5wb3J0ID0gbnVsbDtcblx0XHR0aGlzLnNlcnZlciA9IG51bGw7XG5cdFx0dGhpcy5zZXJ2ZXJVUkwgPSBudWxsO1xuXHRcdHRoaXMudGltZW91dCA9IG9wdHMudGltZW91dCB8fCBkZWZhdWx0VGltZW91dDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgY2FsbGJhY2sgVVJMLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaGFuZGxlcl0gLSBBIHJlc3BvbnNlIGhhbmRsZXIgZm9yIGEgcmVxdWVzdCBjYWxsYmFjay5cblx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdCAqIEBhY2Nlc3MgcHVibGljXG5cdCAqL1xuXHRhc3luYyBjcmVhdGVDYWxsYmFjayhoYW5kbGVyKSB7XG5cdFx0Y29uc3QgcmVxdWVzdElkID0gY3J5cHRvLnJhbmRvbUJ5dGVzKDQpLnRvU3RyaW5nKCdoZXgnKS50b1VwcGVyQ2FzZSgpO1xuXG5cdFx0bG9nKGBDcmVhdGluZyBjYWxsYmFjazogJHtyZXF1ZXN0SWR9YCk7XG5cblx0XHRhd2FpdCB0aGlzLmNyZWF0ZVNlcnZlcigpO1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNhbmNlbDogYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRjb25zdCByZXF1ZXN0ID0gdGhpcy5wZW5kaW5nLmdldChyZXF1ZXN0SWQpO1xuXHRcdFx0XHRpZiAocmVxdWVzdCkge1xuXHRcdFx0XHRcdGxvZyhgQ2FuY2VsbGluZyByZXF1ZXN0ICR7aGlnaGxpZ2h0KHJlcXVlc3RJZCl9YCk7XG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHJlcXVlc3QudGltZXIpO1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZy5kZWxldGUocmVxdWVzdElkKTtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnN0b3AoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHN0YXJ0OiAoKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdHRoaXMucGVuZGluZy5zZXQocmVxdWVzdElkLCB7XG5cdFx0XHRcdFx0aGFuZGxlcixcblx0XHRcdFx0XHRyZXNvbHZlLFxuXHRcdFx0XHRcdHJlamVjdCxcblx0XHRcdFx0XHR0aW1lcjogc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCByZXF1ZXN0ID0gdGhpcy5wZW5kaW5nLmdldChyZXF1ZXN0SWQpO1xuXHRcdFx0XHRcdFx0aWYgKHJlcXVlc3QpIHtcblx0XHRcdFx0XHRcdFx0bG9nKGBSZXF1ZXN0ICR7aGlnaGxpZ2h0KHJlcXVlc3RJZCl9IHRpbWVkIG91dGApO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnBlbmRpbmcuZGVsZXRlKHJlcXVlc3RJZCk7XG5cdFx0XHRcdFx0XHRcdHJlcXVlc3QucmVqZWN0KEUuQVVUSF9USU1FT1VUKCdBdXRoZW50aWNhdGlvbiBmYWlsZWQ6IFRpbWVkIG91dCcpKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuc3RvcCgpO1xuXHRcdFx0XHRcdH0sIHRoaXMudGltZW91dClcblx0XHRcdFx0fSk7XG5cdFx0XHR9KSxcblx0XHRcdHVybDogYCR7dGhpcy5zZXJ2ZXJVUkx9L2NhbGxiYWNrLyR7cmVxdWVzdElkfWBcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgdGhlIHNlcnZlciBpZiBpdCdzIG5vdCBhbHJlYWR5IGNyZWF0ZWQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAYWNjZXNzIHByaXZhdGVcblx0ICovXG5cdGFzeW5jIGNyZWF0ZVNlcnZlcigpIHtcblx0XHRpZiAodGhpcy5zZXJ2ZXIpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBob3N0ID0gJ2xvY2FsaG9zdCc7IC8vIHRoaXMgaGFzIHRvIGJlIGxvY2FsaG9zdCBiZWNhdXNlIHBsYXRmb3JtIHdoaXRlbGlzdHMgaXRcblx0XHRjb25zdCBwb3J0ID0gdGhpcy5wb3J0ID0gdGhpcy5wb3J0IHx8IGF3YWl0IGdldFBvcnQoeyBob3N0LCBwb3J0OiBkZWZhdWx0UG9ydCB9KTtcblx0XHRjb25zdCBjb25uZWN0aW9ucyA9IHt9O1xuXHRcdGNvbnN0IGNhbGxiYWNrUmVnRXhwID0gL15cXC9jYWxsYmFja1xcLyhbQS1aMC05XSspLztcblx0XHRjb25zdCBzZXJ2ZXJVUkwgPSBgaHR0cDovLyR7aG9zdH06JHtwb3J0fWA7XG5cblx0XHR0aGlzLnNlcnZlclVSTCA9IHNlcnZlclVSTDtcblxuXHRcdGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybCwgc2VydmVyVVJMKTtcblx0XHRcdFx0bGV0IGlkO1xuXHRcdFx0XHRsZXQgcmVxdWVzdDtcblx0XHRcdFx0bG9nKGBJbmNvbWluZyByZXF1ZXN0OiAke2hpZ2hsaWdodCh1cmwucGF0aG5hbWUpfWApO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgbSA9IHVybC5wYXRobmFtZS5tYXRjaChjYWxsYmFja1JlZ0V4cCk7XG5cdFx0XHRcdFx0aWYgKCFtKSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ0JhZCBSZXF1ZXN0Jyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWQgPSBtWzFdO1xuXHRcdFx0XHRcdHJlcXVlc3QgPSB0aGlzLnBlbmRpbmcuZ2V0KGlkKTtcblx0XHRcdFx0XHRpZiAoIXJlcXVlc3QpIHtcblx0XHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCBSZXF1ZXN0IElEJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGV0IGhlYWQgPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvcmlnV3JpdGVIZWFkID0gcmVzLndyaXRlSGVhZDtcblx0XHRcdFx0XHRyZXMud3JpdGVIZWFkID0gZnVuY3Rpb24gKHN0YXR1cywgbWVzc2FnZSwgaGVhZGVycykge1xuXHRcdFx0XHRcdFx0aGVhZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRsb2coYCR7KHN0YXR1cyA+PSA0MDAgPyByZWQgOiBncmVlbikoU3RyaW5nKHN0YXR1cykpfSAke3VybC5wYXRobmFtZX0gKCR7aWR9KWApO1xuXHRcdFx0XHRcdFx0aWYgKHN0YXR1cyA9PT0gMzAyKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGggPSBoZWFkZXJzIHx8ICh0eXBlb2YgbWVzc2FnZSA9PT0gJ29iamVjdCcgJiYgbWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRcdGxvZyhgUmVkaXJlY3RpbmcgY2xpZW50IHRvICR7aGlnaGxpZ2h0KGg/LkxvY2F0aW9uIHx8ICdub3doZXJlIScpfWApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmV0dXJuIG9yaWdXcml0ZUhlYWQuY2FsbChyZXMsIHN0YXR1cywgbWVzc2FnZSwgaGVhZGVycyk7XG5cdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdGxldCBlbmQgPSBmYWxzZTtcblx0XHRcdFx0XHRjb25zdCBvcmlnRW5kID0gcmVzLmVuZDtcblx0XHRcdFx0XHRyZXMuZW5kID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0XHRcdFx0ZW5kID0gdHJ1ZTtcblx0XHRcdFx0XHRcdHJldHVybiBvcmlnRW5kLmNhbGwocmVzLCBkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spO1xuXHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRsZXQgcmVzdWx0O1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgcmVxdWVzdC5oYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBhd2FpdCByZXF1ZXN0LmhhbmRsZXIocmVxLCByZXMsIHVybCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCFlbmQpIHtcblx0XHRcdFx0XHRcdGlmIChoZWFkKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGFzc3VtZSBubyBib2R5XG5cdFx0XHRcdFx0XHRcdHJlcy5lbmQoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlcy53cml0ZUhlYWQoMjAwLCB7ICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbicgfSk7XG5cdFx0XHRcdFx0XHRcdHJlcy5lbmQoJ09LJyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Y2xlYXJUaW1lb3V0KHJlcXVlc3QudGltZXIpO1xuXHRcdFx0XHRcdHRoaXMucGVuZGluZy5kZWxldGUoaWQpO1xuXHRcdFx0XHRcdHJlcXVlc3QucmVzb2x2ZSh7IHJlc3VsdCwgdXJsIH0pO1xuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRsb2coYCR7cmVkKGVyci5zdGF0dXMgfHwgJzQwMCcpfSAke3VybC5wYXRobmFtZX1gKTtcblx0XHRcdFx0XHRlcnJvcihlcnIpO1xuXG5cdFx0XHRcdFx0cmVzLndyaXRlSGVhZChlcnIuc3RhdHVzIHx8IDQwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbCcgfSk7XG5cdFx0XHRcdFx0Y29uc3QgdGVtcGxhdGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vdGVtcGxhdGVzL2Vycm9yLmh0bWwuZWpzJyk7XG5cdFx0XHRcdFx0cmVzLmVuZChlanMucmVuZGVyKGF3YWl0IGZzLnJlYWRGaWxlKHRlbXBsYXRlLCAndXRmLTgnKSwge1xuXHRcdFx0XHRcdFx0dGl0bGU6ICdFcnJvcicsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiBlcnIubWVzc2FnZVxuXHRcdFx0XHRcdH0pKTtcblxuXHRcdFx0XHRcdGlmIChyZXF1ZXN0KSB7XG5cdFx0XHRcdFx0XHRjbGVhclRpbWVvdXQocmVxdWVzdC50aW1lcik7XG5cdFx0XHRcdFx0XHR0aGlzLnBlbmRpbmcuZGVsZXRlKGlkKTtcblx0XHRcdFx0XHRcdHJlcXVlc3QucmVqZWN0KGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5zZXJ2ZXIuZGVzdHJveSA9IGFzeW5jIGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG5cdFx0XHRcdGNvbnN0IGNvbm5zID0gT2JqZWN0LnZhbHVlcyhjb25uZWN0aW9ucyk7XG5cdFx0XHRcdGxvZyhgRGVzdHJveWluZyAke2Nvbm5zLmxlbmd0aH0gY29ubmVjdGlvbiR7Y29ubnMubGVuZ3RoID09PSAxID8gJycgOiAncyd9YCk7XG5cdFx0XHRcdGZvciAoY29uc3QgY29ubiBvZiBjb25ucykge1xuXHRcdFx0XHRcdGNvbm4uZGVzdHJveSgpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGxvZygnQ2xvc2luZyBIVFRQIHNlcnZlci4uLicpO1xuXHRcdFx0XHRhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHRoaXMuY2xvc2UocmVzb2x2ZSkpO1xuXHRcdFx0XHRsb2coJ0hUVFAgc2VydmVyIGNsb3NlZCcpO1xuXHRcdFx0fTtcblxuXHRcdFx0dGhpcy5zZXJ2ZXJcblx0XHRcdFx0Lm9uKCdjb25uZWN0aW9uJywgZnVuY3Rpb24gKGNvbm4pIHtcblx0XHRcdFx0XHRjb25zdCBrZXkgPSBgJHtjb25uLnJlbW90ZUFkZHJlc3N9OiR7Y29ubi5yZW1vdGVQb3J0fWA7XG5cdFx0XHRcdFx0Y29ubmVjdGlvbnNba2V5XSA9IGNvbm47XG5cdFx0XHRcdFx0Y29ubi5vbignY2xvc2UnLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRkZWxldGUgY29ubmVjdGlvbnNba2V5XTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0Lm9uKCdlcnJvcicsIHJlamVjdClcblx0XHRcdFx0Lm9uKCdsaXN0ZW5pbmcnLCAoKSA9PiB7XG5cdFx0XHRcdFx0bG9nKGBMb2NhbCBIVFRQIHNlcnZlciBzdGFydGVkOiAke2hpZ2hsaWdodChzZXJ2ZXJVUkwpfWApO1xuXHRcdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdFx0fSlcblx0XHRcdFx0Lmxpc3Rlbihwb3J0LCBob3N0KTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdG9wcyB0aGUgY2FsbGJhY2sgc2VydmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Jvb2xlYW59IFtmb3JjZV0gLSBXaGVuIGB0cnVlYCwgc3RvcHMgdGhlIHNlcnZlciwgZHJvcHMgYWxsIGNvbm5lY3Rpb25zLCBhbmQgcmVqZWN0c1xuXHQgKiBhbGwgcGVuZGluZyBjYWxsYmFja3MuXG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHQgKiBAbWVtYmVyb2YgU2VydmVyXG5cdCAqL1xuXHRhc3luYyBzdG9wKGZvcmNlKSB7XG5cdFx0aWYgKGZvcmNlIHx8IHRoaXMucGVuZGluZy5zaXplID09PSAwKSB7XG5cdFx0XHRjb25zdCB7IHNlcnZlciB9ID0gdGhpcztcblx0XHRcdGlmIChzZXJ2ZXIpIHtcblx0XHRcdFx0dGhpcy5wb3J0ID0gbnVsbDtcblx0XHRcdFx0dGhpcy5zZXJ2ZXIgPSBudWxsO1xuXHRcdFx0XHR0aGlzLnNlcnZlclVSTCA9IG51bGw7XG5cdFx0XHRcdGxvZygnRGVzdHJveWluZyBsb2NhbCBIVFRQIHNlcnZlci4uLicpO1xuXHRcdFx0XHRhd2FpdCBzZXJ2ZXIuZGVzdHJveSgpO1xuXHRcdFx0XHRsb2coJ0xvY2FsIEhUVFAgc2VydmVyIHN0b3BwZWQnKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gd2UgbmVlZCB0byBub3RpZnkgYWxsIHBlbmRpbmcgbG9naW5zIHRoYXQgdGhlIHNlcnZlciB3YXMgc2h1dCBkb3duXG5cdFx0XHRjb25zdCBlcnIgPSBuZXcgRXJyb3IoJ1NlcnZlciBzdG9wcGVkJyk7XG5cdFx0XHRmb3IgKGNvbnN0IFsgaWQsIHsgcmVqZWN0LCB0aW1lciB9IF0gb2YgdGhpcy5wZW5kaW5nLmVudHJpZXMoKSkge1xuXHRcdFx0XHRsb2coYFJlamVjdGluZyByZXF1ZXN0ICR7aGlnaGxpZ2h0KGlkKX1gKTtcblx0XHRcdFx0Y2xlYXJUaW1lb3V0KHRpbWVyKTtcblx0XHRcdFx0cmVqZWN0KGVycik7XG5cdFx0XHRcdHRoaXMucGVuZGluZy5kZWxldGUoaWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIl0sImZpbGUiOiJzZXJ2ZXIuanMifQ==
{
"name": "@axway/amplify-sdk",
"version": "2.1.4",
"version": "2.1.5",
"description": "Axway Amplify SDK for Node.js",

@@ -23,3 +23,3 @@ "author": "Axway, Inc. <npmjs@appcelerator.com>",

"dependencies": {
"@axway/amplify-request": "^2.1.3",
"@axway/amplify-request": "^2.1.4",
"appcd-fs": "^2.0.7",

@@ -41,3 +41,3 @@ "ejs": "^3.1.6",

"@koa/router": "^10.0.0",
"appcd-gulp": "^3.1.6",
"appcd-gulp": "^3.2.0",
"koa": "^2.13.1",

@@ -54,3 +54,4 @@ "koa-bodyparser": "^4.3.0"

"access": "public"
}
},
"gitHead": "19a70c9df8a9c9fcd6d742af0b2910b865f18f1a"
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc