parse-server 6.3.0 → 6.4.0-alpha.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.
- package/lib/Adapters/Auth/AuthAdapter.js +4 -2
- package/lib/Adapters/Auth/index.js +7 -6
- package/lib/Adapters/Auth/mfa.js +249 -0
- package/lib/Adapters/Cache/RedisCacheAdapter.js +9 -1
- package/lib/Auth.js +13 -5
- package/lib/Config.js +3 -1
- package/lib/Controllers/DatabaseController.js +1 -5
- package/lib/Options/Definitions.js +2 -3
- package/lib/Options/docs.js +2 -2
- package/lib/Options/index.js +1 -1
- package/lib/RestQuery.js +2 -6
- package/lib/RestWrite.js +5 -2
- package/lib/Routers/FilesRouter.js +3 -2
- package/lib/Routers/UsersRouter.js +4 -4
- package/lib/cli/utils/runner.js +8 -6
- package/lib/index.js +1 -1
- package/lib/triggers.js +2 -2
- package/package.json +4 -3
|
@@ -27,7 +27,9 @@ class AuthAdapter {
|
|
|
27
27
|
* Usage policy
|
|
28
28
|
* @type {AuthPolicy}
|
|
29
29
|
*/
|
|
30
|
-
this.policy
|
|
30
|
+
if (!this.policy) {
|
|
31
|
+
this.policy = 'default';
|
|
32
|
+
}
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* @param appIds The specified app IDs in the configuration
|
|
@@ -121,4 +123,4 @@ class AuthAdapter {
|
|
|
121
123
|
exports.AuthAdapter = AuthAdapter;
|
|
122
124
|
var _default = AuthAdapter;
|
|
123
125
|
exports.default = _default;
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
126
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBdXRoQWRhcHRlciIsImNvbnN0cnVjdG9yIiwicG9saWN5IiwidmFsaWRhdGVBcHBJZCIsImFwcElkcyIsImF1dGhEYXRhIiwib3B0aW9ucyIsInJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInZhbGlkYXRlQXV0aERhdGEiLCJ2YWxpZGF0ZVNldFVwIiwicmVxIiwidmFsaWRhdGVMb2dpbiIsInZhbGlkYXRlVXBkYXRlIiwiY2hhbGxlbmdlIiwiY2hhbGxlbmdlRGF0YSIsImFmdGVyRmluZCIsInZhbGlkYXRlT3B0aW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL0F1dGhBZGFwdGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qZXNsaW50IG5vLXVudXNlZC12YXJzOiBcIm9mZlwiKi9cblxuLyoqXG4gKiBAaW50ZXJmYWNlIFBhcnNlQXV0aFJlc3BvbnNlXG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IFtkb05vdFNhdmVdIElmIHRydWUsIFBhcnNlIFNlcnZlciB3aWxsIG5vdCBzYXZlIHByb3ZpZGVkIGF1dGhEYXRhLlxuICogQHByb3BlcnR5IHtPYmplY3R9IFtyZXNwb25zZV0gSWYgc2V0LCBQYXJzZSBTZXJ2ZXIgd2lsbCBzZW5kIHRoZSBwcm92aWRlZCByZXNwb25zZSB0byB0aGUgY2xpZW50IHVuZGVyIGF1dGhEYXRhUmVzcG9uc2VcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBbc2F2ZV0gSWYgc2V0LCBQYXJzZSBTZXJ2ZXIgd2lsbCBzYXZlIHRoZSBvYmplY3QgcHJvdmlkZWQgaW50byB0aGlzIGtleSwgaW5zdGVhZCBvZiBjbGllbnQgcHJvdmlkZWQgYXV0aERhdGFcbiAqL1xuXG4vKipcbiAqIEF1dGhQb2xpY3lcbiAqIGRlZmF1bHQ6IGNhbiBiZSBjb21iaW5lZCB3aXRoIE9ORSBhZGRpdGlvbmFsIGF1dGggcHJvdmlkZXIgaWYgYWRkaXRpb25hbCBjb25maWd1cmVkIG9uIHVzZXJcbiAqIGFkZGl0aW9uYWw6IGNvdWxkIGJlIG9ubHkgdXNlZCB3aXRoIGEgZGVmYXVsdCBwb2xpY3kgYXV0aCBwcm92aWRlclxuICogc29sbzogV2lsbCBpZ25vcmUgQUxMIGFkZGl0aW9uYWwgcHJvdmlkZXJzIGlmIGFkZGl0aW9uYWwgY29uZmlndXJlZCBvbiB1c2VyXG4gKiBAdHlwZWRlZiB7XCJkZWZhdWx0XCIgfCBcImFkZGl0aW9uYWxcIiB8IFwic29sb1wifSBBdXRoUG9saWN5XG4gKi9cblxuZXhwb3J0IGNsYXNzIEF1dGhBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLyoqXG4gICAgICogVXNhZ2UgcG9saWN5XG4gICAgICogQHR5cGUge0F1dGhQb2xpY3l9XG4gICAgICovXG4gICAgaWYgKCF0aGlzLnBvbGljeSkge1xuICAgICAgdGhpcy5wb2xpY3kgPSAnZGVmYXVsdCc7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0gYXBwSWRzIFRoZSBzcGVjaWZpZWQgYXBwIElEcyBpbiB0aGUgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gYXV0aERhdGEgVGhlIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhZGRpdGlvbmFsIGFkYXB0ZXIgb3B0aW9uc1xuICAgKiBAcGFyYW0ge1BhcnNlLkNsb3VkLlRyaWdnZXJSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIHsoUHJvbWlzZTx1bmRlZmluZWR8dm9pZD58dm9pZHx1bmRlZmluZWQpfSByZXNvbHZlcyBvciByZXR1cm5zIGlmIHRoZSBhcHBsaWNhdGlvbklkIGlzIHZhbGlkXG4gICAqL1xuICB2YWxpZGF0ZUFwcElkKGFwcElkcywgYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3QpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMZWdhY3kgdXNhZ2UsIGlmIHByb3ZpZGVkIGl0IHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gYXV0aERhdGEgcmVsYXRlZCB0byB0aGlzIHByb3ZpZGVyIGlzIHRvdWNoZWQgKHNpZ251cC91cGRhdGUvbG9naW4pXG4gICAqIG90aGVyd2lzZSB5b3Ugc2hvdWxkIGltcGxlbWVudCB2YWxpZGF0ZVNldHVwLCB2YWxpZGF0ZUxvZ2luIGFuZCB2YWxpZGF0ZVVwZGF0ZVxuICAgKiBAcGFyYW0ge09iamVjdH0gYXV0aERhdGEgVGhlIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICAgKiBAcGFyYW0ge1BhcnNlLkNsb3VkLlRyaWdnZXJSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFBhcnNlQXV0aFJlc3BvbnNlfHZvaWR8dW5kZWZpbmVkPn1cbiAgICovXG4gIHZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIHJlcXVlc3QsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIHByb3ZpZGUgZm9yIHRoZSBmaXJzdCB0aW1lIHRoaXMgYXV0aCBwcm92aWRlclxuICAgKiBjb3VsZCBiZSBhIHJlZ2lzdGVyIG9yIHRoZSB1c2VyIGFkZGluZyBhIG5ldyBhdXRoIHNlcnZpY2VcbiAgICogQHBhcmFtIHtPYmplY3R9IGF1dGhEYXRhIFRoZSBjbGllbnQgcHJvdmlkZWQgYXV0aERhdGFcbiAgICogQHBhcmFtIHtQYXJzZS5DbG91ZC5UcmlnZ2VyUmVxdWVzdH0gcmVxdWVzdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhZGRpdGlvbmFsIGFkYXB0ZXIgb3B0aW9uc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQYXJzZUF1dGhSZXNwb25zZXx2b2lkfHVuZGVmaW5lZD59XG4gICAqL1xuICB2YWxpZGF0ZVNldFVwKGF1dGhEYXRhLCByZXEsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIHByb3ZpZGUgYXV0aERhdGEgcmVsYXRlZCB0byB0aGlzIHByb3ZpZGVyXG4gICAqIFRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4gYW5kIGhhcyBhbHJlYWR5IHNldCB0aGlzIHByb3ZpZGVyIGJlZm9yZVxuICAgKiBAcGFyYW0ge09iamVjdH0gYXV0aERhdGEgVGhlIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICAgKiBAcGFyYW0ge1BhcnNlLkNsb3VkLlRyaWdnZXJSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFBhcnNlQXV0aFJlc3BvbnNlfHZvaWR8dW5kZWZpbmVkPn1cbiAgICovXG4gIHZhbGlkYXRlTG9naW4oYXV0aERhdGEsIHJlcSwgb3B0aW9ucykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgcHJvdmlkZSBhdXRoRGF0YSByZWxhdGVkIHRvIHRoaXMgcHJvdmlkZXJcbiAgICogdGhlIHVzZXIgaXMgbG9nZ2VkIGluIGFuZCBoYXMgYWxyZWFkeSBzZXQgdGhpcyBwcm92aWRlciBiZWZvcmVcbiAgICogQHBhcmFtIHtPYmplY3R9IGF1dGhEYXRhIFRoZSBjbGllbnQgcHJvdmlkZWQgYXV0aERhdGFcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgYWRkaXRpb25hbCBhZGFwdGVyIG9wdGlvbnNcbiAgICogQHBhcmFtIHtQYXJzZS5DbG91ZC5UcmlnZ2VyUmVxdWVzdH0gcmVxdWVzdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQYXJzZUF1dGhSZXNwb25zZXx2b2lkfHVuZGVmaW5lZD59XG4gICAqL1xuICB2YWxpZGF0ZVVwZGF0ZShhdXRoRGF0YSwgcmVxLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIGluIHByZSBhdXRoZW50aWNhdGlvbiBwcm9jZXNzIGlmIG5lZWRlZCAobGlrZSB3ZWJhdXRobiwgU01TIE9UUClcbiAgICogQHBhcmFtIHtPYmplY3R9IGNoYWxsZW5nZURhdGEgRGF0YSBwcm92aWRlZCBieSB0aGUgY2xpZW50XG4gICAqIEBwYXJhbSB7KE9iamVjdHx1bmRlZmluZWQpfSBhdXRoRGF0YSBBdXRoIGRhdGEgcHJvdmlkZWQgYnkgdGhlIGNsaWVudCwgY2FuIGJlIHVzZWQgZm9yIHZhbGlkYXRpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgYWRkaXRpb25hbCBhZGFwdGVyIG9wdGlvbnNcbiAgICogQHBhcmFtIHtQYXJzZS5DbG91ZC5UcmlnZ2VyUmVxdWVzdH0gcmVxdWVzdFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxPYmplY3Q+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcywgcmVzb2x2ZWQgdmFsdWUgd2lsbCBiZSBhZGRlZCB0byBjaGFsbGVuZ2UgcmVzcG9uc2UgdW5kZXIgY2hhbGxlbmdlIGtleVxuICAgKi9cbiAgY2hhbGxlbmdlKGNoYWxsZW5nZURhdGEsIGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0KSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gYXV0aCBkYXRhIGlzIGZldGNoZWRcbiAgICogQHBhcmFtIHtPYmplY3R9IGF1dGhEYXRhIGF1dGhEYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IEFueSBvdmVycmlkZXMgcmVxdWlyZWQgdG8gYXV0aERhdGFcbiAgICovXG4gIGFmdGVyRmluZChhdXRoRGF0YSwgb3B0aW9ucykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHRoZSBhZGFwdGVyIGlzIGZpcnN0IGF0dGFjaGVkIHRvIFBhcnNlIFNlcnZlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBBZGFwdGVyIE9wdGlvbnNcbiAgICovXG4gIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgLyogKi9cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBdXRoQWRhcHRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLE1BQU1BLFdBQVcsQ0FBQztFQUN2QkMsV0FBVyxHQUFHO0lBQ1o7QUFDSjtBQUNBO0FBQ0E7SUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDQyxNQUFNLEVBQUU7TUFDaEIsSUFBSSxDQUFDQSxNQUFNLEdBQUcsU0FBUztJQUN6QjtFQUNGO0VBQ0E7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsYUFBYSxDQUFDQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsT0FBTyxFQUFFQyxPQUFPLEVBQUU7SUFDaEQsT0FBT0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDNUI7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFQyxnQkFBZ0IsQ0FBQ0wsUUFBUSxFQUFFRSxPQUFPLEVBQUVELE9BQU8sRUFBRTtJQUMzQyxPQUFPRSxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VFLGFBQWEsQ0FBQ04sUUFBUSxFQUFFTyxHQUFHLEVBQUVOLE9BQU8sRUFBRTtJQUNwQyxPQUFPRSxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VJLGFBQWEsQ0FBQ1IsUUFBUSxFQUFFTyxHQUFHLEVBQUVOLE9BQU8sRUFBRTtJQUNwQyxPQUFPRSxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VLLGNBQWMsQ0FBQ1QsUUFBUSxFQUFFTyxHQUFHLEVBQUVOLE9BQU8sRUFBRTtJQUNyQyxPQUFPRSxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VNLFNBQVMsQ0FBQ0MsYUFBYSxFQUFFWCxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFO0lBQ25ELE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFUSxTQUFTLENBQUNaLFFBQVEsRUFBRUMsT0FBTyxFQUFFO0lBQzNCLE9BQU9FLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ0VTLGVBQWUsQ0FBQ1osT0FBTyxFQUFFO0lBQ3ZCO0VBQUE7QUFFSjtBQUFDO0FBQUEsZUFFY04sV0FBVztBQUFBIn0=
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var _AdapterLoader = _interopRequireDefault(require("../AdapterLoader"));
|
|
4
4
|
var _node = _interopRequireDefault(require("parse/node"));
|
|
5
5
|
var _AuthAdapter = _interopRequireDefault(require("./AuthAdapter"));
|
|
6
|
+
var _mfa = _interopRequireDefault(require("./mfa"));
|
|
6
7
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
7
8
|
const apple = require('./apple');
|
|
8
9
|
const gcenter = require('./gcenter');
|
|
@@ -44,6 +45,7 @@ const providers = {
|
|
|
44
45
|
instagram,
|
|
45
46
|
linkedin,
|
|
46
47
|
meetup,
|
|
48
|
+
mfa: _mfa.default,
|
|
47
49
|
google,
|
|
48
50
|
github,
|
|
49
51
|
twitter,
|
|
@@ -74,7 +76,7 @@ function authDataValidator(provider, adapter, appIds, options) {
|
|
|
74
76
|
if (appIds && typeof adapter.validateAppId === 'function') {
|
|
75
77
|
await Promise.resolve(adapter.validateAppId(appIds, authData, options, requestObject));
|
|
76
78
|
}
|
|
77
|
-
if (adapter.policy && !authAdapterPolicies[adapter.policy]) {
|
|
79
|
+
if (adapter.policy && !authAdapterPolicies[adapter.policy] && typeof adapter.policy !== 'function') {
|
|
78
80
|
throw new _node.default.Error(_node.default.Error.OTHER_CAUSE, 'AuthAdapter policy is not configured correctly. The value must be either "solo", "additional", "default" or undefined (will be handled as "default")');
|
|
79
81
|
}
|
|
80
82
|
if (typeof adapter.validateAuthData === 'function') {
|
|
@@ -200,18 +202,17 @@ module.exports = function (authOptions = {}, enableAnonymousUsers = true) {
|
|
|
200
202
|
return;
|
|
201
203
|
}
|
|
202
204
|
const {
|
|
203
|
-
adapter
|
|
204
|
-
afterFind
|
|
205
|
-
},
|
|
205
|
+
adapter,
|
|
206
206
|
providerOptions
|
|
207
207
|
} = authAdapter;
|
|
208
|
+
const afterFind = adapter.afterFind;
|
|
208
209
|
if (afterFind && typeof afterFind === 'function') {
|
|
209
210
|
const requestObject = {
|
|
210
211
|
ip: req.config.ip,
|
|
211
212
|
user: req.auth.user,
|
|
212
213
|
master: req.auth.isMaster
|
|
213
214
|
};
|
|
214
|
-
const result = afterFind(requestObject, authData[provider], providerOptions);
|
|
215
|
+
const result = afterFind.call(adapter, requestObject, authData[provider], providerOptions);
|
|
215
216
|
if (result) {
|
|
216
217
|
authData[provider] = result;
|
|
217
218
|
}
|
|
@@ -225,4 +226,4 @@ module.exports = function (authOptions = {}, enableAnonymousUsers = true) {
|
|
|
225
226
|
});
|
|
226
227
|
};
|
|
227
228
|
module.exports.loadAuthAdapter = loadAuthAdapter;
|
|
228
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHBsZSIsInJlcXVpcmUiLCJnY2VudGVyIiwiZ3BnYW1lcyIsImZhY2Vib29rIiwiaW5zdGFncmFtIiwibGlua2VkaW4iLCJtZWV0dXAiLCJnb29nbGUiLCJnaXRodWIiLCJ0d2l0dGVyIiwic3BvdGlmeSIsImRpZ2l0cyIsImphbnJhaW5lbmdhZ2UiLCJqYW5yYWluY2FwdHVyZSIsImxpbmUiLCJ2a29udGFrdGUiLCJxcSIsIndlY2hhdCIsIndlaWJvIiwib2F1dGgyIiwicGhhbnRhdXRoIiwibWljcm9zb2Z0Iiwia2V5Y2xvYWsiLCJsZGFwIiwiYW5vbnltb3VzIiwidmFsaWRhdGVBdXRoRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRhdGVBcHBJZCIsInByb3ZpZGVycyIsImF1dGhBZGFwdGVyUG9saWNpZXMiLCJkZWZhdWx0Iiwic29sbyIsImFkZGl0aW9uYWwiLCJhdXRoRGF0YVZhbGlkYXRvciIsInByb3ZpZGVyIiwiYWRhcHRlciIsImFwcElkcyIsIm9wdGlvbnMiLCJhdXRoRGF0YSIsInJlcSIsInVzZXIiLCJyZXF1ZXN0T2JqZWN0IiwicG9saWN5IiwiUGFyc2UiLCJFcnJvciIsIk9USEVSX0NBVVNFIiwidmFsaWRhdGVTZXRVcCIsInZhbGlkYXRlTG9naW4iLCJ2YWxpZGF0ZVVwZGF0ZSIsImlzTG9nZ2VkSW4iLCJhdXRoIiwiaWQiLCJpc01hc3RlciIsImhhc0F1dGhEYXRhQ29uZmlndXJlZCIsImdldCIsIm1ldGhvZCIsInZhbGlkYXRvciIsImxvYWRBdXRoQWRhcHRlciIsImF1dGhPcHRpb25zIiwiZGVmYXVsdEFkYXB0ZXIiLCJwcm92aWRlck9wdGlvbnMiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJBdXRoQWRhcHRlciIsImFzc2lnbiIsImtleXMiLCJkZWZhdWx0QXV0aEFkYXB0ZXIiLCJmb3JFYWNoIiwia2V5IiwiZXhpc3RpbmciLCJ0b1N0cmluZyIsInVuZGVmaW5lZCIsIm9wdGlvbmFsQWRhcHRlciIsImxvYWRBZGFwdGVyIiwidmFsaWRhdGVPcHRpb25zIiwibW9kdWxlIiwiZXhwb3J0cyIsImVuYWJsZUFub255bW91c1VzZXJzIiwiX2VuYWJsZUFub255bW91c1VzZXJzIiwic2V0RW5hYmxlQW5vbnltb3VzVXNlcnMiLCJlbmFibGUiLCJnZXRWYWxpZGF0b3JGb3JQcm92aWRlciIsImF1dGhBZGFwdGVyIiwicnVuQWZ0ZXJGaW5kIiwiYWRhcHRlcnMiLCJhbGwiLCJtYXAiLCJhZnRlckZpbmQiLCJpcCIsImNvbmZpZyIsIm1hc3RlciIsInJlc3VsdCIsImZyZWV6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkQWRhcHRlciBmcm9tICcuLi9BZGFwdGVyTG9hZGVyJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBBdXRoQWRhcHRlciBmcm9tICcuL0F1dGhBZGFwdGVyJztcblxuY29uc3QgYXBwbGUgPSByZXF1aXJlKCcuL2FwcGxlJyk7XG5jb25zdCBnY2VudGVyID0gcmVxdWlyZSgnLi9nY2VudGVyJyk7XG5jb25zdCBncGdhbWVzID0gcmVxdWlyZSgnLi9ncGdhbWVzJyk7XG5jb25zdCBmYWNlYm9vayA9IHJlcXVpcmUoJy4vZmFjZWJvb2snKTtcbmNvbnN0IGluc3RhZ3JhbSA9IHJlcXVpcmUoJy4vaW5zdGFncmFtJyk7XG5jb25zdCBsaW5rZWRpbiA9IHJlcXVpcmUoJy4vbGlua2VkaW4nKTtcbmNvbnN0IG1lZXR1cCA9IHJlcXVpcmUoJy4vbWVldHVwJyk7XG5jb25zdCBnb29nbGUgPSByZXF1aXJlKCcuL2dvb2dsZScpO1xuY29uc3QgZ2l0aHViID0gcmVxdWlyZSgnLi9naXRodWInKTtcbmNvbnN0IHR3aXR0ZXIgPSByZXF1aXJlKCcuL3R3aXR0ZXInKTtcbmNvbnN0IHNwb3RpZnkgPSByZXF1aXJlKCcuL3Nwb3RpZnknKTtcbmNvbnN0IGRpZ2l0cyA9IHJlcXVpcmUoJy4vdHdpdHRlcicpOyAvLyBkaWdpdHMgdG9rZW5zIGFyZSB2YWxpZGF0ZWQgYnkgdHdpdHRlclxuY29uc3QgamFucmFpbmVuZ2FnZSA9IHJlcXVpcmUoJy4vamFucmFpbmVuZ2FnZScpO1xuY29uc3QgamFucmFpbmNhcHR1cmUgPSByZXF1aXJlKCcuL2phbnJhaW5jYXB0dXJlJyk7XG5jb25zdCBsaW5lID0gcmVxdWlyZSgnLi9saW5lJyk7XG5jb25zdCB2a29udGFrdGUgPSByZXF1aXJlKCcuL3Zrb250YWt0ZScpO1xuY29uc3QgcXEgPSByZXF1aXJlKCcuL3FxJyk7XG5jb25zdCB3ZWNoYXQgPSByZXF1aXJlKCcuL3dlY2hhdCcpO1xuY29uc3Qgd2VpYm8gPSByZXF1aXJlKCcuL3dlaWJvJyk7XG5jb25zdCBvYXV0aDIgPSByZXF1aXJlKCcuL29hdXRoMicpO1xuY29uc3QgcGhhbnRhdXRoID0gcmVxdWlyZSgnLi9waGFudGF1dGgnKTtcbmNvbnN0IG1pY3Jvc29mdCA9IHJlcXVpcmUoJy4vbWljcm9zb2Z0Jyk7XG5jb25zdCBrZXljbG9hayA9IHJlcXVpcmUoJy4va2V5Y2xvYWsnKTtcbmNvbnN0IGxkYXAgPSByZXF1aXJlKCcuL2xkYXAnKTtcblxuY29uc3QgYW5vbnltb3VzID0ge1xuICB2YWxpZGF0ZUF1dGhEYXRhOiAoKSA9PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9LFxuICB2YWxpZGF0ZUFwcElkOiAoKSA9PiB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9LFxufTtcblxuY29uc3QgcHJvdmlkZXJzID0ge1xuICBhcHBsZSxcbiAgZ2NlbnRlcixcbiAgZ3BnYW1lcyxcbiAgZmFjZWJvb2ssXG4gIGluc3RhZ3JhbSxcbiAgbGlua2VkaW4sXG4gIG1lZXR1cCxcbiAgZ29vZ2xlLFxuICBnaXRodWIsXG4gIHR3aXR0ZXIsXG4gIHNwb3RpZnksXG4gIGFub255bW91cyxcbiAgZGlnaXRzLFxuICBqYW5yYWluZW5nYWdlLFxuICBqYW5yYWluY2FwdHVyZSxcbiAgbGluZSxcbiAgdmtvbnRha3RlLFxuICBxcSxcbiAgd2VjaGF0LFxuICB3ZWlibyxcbiAgcGhhbnRhdXRoLFxuICBtaWNyb3NvZnQsXG4gIGtleWNsb2FrLFxuICBsZGFwLFxufTtcblxuLy8gSW5kZXhlZCBhdXRoIHBvbGljaWVzXG5jb25zdCBhdXRoQWRhcHRlclBvbGljaWVzID0ge1xuICBkZWZhdWx0OiB0cnVlLFxuICBzb2xvOiB0cnVlLFxuICBhZGRpdGlvbmFsOiB0cnVlLFxufTtcblxuZnVuY3Rpb24gYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgb3B0aW9ucykge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKGF1dGhEYXRhLCByZXEsIHVzZXIsIHJlcXVlc3RPYmplY3QpIHtcbiAgICBpZiAoYXBwSWRzICYmIHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXBwSWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShhZGFwdGVyLnZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCkpO1xuICAgIH1cbiAgICBpZiAoYWRhcHRlci5wb2xpY3kgJiYgIWF1dGhBZGFwdGVyUG9saWNpZXNbYWRhcHRlci5wb2xpY3ldKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAnQXV0aEFkYXB0ZXIgcG9saWN5IGlzIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseS4gVGhlIHZhbHVlIG11c3QgYmUgZWl0aGVyIFwic29sb1wiLCBcImFkZGl0aW9uYWxcIiwgXCJkZWZhdWx0XCIgb3IgdW5kZWZpbmVkICh3aWxsIGJlIGhhbmRsZWQgYXMgXCJkZWZhdWx0XCIpJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXV0aERhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhZGFwdGVyLnZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZVNldFVwICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZUxvZ2luICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZVVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICAgICAgJ0FkYXB0ZXIgaXMgbm90IGNvbmZpZ3VyZWQuIEltcGxlbWVudCBlaXRoZXIgdmFsaWRhdGVBdXRoRGF0YSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZzogdmFsaWRhdGVTZXRVcCwgdmFsaWRhdGVMb2dpbiBhbmQgdmFsaWRhdGVVcGRhdGUnXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBXaGVuIG1hc3RlcktleSBpcyBkZXRlY3RlZCwgd2Ugc2hvdWxkIHRyaWdnZXIgYSBsb2dnZWQgaW4gdXNlclxuICAgIGNvbnN0IGlzTG9nZ2VkSW4gPVxuICAgICAgKHJlcS5hdXRoLnVzZXIgJiYgdXNlciAmJiByZXEuYXV0aC51c2VyLmlkID09PSB1c2VyLmlkKSB8fCAodXNlciAmJiByZXEuYXV0aC5pc01hc3Rlcik7XG4gICAgbGV0IGhhc0F1dGhEYXRhQ29uZmlndXJlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHVzZXIgJiYgdXNlci5nZXQoJ2F1dGhEYXRhJykgJiYgdXNlci5nZXQoJ2F1dGhEYXRhJylbcHJvdmlkZXJdKSB7XG4gICAgICBoYXNBdXRoRGF0YUNvbmZpZ3VyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc0xvZ2dlZEluKSB7XG4gICAgICAvLyBVc2VyIGlzIHVwZGF0aW5nIHRoZWlyIGF1dGhEYXRhXG4gICAgICBpZiAoaGFzQXV0aERhdGFDb25maWd1cmVkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVVcGRhdGUnLFxuICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZVVwZGF0ZShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBTZXQgdXAgaWYgdGhlIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcHJvdmlkZXIgY29uZmlndXJlZFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVTZXRVcCcsXG4gICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZVNldFVwKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gTm90IGxvZ2dlZCBpbiBhbmQgYXV0aERhdGEgaXMgY29uZmlndXJlZCBvbiB0aGUgdXNlclxuICAgIGlmIChoYXNBdXRoRGF0YUNvbmZpZ3VyZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1ldGhvZDogJ3ZhbGlkYXRlTG9naW4nLFxuICAgICAgICB2YWxpZGF0b3I6ICgpID0+IGFkYXB0ZXIudmFsaWRhdGVMb2dpbihhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFVzZXIgbm90IGxvZ2dlZCBpbiBhbmQgdGhlIHByb3ZpZGVyIGlzIG5vdCBzZXQgdXAsIGZvciBleGFtcGxlIHdoZW4gYSBuZXcgdXNlclxuICAgIC8vIHNpZ25zIHVwIG9yIGFuIGV4aXN0aW5nIHVzZXIgdXNlcyBhIG5ldyBhdXRoIHByb3ZpZGVyXG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGhvZDogJ3ZhbGlkYXRlU2V0VXAnLFxuICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpLFxuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGxvYWRBdXRoQWRhcHRlcihwcm92aWRlciwgYXV0aE9wdGlvbnMpIHtcbiAgLy8gcHJvdmlkZXJzIGFyZSBhdXRoIHByb3ZpZGVycyBpbXBsZW1lbnRlZCBieSBkZWZhdWx0XG4gIGxldCBkZWZhdWx0QWRhcHRlciA9IHByb3ZpZGVyc1twcm92aWRlcl07XG4gIC8vIGF1dGhPcHRpb25zIGNhbiBjb250YWluIGNvbXBsZXRlIGN1c3RvbSBhdXRoIGFkYXB0ZXJzIG9yXG4gIC8vIGEgZGVmYXVsdCBhdXRoIGFkYXB0ZXIgbGlrZSBGYWNlYm9va1xuICBjb25zdCBwcm92aWRlck9wdGlvbnMgPSBhdXRoT3B0aW9uc1twcm92aWRlcl07XG4gIGlmIChcbiAgICBwcm92aWRlck9wdGlvbnMgJiZcbiAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvdmlkZXJPcHRpb25zLCAnb2F1dGgyJykgJiZcbiAgICBwcm92aWRlck9wdGlvbnNbJ29hdXRoMiddID09PSB0cnVlXG4gICkge1xuICAgIGRlZmF1bHRBZGFwdGVyID0gb2F1dGgyO1xuICB9XG5cbiAgLy8gRGVmYXVsdCBwcm92aWRlciBub3QgZm91bmQgYW5kIGEgY3VzdG9tIGF1dGggcHJvdmlkZXIgd2FzIG5vdCBwcm92aWRlZFxuICBpZiAoIWRlZmF1bHRBZGFwdGVyICYmICFwcm92aWRlck9wdGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGFwdGVyID1cbiAgICBkZWZhdWx0QWRhcHRlciBpbnN0YW5jZW9mIEF1dGhBZGFwdGVyID8gZGVmYXVsdEFkYXB0ZXIgOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0QWRhcHRlcik7XG4gIGNvbnN0IGtleXMgPSBbXG4gICAgJ3ZhbGlkYXRlQXV0aERhdGEnLFxuICAgICd2YWxpZGF0ZUFwcElkJyxcbiAgICAndmFsaWRhdGVTZXRVcCcsXG4gICAgJ3ZhbGlkYXRlTG9naW4nLFxuICAgICd2YWxpZGF0ZVVwZGF0ZScsXG4gICAgJ2NoYWxsZW5nZScsXG4gICAgJ3ZhbGlkYXRlT3B0aW9ucycsXG4gICAgJ3BvbGljeScsXG4gICAgJ2FmdGVyRmluZCcsXG4gIF07XG4gIGNvbnN0IGRlZmF1bHRBdXRoQWRhcHRlciA9IG5ldyBBdXRoQWRhcHRlcigpO1xuICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGFkYXB0ZXI/LltrZXldO1xuICAgIGlmIChcbiAgICAgIGV4aXN0aW5nICYmXG4gICAgICB0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIGV4aXN0aW5nLnRvU3RyaW5nKCkgPT09IGRlZmF1bHRBdXRoQWRhcHRlcltrZXldLnRvU3RyaW5nKClcbiAgICApIHtcbiAgICAgIGFkYXB0ZXJba2V5XSA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgYXBwSWRzID0gcHJvdmlkZXJPcHRpb25zID8gcHJvdmlkZXJPcHRpb25zLmFwcElkcyA6IHVuZGVmaW5lZDtcblxuICAvLyBUcnkgdGhlIGNvbmZpZ3VyYXRpb24gbWV0aG9kc1xuICBpZiAocHJvdmlkZXJPcHRpb25zKSB7XG4gICAgY29uc3Qgb3B0aW9uYWxBZGFwdGVyID0gbG9hZEFkYXB0ZXIocHJvdmlkZXJPcHRpb25zLCB1bmRlZmluZWQsIHByb3ZpZGVyT3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbmFsQWRhcHRlcikge1xuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25hbEFkYXB0ZXJba2V5XSkge1xuICAgICAgICAgIGFkYXB0ZXJba2V5XSA9IG9wdGlvbmFsQWRhcHRlcltrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaWYgKGFkYXB0ZXIudmFsaWRhdGVPcHRpb25zKSB7XG4gICAgYWRhcHRlci52YWxpZGF0ZU9wdGlvbnMocHJvdmlkZXJPcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiB7IGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGF1dGhPcHRpb25zID0ge30sIGVuYWJsZUFub255bW91c1VzZXJzID0gdHJ1ZSkge1xuICBsZXQgX2VuYWJsZUFub255bW91c1VzZXJzID0gZW5hYmxlQW5vbnltb3VzVXNlcnM7XG4gIGNvbnN0IHNldEVuYWJsZUFub255bW91c1VzZXJzID0gZnVuY3Rpb24gKGVuYWJsZSkge1xuICAgIF9lbmFibGVBbm9ueW1vdXNVc2VycyA9IGVuYWJsZTtcbiAgfTtcbiAgLy8gVG8gaGFuZGxlIHRoZSB0ZXN0IGNhc2VzIG9uIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIgPSBmdW5jdGlvbiAocHJvdmlkZXIpIHtcbiAgICBpZiAocHJvdmlkZXIgPT09ICdhbm9ueW1vdXMnICYmICFfZW5hYmxlQW5vbnltb3VzVXNlcnMpIHtcbiAgICAgIHJldHVybiB7IHZhbGlkYXRvcjogdW5kZWZpbmVkIH07XG4gICAgfVxuICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gbG9hZEF1dGhBZGFwdGVyKHByb3ZpZGVyLCBhdXRoT3B0aW9ucyk7XG4gICAgaWYgKCFhdXRoQWRhcHRlcikgcmV0dXJuO1xuICAgIGNvbnN0IHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfSA9IGF1dGhBZGFwdGVyO1xuICAgIHJldHVybiB7IHZhbGlkYXRvcjogYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zKSwgYWRhcHRlciB9O1xuICB9O1xuXG4gIGNvbnN0IHJ1bkFmdGVyRmluZCA9IGFzeW5jIChyZXEsIGF1dGhEYXRhKSA9PiB7XG4gICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhZGFwdGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFkYXB0ZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICBpZiAoIWF1dGhBZGFwdGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBhZGFwdGVyOiB7IGFmdGVyRmluZCB9LFxuICAgICAgICAgIHByb3ZpZGVyT3B0aW9ucyxcbiAgICAgICAgfSA9IGF1dGhBZGFwdGVyO1xuICAgICAgICBpZiAoYWZ0ZXJGaW5kICYmIHR5cGVvZiBhZnRlckZpbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb25zdCByZXF1ZXN0T2JqZWN0ID0ge1xuICAgICAgICAgICAgaXA6IHJlcS5jb25maWcuaXAsXG4gICAgICAgICAgICB1c2VyOiByZXEuYXV0aC51c2VyLFxuICAgICAgICAgICAgbWFzdGVyOiByZXEuYXV0aC5pc01hc3RlcixcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGFmdGVyRmluZChyZXF1ZXN0T2JqZWN0LCBhdXRoRGF0YVtwcm92aWRlcl0sIHByb3ZpZGVyT3B0aW9ucyk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYXV0aERhdGFbcHJvdmlkZXJdID0gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICBnZXRWYWxpZGF0b3JGb3JQcm92aWRlcixcbiAgICBzZXRFbmFibGVBbm9ueW1vdXNVc2VycyxcbiAgICBydW5BZnRlckZpbmQsXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMubG9hZEF1dGhB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
|
|
229
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHBsZSIsInJlcXVpcmUiLCJnY2VudGVyIiwiZ3BnYW1lcyIsImZhY2Vib29rIiwiaW5zdGFncmFtIiwibGlua2VkaW4iLCJtZWV0dXAiLCJnb29nbGUiLCJnaXRodWIiLCJ0d2l0dGVyIiwic3BvdGlmeSIsImRpZ2l0cyIsImphbnJhaW5lbmdhZ2UiLCJqYW5yYWluY2FwdHVyZSIsImxpbmUiLCJ2a29udGFrdGUiLCJxcSIsIndlY2hhdCIsIndlaWJvIiwib2F1dGgyIiwicGhhbnRhdXRoIiwibWljcm9zb2Z0Iiwia2V5Y2xvYWsiLCJsZGFwIiwiYW5vbnltb3VzIiwidmFsaWRhdGVBdXRoRGF0YSIsIlByb21pc2UiLCJyZXNvbHZlIiwidmFsaWRhdGVBcHBJZCIsInByb3ZpZGVycyIsIm1mYSIsImF1dGhBZGFwdGVyUG9saWNpZXMiLCJkZWZhdWx0Iiwic29sbyIsImFkZGl0aW9uYWwiLCJhdXRoRGF0YVZhbGlkYXRvciIsInByb3ZpZGVyIiwiYWRhcHRlciIsImFwcElkcyIsIm9wdGlvbnMiLCJhdXRoRGF0YSIsInJlcSIsInVzZXIiLCJyZXF1ZXN0T2JqZWN0IiwicG9saWN5IiwiUGFyc2UiLCJFcnJvciIsIk9USEVSX0NBVVNFIiwidmFsaWRhdGVTZXRVcCIsInZhbGlkYXRlTG9naW4iLCJ2YWxpZGF0ZVVwZGF0ZSIsImlzTG9nZ2VkSW4iLCJhdXRoIiwiaWQiLCJpc01hc3RlciIsImhhc0F1dGhEYXRhQ29uZmlndXJlZCIsImdldCIsIm1ldGhvZCIsInZhbGlkYXRvciIsImxvYWRBdXRoQWRhcHRlciIsImF1dGhPcHRpb25zIiwiZGVmYXVsdEFkYXB0ZXIiLCJwcm92aWRlck9wdGlvbnMiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJBdXRoQWRhcHRlciIsImFzc2lnbiIsImtleXMiLCJkZWZhdWx0QXV0aEFkYXB0ZXIiLCJmb3JFYWNoIiwia2V5IiwiZXhpc3RpbmciLCJ0b1N0cmluZyIsInVuZGVmaW5lZCIsIm9wdGlvbmFsQWRhcHRlciIsImxvYWRBZGFwdGVyIiwidmFsaWRhdGVPcHRpb25zIiwibW9kdWxlIiwiZXhwb3J0cyIsImVuYWJsZUFub255bW91c1VzZXJzIiwiX2VuYWJsZUFub255bW91c1VzZXJzIiwic2V0RW5hYmxlQW5vbnltb3VzVXNlcnMiLCJlbmFibGUiLCJnZXRWYWxpZGF0b3JGb3JQcm92aWRlciIsImF1dGhBZGFwdGVyIiwicnVuQWZ0ZXJGaW5kIiwiYWRhcHRlcnMiLCJhbGwiLCJtYXAiLCJhZnRlckZpbmQiLCJpcCIsImNvbmZpZyIsIm1hc3RlciIsInJlc3VsdCIsImZyZWV6ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkQWRhcHRlciBmcm9tICcuLi9BZGFwdGVyTG9hZGVyJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCBBdXRoQWRhcHRlciBmcm9tICcuL0F1dGhBZGFwdGVyJztcblxuY29uc3QgYXBwbGUgPSByZXF1aXJlKCcuL2FwcGxlJyk7XG5jb25zdCBnY2VudGVyID0gcmVxdWlyZSgnLi9nY2VudGVyJyk7XG5jb25zdCBncGdhbWVzID0gcmVxdWlyZSgnLi9ncGdhbWVzJyk7XG5jb25zdCBmYWNlYm9vayA9IHJlcXVpcmUoJy4vZmFjZWJvb2snKTtcbmNvbnN0IGluc3RhZ3JhbSA9IHJlcXVpcmUoJy4vaW5zdGFncmFtJyk7XG5jb25zdCBsaW5rZWRpbiA9IHJlcXVpcmUoJy4vbGlua2VkaW4nKTtcbmNvbnN0IG1lZXR1cCA9IHJlcXVpcmUoJy4vbWVldHVwJyk7XG5pbXBvcnQgbWZhIGZyb20gJy4vbWZhJztcbmNvbnN0IGdvb2dsZSA9IHJlcXVpcmUoJy4vZ29vZ2xlJyk7XG5jb25zdCBnaXRodWIgPSByZXF1aXJlKCcuL2dpdGh1YicpO1xuY29uc3QgdHdpdHRlciA9IHJlcXVpcmUoJy4vdHdpdHRlcicpO1xuY29uc3Qgc3BvdGlmeSA9IHJlcXVpcmUoJy4vc3BvdGlmeScpO1xuY29uc3QgZGlnaXRzID0gcmVxdWlyZSgnLi90d2l0dGVyJyk7IC8vIGRpZ2l0cyB0b2tlbnMgYXJlIHZhbGlkYXRlZCBieSB0d2l0dGVyXG5jb25zdCBqYW5yYWluZW5nYWdlID0gcmVxdWlyZSgnLi9qYW5yYWluZW5nYWdlJyk7XG5jb25zdCBqYW5yYWluY2FwdHVyZSA9IHJlcXVpcmUoJy4vamFucmFpbmNhcHR1cmUnKTtcbmNvbnN0IGxpbmUgPSByZXF1aXJlKCcuL2xpbmUnKTtcbmNvbnN0IHZrb250YWt0ZSA9IHJlcXVpcmUoJy4vdmtvbnRha3RlJyk7XG5jb25zdCBxcSA9IHJlcXVpcmUoJy4vcXEnKTtcbmNvbnN0IHdlY2hhdCA9IHJlcXVpcmUoJy4vd2VjaGF0Jyk7XG5jb25zdCB3ZWlibyA9IHJlcXVpcmUoJy4vd2VpYm8nKTtcbmNvbnN0IG9hdXRoMiA9IHJlcXVpcmUoJy4vb2F1dGgyJyk7XG5jb25zdCBwaGFudGF1dGggPSByZXF1aXJlKCcuL3BoYW50YXV0aCcpO1xuY29uc3QgbWljcm9zb2Z0ID0gcmVxdWlyZSgnLi9taWNyb3NvZnQnKTtcbmNvbnN0IGtleWNsb2FrID0gcmVxdWlyZSgnLi9rZXljbG9haycpO1xuY29uc3QgbGRhcCA9IHJlcXVpcmUoJy4vbGRhcCcpO1xuXG5jb25zdCBhbm9ueW1vdXMgPSB7XG4gIHZhbGlkYXRlQXV0aERhdGE6ICgpID0+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH0sXG4gIHZhbGlkYXRlQXBwSWQ6ICgpID0+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH0sXG59O1xuXG5jb25zdCBwcm92aWRlcnMgPSB7XG4gIGFwcGxlLFxuICBnY2VudGVyLFxuICBncGdhbWVzLFxuICBmYWNlYm9vayxcbiAgaW5zdGFncmFtLFxuICBsaW5rZWRpbixcbiAgbWVldHVwLFxuICBtZmEsXG4gIGdvb2dsZSxcbiAgZ2l0aHViLFxuICB0d2l0dGVyLFxuICBzcG90aWZ5LFxuICBhbm9ueW1vdXMsXG4gIGRpZ2l0cyxcbiAgamFucmFpbmVuZ2FnZSxcbiAgamFucmFpbmNhcHR1cmUsXG4gIGxpbmUsXG4gIHZrb250YWt0ZSxcbiAgcXEsXG4gIHdlY2hhdCxcbiAgd2VpYm8sXG4gIHBoYW50YXV0aCxcbiAgbWljcm9zb2Z0LFxuICBrZXljbG9hayxcbiAgbGRhcCxcbn07XG5cbi8vIEluZGV4ZWQgYXV0aCBwb2xpY2llc1xuY29uc3QgYXV0aEFkYXB0ZXJQb2xpY2llcyA9IHtcbiAgZGVmYXVsdDogdHJ1ZSxcbiAgc29sbzogdHJ1ZSxcbiAgYWRkaXRpb25hbDogdHJ1ZSxcbn07XG5cbmZ1bmN0aW9uIGF1dGhEYXRhVmFsaWRhdG9yKHByb3ZpZGVyLCBhZGFwdGVyLCBhcHBJZHMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChhdXRoRGF0YSwgcmVxLCB1c2VyLCByZXF1ZXN0T2JqZWN0KSB7XG4gICAgaWYgKGFwcElkcyAmJiB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZUFwcElkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoYWRhcHRlci52YWxpZGF0ZUFwcElkKGFwcElkcywgYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgYWRhcHRlci5wb2xpY3kgJiZcbiAgICAgICFhdXRoQWRhcHRlclBvbGljaWVzW2FkYXB0ZXIucG9saWN5XSAmJlxuICAgICAgdHlwZW9mIGFkYXB0ZXIucG9saWN5ICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgIFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLFxuICAgICAgICAnQXV0aEFkYXB0ZXIgcG9saWN5IGlzIG5vdCBjb25maWd1cmVkIGNvcnJlY3RseS4gVGhlIHZhbHVlIG11c3QgYmUgZWl0aGVyIFwic29sb1wiLCBcImFkZGl0aW9uYWxcIiwgXCJkZWZhdWx0XCIgb3IgdW5kZWZpbmVkICh3aWxsIGJlIGhhbmRsZWQgYXMgXCJkZWZhdWx0XCIpJ1xuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBhZGFwdGVyLnZhbGlkYXRlQXV0aERhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBhZGFwdGVyLnZhbGlkYXRlQXV0aERhdGEoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZVNldFVwICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZUxvZ2luICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICB0eXBlb2YgYWRhcHRlci52YWxpZGF0ZVVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJ1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgICBQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSxcbiAgICAgICAgJ0FkYXB0ZXIgaXMgbm90IGNvbmZpZ3VyZWQuIEltcGxlbWVudCBlaXRoZXIgdmFsaWRhdGVBdXRoRGF0YSBvciBhbGwgb2YgdGhlIGZvbGxvd2luZzogdmFsaWRhdGVTZXRVcCwgdmFsaWRhdGVMb2dpbiBhbmQgdmFsaWRhdGVVcGRhdGUnXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBXaGVuIG1hc3RlcktleSBpcyBkZXRlY3RlZCwgd2Ugc2hvdWxkIHRyaWdnZXIgYSBsb2dnZWQgaW4gdXNlclxuICAgIGNvbnN0IGlzTG9nZ2VkSW4gPVxuICAgICAgKHJlcS5hdXRoLnVzZXIgJiYgdXNlciAmJiByZXEuYXV0aC51c2VyLmlkID09PSB1c2VyLmlkKSB8fCAodXNlciAmJiByZXEuYXV0aC5pc01hc3Rlcik7XG4gICAgbGV0IGhhc0F1dGhEYXRhQ29uZmlndXJlZCA9IGZhbHNlO1xuXG4gICAgaWYgKHVzZXIgJiYgdXNlci5nZXQoJ2F1dGhEYXRhJykgJiYgdXNlci5nZXQoJ2F1dGhEYXRhJylbcHJvdmlkZXJdKSB7XG4gICAgICBoYXNBdXRoRGF0YUNvbmZpZ3VyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc0xvZ2dlZEluKSB7XG4gICAgICAvLyBVc2VyIGlzIHVwZGF0aW5nIHRoZWlyIGF1dGhEYXRhXG4gICAgICBpZiAoaGFzQXV0aERhdGFDb25maWd1cmVkKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVVcGRhdGUnLFxuICAgICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZVVwZGF0ZShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBTZXQgdXAgaWYgdGhlIHVzZXIgZG9lcyBub3QgaGF2ZSB0aGUgcHJvdmlkZXIgY29uZmlndXJlZFxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWV0aG9kOiAndmFsaWRhdGVTZXRVcCcsXG4gICAgICAgIHZhbGlkYXRvcjogKCkgPT4gYWRhcHRlci52YWxpZGF0ZVNldFVwKGF1dGhEYXRhLCBvcHRpb25zLCByZXF1ZXN0T2JqZWN0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gTm90IGxvZ2dlZCBpbiBhbmQgYXV0aERhdGEgaXMgY29uZmlndXJlZCBvbiB0aGUgdXNlclxuICAgIGlmIChoYXNBdXRoRGF0YUNvbmZpZ3VyZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1ldGhvZDogJ3ZhbGlkYXRlTG9naW4nLFxuICAgICAgICB2YWxpZGF0b3I6ICgpID0+IGFkYXB0ZXIudmFsaWRhdGVMb2dpbihhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdE9iamVjdCksXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFVzZXIgbm90IGxvZ2dlZCBpbiBhbmQgdGhlIHByb3ZpZGVyIGlzIG5vdCBzZXQgdXAsIGZvciBleGFtcGxlIHdoZW4gYSBuZXcgdXNlclxuICAgIC8vIHNpZ25zIHVwIG9yIGFuIGV4aXN0aW5nIHVzZXIgdXNlcyBhIG5ldyBhdXRoIHByb3ZpZGVyXG4gICAgcmV0dXJuIHtcbiAgICAgIG1ldGhvZDogJ3ZhbGlkYXRlU2V0VXAnLFxuICAgICAgdmFsaWRhdG9yOiAoKSA9PiBhZGFwdGVyLnZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcXVlc3RPYmplY3QpLFxuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGxvYWRBdXRoQWRhcHRlcihwcm92aWRlciwgYXV0aE9wdGlvbnMpIHtcbiAgLy8gcHJvdmlkZXJzIGFyZSBhdXRoIHByb3ZpZGVycyBpbXBsZW1lbnRlZCBieSBkZWZhdWx0XG4gIGxldCBkZWZhdWx0QWRhcHRlciA9IHByb3ZpZGVyc1twcm92aWRlcl07XG4gIC8vIGF1dGhPcHRpb25zIGNhbiBjb250YWluIGNvbXBsZXRlIGN1c3RvbSBhdXRoIGFkYXB0ZXJzIG9yXG4gIC8vIGEgZGVmYXVsdCBhdXRoIGFkYXB0ZXIgbGlrZSBGYWNlYm9va1xuICBjb25zdCBwcm92aWRlck9wdGlvbnMgPSBhdXRoT3B0aW9uc1twcm92aWRlcl07XG4gIGlmIChcbiAgICBwcm92aWRlck9wdGlvbnMgJiZcbiAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocHJvdmlkZXJPcHRpb25zLCAnb2F1dGgyJykgJiZcbiAgICBwcm92aWRlck9wdGlvbnNbJ29hdXRoMiddID09PSB0cnVlXG4gICkge1xuICAgIGRlZmF1bHRBZGFwdGVyID0gb2F1dGgyO1xuICB9XG5cbiAgLy8gRGVmYXVsdCBwcm92aWRlciBub3QgZm91bmQgYW5kIGEgY3VzdG9tIGF1dGggcHJvdmlkZXIgd2FzIG5vdCBwcm92aWRlZFxuICBpZiAoIWRlZmF1bHRBZGFwdGVyICYmICFwcm92aWRlck9wdGlvbnMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBhZGFwdGVyID1cbiAgICBkZWZhdWx0QWRhcHRlciBpbnN0YW5jZW9mIEF1dGhBZGFwdGVyID8gZGVmYXVsdEFkYXB0ZXIgOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0QWRhcHRlcik7XG4gIGNvbnN0IGtleXMgPSBbXG4gICAgJ3ZhbGlkYXRlQXV0aERhdGEnLFxuICAgICd2YWxpZGF0ZUFwcElkJyxcbiAgICAndmFsaWRhdGVTZXRVcCcsXG4gICAgJ3ZhbGlkYXRlTG9naW4nLFxuICAgICd2YWxpZGF0ZVVwZGF0ZScsXG4gICAgJ2NoYWxsZW5nZScsXG4gICAgJ3ZhbGlkYXRlT3B0aW9ucycsXG4gICAgJ3BvbGljeScsXG4gICAgJ2FmdGVyRmluZCcsXG4gIF07XG4gIGNvbnN0IGRlZmF1bHRBdXRoQWRhcHRlciA9IG5ldyBBdXRoQWRhcHRlcigpO1xuICBrZXlzLmZvckVhY2goa2V5ID0+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IGFkYXB0ZXI/LltrZXldO1xuICAgIGlmIChcbiAgICAgIGV4aXN0aW5nICYmXG4gICAgICB0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIGV4aXN0aW5nLnRvU3RyaW5nKCkgPT09IGRlZmF1bHRBdXRoQWRhcHRlcltrZXldLnRvU3RyaW5nKClcbiAgICApIHtcbiAgICAgIGFkYXB0ZXJba2V5XSA9IG51bGw7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgYXBwSWRzID0gcHJvdmlkZXJPcHRpb25zID8gcHJvdmlkZXJPcHRpb25zLmFwcElkcyA6IHVuZGVmaW5lZDtcblxuICAvLyBUcnkgdGhlIGNvbmZpZ3VyYXRpb24gbWV0aG9kc1xuICBpZiAocHJvdmlkZXJPcHRpb25zKSB7XG4gICAgY29uc3Qgb3B0aW9uYWxBZGFwdGVyID0gbG9hZEFkYXB0ZXIocHJvdmlkZXJPcHRpb25zLCB1bmRlZmluZWQsIHByb3ZpZGVyT3B0aW9ucyk7XG4gICAgaWYgKG9wdGlvbmFsQWRhcHRlcikge1xuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGlmIChvcHRpb25hbEFkYXB0ZXJba2V5XSkge1xuICAgICAgICAgIGFkYXB0ZXJba2V5XSA9IG9wdGlvbmFsQWRhcHRlcltrZXldO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgaWYgKGFkYXB0ZXIudmFsaWRhdGVPcHRpb25zKSB7XG4gICAgYWRhcHRlci52YWxpZGF0ZU9wdGlvbnMocHJvdmlkZXJPcHRpb25zKTtcbiAgfVxuXG4gIHJldHVybiB7IGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGF1dGhPcHRpb25zID0ge30sIGVuYWJsZUFub255bW91c1VzZXJzID0gdHJ1ZSkge1xuICBsZXQgX2VuYWJsZUFub255bW91c1VzZXJzID0gZW5hYmxlQW5vbnltb3VzVXNlcnM7XG4gIGNvbnN0IHNldEVuYWJsZUFub255bW91c1VzZXJzID0gZnVuY3Rpb24gKGVuYWJsZSkge1xuICAgIF9lbmFibGVBbm9ueW1vdXNVc2VycyA9IGVuYWJsZTtcbiAgfTtcbiAgLy8gVG8gaGFuZGxlIHRoZSB0ZXN0IGNhc2VzIG9uIGNvbmZpZ3VyYXRpb25cbiAgY29uc3QgZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIgPSBmdW5jdGlvbiAocHJvdmlkZXIpIHtcbiAgICBpZiAocHJvdmlkZXIgPT09ICdhbm9ueW1vdXMnICYmICFfZW5hYmxlQW5vbnltb3VzVXNlcnMpIHtcbiAgICAgIHJldHVybiB7IHZhbGlkYXRvcjogdW5kZWZpbmVkIH07XG4gICAgfVxuICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gbG9hZEF1dGhBZGFwdGVyKHByb3ZpZGVyLCBhdXRoT3B0aW9ucyk7XG4gICAgaWYgKCFhdXRoQWRhcHRlcikgcmV0dXJuO1xuICAgIGNvbnN0IHsgYWRhcHRlciwgYXBwSWRzLCBwcm92aWRlck9wdGlvbnMgfSA9IGF1dGhBZGFwdGVyO1xuICAgIHJldHVybiB7IHZhbGlkYXRvcjogYXV0aERhdGFWYWxpZGF0b3IocHJvdmlkZXIsIGFkYXB0ZXIsIGFwcElkcywgcHJvdmlkZXJPcHRpb25zKSwgYWRhcHRlciB9O1xuICB9O1xuXG4gIGNvbnN0IHJ1bkFmdGVyRmluZCA9IGFzeW5jIChyZXEsIGF1dGhEYXRhKSA9PiB7XG4gICAgaWYgKCFhdXRoRGF0YSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhZGFwdGVycyA9IE9iamVjdC5rZXlzKGF1dGhEYXRhKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGFkYXB0ZXJzLm1hcChhc3luYyBwcm92aWRlciA9PiB7XG4gICAgICAgIGNvbnN0IGF1dGhBZGFwdGVyID0gZ2V0VmFsaWRhdG9yRm9yUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgICBpZiAoIWF1dGhBZGFwdGVyKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgYWRhcHRlciwgcHJvdmlkZXJPcHRpb25zIH0gPSBhdXRoQWRhcHRlcjtcbiAgICAgICAgY29uc3QgYWZ0ZXJGaW5kID0gYWRhcHRlci5hZnRlckZpbmQ7XG4gICAgICAgIGlmIChhZnRlckZpbmQgJiYgdHlwZW9mIGFmdGVyRmluZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHJlcXVlc3RPYmplY3QgPSB7XG4gICAgICAgICAgICBpcDogcmVxLmNvbmZpZy5pcCxcbiAgICAgICAgICAgIHVzZXI6IHJlcS5hdXRoLnVzZXIsXG4gICAgICAgICAgICBtYXN0ZXI6IHJlcS5hdXRoLmlzTWFzdGVyLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYWZ0ZXJGaW5kLmNhbGwoXG4gICAgICAgICAgICBhZGFwdGVyLFxuICAgICAgICAgICAgcmVxdWVzdE9iamVjdCxcbiAgICAgICAgICAgIGF1dGhEYXRhW3Byb3ZpZGVyXSxcbiAgICAgICAgICAgIHByb3ZpZGVyT3B0aW9uc1xuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgICAgYXV0aERhdGFbcHJvdmlkZXJdID0gcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHJldHVybiBPYmplY3QuZnJlZXplKHtcbiAgICBnZXRWYWxpZGF0b3JGb3JQcm92aWRlcixcbiAgICBzZXRFbmFibGVBbm9ueW1vdXNVc2VycyxcbiAgICBydW5BZnRlckZpbmQsXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMubG9hZEF1dGhBZGFwdGVyID0gbG9hZEF1dGhBZGFwdGVyO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7QUFDQTtBQVNBO0FBQXdCO0FBUHhCLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNoQyxNQUFNQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDcEMsTUFBTUUsT0FBTyxHQUFHRixPQUFPLENBQUMsV0FBVyxDQUFDO0FBQ3BDLE1BQU1HLFFBQVEsR0FBR0gsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUN0QyxNQUFNSSxTQUFTLEdBQUdKLE9BQU8sQ0FBQyxhQUFhLENBQUM7QUFDeEMsTUFBTUssUUFBUSxHQUFHTCxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3RDLE1BQU1NLE1BQU0sR0FBR04sT0FBTyxDQUFDLFVBQVUsQ0FBQztBQUVsQyxNQUFNTyxNQUFNLEdBQUdQLE9BQU8sQ0FBQyxVQUFVLENBQUM7QUFDbEMsTUFBTVEsTUFBTSxHQUFHUixPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ2xDLE1BQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNwQyxNQUFNVSxPQUFPLEdBQUdWLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDcEMsTUFBTVcsTUFBTSxHQUFHWCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNyQyxNQUFNWSxhQUFhLEdBQUdaLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztBQUNoRCxNQUFNYSxjQUFjLEdBQUdiLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztBQUNsRCxNQUFNYyxJQUFJLEdBQUdkLE9BQU8s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
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _otpauth = require("otpauth");
|
|
8
|
+
var _cryptoUtils = require("../../cryptoUtils");
|
|
9
|
+
var _AuthAdapter = _interopRequireDefault(require("./AuthAdapter"));
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
class MFAAdapter extends _AuthAdapter.default {
|
|
12
|
+
validateOptions(opts) {
|
|
13
|
+
const validOptions = opts.options;
|
|
14
|
+
if (!Array.isArray(validOptions)) {
|
|
15
|
+
throw 'mfa.options must be an array';
|
|
16
|
+
}
|
|
17
|
+
this.sms = validOptions.includes('SMS');
|
|
18
|
+
this.totp = validOptions.includes('TOTP');
|
|
19
|
+
if (!this.sms && !this.totp) {
|
|
20
|
+
throw 'mfa.options must include SMS or TOTP';
|
|
21
|
+
}
|
|
22
|
+
const digits = opts.digits || 6;
|
|
23
|
+
const period = opts.period || 30;
|
|
24
|
+
if (typeof digits !== 'number') {
|
|
25
|
+
throw 'mfa.digits must be a number';
|
|
26
|
+
}
|
|
27
|
+
if (typeof period !== 'number') {
|
|
28
|
+
throw 'mfa.period must be a number';
|
|
29
|
+
}
|
|
30
|
+
if (digits < 4 || digits > 10) {
|
|
31
|
+
throw 'mfa.digits must be between 4 and 10';
|
|
32
|
+
}
|
|
33
|
+
if (period < 10) {
|
|
34
|
+
throw 'mfa.period must be greater than 10';
|
|
35
|
+
}
|
|
36
|
+
const sendSMS = opts.sendSMS;
|
|
37
|
+
if (this.sms && typeof sendSMS !== 'function') {
|
|
38
|
+
throw 'mfa.sendSMS callback must be defined when using SMS OTPs';
|
|
39
|
+
}
|
|
40
|
+
this.smsCallback = sendSMS;
|
|
41
|
+
this.digits = digits;
|
|
42
|
+
this.period = period;
|
|
43
|
+
this.algorithm = opts.algorithm || 'SHA1';
|
|
44
|
+
}
|
|
45
|
+
validateSetUp(mfaData) {
|
|
46
|
+
if (mfaData.mobile && this.sms) {
|
|
47
|
+
return this.setupMobileOTP(mfaData.mobile);
|
|
48
|
+
}
|
|
49
|
+
if (this.totp) {
|
|
50
|
+
return this.setupTOTP(mfaData);
|
|
51
|
+
}
|
|
52
|
+
throw 'Invalid MFA data';
|
|
53
|
+
}
|
|
54
|
+
async validateLogin(loginData, _, req) {
|
|
55
|
+
const saveResponse = {
|
|
56
|
+
doNotSave: true
|
|
57
|
+
};
|
|
58
|
+
const token = loginData.token;
|
|
59
|
+
const auth = req.original.get('authData') || {};
|
|
60
|
+
const {
|
|
61
|
+
secret,
|
|
62
|
+
recovery,
|
|
63
|
+
mobile,
|
|
64
|
+
token: saved,
|
|
65
|
+
expiry
|
|
66
|
+
} = auth.mfa || {};
|
|
67
|
+
if (this.sms && mobile) {
|
|
68
|
+
if (token === 'request') {
|
|
69
|
+
const {
|
|
70
|
+
token: sendToken,
|
|
71
|
+
expiry
|
|
72
|
+
} = await this.sendSMS(mobile);
|
|
73
|
+
auth.mfa.token = sendToken;
|
|
74
|
+
auth.mfa.expiry = expiry;
|
|
75
|
+
req.object.set('authData', auth);
|
|
76
|
+
await req.object.save(null, {
|
|
77
|
+
useMasterKey: true
|
|
78
|
+
});
|
|
79
|
+
throw 'Please enter the token';
|
|
80
|
+
}
|
|
81
|
+
if (!saved || token !== saved) {
|
|
82
|
+
throw 'Invalid MFA token 1';
|
|
83
|
+
}
|
|
84
|
+
if (new Date() > expiry) {
|
|
85
|
+
throw 'Invalid MFA token 2';
|
|
86
|
+
}
|
|
87
|
+
delete auth.mfa.token;
|
|
88
|
+
delete auth.mfa.expiry;
|
|
89
|
+
return {
|
|
90
|
+
save: auth.mfa
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (this.totp) {
|
|
94
|
+
if (typeof token !== 'string') {
|
|
95
|
+
throw 'Invalid MFA token';
|
|
96
|
+
}
|
|
97
|
+
if (!secret) {
|
|
98
|
+
return saveResponse;
|
|
99
|
+
}
|
|
100
|
+
if (recovery[0] === token || recovery[1] === token) {
|
|
101
|
+
return saveResponse;
|
|
102
|
+
}
|
|
103
|
+
const totp = new _otpauth.TOTP({
|
|
104
|
+
algorithm: this.algorithm,
|
|
105
|
+
digits: this.digits,
|
|
106
|
+
period: this.period,
|
|
107
|
+
secret: _otpauth.Secret.fromBase32(secret)
|
|
108
|
+
});
|
|
109
|
+
const valid = totp.validate({
|
|
110
|
+
token
|
|
111
|
+
});
|
|
112
|
+
if (valid === null) {
|
|
113
|
+
throw 'Invalid MFA token';
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return saveResponse;
|
|
117
|
+
}
|
|
118
|
+
async validateUpdate(authData, _, req) {
|
|
119
|
+
if (req.master) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (authData.mobile && this.sms) {
|
|
123
|
+
var _req$original$get;
|
|
124
|
+
if (!authData.token) {
|
|
125
|
+
throw 'MFA is already set up on this account';
|
|
126
|
+
}
|
|
127
|
+
return this.confirmSMSOTP(authData, ((_req$original$get = req.original.get('authData')) === null || _req$original$get === void 0 ? void 0 : _req$original$get.mfa) || {});
|
|
128
|
+
}
|
|
129
|
+
if (this.totp) {
|
|
130
|
+
await this.validateLogin({
|
|
131
|
+
token: authData.old
|
|
132
|
+
}, null, req);
|
|
133
|
+
return this.validateSetUp(authData);
|
|
134
|
+
}
|
|
135
|
+
throw 'Invalid MFA data';
|
|
136
|
+
}
|
|
137
|
+
afterFind(req, authData) {
|
|
138
|
+
if (req.master) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (this.totp && authData.secret) {
|
|
142
|
+
return {
|
|
143
|
+
status: 'enabled'
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
if (this.sms && authData.mobile) {
|
|
147
|
+
return {
|
|
148
|
+
status: 'enabled'
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
status: 'disabled'
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
policy(req, auth) {
|
|
156
|
+
if (this.sms && auth !== null && auth !== void 0 && auth.pending && Object.keys(auth).length === 1) {
|
|
157
|
+
return 'default';
|
|
158
|
+
}
|
|
159
|
+
return 'additional';
|
|
160
|
+
}
|
|
161
|
+
async setupMobileOTP(mobile) {
|
|
162
|
+
const {
|
|
163
|
+
token,
|
|
164
|
+
expiry
|
|
165
|
+
} = await this.sendSMS(mobile);
|
|
166
|
+
return {
|
|
167
|
+
save: {
|
|
168
|
+
pending: {
|
|
169
|
+
[mobile]: {
|
|
170
|
+
token,
|
|
171
|
+
expiry
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async sendSMS(mobile) {
|
|
178
|
+
if (!/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\./0-9]*$/g.test(mobile)) {
|
|
179
|
+
throw 'Invalid mobile number.';
|
|
180
|
+
}
|
|
181
|
+
let token = '';
|
|
182
|
+
while (token.length < this.digits) {
|
|
183
|
+
token += (0, _cryptoUtils.randomString)(10).replace(/\D/g, '');
|
|
184
|
+
}
|
|
185
|
+
token = token.substring(0, this.digits);
|
|
186
|
+
await Promise.resolve(this.smsCallback(token, mobile));
|
|
187
|
+
const expiry = new Date(new Date().getTime() + this.period * 1000);
|
|
188
|
+
return {
|
|
189
|
+
token,
|
|
190
|
+
expiry
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
async confirmSMSOTP(inputData, authData) {
|
|
194
|
+
var _authData$pending;
|
|
195
|
+
const {
|
|
196
|
+
mobile,
|
|
197
|
+
token
|
|
198
|
+
} = inputData;
|
|
199
|
+
if (!((_authData$pending = authData.pending) !== null && _authData$pending !== void 0 && _authData$pending[mobile])) {
|
|
200
|
+
throw 'This number is not pending';
|
|
201
|
+
}
|
|
202
|
+
const pendingData = authData.pending[mobile];
|
|
203
|
+
if (token !== pendingData.token) {
|
|
204
|
+
throw 'Invalid MFA token';
|
|
205
|
+
}
|
|
206
|
+
if (new Date() > pendingData.expiry) {
|
|
207
|
+
throw 'Invalid MFA token';
|
|
208
|
+
}
|
|
209
|
+
delete authData.pending[mobile];
|
|
210
|
+
authData.mobile = mobile;
|
|
211
|
+
return {
|
|
212
|
+
save: authData
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
setupTOTP(mfaData) {
|
|
216
|
+
const {
|
|
217
|
+
secret,
|
|
218
|
+
token
|
|
219
|
+
} = mfaData;
|
|
220
|
+
if (!secret || !token || secret.length < 20) {
|
|
221
|
+
throw 'Invalid MFA data';
|
|
222
|
+
}
|
|
223
|
+
const totp = new _otpauth.TOTP({
|
|
224
|
+
algorithm: this.algorithm,
|
|
225
|
+
digits: this.digits,
|
|
226
|
+
period: this.period,
|
|
227
|
+
secret: _otpauth.Secret.fromBase32(secret)
|
|
228
|
+
});
|
|
229
|
+
const valid = totp.validate({
|
|
230
|
+
token
|
|
231
|
+
});
|
|
232
|
+
if (valid === null) {
|
|
233
|
+
throw 'Invalid MFA token';
|
|
234
|
+
}
|
|
235
|
+
const recovery = [(0, _cryptoUtils.randomString)(30), (0, _cryptoUtils.randomString)(30)];
|
|
236
|
+
return {
|
|
237
|
+
response: {
|
|
238
|
+
recovery: recovery.join(', ')
|
|
239
|
+
},
|
|
240
|
+
save: {
|
|
241
|
+
secret,
|
|
242
|
+
recovery
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
var _default = new MFAAdapter();
|
|
248
|
+
exports.default = _default;
|
|
249
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNRkFBZGFwdGVyIiwiQXV0aEFkYXB0ZXIiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJvcHRzIiwidmFsaWRPcHRpb25zIiwib3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNtcyIsImluY2x1ZGVzIiwidG90cCIsImRpZ2l0cyIsInBlcmlvZCIsInNlbmRTTVMiLCJzbXNDYWxsYmFjayIsImFsZ29yaXRobSIsInZhbGlkYXRlU2V0VXAiLCJtZmFEYXRhIiwibW9iaWxlIiwic2V0dXBNb2JpbGVPVFAiLCJzZXR1cFRPVFAiLCJ2YWxpZGF0ZUxvZ2luIiwibG9naW5EYXRhIiwiXyIsInJlcSIsInNhdmVSZXNwb25zZSIsImRvTm90U2F2ZSIsInRva2VuIiwiYXV0aCIsIm9yaWdpbmFsIiwiZ2V0Iiwic2VjcmV0IiwicmVjb3ZlcnkiLCJzYXZlZCIsImV4cGlyeSIsIm1mYSIsInNlbmRUb2tlbiIsIm9iamVjdCIsInNldCIsInNhdmUiLCJ1c2VNYXN0ZXJLZXkiLCJEYXRlIiwiVE9UUCIsIlNlY3JldCIsImZyb21CYXNlMzIiLCJ2YWxpZCIsInZhbGlkYXRlIiwidmFsaWRhdGVVcGRhdGUiLCJhdXRoRGF0YSIsIm1hc3RlciIsImNvbmZpcm1TTVNPVFAiLCJvbGQiLCJhZnRlckZpbmQiLCJzdGF0dXMiLCJwb2xpY3kiLCJwZW5kaW5nIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsInRlc3QiLCJyYW5kb21TdHJpbmciLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwiUHJvbWlzZSIsInJlc29sdmUiLCJnZXRUaW1lIiwiaW5wdXREYXRhIiwicGVuZGluZ0RhdGEiLCJyZXNwb25zZSIsImpvaW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQWRhcHRlcnMvQXV0aC9tZmEuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVE9UUCwgU2VjcmV0IH0gZnJvbSAnb3RwYXV0aCc7XG5pbXBvcnQgeyByYW5kb21TdHJpbmcgfSBmcm9tICcuLi8uLi9jcnlwdG9VdGlscyc7XG5pbXBvcnQgQXV0aEFkYXB0ZXIgZnJvbSAnLi9BdXRoQWRhcHRlcic7XG5jbGFzcyBNRkFBZGFwdGVyIGV4dGVuZHMgQXV0aEFkYXB0ZXIge1xuICB2YWxpZGF0ZU9wdGlvbnMob3B0cykge1xuICAgIGNvbnN0IHZhbGlkT3B0aW9ucyA9IG9wdHMub3B0aW9ucztcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodmFsaWRPcHRpb25zKSkge1xuICAgICAgdGhyb3cgJ21mYS5vcHRpb25zIG11c3QgYmUgYW4gYXJyYXknO1xuICAgIH1cbiAgICB0aGlzLnNtcyA9IHZhbGlkT3B0aW9ucy5pbmNsdWRlcygnU01TJyk7XG4gICAgdGhpcy50b3RwID0gdmFsaWRPcHRpb25zLmluY2x1ZGVzKCdUT1RQJyk7XG4gICAgaWYgKCF0aGlzLnNtcyAmJiAhdGhpcy50b3RwKSB7XG4gICAgICB0aHJvdyAnbWZhLm9wdGlvbnMgbXVzdCBpbmNsdWRlIFNNUyBvciBUT1RQJztcbiAgICB9XG4gICAgY29uc3QgZGlnaXRzID0gb3B0cy5kaWdpdHMgfHwgNjtcbiAgICBjb25zdCBwZXJpb2QgPSBvcHRzLnBlcmlvZCB8fCAzMDtcbiAgICBpZiAodHlwZW9mIGRpZ2l0cyAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93ICdtZmEuZGlnaXRzIG11c3QgYmUgYSBudW1iZXInO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHBlcmlvZCAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRocm93ICdtZmEucGVyaW9kIG11c3QgYmUgYSBudW1iZXInO1xuICAgIH1cbiAgICBpZiAoZGlnaXRzIDwgNCB8fCBkaWdpdHMgPiAxMCkge1xuICAgICAgdGhyb3cgJ21mYS5kaWdpdHMgbXVzdCBiZSBiZXR3ZWVuIDQgYW5kIDEwJztcbiAgICB9XG4gICAgaWYgKHBlcmlvZCA8IDEwKSB7XG4gICAgICB0aHJvdyAnbWZhLnBlcmlvZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxMCc7XG4gICAgfVxuICAgIGNvbnN0IHNlbmRTTVMgPSBvcHRzLnNlbmRTTVM7XG4gICAgaWYgKHRoaXMuc21zICYmIHR5cGVvZiBzZW5kU01TICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyAnbWZhLnNlbmRTTVMgY2FsbGJhY2sgbXVzdCBiZSBkZWZpbmVkIHdoZW4gdXNpbmcgU01TIE9UUHMnO1xuICAgIH1cbiAgICB0aGlzLnNtc0NhbGxiYWNrID0gc2VuZFNNUztcbiAgICB0aGlzLmRpZ2l0cyA9IGRpZ2l0cztcbiAgICB0aGlzLnBlcmlvZCA9IHBlcmlvZDtcbiAgICB0aGlzLmFsZ29yaXRobSA9IG9wdHMuYWxnb3JpdGhtIHx8ICdTSEExJztcbiAgfVxuICB2YWxpZGF0ZVNldFVwKG1mYURhdGEpIHtcbiAgICBpZiAobWZhRGF0YS5tb2JpbGUgJiYgdGhpcy5zbXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldHVwTW9iaWxlT1RQKG1mYURhdGEubW9iaWxlKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0dXBUT1RQKG1mYURhdGEpO1xuICAgIH1cbiAgICB0aHJvdyAnSW52YWxpZCBNRkEgZGF0YSc7XG4gIH1cbiAgYXN5bmMgdmFsaWRhdGVMb2dpbihsb2dpbkRhdGEsIF8sIHJlcSkge1xuICAgIGNvbnN0IHNhdmVSZXNwb25zZSA9IHtcbiAgICAgIGRvTm90U2F2ZTogdHJ1ZSxcbiAgICB9O1xuICAgIGNvbnN0IHRva2VuID0gbG9naW5EYXRhLnRva2VuO1xuICAgIGNvbnN0IGF1dGggPSByZXEub3JpZ2luYWwuZ2V0KCdhdXRoRGF0YScpIHx8IHt9O1xuICAgIGNvbnN0IHsgc2VjcmV0LCByZWNvdmVyeSwgbW9iaWxlLCB0b2tlbjogc2F2ZWQsIGV4cGlyeSB9ID0gYXV0aC5tZmEgfHwge307XG4gICAgaWYgKHRoaXMuc21zICYmIG1vYmlsZSkge1xuICAgICAgaWYgKHRva2VuID09PSAncmVxdWVzdCcpIHtcbiAgICAgICAgY29uc3QgeyB0b2tlbjogc2VuZFRva2VuLCBleHBpcnkgfSA9IGF3YWl0IHRoaXMuc2VuZFNNUyhtb2JpbGUpO1xuICAgICAgICBhdXRoLm1mYS50b2tlbiA9IHNlbmRUb2tlbjtcbiAgICAgICAgYXV0aC5tZmEuZXhwaXJ5ID0gZXhwaXJ5O1xuICAgICAgICByZXEub2JqZWN0LnNldCgnYXV0aERhdGEnLCBhdXRoKTtcbiAgICAgICAgYXdhaXQgcmVxLm9iamVjdC5zYXZlKG51bGwsIHsgdXNlTWFzdGVyS2V5OiB0cnVlIH0pO1xuICAgICAgICB0aHJvdyAnUGxlYXNlIGVudGVyIHRoZSB0b2tlbic7XG4gICAgICB9XG4gICAgICBpZiAoIXNhdmVkIHx8IHRva2VuICE9PSBzYXZlZCkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4gMSc7XG4gICAgICB9XG4gICAgICBpZiAobmV3IERhdGUoKSA+IGV4cGlyeSkge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4gMic7XG4gICAgICB9XG4gICAgICBkZWxldGUgYXV0aC5tZmEudG9rZW47XG4gICAgICBkZWxldGUgYXV0aC5tZmEuZXhwaXJ5O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2F2ZTogYXV0aC5tZmEsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICBpZiAodHlwZW9mIHRva2VuICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgICAgfVxuICAgICAgaWYgKCFzZWNyZXQpIHtcbiAgICAgICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWNvdmVyeVswXSA9PT0gdG9rZW4gfHwgcmVjb3ZlcnlbMV0gPT09IHRva2VuKSB7XG4gICAgICAgIHJldHVybiBzYXZlUmVzcG9uc2U7XG4gICAgICB9XG4gICAgICBjb25zdCB0b3RwID0gbmV3IFRPVFAoe1xuICAgICAgICBhbGdvcml0aG06IHRoaXMuYWxnb3JpdGhtLFxuICAgICAgICBkaWdpdHM6IHRoaXMuZGlnaXRzLFxuICAgICAgICBwZXJpb2Q6IHRoaXMucGVyaW9kLFxuICAgICAgICBzZWNyZXQ6IFNlY3JldC5mcm9tQmFzZTMyKHNlY3JldCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHZhbGlkID0gdG90cC52YWxpZGF0ZSh7XG4gICAgICAgIHRva2VuLFxuICAgICAgfSk7XG4gICAgICBpZiAodmFsaWQgPT09IG51bGwpIHtcbiAgICAgICAgdGhyb3cgJ0ludmFsaWQgTUZBIHRva2VuJztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHNhdmVSZXNwb25zZTtcbiAgfVxuICBhc3luYyB2YWxpZGF0ZVVwZGF0ZShhdXRoRGF0YSwgXywgcmVxKSB7XG4gICAgaWYgKHJlcS5tYXN0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGF1dGhEYXRhLm1vYmlsZSAmJiB0aGlzLnNtcykge1xuICAgICAgaWYgKCFhdXRoRGF0YS50b2tlbikge1xuICAgICAgICB0aHJvdyAnTUZBIGlzIGFscmVhZHkgc2V0IHVwIG9uIHRoaXMgYWNjb3VudCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5jb25maXJtU01TT1RQKGF1dGhEYXRhLCByZXEub3JpZ2luYWwuZ2V0KCdhdXRoRGF0YScpPy5tZmEgfHwge30pO1xuICAgIH1cbiAgICBpZiAodGhpcy50b3RwKSB7XG4gICAgICBhd2FpdCB0aGlzLnZhbGlkYXRlTG9naW4oeyB0b2tlbjogYXV0aERhdGEub2xkIH0sIG51bGwsIHJlcSk7XG4gICAgICByZXR1cm4gdGhpcy52YWxpZGF0ZVNldFVwKGF1dGhEYXRhKTtcbiAgICB9XG4gICAgdGhyb3cgJ0ludmFsaWQgTUZBIGRhdGEnO1xuICB9XG4gIGFmdGVyRmluZChyZXEsIGF1dGhEYXRhKSB7XG4gICAgaWYgKHJlcS5tYXN0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMudG90cCAmJiBhdXRoRGF0YS5zZWNyZXQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ2VuYWJsZWQnLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc21zICYmIGF1dGhEYXRhLm1vYmlsZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnZW5hYmxlZCcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdHVzOiAnZGlzYWJsZWQnLFxuICAgIH07XG4gIH1cblxuICBwb2xpY3kocmVxLCBhdXRoKSB7XG4gICAgaWYgKHRoaXMuc21zICYmIGF1dGg/LnBlbmRpbmcgJiYgT2JqZWN0LmtleXMoYXV0aCkubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gJ2RlZmF1bHQnO1xuICAgIH1cbiAgICByZXR1cm4gJ2FkZGl0aW9uYWwnO1xuICB9XG5cbiAgYXN5bmMgc2V0dXBNb2JpbGVPVFAobW9iaWxlKSB7XG4gICAgY29uc3QgeyB0b2tlbiwgZXhwaXJ5IH0gPSBhd2FpdCB0aGlzLnNlbmRTTVMobW9iaWxlKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2F2ZToge1xuICAgICAgICBwZW5kaW5nOiB7XG4gICAgICAgICAgW21vYmlsZV06IHtcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICAgICAgZXhwaXJ5LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBhc3luYyBzZW5kU01TKG1vYmlsZSkge1xuICAgIGlmICghL15bK10qWyhdezAsMX1bMC05XXsxLDN9WyldezAsMX1bLVxcc1xcLi8wLTldKiQvZy50ZXN0KG1vYmlsZSkpIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIG1vYmlsZSBudW1iZXIuJztcbiAgICB9XG4gICAgbGV0IHRva2VuID0gJyc7XG4gICAgd2hpbGUgKHRva2VuLmxlbmd0aCA8IHRoaXMuZGlnaXRzKSB7XG4gICAgICB0b2tlbiArPSByYW5kb21TdHJpbmcoMTApLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gICAgfVxuICAgIHRva2VuID0gdG9rZW4uc3Vic3RyaW5nKDAsIHRoaXMuZGlnaXRzKTtcbiAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUodGhpcy5zbXNDYWxsYmFjayh0b2tlbiwgbW9iaWxlKSk7XG4gICAgY29uc3QgZXhwaXJ5ID0gbmV3IERhdGUobmV3IERhdGUoKS5nZXRUaW1lKCkgKyB0aGlzLnBlcmlvZCAqIDEwMDApO1xuICAgIHJldHVybiB7IHRva2VuLCBleHBpcnkgfTtcbiAgfVxuXG4gIGFzeW5jIGNvbmZpcm1TTVNPVFAoaW5wdXREYXRhLCBhdXRoRGF0YSkge1xuICAgIGNvbnN0IHsgbW9iaWxlLCB0b2tlbiB9ID0gaW5wdXREYXRhO1xuICAgIGlmICghYXV0aERhdGEucGVuZGluZz8uW21vYmlsZV0pIHtcbiAgICAgIHRocm93ICdUaGlzIG51bWJlciBpcyBub3QgcGVuZGluZyc7XG4gICAgfVxuICAgIGNvbnN0IHBlbmRpbmdEYXRhID0gYXV0aERhdGEucGVuZGluZ1ttb2JpbGVdO1xuICAgIGlmICh0b2tlbiAhPT0gcGVuZGluZ0RhdGEudG9rZW4pIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIE1GQSB0b2tlbic7XG4gICAgfVxuICAgIGlmIChuZXcgRGF0ZSgpID4gcGVuZGluZ0RhdGEuZXhwaXJ5KSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgIH1cbiAgICBkZWxldGUgYXV0aERhdGEucGVuZGluZ1ttb2JpbGVdO1xuICAgIGF1dGhEYXRhLm1vYmlsZSA9IG1vYmlsZTtcbiAgICByZXR1cm4ge1xuICAgICAgc2F2ZTogYXV0aERhdGEsXG4gICAgfTtcbiAgfVxuXG4gIHNldHVwVE9UUChtZmFEYXRhKSB7XG4gICAgY29uc3QgeyBzZWNyZXQsIHRva2VuIH0gPSBtZmFEYXRhO1xuICAgIGlmICghc2VjcmV0IHx8ICF0b2tlbiB8fCBzZWNyZXQubGVuZ3RoIDwgMjApIHtcbiAgICAgIHRocm93ICdJbnZhbGlkIE1GQSBkYXRhJztcbiAgICB9XG4gICAgY29uc3QgdG90cCA9IG5ldyBUT1RQKHtcbiAgICAgIGFsZ29yaXRobTogdGhpcy5hbGdvcml0aG0sXG4gICAgICBkaWdpdHM6IHRoaXMuZGlnaXRzLFxuICAgICAgcGVyaW9kOiB0aGlzLnBlcmlvZCxcbiAgICAgIHNlY3JldDogU2VjcmV0LmZyb21CYXNlMzIoc2VjcmV0KSxcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZCA9IHRvdHAudmFsaWRhdGUoe1xuICAgICAgdG9rZW4sXG4gICAgfSk7XG4gICAgaWYgKHZhbGlkID09PSBudWxsKSB7XG4gICAgICB0aHJvdyAnSW52YWxpZCBNRkEgdG9rZW4nO1xuICAgIH1cbiAgICBjb25zdCByZWNvdmVyeSA9IFtyYW5kb21TdHJpbmcoMzApLCByYW5kb21TdHJpbmcoMzApXTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzcG9uc2U6IHsgcmVjb3Zlcnk6IHJlY292ZXJ5LmpvaW4oJywgJykgfSxcbiAgICAgIHNhdmU6IHsgc2VjcmV0LCByZWNvdmVyeSB9LFxuICAgIH07XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IG5ldyBNRkFBZGFwdGVyKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUF3QztBQUN4QyxNQUFNQSxVQUFVLFNBQVNDLG9CQUFXLENBQUM7RUFDbkNDLGVBQWUsQ0FBQ0MsSUFBSSxFQUFFO0lBQ3BCLE1BQU1DLFlBQVksR0FBR0QsSUFBSSxDQUFDRSxPQUFPO0lBQ2pDLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNILFlBQVksQ0FBQyxFQUFFO01BQ2hDLE1BQU0sOEJBQThCO0lBQ3RDO0lBQ0EsSUFBSSxDQUFDSSxHQUFHLEdBQUdKLFlBQVksQ0FBQ0ssUUFBUSxDQUFDLEtBQUssQ0FBQztJQUN2QyxJQUFJLENBQUNDLElBQUksR0FBR04sWUFBWSxDQUFDSyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUNELEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQ0UsSUFBSSxFQUFFO01BQzNCLE1BQU0sc0NBQXNDO0lB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
|
|
@@ -20,6 +20,14 @@ class RedisCacheAdapter {
|
|
|
20
20
|
this.ttl = isValidTTL(ttl) ? ttl : DEFAULT_REDIS_TTL;
|
|
21
21
|
this.client = (0, _redis.createClient)(redisCtx);
|
|
22
22
|
this.queue = new _KeyPromiseQueue.KeyPromiseQueue();
|
|
23
|
+
this.client.on('error', err => {
|
|
24
|
+
_logger.default.error('RedisCacheAdapter client error', {
|
|
25
|
+
error: err
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
this.client.on('connect', () => {});
|
|
29
|
+
this.client.on('reconnecting', () => {});
|
|
30
|
+
this.client.on('ready', () => {});
|
|
23
31
|
}
|
|
24
32
|
async connect() {
|
|
25
33
|
if (this.client.isOpen) {
|
|
@@ -99,4 +107,4 @@ class RedisCacheAdapter {
|
|
|
99
107
|
exports.RedisCacheAdapter = RedisCacheAdapter;
|
|
100
108
|
var _default = RedisCacheAdapter;
|
|
101
109
|
exports.default = _default;
|
|
102
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX1JFRElTX1RUTCIsIkZMVVNIX0RCX0tFWSIsImRlYnVnIiwiYXJncyIsIm1lc3NhZ2UiLCJhcmd1bWVudHMiLCJjb25jYXQiLCJzbGljZSIsImxlbmd0aCIsImxvZ2dlciIsImFwcGx5IiwiaXNWYWxpZFRUTCIsInR0bCIsIlJlZGlzQ2FjaGVBZGFwdGVyIiwiY29uc3RydWN0b3IiLCJyZWRpc0N0eCIsImNsaWVudCIsImNyZWF0ZUNsaWVudCIsInF1ZXVlIiwiS2V5UHJvbWlzZVF1ZXVlIiwib24iLCJlcnIiLCJlcnJvciIsImNvbm5lY3QiLCJpc09wZW4iLCJoYW5kbGVTaHV0ZG93biIsInF1aXQiLCJnZXQiLCJrZXkiLCJlbnF1ZXVlIiwicmVzIiwiSlNPTiIsInBhcnNlIiwicHV0IiwidmFsdWUiLCJzdHJpbmdpZnkiLCJJbmZpbml0eSIsInNldCIsIlBYIiwiZGVsIiwiY2xlYXIiLCJzZW5kQ29tbWFuZCIsImdldEFsbEtleXMiLCJrZXlzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0NhY2hlL1JlZGlzQ2FjaGVBZGFwdGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUNsaWVudCB9IGZyb20gJ3JlZGlzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vLi4vbG9nZ2VyJztcbmltcG9ydCB7IEtleVByb21pc2VRdWV1ZSB9IGZyb20gJy4uLy4uL0tleVByb21pc2VRdWV1ZSc7XG5cbmNvbnN0IERFRkFVTFRfUkVESVNfVFRMID0gMzAgKiAxMDAwOyAvLyAzMCBzZWNvbmRzIGluIG1pbGxpc2Vjb25kc1xuY29uc3QgRkxVU0hfREJfS0VZID0gJ19fZmx1c2hfZGJfXyc7XG5cbmZ1bmN0aW9uIGRlYnVnKC4uLmFyZ3M6IGFueSkge1xuICBjb25zdCBtZXNzYWdlID0gWydSZWRpc0NhY2hlQWRhcHRlcjogJyArIGFyZ3VtZW50c1swXV0uY29uY2F0KGFyZ3Muc2xpY2UoMSwgYXJncy5sZW5ndGgpKTtcbiAgbG9nZ2VyLmRlYnVnLmFwcGx5KGxvZ2dlciwgbWVzc2FnZSk7XG59XG5cbmNvbnN0IGlzVmFsaWRUVEwgPSB0dGwgPT4gdHlwZW9mIHR0bCA9PT0gJ251bWJlcicgJiYgdHRsID4gMDtcblxuZXhwb3J0IGNsYXNzIFJlZGlzQ2FjaGVBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IocmVkaXNDdHgsIHR0bCA9IERFRkFVTFRfUkVESVNfVFRMKSB7XG4gICAgdGhpcy50dGwgPSBpc1ZhbGlkVFRMKHR0bCkgPyB0dGwgOiBERUZBVUxUX1JFRElTX1RUTDtcbiAgICB0aGlzLmNsaWVudCA9IGNyZWF0ZUNsaWVudChyZWRpc0N0eCk7XG4gICAgdGhpcy5xdWV1ZSA9IG5ldyBLZXlQcm9taXNlUXVldWUoKTtcbiAgICB0aGlzLmNsaWVudC5vbignZXJyb3InLCBlcnIgPT4geyBsb2dnZXIuZXJyb3IoJ1JlZGlzQ2FjaGVBZGFwdGVyIGNsaWVudCBlcnJvcicsIHsgZXJyb3I6IGVyciB9KSB9KTtcbiAgICB0aGlzLmNsaWVudC5vbignY29ubmVjdCcsICgpID0+IHt9KTtcbiAgICB0aGlzLmNsaWVudC5vbigncmVjb25uZWN0aW5nJywgKCkgPT4ge30pO1xuICAgIHRoaXMuY2xpZW50Lm9uKCdyZWFkeScsICgpID0+IHt9KTtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QoKSB7XG4gICAgaWYgKHRoaXMuY2xpZW50LmlzT3Blbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbGllbnQuY29ubmVjdCgpO1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlU2h1dGRvd24oKSB7XG4gICAgaWYgKCF0aGlzLmNsaWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5jbGllbnQucXVpdCgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdSZWRpc0NhY2hlQWRhcHRlciBlcnJvciBvbiBzaHV0ZG93bicsIHsgZXJyb3I6IGVyciB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXQoa2V5KSB7XG4gICAgZGVidWcoJ2dldCcsIHsga2V5IH0pO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnF1ZXVlLmVucXVldWUoa2V5KTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuY2xpZW50LmdldChrZXkpO1xuICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmVycm9yKCdSZWRpc0NhY2hlQWRhcHRlciBlcnJvciBvbiBnZXQnLCB7IGVycm9yOiBlcnIgfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHV0KGtleSwgdmFsdWUsIHR0bCA9IHRoaXMudHRsKSB7XG4gICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gICAgZGVidWcoJ3B1dCcsIHsga2V5LCB2YWx1ZSwgdHRsIH0pO1xuICAgIGF3YWl0IHRoaXMucXVldWUuZW5xdWV1ZShrZXkpO1xuICAgIGlmICh0dGwgPT09IDApIHtcbiAgICAgIC8vIHR0bCBvZiB6ZXJvIGlzIGEgbG9naWNhbCBuby1vcCwgYnV0IHJlZGlzIGNhbm5vdCBzZXQgZXhwaXJlIHRpbWUgb2YgemVyb1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0dGwgPT09IEluZmluaXR5KSB7XG4gICAgICByZXR1cm4gdGhpcy5jbGllbnQuc2V0KGtleSwgdmFsdWUpO1xuICAgIH1cblxuICAgIGlmICghaXNWYWxpZFRUTCh0dGwpKSB7XG4gICAgICB0dGwgPSB0aGlzLnR0bDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LnNldChrZXksIHZhbHVlLCB7IFBYOiB0dGwgfSk7XG4gIH1cblxuICBhc3luYyBkZWwoa2V5KSB7XG4gICAgZGVidWcoJ2RlbCcsIHsga2V5IH0pO1xuICAgIGF3YWl0IHRoaXMucXVldWUuZW5xdWV1ZShrZXkpO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5kZWwoa2V5KTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyKCkge1xuICAgIGRlYnVnKCdjbGVhcicpO1xuICAgIGF3YWl0IHRoaXMucXVldWUuZW5xdWV1ZShGTFVTSF9EQl9LRVkpO1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5zZW5kQ29tbWFuZChbJ0ZMVVNIREInXSk7XG4gIH1cblxuICAvLyBVc2VkIGZvciB0ZXN0aW5nXG4gIGdldEFsbEtleXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmtleXMoJyonKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWRpc0NhY2hlQWRhcHRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQXdEO0FBRXhELE1BQU1BLGlCQUFpQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNyQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUVuQyxTQUFTQyxLQUFLLENBQUMsR0FBR0MsSUFBUyxFQUFFO0VBQzNCLE1BQU1DLE9BQU8sR0FBRyxDQUFDLHFCQUFxQixHQUFHQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsTUFBTSxDQUFDSCxJQUFJLENBQUNJLEtBQUssQ0FBQyxDQUFDLEVBQUVKLElBQUksQ0FBQ0ssTUFBTSxDQUFDLENBQUM7RUFDekZDLGVBQU0sQ0FBQ1AsS0FBSyxDQUFDUSxLQUFLLENBQUNELGVBQU0sRUFBRUwsT0FBTyxDQUFDO0FBQ3JDO0FBRUEsTUFBTU8sVUFBVSxHQUFHQyxHQUFHLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBSUEsR0FBRyxHQUFHLENBQUM7QUFFckQsTUFBTUMsaUJBQWlCLENBQUM7RUFDN0JDLFdBQVcsQ0FBQ0MsUUFBUSxFQUFFSCxHQUFHLEdBQUdaLGlCQUFpQixFQUFFO0lBQzdDLElBQUksQ0FBQ1ksR0FBRyxHQUFHRCxVQUFVLENBQUNDLEdBQUcsQ0FBQyxHQUFH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
|