parse-server 8.2.5 → 8.3.0-alpha.10
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/README.md +2 -1
- package/lib/Adapters/Files/GridFSBucketAdapter.js +2 -2
- package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +4 -3
- package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +20 -5
- package/lib/Controllers/DatabaseController.js +2 -2
- package/lib/Controllers/HooksController.js +5 -1
- package/lib/GraphQL/ParseGraphQLServer.js +15 -1
- package/lib/Options/Definitions.js +16 -1
- package/lib/Options/docs.js +4 -1
- package/lib/Options/index.js +1 -1
- package/lib/ParseServer.js +15 -7
- package/lib/RestQuery.js +7 -5
- package/lib/RestWrite.js +9 -1
- package/lib/Routers/FunctionsRouter.js +3 -1
- package/lib/SchemaMigrations/DefinedSchemas.js +5 -2
- package/lib/SchemaMigrations/Migrations.js +1 -1
- package/lib/cloud-code/Parse.Cloud.js +7 -1
- package/lib/rest.js +76 -17
- package/lib/triggers.js +65 -28
- package/package.json +3 -3
|
@@ -183,6 +183,10 @@ function wrapToHTTPRequest(hook, key) {
|
|
|
183
183
|
return req => {
|
|
184
184
|
const jsonBody = {};
|
|
185
185
|
for (var i in req) {
|
|
186
|
+
// Parse Server config is not serializable
|
|
187
|
+
if (i === 'config') {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
186
190
|
jsonBody[i] = req[i];
|
|
187
191
|
}
|
|
188
192
|
if (req.object) {
|
|
@@ -247,4 +251,4 @@ function wrapToHTTPRequest(hook, key) {
|
|
|
247
251
|
};
|
|
248
252
|
}
|
|
249
253
|
var _default = exports.default = HooksController;
|
|
250
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0cmlnZ2VycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIlBhcnNlIiwiX3JlcXVlc3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvZ2dlciIsIl9odHRwIiwiX2h0dHBzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUiLCJIVFRQQWdlbnRzIiwiaHR0cCIsIkFnZW50Iiwia2VlcEFsaXZlIiwiaHR0cHMiLCJIb29rc0NvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFwcGxpY2F0aW9uSWQiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJ3ZWJob29rS2V5IiwiX2FwcGxpY2F0aW9uSWQiLCJfd2ViaG9va0tleSIsImRhdGFiYXNlIiwibG9hZCIsIl9nZXRIb29rcyIsInRoZW4iLCJob29rcyIsImZvckVhY2giLCJob29rIiwiYWRkSG9va1RvVHJpZ2dlcnMiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uTmFtZSIsInJlc3VsdHMiLCJnZXRGdW5jdGlvbnMiLCIkZXhpc3RzIiwiZ2V0VHJpZ2dlciIsImNsYXNzTmFtZSIsInRyaWdnZXJOYW1lIiwiZ2V0VHJpZ2dlcnMiLCJkZWxldGVGdW5jdGlvbiIsInJlbW92ZUZ1bmN0aW9uIiwiX3JlbW92ZUhvb2tzIiwiZGVsZXRlVHJpZ2dlciIsInJlbW92ZVRyaWdnZXIiLCJxdWVyeSIsImZpbmQiLCJtYXAiLCJyZXN1bHQiLCJvYmplY3RJZCIsImRlc3Ryb3kiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNhdmVIb29rIiwidXJsIiwiRXJyb3IiLCJ1cGRhdGUiLCJ1cHNlcnQiLCJ3cmFwcGVkRnVuY3Rpb24iLCJ3cmFwVG9IVFRQUmVxdWVzdCIsImFkZFRyaWdnZXIiLCJhZGRGdW5jdGlvbiIsImFkZEhvb2siLCJjcmVhdGVPclVwZGF0ZUhvb2siLCJhSG9vayIsIlR5cGVzIiwiY3JlYXRlSG9vayIsInVwZGF0ZUhvb2siLCJleHBvcnRzIiwia2V5IiwicmVxIiwianNvbkJvZHkiLCJvYmplY3QiLCJ0b0pTT04iLCJvcmlnaW5hbCIsImpzb25SZXF1ZXN0IiwiaGVhZGVycyIsImJvZHkiLCJtZXRob2QiLCJhZ2VudCIsInN0YXJ0c1dpdGgiLCJsb2dnZXIiLCJ3YXJuIiwicmVxdWVzdCIsInJlc3BvbnNlIiwiZXJyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsImVycm9yIiwiY29kZSIsInBhcnRpYWxSZXNwb25zZSIsInN1YnN0cmluZyIsInN1Y2Nlc3MiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9Ib29rc0NvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBmbG93IHdlYWsgKi9cblxuaW1wb3J0ICogYXMgdHJpZ2dlcnMgZnJvbSAnLi4vdHJpZ2dlcnMnO1xuLy8gQGZsb3ctZGlzYWJsZS1uZXh0XG5pbXBvcnQgKiBhcyBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbi8vIEBmbG93LWRpc2FibGUtbmV4dFxuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBEZWZhdWx0SG9va3NDb2xsZWN0aW9uTmFtZSA9ICdfSG9va3MnO1xuY29uc3QgSFRUUEFnZW50cyA9IHtcbiAgaHR0cDogbmV3IGh0dHAuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSksXG4gIGh0dHBzOiBuZXcgaHR0cHMuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSksXG59O1xuXG5leHBvcnQgY2xhc3MgSG9va3NDb250cm9sbGVyIHtcbiAgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgX3dlYmhvb2tLZXk6IHN0cmluZztcbiAgZGF0YWJhc2U6IGFueTtcblxuICBjb25zdHJ1Y3RvcihhcHBsaWNhdGlvbklkOiBzdHJpbmcsIGRhdGFiYXNlQ29udHJvbGxlciwgd2ViaG9va0tleSkge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBhcHBsaWNhdGlvbklkO1xuICAgIHRoaXMuX3dlYmhvb2tLZXkgPSB3ZWJob29rS2V5O1xuICAgIHRoaXMuZGF0YWJhc2UgPSBkYXRhYmFzZUNvbnRyb2xsZXI7XG4gIH1cblxuICBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcygpLnRoZW4oaG9va3MgPT4ge1xuICAgICAgaG9va3MgPSBob29rcyB8fCBbXTtcbiAgICAgIGhvb2tzLmZvckVhY2goaG9vayA9PiB7XG4gICAgICAgIHRoaXMuYWRkSG9va1RvVHJpZ2dlcnMoaG9vayk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7IGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lIH0pLnRoZW4ocmVzdWx0cyA9PiByZXN1bHRzWzBdKTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SG9va3MoeyBmdW5jdGlvbk5hbWU6IHsgJGV4aXN0czogdHJ1ZSB9IH0pO1xuICB9XG5cbiAgZ2V0VHJpZ2dlcihjbGFzc05hbWUsIHRyaWdnZXJOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgdHJpZ2dlck5hbWU6IHRyaWdnZXJOYW1lLFxuICAgIH0pLnRoZW4ocmVzdWx0cyA9PiByZXN1bHRzWzBdKTtcbiAgfVxuXG4gIGdldFRyaWdnZXJzKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7XG4gICAgICBjbGFzc05hbWU6IHsgJGV4aXN0czogdHJ1ZSB9LFxuICAgICAgdHJpZ2dlck5hbWU6IHsgJGV4aXN0czogdHJ1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRnVuY3Rpb24oZnVuY3Rpb25OYW1lKSB7XG4gICAgdHJpZ2dlcnMucmVtb3ZlRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCB0aGlzLl9hcHBsaWNhdGlvbklkKTtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZlSG9va3MoeyBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSB9KTtcbiAgfVxuXG4gIGRlbGV0ZVRyaWdnZXIoY2xhc3NOYW1lLCB0cmlnZ2VyTmFtZSkge1xuICAgIHRyaWdnZXJzLnJlbW92ZVRyaWdnZXIodHJpZ2dlck5hbWUsIGNsYXNzTmFtZSwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92ZUhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgdHJpZ2dlck5hbWU6IHRyaWdnZXJOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldEhvb2tzKHF1ZXJ5ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5maW5kKERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lLCBxdWVyeSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIHJldHVybiByZXN1bHRzLm1hcChyZXN1bHQgPT4ge1xuICAgICAgICBkZWxldGUgcmVzdWx0Lm9iamVjdElkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVtb3ZlSG9va3MocXVlcnkpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5kZXN0cm95KERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lLCBxdWVyeSkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVIb29rKGhvb2spIHtcbiAgICB2YXIgcXVlcnk7XG4gICAgaWYgKGhvb2suZnVuY3Rpb25OYW1lICYmIGhvb2sudXJsKSB7XG4gICAgICBxdWVyeSA9IHsgZnVuY3Rpb25OYW1lOiBob29rLmZ1bmN0aW9uTmFtZSB9O1xuICAgIH0gZWxzZSBpZiAoaG9vay50cmlnZ2VyTmFtZSAmJiBob29rLmNsYXNzTmFtZSAmJiBob29rLnVybCkge1xuICAgICAgcXVlcnkgPSB7IGNsYXNzTmFtZTogaG9vay5jbGFzc05hbWUsIHRyaWdnZXJOYW1lOiBob29rLnRyaWdnZXJOYW1lIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsICdpbnZhbGlkIGhvb2sgZGVjbGFyYXRpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VcbiAgICAgIC51cGRhdGUoRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUsIHF1ZXJ5LCBob29rLCB7IHVwc2VydDogdHJ1ZSB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGhvb2spO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRIb29rVG9UcmlnZ2Vycyhob29rKSB7XG4gICAgdmFyIHdyYXBwZWRGdW5jdGlvbiA9IHdyYXBUb0hUVFBSZXF1ZXN0KGhvb2ssIHRoaXMuX3dlYmhvb2tLZXkpO1xuICAgIHdyYXBwZWRGdW5jdGlvbi51cmwgPSBob29rLnVybDtcbiAgICBpZiAoaG9vay5jbGFzc05hbWUpIHtcbiAgICAgIHRyaWdnZXJzLmFkZFRyaWdnZXIoaG9vay50cmlnZ2VyTmFtZSwgaG9vay5jbGFzc05hbWUsIHdyYXBwZWRGdW5jdGlvbiwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJzLmFkZEZ1bmN0aW9uKGhvb2suZnVuY3Rpb25OYW1lLCB3cmFwcGVkRnVuY3Rpb24sIG51bGwsIHRoaXMuX2FwcGxpY2F0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEhvb2soaG9vaykge1xuICAgIHRoaXMuYWRkSG9va1RvVHJpZ2dlcnMoaG9vayk7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZUhvb2soaG9vayk7XG4gIH1cblxuICBjcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spIHtcbiAgICB2YXIgaG9vaztcbiAgICBpZiAoYUhvb2sgJiYgYUhvb2suZnVuY3Rpb25OYW1lICYmIGFIb29rLnVybCkge1xuICAgICAgaG9vayA9IHt9O1xuICAgICAgaG9vay5mdW5jdGlvbk5hbWUgPSBhSG9vay5mdW5jdGlvbk5hbWU7XG4gICAgICBob29rLnVybCA9IGFIb29rLnVybDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYUhvb2sgJiZcbiAgICAgIGFIb29rLmNsYXNzTmFtZSAmJlxuICAgICAgYUhvb2sudXJsICYmXG4gICAgICBhSG9vay50cmlnZ2VyTmFtZSAmJlxuICAgICAgdHJpZ2dlcnMuVHlwZXNbYUhvb2sudHJpZ2dlck5hbWVdXG4gICAgKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmNsYXNzTmFtZSA9IGFIb29rLmNsYXNzTmFtZTtcbiAgICAgIGhvb2sudXJsID0gYUhvb2sudXJsO1xuICAgICAgaG9vay50cmlnZ2VyTmFtZSA9IGFIb29rLnRyaWdnZXJOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkSG9vayhob29rKTtcbiAgfVxuXG4gIGNyZWF0ZUhvb2soYUhvb2spIHtcbiAgICBpZiAoYUhvb2suZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGdW5jdGlvbihhSG9vay5mdW5jdGlvbk5hbWUpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBmdW5jdGlvbiBuYW1lOiAke2FIb29rLmZ1bmN0aW9uTmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGFIb29rLmNsYXNzTmFtZSAmJiBhSG9vay50cmlnZ2VyTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJpZ2dlcihhSG9vay5jbGFzc05hbWUsIGFIb29rLnRyaWdnZXJOYW1lKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgICAxNDMsXG4gICAgICAgICAgICBgY2xhc3MgJHthSG9vay5jbGFzc05hbWV9IGFscmVhZHkgaGFzIHRyaWdnZXIgJHthSG9vay50cmlnZ2VyTmFtZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgJ2ludmFsaWQgaG9vayBkZWNsYXJhdGlvbicpO1xuICB9XG5cbiAgdXBkYXRlSG9vayhhSG9vaykge1xuICAgIGlmIChhSG9vay5mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZ1bmN0aW9uKGFIb29rLmZ1bmN0aW9uTmFtZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JVcGRhdGVIb29rKGFIb29rKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7YUhvb2suZnVuY3Rpb25OYW1lfSBpcyBkZWZpbmVkYCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGFIb29rLmNsYXNzTmFtZSAmJiBhSG9vay50cmlnZ2VyTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJpZ2dlcihhSG9vay5jbGFzc05hbWUsIGFIb29rLnRyaWdnZXJOYW1lKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke2FIb29rLmNsYXNzTmFtZX0gZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcFRvSFRUUFJlcXVlc3QoaG9vaywga2V5KSB7XG4gIHJldHVybiByZXEgPT4ge1xuICAgIGNvbnN0IGpzb25Cb2R5ID0ge307XG4gICAgZm9yICh2YXIgaSBpbiByZXEpIHtcbiAgICAgIGpzb25Cb2R5W2ldID0gcmVxW2ldO1xuICAgIH1cbiAgICBpZiAocmVxLm9iamVjdCkge1xuICAgICAganNvbkJvZHkub2JqZWN0ID0gcmVxLm9iamVjdC50b0pTT04oKTtcbiAgICAgIGpzb25Cb2R5Lm9iamVjdC5jbGFzc05hbWUgPSByZXEub2JqZWN0LmNsYXNzTmFtZTtcbiAgICB9XG4gICAgaWYgKHJlcS5vcmlnaW5hbCkge1xuICAgICAganNvbkJvZHkub3JpZ2luYWwgPSByZXEub3JpZ2luYWwudG9KU09OKCk7XG4gICAgICBqc29uQm9keS5vcmlnaW5hbC5jbGFzc05hbWUgPSByZXEub3JpZ2luYWwuY2xhc3NOYW1lO1xuICAgIH1cbiAgICBjb25zdCBqc29uUmVxdWVzdDogYW55ID0ge1xuICAgICAgdXJsOiBob29rLnVybCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBib2R5OiBqc29uQm9keSxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH07XG5cbiAgICBjb25zdCBhZ2VudCA9IGhvb2sudXJsLnN0YXJ0c1dpdGgoJ2h0dHBzJykgPyBIVFRQQWdlbnRzWydodHRwcyddIDogSFRUUEFnZW50c1snaHR0cCddO1xuICAgIGpzb25SZXF1ZXN0LmFnZW50ID0gYWdlbnQ7XG5cbiAgICBpZiAoa2V5KSB7XG4gICAgICBqc29uUmVxdWVzdC5oZWFkZXJzWydYLVBhcnNlLVdlYmhvb2stS2V5J10gPSBrZXk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci53YXJuKCdNYWtpbmcgb3V0Z29pbmcgd2ViaG9vayByZXF1ZXN0IHdpdGhvdXQgd2ViaG9va0tleSBiZWluZyBzZXQhJyk7XG4gICAgfVxuICAgIHJldHVybiByZXF1ZXN0KGpzb25SZXF1ZXN0KS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGxldCBlcnI7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgbGV0IGJvZHkgPSByZXNwb25zZS5kYXRhO1xuICAgICAgaWYgKGJvZHkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBib2R5ID0gSlNPTi5wYXJzZShib2R5KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBlcnIgPSB7XG4gICAgICAgICAgICAgIGVycm9yOiAnTWFsZm9ybWVkIHJlc3BvbnNlJyxcbiAgICAgICAgICAgICAgY29kZTogLTEsXG4gICAgICAgICAgICAgIHBhcnRpYWxSZXNwb25zZTogYm9keS5zdWJzdHJpbmcoMCwgMTAwKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZXJyKSB7XG4gICAgICAgICAgcmVzdWx0ID0gYm9keS5zdWNjZXNzO1xuICAgICAgICAgIGVyciA9IGJvZHkuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfSBlbHNlIGlmIChob29rLnRyaWdnZXJOYW1lID09PSAnYmVmb3JlU2F2ZScpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgZGVsZXRlIHJlc3VsdC5jcmVhdGVkQXQ7XG4gICAgICAgICAgZGVsZXRlIHJlc3VsdC51cGRhdGVkQXQ7XG4gICAgICAgICAgZGVsZXRlIHJlc3VsdC5jbGFzc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgb2JqZWN0OiByZXN1bHQgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhvb2tzQ29udHJvbGxlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsSUFBQUEsUUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsS0FBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsUUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksT0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBRixzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBSCxzQkFBQSxDQUFBSCxPQUFBO0FBQTBCLFNBQUFHLHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQVIsd0JBQUFRLENBQUEsRUFBQUcsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FB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W119
|
|
254
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0cmlnZ2VycyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsIlBhcnNlIiwiX3JlcXVlc3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2xvZ2dlciIsIl9odHRwIiwiX2h0dHBzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidCIsIldlYWtNYXAiLCJyIiwibiIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUiLCJIVFRQQWdlbnRzIiwiaHR0cCIsIkFnZW50Iiwia2VlcEFsaXZlIiwiaHR0cHMiLCJIb29rc0NvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFwcGxpY2F0aW9uSWQiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJ3ZWJob29rS2V5IiwiX2FwcGxpY2F0aW9uSWQiLCJfd2ViaG9va0tleSIsImRhdGFiYXNlIiwibG9hZCIsIl9nZXRIb29rcyIsInRoZW4iLCJob29rcyIsImZvckVhY2giLCJob29rIiwiYWRkSG9va1RvVHJpZ2dlcnMiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uTmFtZSIsInJlc3VsdHMiLCJnZXRGdW5jdGlvbnMiLCIkZXhpc3RzIiwiZ2V0VHJpZ2dlciIsImNsYXNzTmFtZSIsInRyaWdnZXJOYW1lIiwiZ2V0VHJpZ2dlcnMiLCJkZWxldGVGdW5jdGlvbiIsInJlbW92ZUZ1bmN0aW9uIiwiX3JlbW92ZUhvb2tzIiwiZGVsZXRlVHJpZ2dlciIsInJlbW92ZVRyaWdnZXIiLCJxdWVyeSIsImZpbmQiLCJtYXAiLCJyZXN1bHQiLCJvYmplY3RJZCIsImRlc3Ryb3kiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNhdmVIb29rIiwidXJsIiwiRXJyb3IiLCJ1cGRhdGUiLCJ1cHNlcnQiLCJ3cmFwcGVkRnVuY3Rpb24iLCJ3cmFwVG9IVFRQUmVxdWVzdCIsImFkZFRyaWdnZXIiLCJhZGRGdW5jdGlvbiIsImFkZEhvb2siLCJjcmVhdGVPclVwZGF0ZUhvb2siLCJhSG9vayIsIlR5cGVzIiwiY3JlYXRlSG9vayIsInVwZGF0ZUhvb2siLCJleHBvcnRzIiwia2V5IiwicmVxIiwianNvbkJvZHkiLCJvYmplY3QiLCJ0b0pTT04iLCJvcmlnaW5hbCIsImpzb25SZXF1ZXN0IiwiaGVhZGVycyIsImJvZHkiLCJtZXRob2QiLCJhZ2VudCIsInN0YXJ0c1dpdGgiLCJsb2dnZXIiLCJ3YXJuIiwicmVxdWVzdCIsInJlc3BvbnNlIiwiZXJyIiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsImVycm9yIiwiY29kZSIsInBhcnRpYWxSZXNwb25zZSIsInN1YnN0cmluZyIsInN1Y2Nlc3MiLCJjcmVhdGVkQXQiLCJ1cGRhdGVkQXQiLCJfZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db250cm9sbGVycy9Ib29rc0NvbnRyb2xsZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBmbG93IHdlYWsgKi9cblxuaW1wb3J0ICogYXMgdHJpZ2dlcnMgZnJvbSAnLi4vdHJpZ2dlcnMnO1xuLy8gQGZsb3ctZGlzYWJsZS1uZXh0XG5pbXBvcnQgKiBhcyBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbi8vIEBmbG93LWRpc2FibGUtbmV4dFxuaW1wb3J0IHJlcXVlc3QgZnJvbSAnLi4vcmVxdWVzdCc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgaHR0cHMgZnJvbSAnaHR0cHMnO1xuXG5jb25zdCBEZWZhdWx0SG9va3NDb2xsZWN0aW9uTmFtZSA9ICdfSG9va3MnO1xuY29uc3QgSFRUUEFnZW50cyA9IHtcbiAgaHR0cDogbmV3IGh0dHAuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSksXG4gIGh0dHBzOiBuZXcgaHR0cHMuQWdlbnQoeyBrZWVwQWxpdmU6IHRydWUgfSksXG59O1xuXG5leHBvcnQgY2xhc3MgSG9va3NDb250cm9sbGVyIHtcbiAgX2FwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgX3dlYmhvb2tLZXk6IHN0cmluZztcbiAgZGF0YWJhc2U6IGFueTtcblxuICBjb25zdHJ1Y3RvcihhcHBsaWNhdGlvbklkOiBzdHJpbmcsIGRhdGFiYXNlQ29udHJvbGxlciwgd2ViaG9va0tleSkge1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uSWQgPSBhcHBsaWNhdGlvbklkO1xuICAgIHRoaXMuX3dlYmhvb2tLZXkgPSB3ZWJob29rS2V5O1xuICAgIHRoaXMuZGF0YWJhc2UgPSBkYXRhYmFzZUNvbnRyb2xsZXI7XG4gIH1cblxuICBsb2FkKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcygpLnRoZW4oaG9va3MgPT4ge1xuICAgICAgaG9va3MgPSBob29rcyB8fCBbXTtcbiAgICAgIGhvb2tzLmZvckVhY2goaG9vayA9PiB7XG4gICAgICAgIHRoaXMuYWRkSG9va1RvVHJpZ2dlcnMoaG9vayk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7IGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25OYW1lIH0pLnRoZW4ocmVzdWx0cyA9PiByZXN1bHRzWzBdKTtcbiAgfVxuXG4gIGdldEZ1bmN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SG9va3MoeyBmdW5jdGlvbk5hbWU6IHsgJGV4aXN0czogdHJ1ZSB9IH0pO1xuICB9XG5cbiAgZ2V0VHJpZ2dlcihjbGFzc05hbWUsIHRyaWdnZXJOYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldEhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgdHJpZ2dlck5hbWU6IHRyaWdnZXJOYW1lLFxuICAgIH0pLnRoZW4ocmVzdWx0cyA9PiByZXN1bHRzWzBdKTtcbiAgfVxuXG4gIGdldFRyaWdnZXJzKCkge1xuICAgIHJldHVybiB0aGlzLl9nZXRIb29rcyh7XG4gICAgICBjbGFzc05hbWU6IHsgJGV4aXN0czogdHJ1ZSB9LFxuICAgICAgdHJpZ2dlck5hbWU6IHsgJGV4aXN0czogdHJ1ZSB9LFxuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlRnVuY3Rpb24oZnVuY3Rpb25OYW1lKSB7XG4gICAgdHJpZ2dlcnMucmVtb3ZlRnVuY3Rpb24oZnVuY3Rpb25OYW1lLCB0aGlzLl9hcHBsaWNhdGlvbklkKTtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZlSG9va3MoeyBmdW5jdGlvbk5hbWU6IGZ1bmN0aW9uTmFtZSB9KTtcbiAgfVxuXG4gIGRlbGV0ZVRyaWdnZXIoY2xhc3NOYW1lLCB0cmlnZ2VyTmFtZSkge1xuICAgIHRyaWdnZXJzLnJlbW92ZVRyaWdnZXIodHJpZ2dlck5hbWUsIGNsYXNzTmFtZSwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgcmV0dXJuIHRoaXMuX3JlbW92ZUhvb2tzKHtcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgdHJpZ2dlck5hbWU6IHRyaWdnZXJOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgX2dldEhvb2tzKHF1ZXJ5ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5maW5kKERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lLCBxdWVyeSkudGhlbihyZXN1bHRzID0+IHtcbiAgICAgIHJldHVybiByZXN1bHRzLm1hcChyZXN1bHQgPT4ge1xuICAgICAgICBkZWxldGUgcmVzdWx0Lm9iamVjdElkO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBfcmVtb3ZlSG9va3MocXVlcnkpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhYmFzZS5kZXN0cm95KERlZmF1bHRIb29rc0NvbGxlY3Rpb25OYW1lLCBxdWVyeSkudGhlbigoKSA9PiB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVIb29rKGhvb2spIHtcbiAgICB2YXIgcXVlcnk7XG4gICAgaWYgKGhvb2suZnVuY3Rpb25OYW1lICYmIGhvb2sudXJsKSB7XG4gICAgICBxdWVyeSA9IHsgZnVuY3Rpb25OYW1lOiBob29rLmZ1bmN0aW9uTmFtZSB9O1xuICAgIH0gZWxzZSBpZiAoaG9vay50cmlnZ2VyTmFtZSAmJiBob29rLmNsYXNzTmFtZSAmJiBob29rLnVybCkge1xuICAgICAgcXVlcnkgPSB7IGNsYXNzTmFtZTogaG9vay5jbGFzc05hbWUsIHRyaWdnZXJOYW1lOiBob29rLnRyaWdnZXJOYW1lIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsICdpbnZhbGlkIGhvb2sgZGVjbGFyYXRpb24nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZGF0YWJhc2VcbiAgICAgIC51cGRhdGUoRGVmYXVsdEhvb2tzQ29sbGVjdGlvbk5hbWUsIHF1ZXJ5LCBob29rLCB7IHVwc2VydDogdHJ1ZSB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGhvb2spO1xuICAgICAgfSk7XG4gIH1cblxuICBhZGRIb29rVG9UcmlnZ2Vycyhob29rKSB7XG4gICAgdmFyIHdyYXBwZWRGdW5jdGlvbiA9IHdyYXBUb0hUVFBSZXF1ZXN0KGhvb2ssIHRoaXMuX3dlYmhvb2tLZXkpO1xuICAgIHdyYXBwZWRGdW5jdGlvbi51cmwgPSBob29rLnVybDtcbiAgICBpZiAoaG9vay5jbGFzc05hbWUpIHtcbiAgICAgIHRyaWdnZXJzLmFkZFRyaWdnZXIoaG9vay50cmlnZ2VyTmFtZSwgaG9vay5jbGFzc05hbWUsIHdyYXBwZWRGdW5jdGlvbiwgdGhpcy5fYXBwbGljYXRpb25JZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyaWdnZXJzLmFkZEZ1bmN0aW9uKGhvb2suZnVuY3Rpb25OYW1lLCB3cmFwcGVkRnVuY3Rpb24sIG51bGwsIHRoaXMuX2FwcGxpY2F0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEhvb2soaG9vaykge1xuICAgIHRoaXMuYWRkSG9va1RvVHJpZ2dlcnMoaG9vayk7XG4gICAgcmV0dXJuIHRoaXMuc2F2ZUhvb2soaG9vayk7XG4gIH1cblxuICBjcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spIHtcbiAgICB2YXIgaG9vaztcbiAgICBpZiAoYUhvb2sgJiYgYUhvb2suZnVuY3Rpb25OYW1lICYmIGFIb29rLnVybCkge1xuICAgICAgaG9vayA9IHt9O1xuICAgICAgaG9vay5mdW5jdGlvbk5hbWUgPSBhSG9vay5mdW5jdGlvbk5hbWU7XG4gICAgICBob29rLnVybCA9IGFIb29rLnVybDtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgYUhvb2sgJiZcbiAgICAgIGFIb29rLmNsYXNzTmFtZSAmJlxuICAgICAgYUhvb2sudXJsICYmXG4gICAgICBhSG9vay50cmlnZ2VyTmFtZSAmJlxuICAgICAgdHJpZ2dlcnMuVHlwZXNbYUhvb2sudHJpZ2dlck5hbWVdXG4gICAgKSB7XG4gICAgICBob29rID0ge307XG4gICAgICBob29rLmNsYXNzTmFtZSA9IGFIb29rLmNsYXNzTmFtZTtcbiAgICAgIGhvb2sudXJsID0gYUhvb2sudXJsO1xuICAgICAgaG9vay50cmlnZ2VyTmFtZSA9IGFIb29rLnRyaWdnZXJOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRkSG9vayhob29rKTtcbiAgfVxuXG4gIGNyZWF0ZUhvb2soYUhvb2spIHtcbiAgICBpZiAoYUhvb2suZnVuY3Rpb25OYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRGdW5jdGlvbihhSG9vay5mdW5jdGlvbk5hbWUpLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBmdW5jdGlvbiBuYW1lOiAke2FIb29rLmZ1bmN0aW9uTmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGFIb29rLmNsYXNzTmFtZSAmJiBhSG9vay50cmlnZ2VyTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJpZ2dlcihhSG9vay5jbGFzc05hbWUsIGFIb29rLnRyaWdnZXJOYW1lKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICAgICAgICAxNDMsXG4gICAgICAgICAgICBgY2xhc3MgJHthSG9vay5jbGFzc05hbWV9IGFscmVhZHkgaGFzIHRyaWdnZXIgJHthSG9vay50cmlnZ2VyTmFtZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDE0MywgJ2ludmFsaWQgaG9vayBkZWNsYXJhdGlvbicpO1xuICB9XG5cbiAgdXBkYXRlSG9vayhhSG9vaykge1xuICAgIGlmIChhSG9vay5mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldEZ1bmN0aW9uKGFIb29rLmZ1bmN0aW9uTmFtZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlT3JVcGRhdGVIb29rKGFIb29rKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCBgbm8gZnVuY3Rpb24gbmFtZWQ6ICR7YUhvb2suZnVuY3Rpb25OYW1lfSBpcyBkZWZpbmVkYCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGFIb29rLmNsYXNzTmFtZSAmJiBhSG9vay50cmlnZ2VyTmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VHJpZ2dlcihhSG9vay5jbGFzc05hbWUsIGFIb29rLnRyaWdnZXJOYW1lKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVPclVwZGF0ZUhvb2soYUhvb2spO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxNDMsIGBjbGFzcyAke2FIb29rLmNsYXNzTmFtZX0gZG9lcyBub3QgZXhpc3RgKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoMTQzLCAnaW52YWxpZCBob29rIGRlY2xhcmF0aW9uJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gd3JhcFRvSFRUUFJlcXVlc3QoaG9vaywga2V5KSB7XG4gIHJldHVybiByZXEgPT4ge1xuICAgIGNvbnN0IGpzb25Cb2R5ID0ge307XG4gICAgZm9yICh2YXIgaSBpbiByZXEpIHtcbiAgICAgIC8vIFBhcnNlIFNlcnZlciBjb25maWcgaXMgbm90IHNlcmlhbGl6YWJsZVxuICAgICAgaWYgKGkgPT09ICdjb25maWcnKSB7IGNvbnRpbnVlOyB9XG4gICAgICBqc29uQm9keVtpXSA9IHJlcVtpXTtcbiAgICB9XG4gICAgaWYgKHJlcS5vYmplY3QpIHtcbiAgICAgIGpzb25Cb2R5Lm9iamVjdCA9IHJlcS5vYmplY3QudG9KU09OKCk7XG4gICAgICBqc29uQm9keS5vYmplY3QuY2xhc3NOYW1lID0gcmVxLm9iamVjdC5jbGFzc05hbWU7XG4gICAgfVxuICAgIGlmIChyZXEub3JpZ2luYWwpIHtcbiAgICAgIGpzb25Cb2R5Lm9yaWdpbmFsID0gcmVxLm9yaWdpbmFsLnRvSlNPTigpO1xuICAgICAganNvbkJvZHkub3JpZ2luYWwuY2xhc3NOYW1lID0gcmVxLm9yaWdpbmFsLmNsYXNzTmFtZTtcbiAgICB9XG4gICAgY29uc3QganNvblJlcXVlc3Q6IGFueSA9IHtcbiAgICAgIHVybDogaG9vay51cmwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICB9LFxuICAgICAgYm9keToganNvbkJvZHksXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9O1xuXG4gICAgY29uc3QgYWdlbnQgPSBob29rLnVybC5zdGFydHNXaXRoKCdodHRwcycpID8gSFRUUEFnZW50c1snaHR0cHMnXSA6IEhUVFBBZ2VudHNbJ2h0dHAnXTtcbiAgICBqc29uUmVxdWVzdC5hZ2VudCA9IGFnZW50O1xuXG4gICAgaWYgKGtleSkge1xuICAgICAganNvblJlcXVlc3QuaGVhZGVyc1snWC1QYXJzZS1XZWJob29rLUtleSddID0ga2V5O1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIud2FybignTWFraW5nIG91dGdvaW5nIHdlYmhvb2sgcmVxdWVzdCB3aXRob3V0IHdlYmhvb2tLZXkgYmVpbmcgc2V0IScpO1xuICAgIH1cbiAgICByZXR1cm4gcmVxdWVzdChqc29uUmVxdWVzdCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBsZXQgZXJyO1xuICAgICAgbGV0IHJlc3VsdDtcbiAgICAgIGxldCBib2R5ID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGlmIChib2R5KSB7XG4gICAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYm9keSA9IEpTT04ucGFyc2UoYm9keSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZXJyID0ge1xuICAgICAgICAgICAgICBlcnJvcjogJ01hbGZvcm1lZCByZXNwb25zZScsXG4gICAgICAgICAgICAgIGNvZGU6IC0xLFxuICAgICAgICAgICAgICBwYXJ0aWFsUmVzcG9uc2U6IGJvZHkuc3Vic3RyaW5nKDAsIDEwMCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgIHJlc3VsdCA9IGJvZHkuc3VjY2VzcztcbiAgICAgICAgICBlcnIgPSBib2R5LmVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH0gZWxzZSBpZiAoaG9vay50cmlnZ2VyTmFtZSA9PT0gJ2JlZm9yZVNhdmUnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGRlbGV0ZSByZXN1bHQuY3JlYXRlZEF0O1xuICAgICAgICAgIGRlbGV0ZSByZXN1bHQudXBkYXRlZEF0O1xuICAgICAgICAgIGRlbGV0ZSByZXN1bHQuY2xhc3NOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IG9iamVjdDogcmVzdWx0IH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBIb29rc0NvbnRyb2xsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLElBQUFBLFFBQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLEtBQUEsR0FBQUYsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFJLE9BQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQUYsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUEwQixTQUFBRyx1QkFBQUksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9B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
|
|
@@ -120,6 +120,19 @@ class ParseGraphQLServer {
|
|
|
120
120
|
};
|
|
121
121
|
return Number(maxUploadSize.slice(0, -2)) * Math.pow(1024, unitMap[maxUploadSize.slice(-2).toLowerCase()]);
|
|
122
122
|
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* @static
|
|
126
|
+
* Allow developers to customize each request with inversion of control/dependency injection
|
|
127
|
+
*/
|
|
128
|
+
applyRequestContextMiddleware(api, options) {
|
|
129
|
+
if (options.requestContextMiddleware) {
|
|
130
|
+
if (typeof options.requestContextMiddleware !== 'function') {
|
|
131
|
+
throw new Error('requestContextMiddleware must be a function');
|
|
132
|
+
}
|
|
133
|
+
api.use(this.config.graphQLPath, options.requestContextMiddleware);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
123
136
|
applyGraphQL(app) {
|
|
124
137
|
if (!app || !app.use) {
|
|
125
138
|
(0, _requiredParameter.default)('You must provide an Express.js app instance!');
|
|
@@ -127,6 +140,7 @@ class ParseGraphQLServer {
|
|
|
127
140
|
app.use(this.config.graphQLPath, (0, _cors.default)());
|
|
128
141
|
app.use(this.config.graphQLPath, _middlewares.handleParseHeaders);
|
|
129
142
|
app.use(this.config.graphQLPath, _middlewares.handleParseSession);
|
|
143
|
+
this.applyRequestContextMiddleware(app, this.parseServer.config);
|
|
130
144
|
app.use(this.config.graphQLPath, _middlewares.handleParseErrors);
|
|
131
145
|
app.use(this.config.graphQLPath, (0, _graphqlUploadExpress.default)({
|
|
132
146
|
maxFileSize: this._transformMaxUploadSizeToBytes(this.parseServer.config.maxUploadSize || '20mb')
|
|
@@ -180,4 +194,4 @@ class ParseGraphQLServer {
|
|
|
180
194
|
}
|
|
181
195
|
}
|
|
182
196
|
exports.ParseGraphQLServer = ParseGraphQLServer;
|
|
183
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ycyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxVcGxvYWRFeHByZXNzIiwiX3NlcnZlciIsIl9leHByZXNzIiwiX2Rpc2FibGVkIiwiX2V4cHJlc3MyIiwiX2dyYXBocWwiLCJfc3Vic2NyaXB0aW9uc1RyYW5zcG9ydFdzIiwiX21pZGRsZXdhcmVzIiwiX3JlcXVpcmVkUGFyYW1ldGVyIiwiX2xvZ2dlciIsIl9QYXJzZUdyYXBoUUxTY2hlbWEiLCJfUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiSW50cm9zcGVjdGlvbkNvbnRyb2xQbHVnaW4iLCJwdWJsaWNJbnRyb3NwZWN0aW9uIiwicmVxdWVzdERpZFN0YXJ0IiwicmVxdWVzdENvbnRleHQiLCJkaWRSZXNvbHZlT3BlcmF0aW9uIiwiaXNNYXN0ZXJPck1haW50ZW5hbmNlIiwiY29udGV4dFZhbHVlIiwiYXV0aCIsImlzTWFzdGVyIiwiaXNNYWludGVuYW5jZSIsImlzSW50cm9zcGVjdGlvblF1ZXJ5IiwicmVxdWVzdCIsInF1ZXJ5IiwiaW5jbHVkZXMiLCJHcmFwaFFMRXJyb3IiLCJleHRlbnNpb25zIiwiaHR0cCIsInN0YXR1cyIsIlBhcnNlR3JhcGhRTFNlcnZlciIsImNvbnN0cnVjdG9yIiwicGFyc2VTZXJ2ZXIiLCJjb25maWciLCJyZXF1aXJlZFBhcmFtZXRlciIsImdyYXBoUUxQYXRoIiwicGFyc2VHcmFwaFFMQ29udHJvbGxlciIsImxvZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJkZWZhdWx0TG9nZ2VyIiwicGFyc2VHcmFwaFFMU2NoZW1hIiwiUGFyc2VHcmFwaFFMU2NoZW1hIiwiZGF0YWJhc2VDb250cm9sbGVyIiwiZ3JhcGhRTEN1c3RvbVR5cGVEZWZzIiwiYXBwSWQiLCJfZ2V0R3JhcGhRTE9wdGlvbnMiLCJzY2hlbWEiLCJsb2FkIiwiY29udGV4dCIsInJlcSIsInJlcyIsImluZm8iLCJlcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJfZ2V0U2VydmVyIiwic2NoZW1hUmVmIiwiZ3JhcGhRTFNjaGVtYSIsIm5ld1NjaGVtYVJlZiIsImFwb2xsbyIsIkFwb2xsb1NlcnZlciIsImNzcmZQcmV2ZW50aW9uIiwicmVxdWVzdEhlYWRlcnMiLCJpbnRyb3NwZWN0aW9uIiwiZ3JhcGhRTFB1YmxpY0ludHJvc3BlY3Rpb24iLCJwbHVnaW5zIiwiQXBvbGxvU2VydmVyUGx1Z2luQ2FjaGVDb250cm9sRGlzYWJsZWQiLCJzdGFydCIsImV4cHJlc3NNaWRkbGV3YXJlIiwiX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzIiwibWF4VXBsb2FkU2l6ZSIsInVuaXRNYXAiLCJrYiIsIm1iIiwiZ2IiLCJOdW1iZXIiLCJzbGljZSIsIk1hdGgiLCJwb3ciLCJ0b0xvd2VyQ2FzZSIsImFwcGx5R3JhcGhRTCIsImFwcCIsInVzZSIsImNvcnNNaWRkbGV3YXJlIiwiaGFuZGxlUGFyc2VIZWFkZXJzIiwiaGFuZGxlUGFyc2VTZXNzaW9uIiwiaGFuZGxlUGFyc2VFcnJvcnMiLCJncmFwaHFsVXBsb2FkRXhwcmVzcyIsIm1heEZpbGVTaXplIiwiZXhwcmVzcyIsImpzb24iLCJuZXh0Iiwic2VydmVyIiwiYXBwbHlQbGF5Z3JvdW5kIiwicGxheWdyb3VuZFBhdGgiLCJfcmVxIiwic2V0SGVhZGVyIiwid3JpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwibWFzdGVyS2V5IiwiZW5kIiwiY3JlYXRlU3Vic2NyaXB0aW9ucyIsIlN1YnNjcmlwdGlvblNlcnZlciIsImNyZWF0ZSIsImV4ZWN1dGUiLCJzdWJzY3JpYmUiLCJvbk9wZXJhdGlvbiIsIl9tZXNzYWdlIiwicGFyYW1zIiwid2ViU29ja2V0IiwiYXNzaWduIiwidXBncmFkZVJlcSIsInBhdGgiLCJzdWJzY3JpcHRpb25zUGF0aCIsInNldEdyYXBoUUxDb25maWciLCJncmFwaFFMQ29uZmlnIiwidXBkYXRlR3JhcGhRTENvbmZpZyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvR3JhcGhRTC9QYXJzZUdyYXBoUUxTZXJ2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvcnNNaWRkbGV3YXJlIGZyb20gJ2NvcnMnO1xuaW1wb3J0IGdyYXBocWxVcGxvYWRFeHByZXNzIGZyb20gJ2dyYXBocWwtdXBsb2FkL2dyYXBocWxVcGxvYWRFeHByZXNzLmpzJztcbmltcG9ydCB7IEFwb2xsb1NlcnZlciB9IGZyb20gJ0BhcG9sbG8vc2VydmVyJztcbmltcG9ydCB7IGV4cHJlc3NNaWRkbGV3YXJlIH0gZnJvbSAnQGFwb2xsby9zZXJ2ZXIvZXhwcmVzczQnO1xuaW1wb3J0IHsgQXBvbGxvU2VydmVyUGx1Z2luQ2FjaGVDb250cm9sRGlzYWJsZWQgfSBmcm9tICdAYXBvbGxvL3NlcnZlci9wbHVnaW4vZGlzYWJsZWQnO1xuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBleGVjdXRlLCBzdWJzY3JpYmUsIEdyYXBoUUxFcnJvciB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uU2VydmVyIH0gZnJvbSAnc3Vic2NyaXB0aW9ucy10cmFuc3BvcnQtd3MnO1xuaW1wb3J0IHsgaGFuZGxlUGFyc2VFcnJvcnMsIGhhbmRsZVBhcnNlSGVhZGVycywgaGFuZGxlUGFyc2VTZXNzaW9uIH0gZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IHJlcXVpcmVkUGFyYW1ldGVyIGZyb20gJy4uL3JlcXVpcmVkUGFyYW1ldGVyJztcbmltcG9ydCBkZWZhdWx0TG9nZ2VyIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBQYXJzZUdyYXBoUUxTY2hlbWEgfSBmcm9tICcuL1BhcnNlR3JhcGhRTFNjaGVtYSc7XG5pbXBvcnQgUGFyc2VHcmFwaFFMQ29udHJvbGxlciwgeyBQYXJzZUdyYXBoUUxDb25maWcgfSBmcm9tICcuLi9Db250cm9sbGVycy9QYXJzZUdyYXBoUUxDb250cm9sbGVyJztcblxuXG5jb25zdCBJbnRyb3NwZWN0aW9uQ29udHJvbFBsdWdpbiA9IChwdWJsaWNJbnRyb3NwZWN0aW9uKSA9PiAoe1xuXG5cbiAgcmVxdWVzdERpZFN0YXJ0OiAocmVxdWVzdENvbnRleHQpID0+ICh7XG5cbiAgICBkaWRSZXNvbHZlT3BlcmF0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBJZiBwdWJsaWMgaW50cm9zcGVjdGlvbiBpcyBlbmFibGVkLCB3ZSBhbGxvdyBhbGwgaW50cm9zcGVjdGlvbiBxdWVyaWVzXG4gICAgICBpZiAocHVibGljSW50cm9zcGVjdGlvbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzTWFzdGVyT3JNYWludGVuYW5jZSA9IHJlcXVlc3RDb250ZXh0LmNvbnRleHRWYWx1ZS5hdXRoPy5pc01hc3RlciB8fCByZXF1ZXN0Q29udGV4dC5jb250ZXh0VmFsdWUuYXV0aD8uaXNNYWludGVuYW5jZVxuICAgICAgaWYgKGlzTWFzdGVyT3JNYWludGVuYW5jZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIE5vdyB3ZSBjaGVjayBpZiB0aGUgcXVlcnkgaXMgYW4gaW50cm9zcGVjdGlvbiBxdWVyeVxuICAgICAgLy8gdGhpcyBjaGVjayBzdHJhdGVneSBzaG91bGQgd29yayBpbiA5OS45OSUgY2FzZXNcbiAgICAgIC8vIHdlIGNhbiBoYXZlIGFuIGlzc3VlIGlmIGEgdXNlciBuYW1lIGEgZmllbGQgb3IgY2xhc3MgX19zY2hlbWFTb21ldGhpbmdcbiAgICAgIC8vIHdlIHdhbnQgdG8gYXZvaWQgYSBmdWxsIEFTVCBjaGVja1xuICAgICAgY29uc3QgaXNJbnRyb3NwZWN0aW9uUXVlcnkgPVxuICAgICAgICByZXF1ZXN0Q29udGV4dC5yZXF1ZXN0LnF1ZXJ5Py5pbmNsdWRlcygnX19zY2hlbWEnKVxuXG4gICAgICBpZiAoaXNJbnRyb3NwZWN0aW9uUXVlcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoUUxFcnJvcignSW50cm9zcGVjdGlvbiBpcyBub3QgYWxsb3dlZCcsIHtcbiAgICAgICAgICBleHRlbnNpb25zOiB7XG4gICAgICAgICAgICBodHRwOiB7XG4gICAgICAgICAgICAgIHN0YXR1czogNDAzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgfSlcblxufSk7XG5cbmNsYXNzIFBhcnNlR3JhcGhRTFNlcnZlciB7XG4gIHBhcnNlR3JhcGhRTENvbnRyb2xsZXI6IFBhcnNlR3JhcGhRTENvbnRyb2xsZXI7XG5cbiAgY29uc3RydWN0b3IocGFyc2VTZXJ2ZXIsIGNvbmZpZykge1xuICAgIHRoaXMucGFyc2VTZXJ2ZXIgPSBwYXJzZVNlcnZlciB8fCByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIHBhcnNlU2VydmVyIGluc3RhbmNlIScpO1xuICAgIGlmICghY29uZmlnIHx8ICFjb25maWcuZ3JhcGhRTFBhdGgpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgY29uZmlnLmdyYXBoUUxQYXRoIScpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnBhcnNlR3JhcGhRTENvbnRyb2xsZXIgPSB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5wYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuICAgIHRoaXMubG9nID1cbiAgICAgICh0aGlzLnBhcnNlU2VydmVyLmNvbmZpZyAmJiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5sb2dnZXJDb250cm9sbGVyKSB8fCBkZWZhdWx0TG9nZ2VyO1xuICAgIHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hID0gbmV3IFBhcnNlR3JhcGhRTFNjaGVtYSh7XG4gICAgICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiB0aGlzLnBhcnNlR3JhcGhRTENvbnRyb2xsZXIsXG4gICAgICBkYXRhYmFzZUNvbnRyb2xsZXI6IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmRhdGFiYXNlQ29udHJvbGxlcixcbiAgICAgIGxvZzogdGhpcy5sb2csXG4gICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnM6IHRoaXMuY29uZmlnLmdyYXBoUUxDdXN0b21UeXBlRGVmcyxcbiAgICAgIGFwcElkOiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5hcHBJZCxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIF9nZXRHcmFwaFFMT3B0aW9ucygpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NoZW1hOiBhd2FpdCB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYS5sb2FkKCksXG4gICAgICAgIGNvbnRleHQ6IGFzeW5jICh7IHJlcSwgcmVzIH0pID0+IHtcbiAgICAgICAgICByZXMuc2V0KCdhY2Nlc3MtY29udHJvbC1hbGxvdy1vcmlnaW4nLCByZXEuZ2V0KCdvcmlnaW4nKSB8fCAnKicpO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBpbmZvOiByZXEuaW5mbyxcbiAgICAgICAgICAgIGNvbmZpZzogcmVxLmNvbmZpZyxcbiAgICAgICAgICAgIGF1dGg6IHJlcS5hdXRoLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yKGUuc3RhY2sgfHwgKHR5cGVvZiBlLnRvU3RyaW5nID09PSAnZnVuY3Rpb24nICYmIGUudG9TdHJpbmcoKSkgfHwgZSk7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIF9nZXRTZXJ2ZXIoKSB7XG4gICAgY29uc3Qgc2NoZW1hUmVmID0gdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEuZ3JhcGhRTFNjaGVtYTtcbiAgICBjb25zdCBuZXdTY2hlbWFSZWYgPSBhd2FpdCB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYS5sb2FkKCk7XG4gICAgaWYgKHNjaGVtYVJlZiA9PT0gbmV3U2NoZW1hUmVmICYmIHRoaXMuX3NlcnZlcikge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlcnZlcjtcbiAgICB9XG4gICAgY29uc3QgeyBzY2hlbWEsIGNvbnRleHQgfSA9IGF3YWl0IHRoaXMuX2dldEdyYXBoUUxPcHRpb25zKCk7XG4gICAgY29uc3QgYXBvbGxvID0gbmV3IEFwb2xsb1NlcnZlcih7XG4gICAgICBjc3JmUHJldmVudGlvbjoge1xuICAgICAgICAvLyBTZWUgaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vZG9jcy9yb3V0ZXIvY29uZmlndXJhdGlvbi9jc3JmL1xuICAgICAgICAvLyBuZWVkZWQgc2luY2Ugd2UgdXNlIGdyYXBocWwgdXBsb2FkXG4gICAgICAgIHJlcXVlc3RIZWFkZXJzOiBbJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnXSxcbiAgICAgIH0sXG4gICAgICBpbnRyb3NwZWN0aW9uOiB0aGlzLmNvbmZpZy5ncmFwaFFMUHVibGljSW50cm9zcGVjdGlvbixcbiAgICAgIHBsdWdpbnM6IFtBcG9sbG9TZXJ2ZXJQbHVnaW5DYWNoZUNvbnRyb2xEaXNhYmxlZCgpLCBJbnRyb3NwZWN0aW9uQ29udHJvbFBsdWdpbih0aGlzLmNvbmZpZy5ncmFwaFFMUHVibGljSW50cm9zcGVjdGlvbildLFxuICAgICAgc2NoZW1hLFxuICAgIH0pO1xuICAgIGF3YWl0IGFwb2xsby5zdGFydCgpO1xuICAgIHRoaXMuX3NlcnZlciA9IGV4cHJlc3NNaWRkbGV3YXJlKGFwb2xsbywge1xuICAgICAgY29udGV4dCxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fc2VydmVyO1xuICB9XG5cbiAgX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzKG1heFVwbG9hZFNpemUpIHtcbiAgICBjb25zdCB1bml0TWFwID0ge1xuICAgICAga2I6IDEsXG4gICAgICBtYjogMixcbiAgICAgIGdiOiAzLFxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgTnVtYmVyKG1heFVwbG9hZFNpemUuc2xpY2UoMCwgLTIpKSAqXG4gICAgICBNYXRoLnBvdygxMDI0LCB1bml0TWFwW21heFVwbG9hZFNpemUuc2xpY2UoLTIpLnRvTG93ZXJDYXNlKCldKVxuICAgICk7XG4gIH1cblxuICBhcHBseUdyYXBoUUwoYXBwKSB7XG4gICAgaWYgKCFhcHAgfHwgIWFwcC51c2UpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIEV4cHJlc3MuanMgYXBwIGluc3RhbmNlIScpO1xuICAgIH1cbiAgICBhcHAudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBjb3JzTWlkZGxld2FyZSgpKTtcbiAgICBhcHAudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBoYW5kbGVQYXJzZUhlYWRlcnMpO1xuICAgIGFwcC51c2UodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsIGhhbmRsZVBhcnNlU2Vzc2lvbik7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VFcnJvcnMpO1xuICAgIGFwcC51c2UoXG4gICAgICB0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCxcbiAgICAgIGdyYXBocWxVcGxvYWRFeHByZXNzKHtcbiAgICAgICAgbWF4RmlsZVNpemU6IHRoaXMuX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzKFxuICAgICAgICAgIHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLm1heFVwbG9hZFNpemUgfHwgJzIwbWInXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgZXhwcmVzcy5qc29uKCksIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgdGhpcy5fZ2V0U2VydmVyKCk7XG4gICAgICByZXR1cm4gc2VydmVyKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5UGxheWdyb3VuZChhcHApIHtcbiAgICBpZiAoIWFwcCB8fCAhYXBwLmdldCkge1xuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYW4gRXhwcmVzcy5qcyBhcHAgaW5zdGFuY2UhJyk7XG4gICAgfVxuXG4gICAgYXBwLmdldChcbiAgICAgIHRoaXMuY29uZmlnLnBsYXlncm91bmRQYXRoIHx8XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZy5wbGF5Z3JvdW5kUGF0aCB0byBhcHBseVBsYXlncm91bmQhJyksXG4gICAgICAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgcmVzLndyaXRlKFxuICAgICAgICAgIGA8ZGl2IGlkPVwic2FuZGJveFwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjBcIj48L2Rpdj5cbiAgICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vZW1iZWRkYWJsZS1zYW5kYm94LmNkbi5hcG9sbG9ncmFwaHFsLmNvbS9fbGF0ZXN0L2VtYmVkZGFibGUtc2FuZGJveC51bWQucHJvZHVjdGlvbi5taW4uanNcIj48L3NjcmlwdD5cbiAgICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgICBuZXcgd2luZG93LkVtYmVkZGVkU2FuZGJveCh7XG4gICAgICAgICAgICAgdGFyZ2V0OiBcIiNzYW5kYm94XCIsXG4gICAgICAgICAgICAgZW5kcG9pbnRJc0VkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICBpbml0aWFsRW5kcG9pbnQ6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgpfSxcbiAgICAgICAgICAgICBoYW5kbGVSZXF1ZXN0OiAoZW5kcG9pbnRVcmwsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKGVuZHBvaW50VXJsLCB7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiAke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmFwcElkKX0sXG4gICAgICAgICAgICAgICAgICAgICdYLVBhcnNlLU1hc3Rlci1LZXknOiAke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLm1hc3RlcktleSl9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICB9KTtcbiAgICAgICAgICAgLy8gYWR2YW5jZWQgb3B0aW9uczogaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vZG9jcy9zdHVkaW8vZXhwbG9yZXIvc2FuZGJveCNlbWJlZGRpbmctc2FuZGJveFxuICAgICAgICAgIDwvc2NyaXB0PmBcbiAgICAgICAgKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTdWJzY3JpcHRpb25zKHNlcnZlcikge1xuICAgIFN1YnNjcmlwdGlvblNlcnZlci5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGV4ZWN1dGUsXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgb25PcGVyYXRpb246IGFzeW5jIChfbWVzc2FnZSwgcGFyYW1zLCB3ZWJTb2NrZXQpID0+XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW1zLCBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyh3ZWJTb2NrZXQudXBncmFkZVJlcSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBwYXRoOlxuICAgICAgICAgIHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoIHx8XG4gICAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuc3Vic2NyaXB0aW9uc1BhdGggdG8gY3JlYXRlU3Vic2NyaXB0aW9ucyEnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0R3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLnVwZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx5QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsa0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLE9BQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLG1CQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSx1QkFBQSxHQUFBQyx1QkFBQSxDQUFBYixPQUFBO0FBQW1HLFNBQUFhLHdC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
|
|
197
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ycyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxVcGxvYWRFeHByZXNzIiwiX3NlcnZlciIsIl9leHByZXNzIiwiX2Rpc2FibGVkIiwiX2V4cHJlc3MyIiwiX2dyYXBocWwiLCJfc3Vic2NyaXB0aW9uc1RyYW5zcG9ydFdzIiwiX21pZGRsZXdhcmVzIiwiX3JlcXVpcmVkUGFyYW1ldGVyIiwiX2xvZ2dlciIsIl9QYXJzZUdyYXBoUUxTY2hlbWEiLCJfUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiSW50cm9zcGVjdGlvbkNvbnRyb2xQbHVnaW4iLCJwdWJsaWNJbnRyb3NwZWN0aW9uIiwicmVxdWVzdERpZFN0YXJ0IiwicmVxdWVzdENvbnRleHQiLCJkaWRSZXNvbHZlT3BlcmF0aW9uIiwiaXNNYXN0ZXJPck1haW50ZW5hbmNlIiwiY29udGV4dFZhbHVlIiwiYXV0aCIsImlzTWFzdGVyIiwiaXNNYWludGVuYW5jZSIsImlzSW50cm9zcGVjdGlvblF1ZXJ5IiwicmVxdWVzdCIsInF1ZXJ5IiwiaW5jbHVkZXMiLCJHcmFwaFFMRXJyb3IiLCJleHRlbnNpb25zIiwiaHR0cCIsInN0YXR1cyIsIlBhcnNlR3JhcGhRTFNlcnZlciIsImNvbnN0cnVjdG9yIiwicGFyc2VTZXJ2ZXIiLCJjb25maWciLCJyZXF1aXJlZFBhcmFtZXRlciIsImdyYXBoUUxQYXRoIiwicGFyc2VHcmFwaFFMQ29udHJvbGxlciIsImxvZyIsImxvZ2dlckNvbnRyb2xsZXIiLCJkZWZhdWx0TG9nZ2VyIiwicGFyc2VHcmFwaFFMU2NoZW1hIiwiUGFyc2VHcmFwaFFMU2NoZW1hIiwiZGF0YWJhc2VDb250cm9sbGVyIiwiZ3JhcGhRTEN1c3RvbVR5cGVEZWZzIiwiYXBwSWQiLCJfZ2V0R3JhcGhRTE9wdGlvbnMiLCJzY2hlbWEiLCJsb2FkIiwiY29udGV4dCIsInJlcSIsInJlcyIsImluZm8iLCJlcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJfZ2V0U2VydmVyIiwic2NoZW1hUmVmIiwiZ3JhcGhRTFNjaGVtYSIsIm5ld1NjaGVtYVJlZiIsImFwb2xsbyIsIkFwb2xsb1NlcnZlciIsImNzcmZQcmV2ZW50aW9uIiwicmVxdWVzdEhlYWRlcnMiLCJpbnRyb3NwZWN0aW9uIiwiZ3JhcGhRTFB1YmxpY0ludHJvc3BlY3Rpb24iLCJwbHVnaW5zIiwiQXBvbGxvU2VydmVyUGx1Z2luQ2FjaGVDb250cm9sRGlzYWJsZWQiLCJzdGFydCIsImV4cHJlc3NNaWRkbGV3YXJlIiwiX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzIiwibWF4VXBsb2FkU2l6ZSIsInVuaXRNYXAiLCJrYiIsIm1iIiwiZ2IiLCJOdW1iZXIiLCJzbGljZSIsIk1hdGgiLCJwb3ciLCJ0b0xvd2VyQ2FzZSIsImFwcGx5UmVxdWVzdENvbnRleHRNaWRkbGV3YXJlIiwiYXBpIiwib3B0aW9ucyIsInJlcXVlc3RDb250ZXh0TWlkZGxld2FyZSIsIkVycm9yIiwidXNlIiwiYXBwbHlHcmFwaFFMIiwiYXBwIiwiY29yc01pZGRsZXdhcmUiLCJoYW5kbGVQYXJzZUhlYWRlcnMiLCJoYW5kbGVQYXJzZVNlc3Npb24iLCJoYW5kbGVQYXJzZUVycm9ycyIsImdyYXBocWxVcGxvYWRFeHByZXNzIiwibWF4RmlsZVNpemUiLCJleHByZXNzIiwianNvbiIsIm5leHQiLCJzZXJ2ZXIiLCJhcHBseVBsYXlncm91bmQiLCJwbGF5Z3JvdW5kUGF0aCIsIl9yZXEiLCJzZXRIZWFkZXIiLCJ3cml0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtYXN0ZXJLZXkiLCJlbmQiLCJjcmVhdGVTdWJzY3JpcHRpb25zIiwiU3Vic2NyaXB0aW9uU2VydmVyIiwiY3JlYXRlIiwiZXhlY3V0ZSIsInN1YnNjcmliZSIsIm9uT3BlcmF0aW9uIiwiX21lc3NhZ2UiLCJwYXJhbXMiLCJ3ZWJTb2NrZXQiLCJhc3NpZ24iLCJ1cGdyYWRlUmVxIiwicGF0aCIsInN1YnNjcmlwdGlvbnNQYXRoIiwic2V0R3JhcGhRTENvbmZpZyIsImdyYXBoUUxDb25maWciLCJ1cGRhdGVHcmFwaFFMQ29uZmlnIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9HcmFwaFFML1BhcnNlR3JhcGhRTFNlcnZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29yc01pZGRsZXdhcmUgZnJvbSAnY29ycyc7XG5pbXBvcnQgZ3JhcGhxbFVwbG9hZEV4cHJlc3MgZnJvbSAnZ3JhcGhxbC11cGxvYWQvZ3JhcGhxbFVwbG9hZEV4cHJlc3MuanMnO1xuaW1wb3J0IHsgQXBvbGxvU2VydmVyIH0gZnJvbSAnQGFwb2xsby9zZXJ2ZXInO1xuaW1wb3J0IHsgZXhwcmVzc01pZGRsZXdhcmUgfSBmcm9tICdAYXBvbGxvL3NlcnZlci9leHByZXNzNCc7XG5pbXBvcnQgeyBBcG9sbG9TZXJ2ZXJQbHVnaW5DYWNoZUNvbnRyb2xEaXNhYmxlZCB9IGZyb20gJ0BhcG9sbG8vc2VydmVyL3BsdWdpbi9kaXNhYmxlZCc7XG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IGV4ZWN1dGUsIHN1YnNjcmliZSwgR3JhcGhRTEVycm9yIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2ZXIgfSBmcm9tICdzdWJzY3JpcHRpb25zLXRyYW5zcG9ydC13cyc7XG5pbXBvcnQgeyBoYW5kbGVQYXJzZUVycm9ycywgaGFuZGxlUGFyc2VIZWFkZXJzLCBoYW5kbGVQYXJzZVNlc3Npb24gfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgcmVxdWlyZWRQYXJhbWV0ZXIgZnJvbSAnLi4vcmVxdWlyZWRQYXJhbWV0ZXInO1xuaW1wb3J0IGRlZmF1bHRMb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFBhcnNlR3JhcGhRTFNjaGVtYSB9IGZyb20gJy4vUGFyc2VHcmFwaFFMU2NoZW1hJztcbmltcG9ydCBQYXJzZUdyYXBoUUxDb250cm9sbGVyLCB7IFBhcnNlR3JhcGhRTENvbmZpZyB9IGZyb20gJy4uL0NvbnRyb2xsZXJzL1BhcnNlR3JhcGhRTENvbnRyb2xsZXInO1xuXG5cbmNvbnN0IEludHJvc3BlY3Rpb25Db250cm9sUGx1Z2luID0gKHB1YmxpY0ludHJvc3BlY3Rpb24pID0+ICh7XG5cblxuICByZXF1ZXN0RGlkU3RhcnQ6IChyZXF1ZXN0Q29udGV4dCkgPT4gKHtcblxuICAgIGRpZFJlc29sdmVPcGVyYXRpb246IGFzeW5jICgpID0+IHtcbiAgICAgIC8vIElmIHB1YmxpYyBpbnRyb3NwZWN0aW9uIGlzIGVuYWJsZWQsIHdlIGFsbG93IGFsbCBpbnRyb3NwZWN0aW9uIHF1ZXJpZXNcbiAgICAgIGlmIChwdWJsaWNJbnRyb3NwZWN0aW9uKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNNYXN0ZXJPck1haW50ZW5hbmNlID0gcmVxdWVzdENvbnRleHQuY29udGV4dFZhbHVlLmF1dGg/LmlzTWFzdGVyIHx8IHJlcXVlc3RDb250ZXh0LmNvbnRleHRWYWx1ZS5hdXRoPy5pc01haW50ZW5hbmNlXG4gICAgICBpZiAoaXNNYXN0ZXJPck1haW50ZW5hbmNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gTm93IHdlIGNoZWNrIGlmIHRoZSBxdWVyeSBpcyBhbiBpbnRyb3NwZWN0aW9uIHF1ZXJ5XG4gICAgICAvLyB0aGlzIGNoZWNrIHN0cmF0ZWd5IHNob3VsZCB3b3JrIGluIDk5Ljk5JSBjYXNlc1xuICAgICAgLy8gd2UgY2FuIGhhdmUgYW4gaXNzdWUgaWYgYSB1c2VyIG5hbWUgYSBmaWVsZCBvciBjbGFzcyBfX3NjaGVtYVNvbWV0aGluZ1xuICAgICAgLy8gd2Ugd2FudCB0byBhdm9pZCBhIGZ1bGwgQVNUIGNoZWNrXG4gICAgICBjb25zdCBpc0ludHJvc3BlY3Rpb25RdWVyeSA9XG4gICAgICAgIHJlcXVlc3RDb250ZXh0LnJlcXVlc3QucXVlcnk/LmluY2x1ZGVzKCdfX3NjaGVtYScpXG5cbiAgICAgIGlmIChpc0ludHJvc3BlY3Rpb25RdWVyeSkge1xuICAgICAgICB0aHJvdyBuZXcgR3JhcGhRTEVycm9yKCdJbnRyb3NwZWN0aW9uIGlzIG5vdCBhbGxvd2VkJywge1xuICAgICAgICAgIGV4dGVuc2lvbnM6IHtcbiAgICAgICAgICAgIGh0dHA6IHtcbiAgICAgICAgICAgICAgc3RhdHVzOiA0MDMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICB9KVxuXG59KTtcblxuY2xhc3MgUGFyc2VHcmFwaFFMU2VydmVyIHtcbiAgcGFyc2VHcmFwaFFMQ29udHJvbGxlcjogUGFyc2VHcmFwaFFMQ29udHJvbGxlcjtcblxuICBjb25zdHJ1Y3RvcihwYXJzZVNlcnZlciwgY29uZmlnKSB7XG4gICAgdGhpcy5wYXJzZVNlcnZlciA9IHBhcnNlU2VydmVyIHx8IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgcGFyc2VTZXJ2ZXIgaW5zdGFuY2UhJyk7XG4gICAgaWYgKCFjb25maWcgfHwgIWNvbmZpZy5ncmFwaFFMUGF0aCkge1xuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuZ3JhcGhRTFBhdGghJyk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMucGFyc2VHcmFwaFFMQ29udHJvbGxlciA9IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLnBhcnNlR3JhcGhRTENvbnRyb2xsZXI7XG4gICAgdGhpcy5sb2cgPVxuICAgICAgKHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnICYmIHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmxvZ2dlckNvbnRyb2xsZXIpIHx8IGRlZmF1bHRMb2dnZXI7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEgPSBuZXcgUGFyc2VHcmFwaFFMU2NoZW1hKHtcbiAgICAgIHBhcnNlR3JhcGhRTENvbnRyb2xsZXI6IHRoaXMucGFyc2VHcmFwaFFMQ29udHJvbGxlcixcbiAgICAgIGRhdGFiYXNlQ29udHJvbGxlcjogdGhpcy5wYXJzZVNlcnZlci5jb25maWcuZGF0YWJhc2VDb250cm9sbGVyLFxuICAgICAgbG9nOiB0aGlzLmxvZyxcbiAgICAgIGdyYXBoUUxDdXN0b21UeXBlRGVmczogdGhpcy5jb25maWcuZ3JhcGhRTEN1c3RvbVR5cGVEZWZzLFxuICAgICAgYXBwSWQ6IHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmFwcElkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgX2dldEdyYXBoUUxPcHRpb25zKCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzY2hlbWE6IGF3YWl0IHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hLmxvYWQoKSxcbiAgICAgICAgY29udGV4dDogYXN5bmMgKHsgcmVxLCByZXMgfSkgPT4ge1xuICAgICAgICAgIHJlcy5zZXQoJ2FjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbicsIHJlcS5nZXQoJ29yaWdpbicpIHx8ICcqJyk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGluZm86IHJlcS5pbmZvLFxuICAgICAgICAgICAgY29uZmlnOiByZXEuY29uZmlnLFxuICAgICAgICAgICAgYXV0aDogcmVxLmF1dGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3IoZS5zdGFjayB8fCAodHlwZW9mIGUudG9TdHJpbmcgPT09ICdmdW5jdGlvbicgJiYgZS50b1N0cmluZygpKSB8fCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgX2dldFNlcnZlcigpIHtcbiAgICBjb25zdCBzY2hlbWFSZWYgPSB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYS5ncmFwaFFMU2NoZW1hO1xuICAgIGNvbnN0IG5ld1NjaGVtYVJlZiA9IGF3YWl0IHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hLmxvYWQoKTtcbiAgICBpZiAoc2NoZW1hUmVmID09PSBuZXdTY2hlbWFSZWYgJiYgdGhpcy5fc2VydmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VydmVyO1xuICAgIH1cbiAgICBjb25zdCB7IHNjaGVtYSwgY29udGV4dCB9ID0gYXdhaXQgdGhpcy5fZ2V0R3JhcGhRTE9wdGlvbnMoKTtcbiAgICBjb25zdCBhcG9sbG8gPSBuZXcgQXBvbGxvU2VydmVyKHtcbiAgICAgIGNzcmZQcmV2ZW50aW9uOiB7XG4gICAgICAgIC8vIFNlZSBodHRwczovL3d3dy5hcG9sbG9ncmFwaHFsLmNvbS9kb2NzL3JvdXRlci9jb25maWd1cmF0aW9uL2NzcmYvXG4gICAgICAgIC8vIG5lZWRlZCBzaW5jZSB3ZSB1c2UgZ3JhcGhxbCB1cGxvYWRcbiAgICAgICAgcmVxdWVzdEhlYWRlcnM6IFsnWC1QYXJzZS1BcHBsaWNhdGlvbi1JZCddLFxuICAgICAgfSxcbiAgICAgIGludHJvc3BlY3Rpb246IHRoaXMuY29uZmlnLmdyYXBoUUxQdWJsaWNJbnRyb3NwZWN0aW9uLFxuICAgICAgcGx1Z2luczogW0Fwb2xsb1NlcnZlclBsdWdpbkNhY2hlQ29udHJvbERpc2FibGVkKCksIEludHJvc3BlY3Rpb25Db250cm9sUGx1Z2luKHRoaXMuY29uZmlnLmdyYXBoUUxQdWJsaWNJbnRyb3NwZWN0aW9uKV0sXG4gICAgICBzY2hlbWEsXG4gICAgfSk7XG4gICAgYXdhaXQgYXBvbGxvLnN0YXJ0KCk7XG4gICAgdGhpcy5fc2VydmVyID0gZXhwcmVzc01pZGRsZXdhcmUoYXBvbGxvLCB7XG4gICAgICBjb250ZXh0LFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLl9zZXJ2ZXI7XG4gIH1cblxuICBfdHJhbnNmb3JtTWF4VXBsb2FkU2l6ZVRvQnl0ZXMobWF4VXBsb2FkU2l6ZSkge1xuICAgIGNvbnN0IHVuaXRNYXAgPSB7XG4gICAgICBrYjogMSxcbiAgICAgIG1iOiAyLFxuICAgICAgZ2I6IDMsXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICBOdW1iZXIobWF4VXBsb2FkU2l6ZS5zbGljZSgwLCAtMikpICpcbiAgICAgIE1hdGgucG93KDEwMjQsIHVuaXRNYXBbbWF4VXBsb2FkU2l6ZS5zbGljZSgtMikudG9Mb3dlckNhc2UoKV0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIEFsbG93IGRldmVsb3BlcnMgdG8gY3VzdG9taXplIGVhY2ggcmVxdWVzdCB3aXRoIGludmVyc2lvbiBvZiBjb250cm9sL2RlcGVuZGVuY3kgaW5qZWN0aW9uXG4gICAqL1xuICBhcHBseVJlcXVlc3RDb250ZXh0TWlkZGxld2FyZShhcGksIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5yZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmUpIHtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmUgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmUgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICB9XG4gICAgICBhcGkudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBvcHRpb25zLnJlcXVlc3RDb250ZXh0TWlkZGxld2FyZSk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlHcmFwaFFMKGFwcCkge1xuICAgIGlmICghYXBwIHx8ICFhcHAudXNlKSB7XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhbiBFeHByZXNzLmpzIGFwcCBpbnN0YW5jZSEnKTtcbiAgICB9XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgY29yc01pZGRsZXdhcmUoKSk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VIZWFkZXJzKTtcbiAgICBhcHAudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBoYW5kbGVQYXJzZVNlc3Npb24pO1xuICAgIHRoaXMuYXBwbHlSZXF1ZXN0Q29udGV4dE1pZGRsZXdhcmUoYXBwLCB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZyk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VFcnJvcnMpO1xuICAgIGFwcC51c2UoXG4gICAgICB0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCxcbiAgICAgIGdyYXBocWxVcGxvYWRFeHByZXNzKHtcbiAgICAgICAgbWF4RmlsZVNpemU6IHRoaXMuX3RyYW5zZm9ybU1heFVwbG9hZFNpemVUb0J5dGVzKFxuICAgICAgICAgIHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLm1heFVwbG9hZFNpemUgfHwgJzIwbWInXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgZXhwcmVzcy5qc29uKCksIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gYXdhaXQgdGhpcy5fZ2V0U2VydmVyKCk7XG4gICAgICByZXR1cm4gc2VydmVyKHJlcSwgcmVzLCBuZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5UGxheWdyb3VuZChhcHApIHtcbiAgICBpZiAoIWFwcCB8fCAhYXBwLmdldCkge1xuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYW4gRXhwcmVzcy5qcyBhcHAgaW5zdGFuY2UhJyk7XG4gICAgfVxuXG4gICAgYXBwLmdldChcbiAgICAgIHRoaXMuY29uZmlnLnBsYXlncm91bmRQYXRoIHx8XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZy5wbGF5Z3JvdW5kUGF0aCB0byBhcHBseVBsYXlncm91bmQhJyksXG4gICAgICAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgcmVzLndyaXRlKFxuICAgICAgICAgIGA8ZGl2IGlkPVwic2FuZGJveFwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjBcIj48L2Rpdj5cbiAgICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vZW1iZWRkYWJsZS1zYW5kYm94LmNkbi5hcG9sbG9ncmFwaHFsLmNvbS9fbGF0ZXN0L2VtYmVkZGFibGUtc2FuZGJveC51bWQucHJvZHVjdGlvbi5taW4uanNcIj48L3NjcmlwdD5cbiAgICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgICBuZXcgd2luZG93LkVtYmVkZGVkU2FuZGJveCh7XG4gICAgICAgICAgICAgdGFyZ2V0OiBcIiNzYW5kYm94XCIsXG4gICAgICAgICAgICAgZW5kcG9pbnRJc0VkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICBpbml0aWFsRW5kcG9pbnQ6ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgpfSxcbiAgICAgICAgICAgICBoYW5kbGVSZXF1ZXN0OiAoZW5kcG9pbnRVcmwsIG9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKGVuZHBvaW50VXJsLCB7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMuaGVhZGVycyxcbiAgICAgICAgICAgICAgICAgICAgJ1gtUGFyc2UtQXBwbGljYXRpb24tSWQnOiAke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmFwcElkKX0sXG4gICAgICAgICAgICAgICAgICAgICdYLVBhcnNlLU1hc3Rlci1LZXknOiAke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLm1hc3RlcktleSl9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICB9KTtcbiAgICAgICAgICAgLy8gYWR2YW5jZWQgb3B0aW9uczogaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vZG9jcy9zdHVkaW8vZXhwbG9yZXIvc2FuZGJveCNlbWJlZGRpbmctc2FuZGJveFxuICAgICAgICAgIDwvc2NyaXB0PmBcbiAgICAgICAgKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTdWJzY3JpcHRpb25zKHNlcnZlcikge1xuICAgIFN1YnNjcmlwdGlvblNlcnZlci5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGV4ZWN1dGUsXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgb25PcGVyYXRpb246IGFzeW5jIChfbWVzc2FnZSwgcGFyYW1zLCB3ZWJTb2NrZXQpID0+XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW1zLCBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyh3ZWJTb2NrZXQudXBncmFkZVJlcSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBwYXRoOlxuICAgICAgICAgIHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoIHx8XG4gICAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuc3Vic2NyaXB0aW9uc1BhdGggdG8gY3JlYXRlU3Vic2NyaXB0aW9ucyEnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0R3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLnVwZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxRQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx5QkFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsa0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFVLE9BQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLG1CQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSx1QkFBQSxHQUFBQyx1QkFBQSxDQUFBYixPQUFBO0FBQW1HLFNBQUFhLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSxDQUFBQyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFB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
|