parse-server 8.0.0-alpha.8 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +1 -3
  2. package/lib/Adapters/AdapterLoader.js +2 -3
  3. package/lib/Adapters/Auth/index.js +2 -2
  4. package/lib/Adapters/Auth/mfa.js +4 -6
  5. package/lib/Adapters/Cache/RedisCacheAdapter.js +2 -2
  6. package/lib/Adapters/PubSub/RedisPubSub.js +28 -12
  7. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +15 -18
  8. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +19 -21
  9. package/lib/Adapters/Storage/Mongo/MongoTransform.js +8 -8
  10. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +23 -18
  11. package/lib/Auth.js +8 -12
  12. package/lib/Config.js +20 -3
  13. package/lib/Controllers/AnalyticsController.js +3 -3
  14. package/lib/Controllers/DatabaseController.js +35 -31
  15. package/lib/Controllers/ParseGraphQLController.js +44 -57
  16. package/lib/Controllers/SchemaController.js +12 -12
  17. package/lib/Controllers/UserController.js +49 -60
  18. package/lib/Controllers/index.js +8 -9
  19. package/lib/GraphQL/helpers/objectsQueries.js +2 -1
  20. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +8 -9
  21. package/lib/GraphQL/loaders/defaultRelaySchema.js +5 -9
  22. package/lib/GraphQL/loaders/filesMutations.js +4 -7
  23. package/lib/GraphQL/loaders/functionsMutations.js +3 -7
  24. package/lib/GraphQL/loaders/parseClassMutations.js +18 -17
  25. package/lib/GraphQL/loaders/parseClassTypes.js +62 -52
  26. package/lib/GraphQL/loaders/schemaDirectives.js +3 -5
  27. package/lib/GraphQL/loaders/usersMutations.js +5 -13
  28. package/lib/GraphQL/transformers/mutation.js +6 -9
  29. package/lib/GraphQL/transformers/query.js +18 -18
  30. package/lib/GraphQL/transformers/schemaFields.js +10 -12
  31. package/lib/LiveQuery/ParseLiveQueryServer.js +7 -9
  32. package/lib/LiveQuery/QueryTools.js +2 -3
  33. package/lib/Options/Definitions.js +6 -1
  34. package/lib/Options/docs.js +3 -2
  35. package/lib/Options/index.js +1 -1
  36. package/lib/ParseServer.js +23 -21
  37. package/lib/ParseServerRESTController.js +4 -8
  38. package/lib/PromiseRouter.js +2 -2
  39. package/lib/RestWrite.js +5 -9
  40. package/lib/Routers/AggregateRouter.js +2 -2
  41. package/lib/Routers/AudiencesRouter.js +2 -2
  42. package/lib/Routers/ClassesRouter.js +6 -7
  43. package/lib/Routers/CloudCodeRouter.js +3 -3
  44. package/lib/Routers/FeaturesRouter.js +2 -3
  45. package/lib/Routers/FilesRouter.js +4 -7
  46. package/lib/Routers/FunctionsRouter.js +2 -2
  47. package/lib/Routers/GlobalConfigRouter.js +3 -3
  48. package/lib/Routers/GraphQLRouter.js +2 -2
  49. package/lib/Routers/HooksRouter.js +5 -5
  50. package/lib/Routers/IAPValidationRouter.js +4 -4
  51. package/lib/Routers/InstallationsRouter.js +2 -2
  52. package/lib/Routers/PagesRouter.js +22 -36
  53. package/lib/Routers/PublicAPIRouter.js +26 -32
  54. package/lib/Routers/PushRouter.js +2 -2
  55. package/lib/Routers/SchemasRouter.js +7 -8
  56. package/lib/Routers/UsersRouter.js +34 -25
  57. package/lib/SchemaMigrations/DefinedSchemas.js +4 -7
  58. package/lib/StatusHandler.js +10 -9
  59. package/lib/Utils.js +5 -8
  60. package/lib/batch.js +5 -5
  61. package/lib/cloud-code/Parse.Cloud.js +22 -22
  62. package/lib/logger.js +1 -1
  63. package/lib/middlewares.js +34 -16
  64. package/lib/triggers.js +12 -12
  65. package/lib/vendor/mongodbUrl.js +2 -2
  66. package/package.json +22 -17
  67. package/public_html/invalid_verification_link.html +3 -3
  68. package/types/index.d.ts +0 -0
  69. package/types/logger.d.ts +2 -0
  70. package/types/tsconfig.json +18 -0
@@ -16,11 +16,6 @@ var _node = _interopRequireDefault(require("parse/node"));
16
16
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
17
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
18
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
22
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
23
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
24
19
  const usersRouter = new _UsersRouter.default();
25
20
  const load = parseGraphQLSchema => {
26
21
  if (parseGraphQLSchema.isUsersClassDisabled) {
@@ -137,9 +132,10 @@ const load = parseGraphQLSchema => {
137
132
  sessionToken,
138
133
  objectId,
139
134
  authDataResponse
140
- } = await objectsMutations.createObject('_User', _objectSpread(_objectSpread({}, parseFields), {}, {
135
+ } = await objectsMutations.createObject('_User', {
136
+ ...parseFields,
141
137
  authData
142
- }), config, auth, info);
138
+ }, config, auth, info);
143
139
  context.info.sessionToken = sessionToken;
144
140
  const viewer = await (0, _usersQueries.getUserFromSessionToken)(context, mutationInfo, 'viewer.user.', objectId);
145
141
  if (authDataResponse && viewer.user) {
@@ -317,16 +313,12 @@ const load = parseGraphQLSchema => {
317
313
  }
318
314
  },
319
315
  mutateAndGetPayload: async ({
320
- username,
321
316
  password,
322
317
  token
323
318
  }, context) => {
324
319
  const {
325
320
  config
326
321
  } = context;
327
- if (!username) {
328
- throw new _node.default.Error(_node.default.Error.USERNAME_MISSING, 'you must provide a username');
329
- }
330
322
  if (!password) {
331
323
  throw new _node.default.Error(_node.default.Error.PASSWORD_MISSING, 'you must provide a password');
332
324
  }
@@ -334,7 +326,7 @@ const load = parseGraphQLSchema => {
334
326
  throw new _node.default.Error(_node.default.Error.OTHER_CAUSE, 'you must provide a token');
335
327
  }
336
328
  const userController = config.userController;
337
- await userController.updatePassword(username, token, password);
329
+ await userController.updatePassword(token, password);
338
330
  return {
339
331
  ok: true
340
332
  };
@@ -439,4 +431,4 @@ const load = parseGraphQLSchema => {
439
431
  parseGraphQLSchema.addGraphQLMutation('challenge', challengeMutation, true, true);
440
432
  };
441
433
  exports.load = load;
442
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJfZ3JhcGhxbFJlbGF5IiwiX2RlZXBjb3B5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Vc2Vyc1JvdXRlciIsIm9iamVjdHNNdXRhdGlvbnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9kZWZhdWx0R3JhcGhRTFR5cGVzIiwiX3VzZXJzUXVlcmllcyIsIl9tdXRhdGlvbiIsIl9ub2RlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfdG9QcmltaXRpdmUiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInVzZXJzUm91dGVyIiwiVXNlcnNSb3V0ZXIiLCJsb2FkIiwicGFyc2VHcmFwaFFMU2NoZW1hIiwiaXNVc2Vyc0NsYXNzRGlzYWJsZWQiLCJzaWduVXBNdXRhdGlvbiIsIm11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQiLCJuYW1lIiwiZGVzY3JpcHRpb24iLCJpbnB1dEZpZWxkcyIsImZpZWxkcyIsImRlc2NyaXB0aW9ucyIsInR5cGUiLCJwYXJzZUNsYXNzVHlwZXMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlIiwib3V0cHV0RmllbGRzIiwidmlld2VyIiwiR3JhcGhRTE5vbk51bGwiLCJ2aWV3ZXJUeXBlIiwibXV0YXRlQW5kR2V0UGF5bG9hZCIsImFyZ3MiLCJjb250ZXh0IiwibXV0YXRpb25JbmZvIiwiZGVlcGNvcHkiLCJjb25maWciLCJhdXRoIiwiaW5mbyIsInBhcnNlRmllbGRzIiwidHJhbnNmb3JtVHlwZXMiLCJjbGFzc05hbWUiLCJvcmlnaW5hbEZpZWxkcyIsInJlcSIsInNlc3Npb25Ub2tlbiIsIm9iamVjdElkIiwiYXV0aERhdGFSZXNwb25zZSIsImNyZWF0ZU9iamVjdCIsImdldFVzZXJGcm9tU2Vzc2lvblRva2VuIiwidXNlciIsImhhbmRsZUVycm9yIiwiYWRkR3JhcGhRTFR5cGUiLCJpbnB1dCIsIm9mVHlwZSIsImFkZEdyYXBoUUxNdXRhdGlvbiIsImxvZ0luV2l0aE11dGF0aW9uIiwiYXV0aERhdGEiLCJPQkpFQ1QiLCJHcmFwaFFMSW5wdXRPYmplY3RUeXBlIiwiY2xhc3NHcmFwaFFMQ3JlYXRlRmllbGRzIiwiZ2V0RmllbGRzIiwicmVkdWNlIiwiZmllbGROYW1lIiwibG9nSW5NdXRhdGlvbiIsInVzZXJuYW1lIiwiR3JhcGhRTFN0cmluZyIsInBhc3N3b3JkIiwiaGFuZGxlTG9nSW4iLCJib2R5IiwicXVlcnkiLCJyZXNwb25zZSIsImxvZ091dE11dGF0aW9uIiwib2siLCJHcmFwaFFMQm9vbGVhbiIsIl9hcmdzIiwiaGFuZGxlTG9nT3V0IiwicmVzZXRQYXNzd29yZE11dGF0aW9uIiwiZW1haWwiLCJoYW5kbGVSZXNldFJlcXVlc3QiLCJjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uIiwidG9rZW4iLCJQYXJzZSIsIkVycm9yIiwiVVNFUk5BTUVfTUlTU0lORyIsIlBBU1NXT1JEX01JU1NJTkciLCJPVEhFUl9DQVVTRSIsInVzZXJDb250cm9sbGVyIiwidXBkYXRlUGFzc3dvcmQiLCJzZW5kVmVyaWZpY2F0aW9uRW1haWxNdXRhdGlvbiIsImhhbmRsZVZlcmlmaWNhdGlvbkVtYWlsUmVxdWVzdCIsImNoYWxsZW5nZU11dGF0aW9uIiwiY2hhbGxlbmdlRGF0YSIsImhhbmRsZUNoYWxsZW5nZSIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC9sb2FkZXJzL3VzZXJzTXV0YXRpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxOb25OdWxsLCBHcmFwaFFMU3RyaW5nLCBHcmFwaFFMQm9vbGVhbiwgR3JhcGhRTElucHV0T2JqZWN0VHlwZSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuaW1wb3J0IGRlZXBjb3B5IGZyb20gJ2RlZXBjb3B5JztcbmltcG9ydCBVc2Vyc1JvdXRlciBmcm9tICcuLi8uLi9Sb3V0ZXJzL1VzZXJzUm91dGVyJztcbmltcG9ydCAqIGFzIG9iamVjdHNNdXRhdGlvbnMgZnJvbSAnLi4vaGVscGVycy9vYmplY3RzTXV0YXRpb25zJztcbmltcG9ydCB7IE9CSkVDVCB9IGZyb20gJy4vZGVmYXVsdEdyYXBoUUxUeXBlcyc7XG5pbXBvcnQgeyBnZXRVc2VyRnJvbVNlc3Npb25Ub2tlbiB9IGZyb20gJy4vdXNlcnNRdWVyaWVzJztcbmltcG9ydCB7IHRyYW5zZm9ybVR5cGVzIH0gZnJvbSAnLi4vdHJhbnNmb3JtZXJzL211dGF0aW9uJztcbmltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuY29uc3QgdXNlcnNSb3V0ZXIgPSBuZXcgVXNlcnNSb3V0ZXIoKTtcblxuY29uc3QgbG9hZCA9IHBhcnNlR3JhcGhRTFNjaGVtYSA9PiB7XG4gIGlmIChwYXJzZUdyYXBoUUxTY2hlbWEuaXNVc2Vyc0NsYXNzRGlzYWJsZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzaWduVXBNdXRhdGlvbiA9IG11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQoe1xuICAgIG5hbWU6ICdTaWduVXAnLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIHNpZ25VcCBtdXRhdGlvbiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW5kIHNpZ24gdXAgYSBuZXcgdXNlci4nLFxuICAgIGlucHV0RmllbGRzOiB7XG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgZGVzY3JpcHRpb25zOiAnVGhlc2UgYXJlIHRoZSBmaWVsZHMgb2YgdGhlIG5ldyB1c2VyIHRvIGJlIGNyZWF0ZWQgYW5kIHNpZ25lZCB1cC4nLFxuICAgICAgICB0eXBlOiBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzWydfVXNlciddLmNsYXNzR3JhcGhRTENyZWF0ZVR5cGUsXG4gICAgICB9LFxuICAgIH0sXG4gICAgb3V0cHV0RmllbGRzOiB7XG4gICAgICB2aWV3ZXI6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBuZXcgdXNlciB0aGF0IHdhcyBjcmVhdGVkLCBzaWduZWQgdXAgYW5kIHJldHVybmVkIGFzIGEgdmlld2VyLicsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChwYXJzZUdyYXBoUUxTY2hlbWEudmlld2VyVHlwZSksXG4gICAgICB9LFxuICAgIH0sXG4gICAgbXV0YXRlQW5kR2V0UGF5bG9hZDogYXN5bmMgKGFyZ3MsIGNvbnRleHQsIG11dGF0aW9uSW5mbykgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBmaWVsZHMgfSA9IGRlZXBjb3B5KGFyZ3MpO1xuICAgICAgICBjb25zdCB7IGNvbmZpZywgYXV0aCwgaW5mbyB9ID0gY29udGV4dDtcblxuICAgICAgICBjb25zdCBwYXJzZUZpZWxkcyA9IGF3YWl0IHRyYW5zZm9ybVR5cGVzKCdjcmVhdGUnLCBmaWVsZHMsIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICAgIG9yaWdpbmFsRmllbGRzOiBhcmdzLmZpZWxkcyxcbiAgICAgICAgICByZXE6IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHsgc2Vzc2lvblRva2VuLCBvYmplY3RJZCwgYXV0aERhdGFSZXNwb25zZSB9ID0gYXdhaXQgb2JqZWN0c011dGF0aW9ucy5jcmVhdGVPYmplY3QoXG4gICAgICAgICAgJ19Vc2VyJyxcbiAgICAgICAgICBwYXJzZUZpZWxkcyxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBpbmZvXG4gICAgICAgICk7XG5cbiAgICAgICAgY29udGV4dC5pbmZvLnNlc3Npb25Ub2tlbiA9IHNlc3Npb25Ub2tlbjtcbiAgICAgICAgY29uc3Qgdmlld2VyID0gYXdhaXQgZ2V0VXNlckZyb21TZXNzaW9uVG9rZW4oXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBtdXRhdGlvbkluZm8sXG4gICAgICAgICAgJ3ZpZXdlci51c2VyLicsXG4gICAgICAgICAgb2JqZWN0SWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGF1dGhEYXRhUmVzcG9uc2UgJiYgdmlld2VyLnVzZXIpIHsgdmlld2VyLnVzZXIuYXV0aERhdGFSZXNwb25zZSA9IGF1dGhEYXRhUmVzcG9uc2U7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2aWV3ZXIsXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYS5oYW5kbGVFcnJvcihlKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoc2lnblVwTXV0YXRpb24uYXJncy5pbnB1dC50eXBlLm9mVHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShzaWduVXBNdXRhdGlvbi50eXBlLCB0cnVlLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxNdXRhdGlvbignc2lnblVwJywgc2lnblVwTXV0YXRpb24sIHRydWUsIHRydWUpO1xuICBjb25zdCBsb2dJbldpdGhNdXRhdGlvbiA9IG11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQoe1xuICAgIG5hbWU6ICdMb2dJbldpdGgnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBsb2dJbldpdGggbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gc2lnbnVwLCBsb2dpbiB1c2VyIHdpdGggM3JkIHBhcnR5IGF1dGhlbnRpY2F0aW9uIHN5c3RlbS4gVGhpcyBtdXRhdGlvbiBjcmVhdGUgYSB1c2VyIGlmIHRoZSBhdXRoRGF0YSBkbyBub3QgY29ycmVzcG9uZCB0byBhbiBleGlzdGluZyBvbmUuJyxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgYXV0aERhdGE6IHtcbiAgICAgICAgZGVzY3JpcHRpb25zOiAnVGhpcyBpcyB0aGUgYXV0aCBkYXRhIG9mIHlvdXIgY3VzdG9tIGF1dGggcHJvdmlkZXInLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoT0JKRUNUKSxcbiAgICAgIH0sXG4gICAgICBmaWVsZHM6IHtcbiAgICAgICAgZGVzY3JpcHRpb25zOiAnVGhlc2UgYXJlIHRoZSBmaWVsZHMgb2YgdGhlIHVzZXIgdG8gYmUgY3JlYXRlZC91cGRhdGVkIGFuZCBsb2dnZWQgaW4uJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxJbnB1dE9iamVjdFR5cGUoe1xuICAgICAgICAgIG5hbWU6ICdVc2VyTG9naW5XaXRoSW5wdXQnLFxuICAgICAgICAgIGZpZWxkczogKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2xhc3NHcmFwaFFMQ3JlYXRlRmllbGRzID0gcGFyc2VHcmFwaFFMU2NoZW1hLnBhcnNlQ2xhc3NUeXBlc1tcbiAgICAgICAgICAgICAgJ19Vc2VyJ1xuICAgICAgICAgICAgXS5jbGFzc0dyYXBoUUxDcmVhdGVUeXBlLmdldEZpZWxkcygpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGNsYXNzR3JhcGhRTENyZWF0ZUZpZWxkcykucmVkdWNlKChmaWVsZHMsIGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgZmllbGROYW1lICE9PSAncGFzc3dvcmQnICYmXG4gICAgICAgICAgICAgICAgZmllbGROYW1lICE9PSAndXNlcm5hbWUnICYmXG4gICAgICAgICAgICAgICAgZmllbGROYW1lICE9PSAnYXV0aERhdGEnXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGZpZWxkc1tmaWVsZE5hbWVdID0gY2xhc3NHcmFwaFFMQ3JlYXRlRmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkcztcbiAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIHZpZXdlcjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIG5ldyB1c2VyIHRoYXQgd2FzIGNyZWF0ZWQsIHNpZ25lZCB1cCBhbmQgcmV0dXJuZWQgYXMgYSB2aWV3ZXIuJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKHBhcnNlR3JhcGhRTFNjaGVtYS52aWV3ZXJUeXBlKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoYXJncywgY29udGV4dCwgbXV0YXRpb25JbmZvKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGZpZWxkcywgYXV0aERhdGEgfSA9IGRlZXBjb3B5KGFyZ3MpO1xuICAgICAgICBjb25zdCB7IGNvbmZpZywgYXV0aCwgaW5mbyB9ID0gY29udGV4dDtcblxuICAgICAgICBjb25zdCBwYXJzZUZpZWxkcyA9IGF3YWl0IHRyYW5zZm9ybVR5cGVzKCdjcmVhdGUnLCBmaWVsZHMsIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdfVXNlcicsXG4gICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICAgIG9yaWdpbmFsRmllbGRzOiBhcmdzLmZpZWxkcyxcbiAgICAgICAgICByZXE6IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHsgc2Vzc2lvblRva2VuLCBvYmplY3RJZCwgYXV0aERhdGFSZXNwb25zZSB9ID0gYXdhaXQgb2JqZWN0c011dGF0aW9ucy5jcmVhdGVPYmplY3QoXG4gICAgICAgICAgJ19Vc2VyJyxcbiAgICAgICAgICB7IC4uLnBhcnNlRmllbGRzLCBhdXRoRGF0YSB9LFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGluZm9cbiAgICAgICAgKTtcblxuICAgICAgICBjb250ZXh0LmluZm8uc2Vzc2lvblRva2VuID0gc2Vzc2lvblRva2VuO1xuICAgICAgICBjb25zdCB2aWV3ZXIgPSBhd2FpdCBnZXRVc2VyRnJvbVNlc3Npb25Ub2tlbihcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG11dGF0aW9uSW5mbyxcbiAgICAgICAgICAndmlld2VyLnVzZXIuJyxcbiAgICAgICAgICBvYmplY3RJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXV0aERhdGFSZXNwb25zZSAmJiB2aWV3ZXIudXNlcikgeyB2aWV3ZXIudXNlci5hdXRoRGF0YVJlc3BvbnNlID0gYXV0aERhdGFSZXNwb25zZTsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZpZXdlcixcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLmhhbmRsZUVycm9yKGUpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShsb2dJbldpdGhNdXRhdGlvbi5hcmdzLmlucHV0LnR5cGUub2ZUeXBlLCB0cnVlLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGxvZ0luV2l0aE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKCdsb2dJbldpdGgnLCBsb2dJbldpdGhNdXRhdGlvbiwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgY29uc3QgbG9nSW5NdXRhdGlvbiA9IG11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQoe1xuICAgIG5hbWU6ICdMb2dJbicsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgbG9nSW4gbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gbG9nIGluIGFuIGV4aXN0aW5nIHVzZXIuJyxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgdXNlcm5hbWU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSB1c2VybmFtZSB1c2VkIHRvIGxvZyBpbiB0aGUgdXNlci4nLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICB9LFxuICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwYXNzd29yZCB1c2VkIHRvIGxvZyBpbiB0aGUgdXNlci4nLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICB9LFxuICAgICAgYXV0aERhdGE6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdBdXRoIGRhdGEgcGF5bG9hZCwgbmVlZGVkIGlmIHNvbWUgcmVxdWlyZWQgYXV0aCBhZGFwdGVycyBhcmUgY29uZmlndXJlZC4nLFxuICAgICAgICB0eXBlOiBPQkpFQ1QsXG4gICAgICB9LFxuICAgIH0sXG4gICAgb3V0cHV0RmllbGRzOiB7XG4gICAgICB2aWV3ZXI6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBleGlzdGluZyB1c2VyIHRoYXQgd2FzIGxvZ2dlZCBpbiBhbmQgcmV0dXJuZWQgYXMgYSB2aWV3ZXIuJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKHBhcnNlR3JhcGhRTFNjaGVtYS52aWV3ZXJUeXBlKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoYXJncywgY29udGV4dCwgbXV0YXRpb25JbmZvKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IHVzZXJuYW1lLCBwYXNzd29yZCwgYXV0aERhdGEgfSA9IGRlZXBjb3B5KGFyZ3MpO1xuICAgICAgICBjb25zdCB7IGNvbmZpZywgYXV0aCwgaW5mbyB9ID0gY29udGV4dDtcblxuICAgICAgICBjb25zdCB7IHNlc3Npb25Ub2tlbiwgb2JqZWN0SWQsIGF1dGhEYXRhUmVzcG9uc2UgfSA9IChcbiAgICAgICAgICBhd2FpdCB1c2Vyc1JvdXRlci5oYW5kbGVMb2dJbih7XG4gICAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICAgIHVzZXJuYW1lLFxuICAgICAgICAgICAgICBwYXNzd29yZCxcbiAgICAgICAgICAgICAgYXV0aERhdGEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcXVlcnk6IHt9LFxuICAgICAgICAgICAgY29uZmlnLFxuICAgICAgICAgICAgYXV0aCxcbiAgICAgICAgICAgIGluZm8sXG4gICAgICAgICAgfSlcbiAgICAgICAgKS5yZXNwb25zZTtcblxuICAgICAgICBjb250ZXh0LmluZm8uc2Vzc2lvblRva2VuID0gc2Vzc2lvblRva2VuO1xuXG4gICAgICAgIGNvbnN0IHZpZXdlciA9IGF3YWl0IGdldFVzZXJGcm9tU2Vzc2lvblRva2VuKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgbXV0YXRpb25JbmZvLFxuICAgICAgICAgICd2aWV3ZXIudXNlci4nLFxuICAgICAgICAgIG9iamVjdElkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhdXRoRGF0YVJlc3BvbnNlICYmIHZpZXdlci51c2VyKSB7IHZpZXdlci51c2VyLmF1dGhEYXRhUmVzcG9uc2UgPSBhdXRoRGF0YVJlc3BvbnNlOyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmlld2VyLFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEuaGFuZGxlRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGxvZ0luTXV0YXRpb24uYXJncy5pbnB1dC50eXBlLm9mVHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShsb2dJbk11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKCdsb2dJbicsIGxvZ0luTXV0YXRpb24sIHRydWUsIHRydWUpO1xuXG4gIGNvbnN0IGxvZ091dE11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ0xvZ091dCcsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgbG9nT3V0IG11dGF0aW9uIGNhbiBiZSB1c2VkIHRvIGxvZyBvdXQgYW4gZXhpc3RpbmcgdXNlci4nLFxuICAgIG91dHB1dEZpZWxkczoge1xuICAgICAgb2s6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSXQncyBhbHdheXMgdHJ1ZS5cIixcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoX2FyZ3MsIGNvbnRleHQpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0gPSBjb250ZXh0O1xuXG4gICAgICAgIGF3YWl0IHVzZXJzUm91dGVyLmhhbmRsZUxvZ091dCh7XG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgaW5mbyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgb2s6IHRydWUgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLmhhbmRsZUVycm9yKGUpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShsb2dPdXRNdXRhdGlvbi5hcmdzLmlucHV0LnR5cGUub2ZUeXBlLCB0cnVlLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGxvZ091dE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKCdsb2dPdXQnLCBsb2dPdXRNdXRhdGlvbiwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgY29uc3QgcmVzZXRQYXNzd29yZE11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ1Jlc2V0UGFzc3dvcmQnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSByZXNldFBhc3N3b3JkIG11dGF0aW9uIGNhbiBiZSB1c2VkIHRvIHJlc2V0IHRoZSBwYXNzd29yZCBvZiBhbiBleGlzdGluZyB1c2VyLicsXG4gICAgaW5wdXRGaWVsZHM6IHtcbiAgICAgIGVtYWlsOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uczogJ0VtYWlsIG9mIHRoZSB1c2VyIHRoYXQgc2hvdWxkIHJlY2VpdmUgdGhlIHJlc2V0IGVtYWlsJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG91dHB1dEZpZWxkczoge1xuICAgICAgb2s6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSXQncyBhbHdheXMgdHJ1ZS5cIixcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoeyBlbWFpbCB9LCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZywgYXV0aCwgaW5mbyB9ID0gY29udGV4dDtcblxuICAgICAgYXdhaXQgdXNlcnNSb3V0ZXIuaGFuZGxlUmVzZXRSZXF1ZXN0KHtcbiAgICAgICAgYm9keToge1xuICAgICAgICAgIGVtYWlsLFxuICAgICAgICB9LFxuICAgICAgICBjb25maWcsXG4gICAgICAgIGF1dGgsXG4gICAgICAgIGluZm8sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgb2s6IHRydWUgfTtcbiAgICB9LFxuICB9KTtcblxuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUocmVzZXRQYXNzd29yZE11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUocmVzZXRQYXNzd29yZE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKCdyZXNldFBhc3N3b3JkJywgcmVzZXRQYXNzd29yZE11dGF0aW9uLCB0cnVlLCB0cnVlKTtcblxuICBjb25zdCBjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ0NvbmZpcm1SZXNldFBhc3N3b3JkJyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGUgY29uZmlybVJlc2V0UGFzc3dvcmQgbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIG9mIGFuIGV4aXN0aW5nIHVzZXIuJyxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgdXNlcm5hbWU6IHtcbiAgICAgICAgZGVzY3JpcHRpb25zOiAnVXNlcm5hbWUgb2YgdGhlIHVzZXIgdGhhdCBoYXZlIHJlY2VpdmVkIHRoZSByZXNldCBlbWFpbCcsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgICBwYXNzd29yZDoge1xuICAgICAgICBkZXNjcmlwdGlvbnM6ICdOZXcgcGFzc3dvcmQgb2YgdGhlIHVzZXInLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICB9LFxuICAgICAgdG9rZW46IHtcbiAgICAgICAgZGVzY3JpcHRpb25zOiAnUmVzZXQgdG9rZW4gdGhhdCB3YXMgZW1haWxlZCB0byB0aGUgdXNlcicsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIG9rOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkl0J3MgYWx3YXlzIHRydWUuXCIsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICB9LFxuICAgIH0sXG4gICAgbXV0YXRlQW5kR2V0UGF5bG9hZDogYXN5bmMgKHsgdXNlcm5hbWUsIHBhc3N3b3JkLCB0b2tlbiB9LCBjb250ZXh0KSA9PiB7XG4gICAgICBjb25zdCB7IGNvbmZpZyB9ID0gY29udGV4dDtcbiAgICAgIGlmICghdXNlcm5hbWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlVTRVJOQU1FX01JU1NJTkcsICd5b3UgbXVzdCBwcm92aWRlIGEgdXNlcm5hbWUnKTtcbiAgICAgIH1cbiAgICAgIGlmICghcGFzc3dvcmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlBBU1NXT1JEX01JU1NJTkcsICd5b3UgbXVzdCBwcm92aWRlIGEgcGFzc3dvcmQnKTtcbiAgICAgIH1cbiAgICAgIGlmICghdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9USEVSX0NBVVNFLCAneW91IG11c3QgcHJvdmlkZSBhIHRva2VuJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVzZXJDb250cm9sbGVyID0gY29uZmlnLnVzZXJDb250cm9sbGVyO1xuICAgICAgYXdhaXQgdXNlckNvbnRyb2xsZXIudXBkYXRlUGFzc3dvcmQodXNlcm5hbWUsIHRva2VuLCBwYXNzd29yZCk7XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSB9O1xuICAgIH0sXG4gIH0pO1xuXG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShcbiAgICBjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsXG4gICAgdHJ1ZSxcbiAgICB0cnVlXG4gICk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKFxuICAgICdjb25maXJtUmVzZXRQYXNzd29yZCcsXG4gICAgY29uZmlybVJlc2V0UGFzc3dvcmRNdXRhdGlvbixcbiAgICB0cnVlLFxuICAgIHRydWVcbiAgKTtcblxuICBjb25zdCBzZW5kVmVyaWZpY2F0aW9uRW1haWxNdXRhdGlvbiA9IG11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQoe1xuICAgIG5hbWU6ICdTZW5kVmVyaWZpY2F0aW9uRW1haWwnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBzZW5kVmVyaWZpY2F0aW9uRW1haWwgbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgdmVyaWZpY2F0aW9uIGVtYWlsIGFnYWluLicsXG4gICAgaW5wdXRGaWVsZHM6IHtcbiAgICAgIGVtYWlsOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uczogJ0VtYWlsIG9mIHRoZSB1c2VyIHRoYXQgc2hvdWxkIHJlY2VpdmUgdGhlIHZlcmlmaWNhdGlvbiBlbWFpbCcsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIG9rOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkl0J3MgYWx3YXlzIHRydWUuXCIsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICB9LFxuICAgIH0sXG4gICAgbXV0YXRlQW5kR2V0UGF5bG9hZDogYXN5bmMgKHsgZW1haWwgfSwgY29udGV4dCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIGF1dGgsIGluZm8gfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgYXdhaXQgdXNlcnNSb3V0ZXIuaGFuZGxlVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0KHtcbiAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGluZm8sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYS5oYW5kbGVFcnJvcihlKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoXG4gICAgc2VuZFZlcmlmaWNhdGlvbkVtYWlsTXV0YXRpb24uYXJncy5pbnB1dC50eXBlLm9mVHlwZSxcbiAgICB0cnVlLFxuICAgIHRydWVcbiAgKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKHNlbmRWZXJpZmljYXRpb25FbWFpbE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKFxuICAgICdzZW5kVmVyaWZpY2F0aW9uRW1haWwnLFxuICAgIHNlbmRWZXJpZmljYXRpb25FbWFpbE11dGF0aW9uLFxuICAgIHRydWUsXG4gICAgdHJ1ZVxuICApO1xuXG4gIGNvbnN0IGNoYWxsZW5nZU11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ0NoYWxsZW5nZScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNoYWxsZW5nZSBtdXRhdGlvbiBjYW4gYmUgdXNlZCB0byBpbml0aWF0ZSBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ugd2hlbiBhbiBhdXRoIGFkYXB0ZXIgbmVlZHMgaXQuJyxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgdXNlcm5hbWU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSB1c2VybmFtZSB1c2VkIHRvIGxvZyBpbiB0aGUgdXNlci4nLFxuICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgfSxcbiAgICAgIHBhc3N3b3JkOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcGFzc3dvcmQgdXNlZCB0byBsb2cgaW4gdGhlIHVzZXIuJyxcbiAgICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIH0sXG4gICAgICBhdXRoRGF0YToge1xuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnQXV0aCBkYXRhIGFsbG93IHRvIHByZWlkZW50aWZ5IHRoZSB1c2VyIGlmIHRoZSBhdXRoIGFkYXB0ZXIgbmVlZHMgcHJlaWRlbnRpZmljYXRpb24uJyxcbiAgICAgICAgdHlwZTogT0JKRUNULFxuICAgICAgfSxcbiAgICAgIGNoYWxsZW5nZURhdGE6IHtcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ0NoYWxsZW5nZSBkYXRhIHBheWxvYWQsIGNhbiBiZSB1c2VkIHRvIHBvc3QgZGF0YSB0byBhdXRoIHByb3ZpZGVycyB0byBhdXRoIHByb3ZpZGVycyBpZiB0aGV5IG5lZWQgZGF0YSBmb3IgdGhlIHJlc3BvbnNlLicsXG4gICAgICAgIHR5cGU6IE9CSkVDVCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIGNoYWxsZW5nZURhdGE6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdDaGFsbGVuZ2UgcmVzcG9uc2UgZnJvbSBjb25maWd1cmVkIGF1dGggYWRhcHRlcnMuJyxcbiAgICAgICAgdHlwZTogT0JKRUNULFxuICAgICAgfSxcbiAgICB9LFxuICAgIG11dGF0ZUFuZEdldFBheWxvYWQ6IGFzeW5jIChpbnB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIGF1dGgsIGluZm8gfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgdXNlcnNSb3V0ZXIuaGFuZGxlQ2hhbGxlbmdlKHtcbiAgICAgICAgICBib2R5OiBpbnB1dCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBpbmZvLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEuaGFuZGxlRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGNoYWxsZW5nZU11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoY2hhbGxlbmdlTXV0YXRpb24udHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ2NoYWxsZW5nZScsIGNoYWxsZW5nZU11dGF0aW9uLCB0cnVlLCB0cnVlKTtcbn07XG5cbmV4cG9ydCB7IGxvYWQgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUMsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxTQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxLQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFBK0IsU0FBQVcseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSx1QkFBQUEsQ0FBQSx5QkFBQUEsQ0FBQSxXQUFBSyxPQUFBLEVBQUFMLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENB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
434
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJfZ3JhcGhxbFJlbGF5IiwiX2RlZXBjb3B5IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9Vc2Vyc1JvdXRlciIsIm9iamVjdHNNdXRhdGlvbnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9kZWZhdWx0R3JhcGhRTFR5cGVzIiwiX3VzZXJzUXVlcmllcyIsIl9tdXRhdGlvbiIsIl9ub2RlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwidXNlcnNSb3V0ZXIiLCJVc2Vyc1JvdXRlciIsImxvYWQiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJpc1VzZXJzQ2xhc3NEaXNhYmxlZCIsInNpZ25VcE11dGF0aW9uIiwibXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCIsIm5hbWUiLCJkZXNjcmlwdGlvbiIsImlucHV0RmllbGRzIiwiZmllbGRzIiwiZGVzY3JpcHRpb25zIiwidHlwZSIsInBhcnNlQ2xhc3NUeXBlcyIsImNsYXNzR3JhcGhRTENyZWF0ZVR5cGUiLCJvdXRwdXRGaWVsZHMiLCJ2aWV3ZXIiLCJHcmFwaFFMTm9uTnVsbCIsInZpZXdlclR5cGUiLCJtdXRhdGVBbmRHZXRQYXlsb2FkIiwiYXJncyIsImNvbnRleHQiLCJtdXRhdGlvbkluZm8iLCJkZWVwY29weSIsImNvbmZpZyIsImF1dGgiLCJpbmZvIiwicGFyc2VGaWVsZHMiLCJ0cmFuc2Zvcm1UeXBlcyIsImNsYXNzTmFtZSIsIm9yaWdpbmFsRmllbGRzIiwicmVxIiwic2Vzc2lvblRva2VuIiwib2JqZWN0SWQiLCJhdXRoRGF0YVJlc3BvbnNlIiwiY3JlYXRlT2JqZWN0IiwiZ2V0VXNlckZyb21TZXNzaW9uVG9rZW4iLCJ1c2VyIiwiaGFuZGxlRXJyb3IiLCJhZGRHcmFwaFFMVHlwZSIsImlucHV0Iiwib2ZUeXBlIiwiYWRkR3JhcGhRTE11dGF0aW9uIiwibG9nSW5XaXRoTXV0YXRpb24iLCJhdXRoRGF0YSIsIk9CSkVDVCIsIkdyYXBoUUxJbnB1dE9iamVjdFR5cGUiLCJjbGFzc0dyYXBoUUxDcmVhdGVGaWVsZHMiLCJnZXRGaWVsZHMiLCJrZXlzIiwicmVkdWNlIiwiZmllbGROYW1lIiwibG9nSW5NdXRhdGlvbiIsInVzZXJuYW1lIiwiR3JhcGhRTFN0cmluZyIsInBhc3N3b3JkIiwiaGFuZGxlTG9nSW4iLCJib2R5IiwicXVlcnkiLCJyZXNwb25zZSIsImxvZ091dE11dGF0aW9uIiwib2siLCJHcmFwaFFMQm9vbGVhbiIsIl9hcmdzIiwiaGFuZGxlTG9nT3V0IiwicmVzZXRQYXNzd29yZE11dGF0aW9uIiwiZW1haWwiLCJoYW5kbGVSZXNldFJlcXVlc3QiLCJjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uIiwidG9rZW4iLCJQYXJzZSIsIkVycm9yIiwiUEFTU1dPUkRfTUlTU0lORyIsIk9USEVSX0NBVVNFIiwidXNlckNvbnRyb2xsZXIiLCJ1cGRhdGVQYXNzd29yZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbE11dGF0aW9uIiwiaGFuZGxlVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0IiwiY2hhbGxlbmdlTXV0YXRpb24iLCJjaGFsbGVuZ2VEYXRhIiwiaGFuZGxlQ2hhbGxlbmdlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML2xvYWRlcnMvdXNlcnNNdXRhdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxTdHJpbmcsIEdyYXBoUUxCb29sZWFuLCBHcmFwaFFMSW5wdXRPYmplY3RUeXBlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBtdXRhdGlvbldpdGhDbGllbnRNdXRhdGlvbklkIH0gZnJvbSAnZ3JhcGhxbC1yZWxheSc7XG5pbXBvcnQgZGVlcGNvcHkgZnJvbSAnZGVlcGNvcHknO1xuaW1wb3J0IFVzZXJzUm91dGVyIGZyb20gJy4uLy4uL1JvdXRlcnMvVXNlcnNSb3V0ZXInO1xuaW1wb3J0ICogYXMgb2JqZWN0c011dGF0aW9ucyBmcm9tICcuLi9oZWxwZXJzL29iamVjdHNNdXRhdGlvbnMnO1xuaW1wb3J0IHsgT0JKRUNUIH0gZnJvbSAnLi9kZWZhdWx0R3JhcGhRTFR5cGVzJztcbmltcG9ydCB7IGdldFVzZXJGcm9tU2Vzc2lvblRva2VuIH0gZnJvbSAnLi91c2Vyc1F1ZXJpZXMnO1xuaW1wb3J0IHsgdHJhbnNmb3JtVHlwZXMgfSBmcm9tICcuLi90cmFuc2Zvcm1lcnMvbXV0YXRpb24nO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuXG5jb25zdCB1c2Vyc1JvdXRlciA9IG5ldyBVc2Vyc1JvdXRlcigpO1xuXG5jb25zdCBsb2FkID0gcGFyc2VHcmFwaFFMU2NoZW1hID0+IHtcbiAgaWYgKHBhcnNlR3JhcGhRTFNjaGVtYS5pc1VzZXJzQ2xhc3NEaXNhYmxlZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNpZ25VcE11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ1NpZ25VcCcsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgc2lnblVwIG11dGF0aW9uIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhbmQgc2lnbiB1cCBhIG5ldyB1c2VyLicsXG4gICAgaW5wdXRGaWVsZHM6IHtcbiAgICAgIGZpZWxkczoge1xuICAgICAgICBkZXNjcmlwdGlvbnM6ICdUaGVzZSBhcmUgdGhlIGZpZWxkcyBvZiB0aGUgbmV3IHVzZXIgdG8gYmUgY3JlYXRlZCBhbmQgc2lnbmVkIHVwLicsXG4gICAgICAgIHR5cGU6IHBhcnNlR3JhcGhRTFNjaGVtYS5wYXJzZUNsYXNzVHlwZXNbJ19Vc2VyJ10uY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIHZpZXdlcjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIG5ldyB1c2VyIHRoYXQgd2FzIGNyZWF0ZWQsIHNpZ25lZCB1cCBhbmQgcmV0dXJuZWQgYXMgYSB2aWV3ZXIuJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKHBhcnNlR3JhcGhRTFNjaGVtYS52aWV3ZXJUeXBlKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoYXJncywgY29udGV4dCwgbXV0YXRpb25JbmZvKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7IGZpZWxkcyB9ID0gZGVlcGNvcHkoYXJncyk7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0gPSBjb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IHBhcnNlRmllbGRzID0gYXdhaXQgdHJhbnNmb3JtVHlwZXMoJ2NyZWF0ZScsIGZpZWxkcywge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgICAgICAgb3JpZ2luYWxGaWVsZHM6IGFyZ3MuZmllbGRzLFxuICAgICAgICAgIHJlcTogeyBjb25maWcsIGF1dGgsIGluZm8gfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgeyBzZXNzaW9uVG9rZW4sIG9iamVjdElkLCBhdXRoRGF0YVJlc3BvbnNlIH0gPSBhd2FpdCBvYmplY3RzTXV0YXRpb25zLmNyZWF0ZU9iamVjdChcbiAgICAgICAgICAnX1VzZXInLFxuICAgICAgICAgIHBhcnNlRmllbGRzLFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGluZm9cbiAgICAgICAgKTtcblxuICAgICAgICBjb250ZXh0LmluZm8uc2Vzc2lvblRva2VuID0gc2Vzc2lvblRva2VuO1xuICAgICAgICBjb25zdCB2aWV3ZXIgPSBhd2FpdCBnZXRVc2VyRnJvbVNlc3Npb25Ub2tlbihcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG11dGF0aW9uSW5mbyxcbiAgICAgICAgICAndmlld2VyLnVzZXIuJyxcbiAgICAgICAgICBvYmplY3RJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXV0aERhdGFSZXNwb25zZSAmJiB2aWV3ZXIudXNlcikgeyB2aWV3ZXIudXNlci5hdXRoRGF0YVJlc3BvbnNlID0gYXV0aERhdGFSZXNwb25zZTsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHZpZXdlcixcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLmhhbmRsZUVycm9yKGUpO1xuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuXG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShzaWduVXBNdXRhdGlvbi5hcmdzLmlucHV0LnR5cGUub2ZUeXBlLCB0cnVlLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKHNpZ25VcE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKCdzaWduVXAnLCBzaWduVXBNdXRhdGlvbiwgdHJ1ZSwgdHJ1ZSk7XG4gIGNvbnN0IGxvZ0luV2l0aE11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ0xvZ0luV2l0aCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGxvZ0luV2l0aCBtdXRhdGlvbiBjYW4gYmUgdXNlZCB0byBzaWdudXAsIGxvZ2luIHVzZXIgd2l0aCAzcmQgcGFydHkgYXV0aGVudGljYXRpb24gc3lzdGVtLiBUaGlzIG11dGF0aW9uIGNyZWF0ZSBhIHVzZXIgaWYgdGhlIGF1dGhEYXRhIGRvIG5vdCBjb3JyZXNwb25kIHRvIGFuIGV4aXN0aW5nIG9uZS4nLFxuICAgIGlucHV0RmllbGRzOiB7XG4gICAgICBhdXRoRGF0YToge1xuICAgICAgICBkZXNjcmlwdGlvbnM6ICdUaGlzIGlzIHRoZSBhdXRoIGRhdGEgb2YgeW91ciBjdXN0b20gYXV0aCBwcm92aWRlcicsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChPQkpFQ1QpLFxuICAgICAgfSxcbiAgICAgIGZpZWxkczoge1xuICAgICAgICBkZXNjcmlwdGlvbnM6ICdUaGVzZSBhcmUgdGhlIGZpZWxkcyBvZiB0aGUgdXNlciB0byBiZSBjcmVhdGVkL3VwZGF0ZWQgYW5kIGxvZ2dlZCBpbi4nLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTElucHV0T2JqZWN0VHlwZSh7XG4gICAgICAgICAgbmFtZTogJ1VzZXJMb2dpbldpdGhJbnB1dCcsXG4gICAgICAgICAgZmllbGRzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc0dyYXBoUUxDcmVhdGVGaWVsZHMgPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW1xuICAgICAgICAgICAgICAnX1VzZXInXG4gICAgICAgICAgICBdLmNsYXNzR3JhcGhRTENyZWF0ZVR5cGUuZ2V0RmllbGRzKCk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoY2xhc3NHcmFwaFFMQ3JlYXRlRmllbGRzKS5yZWR1Y2UoKGZpZWxkcywgZmllbGROYW1lKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT09ICdwYXNzd29yZCcgJiZcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT09ICd1c2VybmFtZScgJiZcbiAgICAgICAgICAgICAgICBmaWVsZE5hbWUgIT09ICdhdXRoRGF0YSdcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkTmFtZV0gPSBjbGFzc0dyYXBoUUxDcmVhdGVGaWVsZHNbZmllbGROYW1lXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gZmllbGRzO1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG91dHB1dEZpZWxkczoge1xuICAgICAgdmlld2VyOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgbmV3IHVzZXIgdGhhdCB3YXMgY3JlYXRlZCwgc2lnbmVkIHVwIGFuZCByZXR1cm5lZCBhcyBhIHZpZXdlci4nLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwocGFyc2VHcmFwaFFMU2NoZW1hLnZpZXdlclR5cGUpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG11dGF0ZUFuZEdldFBheWxvYWQ6IGFzeW5jIChhcmdzLCBjb250ZXh0LCBtdXRhdGlvbkluZm8pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgZmllbGRzLCBhdXRoRGF0YSB9ID0gZGVlcGNvcHkoYXJncyk7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0gPSBjb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IHBhcnNlRmllbGRzID0gYXdhaXQgdHJhbnNmb3JtVHlwZXMoJ2NyZWF0ZScsIGZpZWxkcywge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ19Vc2VyJyxcbiAgICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgICAgICAgb3JpZ2luYWxGaWVsZHM6IGFyZ3MuZmllbGRzLFxuICAgICAgICAgIHJlcTogeyBjb25maWcsIGF1dGgsIGluZm8gfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgeyBzZXNzaW9uVG9rZW4sIG9iamVjdElkLCBhdXRoRGF0YVJlc3BvbnNlIH0gPSBhd2FpdCBvYmplY3RzTXV0YXRpb25zLmNyZWF0ZU9iamVjdChcbiAgICAgICAgICAnX1VzZXInLFxuICAgICAgICAgIHsgLi4ucGFyc2VGaWVsZHMsIGF1dGhEYXRhIH0sXG4gICAgICAgICAgY29uZmlnLFxuICAgICAgICAgIGF1dGgsXG4gICAgICAgICAgaW5mb1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnRleHQuaW5mby5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW47XG4gICAgICAgIGNvbnN0IHZpZXdlciA9IGF3YWl0IGdldFVzZXJGcm9tU2Vzc2lvblRva2VuKFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgbXV0YXRpb25JbmZvLFxuICAgICAgICAgICd2aWV3ZXIudXNlci4nLFxuICAgICAgICAgIG9iamVjdElkXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhdXRoRGF0YVJlc3BvbnNlICYmIHZpZXdlci51c2VyKSB7IHZpZXdlci51c2VyLmF1dGhEYXRhUmVzcG9uc2UgPSBhdXRoRGF0YVJlc3BvbnNlOyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdmlld2VyLFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEuaGFuZGxlRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGxvZ0luV2l0aE11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUobG9nSW5XaXRoTXV0YXRpb24udHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ2xvZ0luV2l0aCcsIGxvZ0luV2l0aE11dGF0aW9uLCB0cnVlLCB0cnVlKTtcblxuICBjb25zdCBsb2dJbk11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ0xvZ0luJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBsb2dJbiBtdXRhdGlvbiBjYW4gYmUgdXNlZCB0byBsb2cgaW4gYW4gZXhpc3RpbmcgdXNlci4nLFxuICAgIGlucHV0RmllbGRzOiB7XG4gICAgICB1c2VybmFtZToge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHVzZXJuYW1lIHVzZWQgdG8gbG9nIGluIHRoZSB1c2VyLicsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgICBwYXNzd29yZDoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHBhc3N3b3JkIHVzZWQgdG8gbG9nIGluIHRoZSB1c2VyLicsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgICBhdXRoRGF0YToge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dGggZGF0YSBwYXlsb2FkLCBuZWVkZWQgaWYgc29tZSByZXF1aXJlZCBhdXRoIGFkYXB0ZXJzIGFyZSBjb25maWd1cmVkLicsXG4gICAgICAgIHR5cGU6IE9CSkVDVCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIHZpZXdlcjoge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGV4aXN0aW5nIHVzZXIgdGhhdCB3YXMgbG9nZ2VkIGluIGFuZCByZXR1cm5lZCBhcyBhIHZpZXdlci4nLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwocGFyc2VHcmFwaFFMU2NoZW1hLnZpZXdlclR5cGUpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG11dGF0ZUFuZEdldFBheWxvYWQ6IGFzeW5jIChhcmdzLCBjb250ZXh0LCBtdXRhdGlvbkluZm8pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHsgdXNlcm5hbWUsIHBhc3N3b3JkLCBhdXRoRGF0YSB9ID0gZGVlcGNvcHkoYXJncyk7XG4gICAgICAgIGNvbnN0IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0gPSBjb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IHsgc2Vzc2lvblRva2VuLCBvYmplY3RJZCwgYXV0aERhdGFSZXNwb25zZSB9ID0gKFxuICAgICAgICAgIGF3YWl0IHVzZXJzUm91dGVyLmhhbmRsZUxvZ0luKHtcbiAgICAgICAgICAgIGJvZHk6IHtcbiAgICAgICAgICAgICAgdXNlcm5hbWUsXG4gICAgICAgICAgICAgIHBhc3N3b3JkLFxuICAgICAgICAgICAgICBhdXRoRGF0YSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBxdWVyeToge30sXG4gICAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgICBhdXRoLFxuICAgICAgICAgICAgaW5mbyxcbiAgICAgICAgICB9KVxuICAgICAgICApLnJlc3BvbnNlO1xuXG4gICAgICAgIGNvbnRleHQuaW5mby5zZXNzaW9uVG9rZW4gPSBzZXNzaW9uVG9rZW47XG5cbiAgICAgICAgY29uc3Qgdmlld2VyID0gYXdhaXQgZ2V0VXNlckZyb21TZXNzaW9uVG9rZW4oXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBtdXRhdGlvbkluZm8sXG4gICAgICAgICAgJ3ZpZXdlci51c2VyLicsXG4gICAgICAgICAgb2JqZWN0SWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGF1dGhEYXRhUmVzcG9uc2UgJiYgdmlld2VyLnVzZXIpIHsgdmlld2VyLnVzZXIuYXV0aERhdGFSZXNwb25zZSA9IGF1dGhEYXRhUmVzcG9uc2U7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2aWV3ZXIsXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYS5oYW5kbGVFcnJvcihlKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUobG9nSW5NdXRhdGlvbi5hcmdzLmlucHV0LnR5cGUub2ZUeXBlLCB0cnVlLCB0cnVlKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGxvZ0luTXV0YXRpb24udHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ2xvZ0luJywgbG9nSW5NdXRhdGlvbiwgdHJ1ZSwgdHJ1ZSk7XG5cbiAgY29uc3QgbG9nT3V0TXV0YXRpb24gPSBtdXRhdGlvbldpdGhDbGllbnRNdXRhdGlvbklkKHtcbiAgICBuYW1lOiAnTG9nT3V0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBsb2dPdXQgbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gbG9nIG91dCBhbiBleGlzdGluZyB1c2VyLicsXG4gICAgb3V0cHV0RmllbGRzOiB7XG4gICAgICBvazoge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJJdCdzIGFsd2F5cyB0cnVlLlwiLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG11dGF0ZUFuZEdldFBheWxvYWQ6IGFzeW5jIChfYXJncywgY29udGV4dCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIGF1dGgsIGluZm8gfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgYXdhaXQgdXNlcnNSb3V0ZXIuaGFuZGxlTG9nT3V0KHtcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBpbmZvLFxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyBvazogdHJ1ZSB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEuaGFuZGxlRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGxvZ091dE11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUobG9nT3V0TXV0YXRpb24udHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ2xvZ091dCcsIGxvZ091dE11dGF0aW9uLCB0cnVlLCB0cnVlKTtcblxuICBjb25zdCByZXNldFBhc3N3b3JkTXV0YXRpb24gPSBtdXRhdGlvbldpdGhDbGllbnRNdXRhdGlvbklkKHtcbiAgICBuYW1lOiAnUmVzZXRQYXNzd29yZCcsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIHJlc2V0UGFzc3dvcmQgbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gcmVzZXQgdGhlIHBhc3N3b3JkIG9mIGFuIGV4aXN0aW5nIHVzZXIuJyxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgZW1haWw6IHtcbiAgICAgICAgZGVzY3JpcHRpb25zOiAnRW1haWwgb2YgdGhlIHVzZXIgdGhhdCBzaG91bGQgcmVjZWl2ZSB0aGUgcmVzZXQgZW1haWwnLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTFN0cmluZyksXG4gICAgICB9LFxuICAgIH0sXG4gICAgb3V0cHV0RmllbGRzOiB7XG4gICAgICBvazoge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJJdCdzIGFsd2F5cyB0cnVlLlwiLFxuICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG11dGF0ZUFuZEdldFBheWxvYWQ6IGFzeW5jICh7IGVtYWlsIH0sIGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0gPSBjb250ZXh0O1xuXG4gICAgICBhd2FpdCB1c2Vyc1JvdXRlci5oYW5kbGVSZXNldFJlcXVlc3Qoe1xuICAgICAgICBib2R5OiB7XG4gICAgICAgICAgZW1haWwsXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgaW5mbyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyBvazogdHJ1ZSB9O1xuICAgIH0sXG4gIH0pO1xuXG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShyZXNldFBhc3N3b3JkTXV0YXRpb24uYXJncy5pbnB1dC50eXBlLm9mVHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShyZXNldFBhc3N3b3JkTXV0YXRpb24udHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ3Jlc2V0UGFzc3dvcmQnLCByZXNldFBhc3N3b3JkTXV0YXRpb24sIHRydWUsIHRydWUpO1xuXG4gIGNvbnN0IGNvbmZpcm1SZXNldFBhc3N3b3JkTXV0YXRpb24gPSBtdXRhdGlvbldpdGhDbGllbnRNdXRhdGlvbklkKHtcbiAgICBuYW1lOiAnQ29uZmlybVJlc2V0UGFzc3dvcmQnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBjb25maXJtUmVzZXRQYXNzd29yZCBtdXRhdGlvbiBjYW4gYmUgdXNlZCB0byByZXNldCB0aGUgcGFzc3dvcmQgb2YgYW4gZXhpc3RpbmcgdXNlci4nLFxuICAgIGlucHV0RmllbGRzOiB7XG4gICAgICB1c2VybmFtZToge1xuICAgICAgICBkZXNjcmlwdGlvbnM6ICdVc2VybmFtZSBvZiB0aGUgdXNlciB0aGF0IGhhdmUgcmVjZWl2ZWQgdGhlIHJlc2V0IGVtYWlsJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgfSxcbiAgICAgIHBhc3N3b3JkOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uczogJ05ldyBwYXNzd29yZCBvZiB0aGUgdXNlcicsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgICB0b2tlbjoge1xuICAgICAgICBkZXNjcmlwdGlvbnM6ICdSZXNldCB0b2tlbiB0aGF0IHdhcyBlbWFpbGVkIHRvIHRoZSB1c2VyJyxcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxTdHJpbmcpLFxuICAgICAgfSxcbiAgICB9LFxuICAgIG91dHB1dEZpZWxkczoge1xuICAgICAgb2s6IHtcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSXQncyBhbHdheXMgdHJ1ZS5cIixcbiAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtdXRhdGVBbmRHZXRQYXlsb2FkOiBhc3luYyAoeyBwYXNzd29yZCwgdG9rZW4gfSwgY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgeyBjb25maWcgfSA9IGNvbnRleHQ7XG4gICAgICBpZiAoIXBhc3N3b3JkKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5QQVNTV09SRF9NSVNTSU5HLCAneW91IG11c3QgcHJvdmlkZSBhIHBhc3N3b3JkJyk7XG4gICAgICB9XG4gICAgICBpZiAoIXRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PVEhFUl9DQVVTRSwgJ3lvdSBtdXN0IHByb3ZpZGUgYSB0b2tlbicpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1c2VyQ29udHJvbGxlciA9IGNvbmZpZy51c2VyQ29udHJvbGxlcjtcbiAgICAgIGF3YWl0IHVzZXJDb250cm9sbGVyLnVwZGF0ZVBhc3N3b3JkKHRva2VuLCBwYXNzd29yZCk7XG4gICAgICByZXR1cm4geyBvazogdHJ1ZSB9O1xuICAgIH0sXG4gIH0pO1xuXG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShcbiAgICBjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsXG4gICAgdHJ1ZSxcbiAgICB0cnVlXG4gICk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMVHlwZShjb25maXJtUmVzZXRQYXNzd29yZE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKFxuICAgICdjb25maXJtUmVzZXRQYXNzd29yZCcsXG4gICAgY29uZmlybVJlc2V0UGFzc3dvcmRNdXRhdGlvbixcbiAgICB0cnVlLFxuICAgIHRydWVcbiAgKTtcblxuICBjb25zdCBzZW5kVmVyaWZpY2F0aW9uRW1haWxNdXRhdGlvbiA9IG11dGF0aW9uV2l0aENsaWVudE11dGF0aW9uSWQoe1xuICAgIG5hbWU6ICdTZW5kVmVyaWZpY2F0aW9uRW1haWwnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoZSBzZW5kVmVyaWZpY2F0aW9uRW1haWwgbXV0YXRpb24gY2FuIGJlIHVzZWQgdG8gc2VuZCB0aGUgdmVyaWZpY2F0aW9uIGVtYWlsIGFnYWluLicsXG4gICAgaW5wdXRGaWVsZHM6IHtcbiAgICAgIGVtYWlsOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uczogJ0VtYWlsIG9mIHRoZSB1c2VyIHRoYXQgc2hvdWxkIHJlY2VpdmUgdGhlIHZlcmlmaWNhdGlvbiBlbWFpbCcsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMU3RyaW5nKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIG9rOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkl0J3MgYWx3YXlzIHRydWUuXCIsXG4gICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICB9LFxuICAgIH0sXG4gICAgbXV0YXRlQW5kR2V0UGF5bG9hZDogYXN5bmMgKHsgZW1haWwgfSwgY29udGV4dCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIGF1dGgsIGluZm8gfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgYXdhaXQgdXNlcnNSb3V0ZXIuaGFuZGxlVmVyaWZpY2F0aW9uRW1haWxSZXF1ZXN0KHtcbiAgICAgICAgICBib2R5OiB7XG4gICAgICAgICAgICBlbWFpbCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbmZpZyxcbiAgICAgICAgICBhdXRoLFxuICAgICAgICAgIGluZm8sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IG9rOiB0cnVlIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYS5oYW5kbGVFcnJvcihlKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoXG4gICAgc2VuZFZlcmlmaWNhdGlvbkVtYWlsTXV0YXRpb24uYXJncy5pbnB1dC50eXBlLm9mVHlwZSxcbiAgICB0cnVlLFxuICAgIHRydWVcbiAgKTtcbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKHNlbmRWZXJpZmljYXRpb25FbWFpbE11dGF0aW9uLnR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTE11dGF0aW9uKFxuICAgICdzZW5kVmVyaWZpY2F0aW9uRW1haWwnLFxuICAgIHNlbmRWZXJpZmljYXRpb25FbWFpbE11dGF0aW9uLFxuICAgIHRydWUsXG4gICAgdHJ1ZVxuICApO1xuXG4gIGNvbnN0IGNoYWxsZW5nZU11dGF0aW9uID0gbXV0YXRpb25XaXRoQ2xpZW50TXV0YXRpb25JZCh7XG4gICAgbmFtZTogJ0NoYWxsZW5nZScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhlIGNoYWxsZW5nZSBtdXRhdGlvbiBjYW4gYmUgdXNlZCB0byBpbml0aWF0ZSBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ugd2hlbiBhbiBhdXRoIGFkYXB0ZXIgbmVlZHMgaXQuJyxcbiAgICBpbnB1dEZpZWxkczoge1xuICAgICAgdXNlcm5hbWU6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSB1c2VybmFtZSB1c2VkIHRvIGxvZyBpbiB0aGUgdXNlci4nLFxuICAgICAgICB0eXBlOiBHcmFwaFFMU3RyaW5nLFxuICAgICAgfSxcbiAgICAgIHBhc3N3b3JkOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcGFzc3dvcmQgdXNlZCB0byBsb2cgaW4gdGhlIHVzZXIuJyxcbiAgICAgICAgdHlwZTogR3JhcGhRTFN0cmluZyxcbiAgICAgIH0sXG4gICAgICBhdXRoRGF0YToge1xuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnQXV0aCBkYXRhIGFsbG93IHRvIHByZWlkZW50aWZ5IHRoZSB1c2VyIGlmIHRoZSBhdXRoIGFkYXB0ZXIgbmVlZHMgcHJlaWRlbnRpZmljYXRpb24uJyxcbiAgICAgICAgdHlwZTogT0JKRUNULFxuICAgICAgfSxcbiAgICAgIGNoYWxsZW5nZURhdGE6IHtcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ0NoYWxsZW5nZSBkYXRhIHBheWxvYWQsIGNhbiBiZSB1c2VkIHRvIHBvc3QgZGF0YSB0byBhdXRoIHByb3ZpZGVycyB0byBhdXRoIHByb3ZpZGVycyBpZiB0aGV5IG5lZWQgZGF0YSBmb3IgdGhlIHJlc3BvbnNlLicsXG4gICAgICAgIHR5cGU6IE9CSkVDVCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvdXRwdXRGaWVsZHM6IHtcbiAgICAgIGNoYWxsZW5nZURhdGE6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdDaGFsbGVuZ2UgcmVzcG9uc2UgZnJvbSBjb25maWd1cmVkIGF1dGggYWRhcHRlcnMuJyxcbiAgICAgICAgdHlwZTogT0JKRUNULFxuICAgICAgfSxcbiAgICB9LFxuICAgIG11dGF0ZUFuZEdldFBheWxvYWQ6IGFzeW5jIChpbnB1dCwgY29udGV4dCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBjb25maWcsIGF1dGgsIGluZm8gfSA9IGNvbnRleHQ7XG5cbiAgICAgICAgY29uc3QgeyByZXNwb25zZSB9ID0gYXdhaXQgdXNlcnNSb3V0ZXIuaGFuZGxlQ2hhbGxlbmdlKHtcbiAgICAgICAgICBib2R5OiBpbnB1dCxcbiAgICAgICAgICBjb25maWcsXG4gICAgICAgICAgYXV0aCxcbiAgICAgICAgICBpbmZvLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEuaGFuZGxlRXJyb3IoZSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSk7XG5cbiAgcGFyc2VHcmFwaFFMU2NoZW1hLmFkZEdyYXBoUUxUeXBlKGNoYWxsZW5nZU11dGF0aW9uLmFyZ3MuaW5wdXQudHlwZS5vZlR5cGUsIHRydWUsIHRydWUpO1xuICBwYXJzZUdyYXBoUUxTY2hlbWEuYWRkR3JhcGhRTFR5cGUoY2hhbGxlbmdlTXV0YXRpb24udHlwZSwgdHJ1ZSwgdHJ1ZSk7XG4gIHBhcnNlR3JhcGhRTFNjaGVtYS5hZGRHcmFwaFFMTXV0YXRpb24oJ2NoYWxsZW5nZScsIGNoYWxsZW5nZU11dGF0aW9uLCB0cnVlLCB0cnVlKTtcbn07XG5cbmV4cG9ydCB7IGxvYWQgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssZ0JBQUEsR0FBQUMsdUJBQUEsQ0FBQU4sT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxhQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxT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
@@ -11,11 +11,6 @@ var objectsMutations = _interopRequireWildcard(require("../helpers/objectsMutati
11
11
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
12
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
17
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
18
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
19
14
  const transformTypes = async (inputType, fields, {
20
15
  className,
21
16
  parseGraphQLSchema,
@@ -115,9 +110,10 @@ const transformers = {
115
110
  const {
116
111
  fileInfo
117
112
  } = await (0, _filesMutations.handleUpload)(upload, config);
118
- return _objectSpread(_objectSpread({}, fileInfo), {}, {
113
+ return {
114
+ ...fileInfo,
119
115
  __type: 'File'
120
- });
116
+ };
121
117
  } else if (file && file.name) {
122
118
  return {
123
119
  name: file.name,
@@ -131,7 +127,8 @@ const transformers = {
131
127
  __type: 'Polygon',
132
128
  coordinates: value.map(geoPoint => [geoPoint.latitude, geoPoint.longitude])
133
129
  }),
134
- geoPoint: value => _objectSpread(_objectSpread({}, value), {}, {
130
+ geoPoint: value => ({
131
+ ...value,
135
132
  __type: 'GeoPoint'
136
133
  }),
137
134
  ACL: value => {
@@ -275,4 +272,4 @@ const transformers = {
275
272
  }
276
273
  }
277
274
  };
278
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxSZWxheSIsIl9maWxlc011dGF0aW9ucyIsIm9iamVjdHNNdXRhdGlvbnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJ0cmFuc2Zvcm1UeXBlcyIsImlucHV0VHlwZSIsImZpZWxkcyIsImNsYXNzTmFtZSIsInBhcnNlR3JhcGhRTFNjaGVtYSIsInJlcSIsIm9yaWdpbmFsRmllbGRzIiwiY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZSIsImNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUiLCJjb25maWciLCJpc0NyZWF0ZUVuYWJsZWQiLCJpc1VwZGF0ZUVuYWJsZWQiLCJwYXJzZUNsYXNzVHlwZXMiLCJwYXJzZUNsYXNzIiwicGFyc2VDbGFzc2VzIiwiY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZUZpZWxkcyIsImdldEZpZWxkcyIsImNsYXNzR3JhcGhRTFVwZGF0ZVR5cGVGaWVsZHMiLCJwcm9taXNlcyIsIm1hcCIsImZpZWxkIiwiaW5wdXRUeXBlRmllbGQiLCJwYXJzZUZpZWxkVHlwZSIsInR5cGUiLCJfX29wIiwidHJhbnNmb3JtZXJzIiwiZ2VvUG9pbnQiLCJwb2x5Z29uIiwiZmlsZSIsInJlbGF0aW9uIiwidGFyZ2V0Q2xhc3MiLCJwb2ludGVyIiwiUHJvbWlzZSIsImFsbCIsIkFDTCIsImV4cG9ydHMiLCJpbnB1dCIsInVwbG9hZCIsImZpbGVJbmZvIiwiaGFuZGxlVXBsb2FkIiwiX190eXBlIiwibmFtZSIsInVybCIsIlBhcnNlIiwiRXJyb3IiLCJGSUxFX1NBVkVfRVJST1IiLCJjb29yZGluYXRlcyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwicGFyc2VBQ0wiLCJwdWJsaWMiLCJyZWFkIiwid3JpdGUiLCJ1c2VycyIsInJ1bGUiLCJnbG9iYWxJZE9iamVjdCIsImZyb21HbG9iYWxJZCIsInVzZXJJZCIsImlkIiwicm9sZXMiLCJyb2xlTmFtZSIsIm9yaWdpbmFsVmFsdWUiLCJhdXRoIiwiaW5mbyIsIklOVkFMSURfUE9JTlRFUiIsIm9wIiwib3BzIiwibmVzdGVkT2JqZWN0c1RvQWRkIiwiY3JlYXRlQW5kQWRkIiwicGFyc2VGaWVsZHMiLCJjcmVhdGVPYmplY3QiLCJvYmplY3QiLCJvYmplY3RJZCIsImFkZCIsIm9iamVjdHMiLCJyZW1vdmUiLCJuZXN0ZWRPYmplY3RUb0FkZCIsImNyZWF0ZUFuZExpbmsiLCJsaW5rIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvdHJhbnNmb3JtZXJzL211dGF0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCB7IGZyb21HbG9iYWxJZCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuaW1wb3J0IHsgaGFuZGxlVXBsb2FkIH0gZnJvbSAnLi4vbG9hZGVycy9maWxlc011dGF0aW9ucyc7XG5pbXBvcnQgKiBhcyBvYmplY3RzTXV0YXRpb25zIGZyb20gJy4uL2hlbHBlcnMvb2JqZWN0c011dGF0aW9ucyc7XG5cbmNvbnN0IHRyYW5zZm9ybVR5cGVzID0gYXN5bmMgKFxuICBpbnB1dFR5cGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScsXG4gIGZpZWxkcyxcbiAgeyBjbGFzc05hbWUsIHBhcnNlR3JhcGhRTFNjaGVtYSwgcmVxLCBvcmlnaW5hbEZpZWxkcyB9XG4pID0+IHtcbiAgY29uc3Qge1xuICAgIGNsYXNzR3JhcGhRTENyZWF0ZVR5cGUsXG4gICAgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSxcbiAgICBjb25maWc6IHsgaXNDcmVhdGVFbmFibGVkLCBpc1VwZGF0ZUVuYWJsZWQgfSxcbiAgfSA9IHBhcnNlR3JhcGhRTFNjaGVtYS5wYXJzZUNsYXNzVHlwZXNbY2xhc3NOYW1lXTtcbiAgY29uc3QgcGFyc2VDbGFzcyA9IHBhcnNlR3JhcGhRTFNjaGVtYS5wYXJzZUNsYXNzZXNbY2xhc3NOYW1lXTtcbiAgaWYgKGZpZWxkcykge1xuICAgIGNvbnN0IGNsYXNzR3JhcGhRTENyZWF0ZVR5cGVGaWVsZHMgPVxuICAgICAgaXNDcmVhdGVFbmFibGVkICYmIGNsYXNzR3JhcGhRTENyZWF0ZVR5cGUgPyBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlLmdldEZpZWxkcygpIDogbnVsbDtcbiAgICBjb25zdCBjbGFzc0dyYXBoUUxVcGRhdGVUeXBlRmllbGRzID1cbiAgICAgIGlzVXBkYXRlRW5hYmxlZCAmJiBjbGFzc0dyYXBoUUxVcGRhdGVUeXBlID8gY2xhc3NHcmFwaFFMVXBkYXRlVHlwZS5nZXRGaWVsZHMoKSA6IG51bGw7XG4gICAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhmaWVsZHMpLm1hcChhc3luYyBmaWVsZCA9PiB7XG4gICAgICBsZXQgaW5wdXRUeXBlRmllbGQ7XG4gICAgICBpZiAoaW5wdXRUeXBlID09PSAnY3JlYXRlJyAmJiBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzKSB7XG4gICAgICAgIGlucHV0VHlwZUZpZWxkID0gY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZUZpZWxkc1tmaWVsZF07XG4gICAgICB9IGVsc2UgaWYgKGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGVGaWVsZHMpIHtcbiAgICAgICAgaW5wdXRUeXBlRmllbGQgPSBjbGFzc0dyYXBoUUxVcGRhdGVUeXBlRmllbGRzW2ZpZWxkXTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFR5cGVGaWVsZCkge1xuICAgICAgICBjb25zdCBwYXJzZUZpZWxkVHlwZSA9IHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkXS50eXBlO1xuICAgICAgICBzd2l0Y2ggKHBhcnNlRmllbGRUeXBlKSB7XG4gICAgICAgICAgY2FzZSAnR2VvUG9pbnQnOlxuICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHsgX19vcDogJ0RlbGV0ZScgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRdID0gdHJhbnNmb3JtZXJzLmdlb1BvaW50KGZpZWxkc1tmaWVsZF0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnUG9seWdvbic6XG4gICAgICAgICAgICBpZiAoZmllbGRzW2ZpZWxkXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBmaWVsZHNbZmllbGRdID0geyBfX29wOiAnRGVsZXRlJyB9O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB0cmFuc2Zvcm1lcnMucG9seWdvbihmaWVsZHNbZmllbGRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0ZpbGUnOlxuICAgICAgICAgICAgLy8gV2UgbmVlZCB0byB1c2UgdGhlIG9yaWdpbmFsRmllbGRzIHRvIGhhbmRsZSB0aGUgZmlsZSB1cGxvYWRcbiAgICAgICAgICAgIC8vIHNpbmNlIGZpZWxkcyBhcmUgYSBkZWVwY29weSBhbmQgZG8gbm90IGtlZXAgdGhlIGZpbGUgb2JqZWN0XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRdID0gYXdhaXQgdHJhbnNmb3JtZXJzLmZpbGUob3JpZ2luYWxGaWVsZHNbZmllbGRdLCByZXEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnUmVsYXRpb24nOlxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5yZWxhdGlvbihcbiAgICAgICAgICAgICAgcGFyc2VDbGFzcy5maWVsZHNbZmllbGRdLnRhcmdldENsYXNzLFxuICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSxcbiAgICAgICAgICAgICAgb3JpZ2luYWxGaWVsZHNbZmllbGRdLFxuICAgICAgICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgICAgICAgICAgIHJlcVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1BvaW50ZXInOlxuICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHsgX19vcDogJ0RlbGV0ZScgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRdID0gYXdhaXQgdHJhbnNmb3JtZXJzLnBvaW50ZXIoXG4gICAgICAgICAgICAgIHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkXS50YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIG9yaWdpbmFsRmllbGRzW2ZpZWxkXSxcbiAgICAgICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICAgICAgICByZXFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHsgX19vcDogJ0RlbGV0ZScgfTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgaWYgKGZpZWxkcy5BQ0wpIHsgZmllbGRzLkFDTCA9IHRyYW5zZm9ybWVycy5BQ0woZmllbGRzLkFDTCk7IH1cbiAgfVxuICByZXR1cm4gZmllbGRzO1xufTtcblxuY29uc3QgdHJhbnNmb3JtZXJzID0ge1xuICBmaWxlOiBhc3luYyAoaW5wdXQsIHsgY29uZmlnIH0pID0+IHtcbiAgICBpZiAoaW5wdXQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgfVxuICAgIGNvbnN0IHsgZmlsZSwgdXBsb2FkIH0gPSBpbnB1dDtcbiAgICBpZiAodXBsb2FkKSB7XG4gICAgICBjb25zdCB7IGZpbGVJbmZvIH0gPSBhd2FpdCBoYW5kbGVVcGxvYWQodXBsb2FkLCBjb25maWcpO1xuICAgICAgcmV0dXJuIHsgLi4uZmlsZUluZm8sIF9fdHlwZTogJ0ZpbGUnIH07XG4gICAgfSBlbHNlIGlmIChmaWxlICYmIGZpbGUubmFtZSkge1xuICAgICAgcmV0dXJuIHsgbmFtZTogZmlsZS5uYW1lLCBfX3R5cGU6ICdGaWxlJywgdXJsOiBmaWxlLnVybCB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuRklMRV9TQVZFX0VSUk9SLCAnSW52YWxpZCBmaWxlIHVwbG9hZC4nKTtcbiAgfSxcbiAgcG9seWdvbjogdmFsdWUgPT4gKHtcbiAgICBfX3R5cGU6ICdQb2x5Z29uJyxcbiAgICBjb29yZGluYXRlczogdmFsdWUubWFwKGdlb1BvaW50ID0+IFtnZW9Qb2ludC5sYXRpdHVkZSwgZ2VvUG9pbnQubG9uZ2l0dWRlXSksXG4gIH0pLFxuICBnZW9Qb2ludDogdmFsdWUgPT4gKHtcbiAgICAuLi52YWx1ZSxcbiAgICBfX3R5cGU6ICdHZW9Qb2ludCcsXG4gIH0pLFxuICBBQ0w6IHZhbHVlID0+IHtcbiAgICBjb25zdCBwYXJzZUFDTCA9IHt9O1xuICAgIGlmICh2YWx1ZS5wdWJsaWMpIHtcbiAgICAgIHBhcnNlQUNMWycqJ10gPSB7XG4gICAgICAgIHJlYWQ6IHZhbHVlLnB1YmxpYy5yZWFkLFxuICAgICAgICB3cml0ZTogdmFsdWUucHVibGljLndyaXRlLFxuICAgICAgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnVzZXJzKSB7XG4gICAgICB2YWx1ZS51c2Vycy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChydWxlLnVzZXJJZCk7XG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSAnX1VzZXInKSB7XG4gICAgICAgICAgcnVsZS51c2VySWQgPSBnbG9iYWxJZE9iamVjdC5pZDtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZUFDTFtydWxlLnVzZXJJZF0gPSB7XG4gICAgICAgICAgcmVhZDogcnVsZS5yZWFkLFxuICAgICAgICAgIHdyaXRlOiBydWxlLndyaXRlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZS5yb2xlcykge1xuICAgICAgdmFsdWUucm9sZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgcGFyc2VBQ0xbYHJvbGU6JHtydWxlLnJvbGVOYW1lfWBdID0ge1xuICAgICAgICAgIHJlYWQ6IHJ1bGUucmVhZCxcbiAgICAgICAgICB3cml0ZTogcnVsZS53cml0ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VBQ0w7XG4gIH0sXG4gIHJlbGF0aW9uOiBhc3luYyAoXG4gICAgdGFyZ2V0Q2xhc3MsXG4gICAgZmllbGQsXG4gICAgdmFsdWUsXG4gICAgb3JpZ2luYWxWYWx1ZSxcbiAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgeyBjb25maWcsIGF1dGgsIGluZm8gfVxuICApID0+IHtcbiAgICBpZiAoT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMClcbiAgICB7IHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfUE9JTlRFUixcbiAgICAgIGBZb3UgbmVlZCB0byBwcm92aWRlIGF0IGxlYXN0IG9uZSBvcGVyYXRpb24gb24gdGhlIHJlbGF0aW9uIG11dGF0aW9uIG9mIGZpZWxkICR7ZmllbGR9YFxuICAgICk7IH1cblxuICAgIGNvbnN0IG9wID0ge1xuICAgICAgX19vcDogJ0JhdGNoJyxcbiAgICAgIG9wczogW10sXG4gICAgfTtcbiAgICBsZXQgbmVzdGVkT2JqZWN0c1RvQWRkID0gW107XG5cbiAgICBpZiAodmFsdWUuY3JlYXRlQW5kQWRkKSB7XG4gICAgICBuZXN0ZWRPYmplY3RzVG9BZGQgPSAoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgIHZhbHVlLmNyZWF0ZUFuZEFkZC5tYXAoYXN5bmMgKGlucHV0LCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZUZpZWxkcyA9IGF3YWl0IHRyYW5zZm9ybVR5cGVzKCdjcmVhdGUnLCBpbnB1dCwge1xuICAgICAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgICAgICBvcmlnaW5hbEZpZWxkczogb3JpZ2luYWxWYWx1ZS5jcmVhdGVBbmRBZGRbaV0sXG4gICAgICAgICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgICAgICAgcmVxOiB7IGNvbmZpZywgYXV0aCwgaW5mbyB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0c011dGF0aW9ucy5jcmVhdGVPYmplY3QodGFyZ2V0Q2xhc3MsIHBhcnNlRmllbGRzLCBjb25maWcsIGF1dGgsIGluZm8pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICkubWFwKG9iamVjdCA9PiAoe1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgb2JqZWN0SWQ6IG9iamVjdC5vYmplY3RJZCxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuYWRkIHx8IG5lc3RlZE9iamVjdHNUb0FkZC5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIXZhbHVlLmFkZCkgeyB2YWx1ZS5hZGQgPSBbXTsgfVxuICAgICAgdmFsdWUuYWRkID0gdmFsdWUuYWRkLm1hcChpbnB1dCA9PiB7XG4gICAgICAgIGNvbnN0IGdsb2JhbElkT2JqZWN0ID0gZnJvbUdsb2JhbElkKGlucHV0KTtcbiAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IHRhcmdldENsYXNzKSB7XG4gICAgICAgICAgaW5wdXQgPSBnbG9iYWxJZE9iamVjdC5pZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgb2JqZWN0SWQ6IGlucHV0LFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBvcC5vcHMucHVzaCh7XG4gICAgICAgIF9fb3A6ICdBZGRSZWxhdGlvbicsXG4gICAgICAgIG9iamVjdHM6IFsuLi52YWx1ZS5hZGQsIC4uLm5lc3RlZE9iamVjdHNUb0FkZF0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUucmVtb3ZlKSB7XG4gICAgICBvcC5vcHMucHVzaCh7XG4gICAgICAgIF9fb3A6ICdSZW1vdmVSZWxhdGlvbicsXG4gICAgICAgIG9iamVjdHM6IHZhbHVlLnJlbW92ZS5tYXAoaW5wdXQgPT4ge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbElkT2JqZWN0ID0gZnJvbUdsb2JhbElkKGlucHV0KTtcbiAgICAgICAgICBpZiAoZ2xvYmFsSWRPYmplY3QudHlwZSA9PT0gdGFyZ2V0Q2xhc3MpIHtcbiAgICAgICAgICAgIGlucHV0ID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICBvYmplY3RJZDogaW5wdXQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIG9wO1xuICB9LFxuICBwb2ludGVyOiBhc3luYyAoXG4gICAgdGFyZ2V0Q2xhc3MsXG4gICAgZmllbGQsXG4gICAgdmFsdWUsXG4gICAgb3JpZ2luYWxWYWx1ZSxcbiAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgeyBjb25maWcsIGF1dGgsIGluZm8gfVxuICApID0+IHtcbiAgICBpZiAoT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA+IDEgfHwgT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMClcbiAgICB7IHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfUE9JTlRFUixcbiAgICAgIGBZb3UgbmVlZCB0byBwcm92aWRlIGxpbmsgT1IgY3JlYXRlTGluayBvbiB0aGUgcG9pbnRlciBtdXRhdGlvbiBvZiBmaWVsZCAke2ZpZWxkfWBcbiAgICApOyB9XG5cbiAgICBsZXQgbmVzdGVkT2JqZWN0VG9BZGQ7XG4gICAgaWYgKHZhbHVlLmNyZWF0ZUFuZExpbmspIHtcbiAgICAgIGNvbnN0IHBhcnNlRmllbGRzID0gYXdhaXQgdHJhbnNmb3JtVHlwZXMoJ2NyZWF0ZScsIHZhbHVlLmNyZWF0ZUFuZExpbmssIHtcbiAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICBvcmlnaW5hbEZpZWxkczogb3JpZ2luYWxWYWx1ZS5jcmVhdGVBbmRMaW5rLFxuICAgICAgICByZXE6IHsgY29uZmlnLCBhdXRoLCBpbmZvIH0sXG4gICAgICB9KTtcbiAgICAgIG5lc3RlZE9iamVjdFRvQWRkID0gYXdhaXQgb2JqZWN0c011dGF0aW9ucy5jcmVhdGVPYmplY3QoXG4gICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICBwYXJzZUZpZWxkcyxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBhdXRoLFxuICAgICAgICBpbmZvXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkOiBuZXN0ZWRPYmplY3RUb0FkZC5vYmplY3RJZCxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZS5saW5rKSB7XG4gICAgICBsZXQgb2JqZWN0SWQgPSB2YWx1ZS5saW5rO1xuICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQob2JqZWN0SWQpO1xuICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IHRhcmdldENsYXNzKSB7XG4gICAgICAgIG9iamVjdElkID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgb2JqZWN0SWQsXG4gICAgICB9O1xuICAgIH1cbiAgfSxcbn07XG5cbmV4cG9ydCB7IHRyYW5zZm9ybVR5cGVzIH07XG4iXSwi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
275
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxSZWxheSIsIl9maWxlc011dGF0aW9ucyIsIm9iamVjdHNNdXRhdGlvbnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsInRyYW5zZm9ybVR5cGVzIiwiaW5wdXRUeXBlIiwiZmllbGRzIiwiY2xhc3NOYW1lIiwicGFyc2VHcmFwaFFMU2NoZW1hIiwicmVxIiwib3JpZ2luYWxGaWVsZHMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlIiwiY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSIsImNvbmZpZyIsImlzQ3JlYXRlRW5hYmxlZCIsImlzVXBkYXRlRW5hYmxlZCIsInBhcnNlQ2xhc3NUeXBlcyIsInBhcnNlQ2xhc3MiLCJwYXJzZUNsYXNzZXMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzIiwiZ2V0RmllbGRzIiwiY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkcyIsInByb21pc2VzIiwia2V5cyIsIm1hcCIsImZpZWxkIiwiaW5wdXRUeXBlRmllbGQiLCJwYXJzZUZpZWxkVHlwZSIsInR5cGUiLCJfX29wIiwidHJhbnNmb3JtZXJzIiwiZ2VvUG9pbnQiLCJwb2x5Z29uIiwiZmlsZSIsInJlbGF0aW9uIiwidGFyZ2V0Q2xhc3MiLCJwb2ludGVyIiwiUHJvbWlzZSIsImFsbCIsIkFDTCIsImV4cG9ydHMiLCJpbnB1dCIsInVwbG9hZCIsImZpbGVJbmZvIiwiaGFuZGxlVXBsb2FkIiwiX190eXBlIiwibmFtZSIsInVybCIsIlBhcnNlIiwiRXJyb3IiLCJGSUxFX1NBVkVfRVJST1IiLCJ2YWx1ZSIsImNvb3JkaW5hdGVzIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJwYXJzZUFDTCIsInB1YmxpYyIsInJlYWQiLCJ3cml0ZSIsInVzZXJzIiwiZm9yRWFjaCIsInJ1bGUiLCJnbG9iYWxJZE9iamVjdCIsImZyb21HbG9iYWxJZCIsInVzZXJJZCIsImlkIiwicm9sZXMiLCJyb2xlTmFtZSIsIm9yaWdpbmFsVmFsdWUiLCJhdXRoIiwiaW5mbyIsImxlbmd0aCIsIklOVkFMSURfUE9JTlRFUiIsIm9wIiwib3BzIiwibmVzdGVkT2JqZWN0c1RvQWRkIiwiY3JlYXRlQW5kQWRkIiwicGFyc2VGaWVsZHMiLCJjcmVhdGVPYmplY3QiLCJvYmplY3QiLCJvYmplY3RJZCIsImFkZCIsInB1c2giLCJvYmplY3RzIiwicmVtb3ZlIiwibmVzdGVkT2JqZWN0VG9BZGQiLCJjcmVhdGVBbmRMaW5rIiwibGluayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML3RyYW5zZm9ybWVycy9tdXRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgeyBmcm9tR2xvYmFsSWQgfSBmcm9tICdncmFwaHFsLXJlbGF5JztcbmltcG9ydCB7IGhhbmRsZVVwbG9hZCB9IGZyb20gJy4uL2xvYWRlcnMvZmlsZXNNdXRhdGlvbnMnO1xuaW1wb3J0ICogYXMgb2JqZWN0c011dGF0aW9ucyBmcm9tICcuLi9oZWxwZXJzL29iamVjdHNNdXRhdGlvbnMnO1xuXG5jb25zdCB0cmFuc2Zvcm1UeXBlcyA9IGFzeW5jIChcbiAgaW5wdXRUeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnLFxuICBmaWVsZHMsXG4gIHsgY2xhc3NOYW1lLCBwYXJzZUdyYXBoUUxTY2hlbWEsIHJlcSwgb3JpZ2luYWxGaWVsZHMgfVxuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlLFxuICAgIGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUsXG4gICAgY29uZmlnOiB7IGlzQ3JlYXRlRW5hYmxlZCwgaXNVcGRhdGVFbmFibGVkIH0sXG4gIH0gPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW2NsYXNzTmFtZV07XG4gIGNvbnN0IHBhcnNlQ2xhc3MgPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc2VzW2NsYXNzTmFtZV07XG4gIGlmIChmaWVsZHMpIHtcbiAgICBjb25zdCBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzID1cbiAgICAgIGlzQ3JlYXRlRW5hYmxlZCAmJiBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlID8gY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZS5nZXRGaWVsZHMoKSA6IG51bGw7XG4gICAgY29uc3QgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkcyA9XG4gICAgICBpc1VwZGF0ZUVuYWJsZWQgJiYgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSA/IGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUuZ2V0RmllbGRzKCkgOiBudWxsO1xuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoZmllbGRzKS5tYXAoYXN5bmMgZmllbGQgPT4ge1xuICAgICAgbGV0IGlucHV0VHlwZUZpZWxkO1xuICAgICAgaWYgKGlucHV0VHlwZSA9PT0gJ2NyZWF0ZScgJiYgY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZUZpZWxkcykge1xuICAgICAgICBpbnB1dFR5cGVGaWVsZCA9IGNsYXNzR3JhcGhRTENyZWF0ZVR5cGVGaWVsZHNbZmllbGRdO1xuICAgICAgfSBlbHNlIGlmIChjbGFzc0dyYXBoUUxVcGRhdGVUeXBlRmllbGRzKSB7XG4gICAgICAgIGlucHV0VHlwZUZpZWxkID0gY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkc1tmaWVsZF07XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRUeXBlRmllbGQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VGaWVsZFR5cGUgPSBwYXJzZUNsYXNzLmZpZWxkc1tmaWVsZF0udHlwZTtcbiAgICAgICAgc3dpdGNoIChwYXJzZUZpZWxkVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0dlb1BvaW50JzpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHRyYW5zZm9ybWVycy5nZW9Qb2ludChmaWVsZHNbZmllbGRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHsgX19vcDogJ0RlbGV0ZScgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRdID0gdHJhbnNmb3JtZXJzLnBvbHlnb24oZmllbGRzW2ZpZWxkXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdGaWxlJzpcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBvcmlnaW5hbEZpZWxkcyB0byBoYW5kbGUgdGhlIGZpbGUgdXBsb2FkXG4gICAgICAgICAgICAvLyBzaW5jZSBmaWVsZHMgYXJlIGEgZGVlcGNvcHkgYW5kIGRvIG5vdCBrZWVwIHRoZSBmaWxlIG9iamVjdFxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5maWxlKG9yaWdpbmFsRmllbGRzW2ZpZWxkXSwgcmVxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1JlbGF0aW9uJzpcbiAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSBhd2FpdCB0cmFuc2Zvcm1lcnMucmVsYXRpb24oXG4gICAgICAgICAgICAgIHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkXS50YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIG9yaWdpbmFsRmllbGRzW2ZpZWxkXSxcbiAgICAgICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICAgICAgICByZXFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdQb2ludGVyJzpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5wb2ludGVyKFxuICAgICAgICAgICAgICBwYXJzZUNsYXNzLmZpZWxkc1tmaWVsZF0udGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBmaWVsZHNbZmllbGRdLFxuICAgICAgICAgICAgICBvcmlnaW5hbEZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgICAgICAgcmVxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIGlmIChmaWVsZHMuQUNMKSB7IGZpZWxkcy5BQ0wgPSB0cmFuc2Zvcm1lcnMuQUNMKGZpZWxkcy5BQ0wpOyB9XG4gIH1cbiAgcmV0dXJuIGZpZWxkcztcbn07XG5cbmNvbnN0IHRyYW5zZm9ybWVycyA9IHtcbiAgZmlsZTogYXN5bmMgKGlucHV0LCB7IGNvbmZpZyB9KSA9PiB7XG4gICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4geyBfX29wOiAnRGVsZXRlJyB9O1xuICAgIH1cbiAgICBjb25zdCB7IGZpbGUsIHVwbG9hZCB9ID0gaW5wdXQ7XG4gICAgaWYgKHVwbG9hZCkge1xuICAgICAgY29uc3QgeyBmaWxlSW5mbyB9ID0gYXdhaXQgaGFuZGxlVXBsb2FkKHVwbG9hZCwgY29uZmlnKTtcbiAgICAgIHJldHVybiB7IC4uLmZpbGVJbmZvLCBfX3R5cGU6ICdGaWxlJyB9O1xuICAgIH0gZWxzZSBpZiAoZmlsZSAmJiBmaWxlLm5hbWUpIHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGZpbGUubmFtZSwgX190eXBlOiAnRmlsZScsIHVybDogZmlsZS51cmwgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ludmFsaWQgZmlsZSB1cGxvYWQuJyk7XG4gIH0sXG4gIHBvbHlnb246IHZhbHVlID0+ICh7XG4gICAgX190eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IHZhbHVlLm1hcChnZW9Qb2ludCA9PiBbZ2VvUG9pbnQubGF0aXR1ZGUsIGdlb1BvaW50LmxvbmdpdHVkZV0pLFxuICB9KSxcbiAgZ2VvUG9pbnQ6IHZhbHVlID0+ICh7XG4gICAgLi4udmFsdWUsXG4gICAgX190eXBlOiAnR2VvUG9pbnQnLFxuICB9KSxcbiAgQUNMOiB2YWx1ZSA9PiB7XG4gICAgY29uc3QgcGFyc2VBQ0wgPSB7fTtcbiAgICBpZiAodmFsdWUucHVibGljKSB7XG4gICAgICBwYXJzZUFDTFsnKiddID0ge1xuICAgICAgICByZWFkOiB2YWx1ZS5wdWJsaWMucmVhZCxcbiAgICAgICAgd3JpdGU6IHZhbHVlLnB1YmxpYy53cml0ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZS51c2Vycykge1xuICAgICAgdmFsdWUudXNlcnMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQocnVsZS51c2VySWQpO1xuICAgICAgICBpZiAoZ2xvYmFsSWRPYmplY3QudHlwZSA9PT0gJ19Vc2VyJykge1xuICAgICAgICAgIHJ1bGUudXNlcklkID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VBQ0xbcnVsZS51c2VySWRdID0ge1xuICAgICAgICAgIHJlYWQ6IHJ1bGUucmVhZCxcbiAgICAgICAgICB3cml0ZTogcnVsZS53cml0ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodmFsdWUucm9sZXMpIHtcbiAgICAgIHZhbHVlLnJvbGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgIHBhcnNlQUNMW2Byb2xlOiR7cnVsZS5yb2xlTmFtZX1gXSA9IHtcbiAgICAgICAgICByZWFkOiBydWxlLnJlYWQsXG4gICAgICAgICAgd3JpdGU6IHJ1bGUud3JpdGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlQUNMO1xuICB9LFxuICByZWxhdGlvbjogYXN5bmMgKFxuICAgIHRhcmdldENsYXNzLFxuICAgIGZpZWxkLFxuICAgIHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgIHsgY29uZmlnLCBhdXRoLCBpbmZvIH1cbiAgKSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgeyB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX1BPSU5URVIsXG4gICAgICBgWW91IG5lZWQgdG8gcHJvdmlkZSBhdCBsZWFzdCBvbmUgb3BlcmF0aW9uIG9uIHRoZSByZWxhdGlvbiBtdXRhdGlvbiBvZiBmaWVsZCAke2ZpZWxkfWBcbiAgICApOyB9XG5cbiAgICBjb25zdCBvcCA9IHtcbiAgICAgIF9fb3A6ICdCYXRjaCcsXG4gICAgICBvcHM6IFtdLFxuICAgIH07XG4gICAgbGV0IG5lc3RlZE9iamVjdHNUb0FkZCA9IFtdO1xuXG4gICAgaWYgKHZhbHVlLmNyZWF0ZUFuZEFkZCkge1xuICAgICAgbmVzdGVkT2JqZWN0c1RvQWRkID0gKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB2YWx1ZS5jcmVhdGVBbmRBZGQubWFwKGFzeW5jIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VGaWVsZHMgPSBhd2FpdCB0cmFuc2Zvcm1UeXBlcygnY3JlYXRlJywgaW5wdXQsIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgb3JpZ2luYWxGaWVsZHM6IG9yaWdpbmFsVmFsdWUuY3JlYXRlQW5kQWRkW2ldLFxuICAgICAgICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgICAgICAgICAgIHJlcTogeyBjb25maWcsIGF1dGgsIGluZm8gfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdHNNdXRhdGlvbnMuY3JlYXRlT2JqZWN0KHRhcmdldENsYXNzLCBwYXJzZUZpZWxkcywgY29uZmlnLCBhdXRoLCBpbmZvKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLm1hcChvYmplY3QgPT4gKHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkOiBvYmplY3Qub2JqZWN0SWQsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmFkZCB8fCBuZXN0ZWRPYmplY3RzVG9BZGQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCF2YWx1ZS5hZGQpIHsgdmFsdWUuYWRkID0gW107IH1cbiAgICAgIHZhbHVlLmFkZCA9IHZhbHVlLmFkZC5tYXAoaW5wdXQgPT4ge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChpbnB1dCk7XG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSB0YXJnZXRDbGFzcykge1xuICAgICAgICAgIGlucHV0ID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgIG9iamVjdElkOiBpbnB1dCxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgb3Aub3BzLnB1c2goe1xuICAgICAgICBfX29wOiAnQWRkUmVsYXRpb24nLFxuICAgICAgICBvYmplY3RzOiBbLi4udmFsdWUuYWRkLCAuLi5uZXN0ZWRPYmplY3RzVG9BZGRdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnJlbW92ZSkge1xuICAgICAgb3Aub3BzLnB1c2goe1xuICAgICAgICBfX29wOiAnUmVtb3ZlUmVsYXRpb24nLFxuICAgICAgICBvYmplY3RzOiB2YWx1ZS5yZW1vdmUubWFwKGlucHV0ID0+IHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChpbnB1dCk7XG4gICAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IHRhcmdldENsYXNzKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgICAgb2JqZWN0SWQ6IGlucHV0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvcDtcbiAgfSxcbiAgcG9pbnRlcjogYXN5bmMgKFxuICAgIHRhcmdldENsYXNzLFxuICAgIGZpZWxkLFxuICAgIHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgIHsgY29uZmlnLCBhdXRoLCBpbmZvIH1cbiAgKSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgeyB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX1BPSU5URVIsXG4gICAgICBgWW91IG5lZWQgdG8gcHJvdmlkZSBsaW5rIE9SIGNyZWF0ZUxpbmsgb24gdGhlIHBvaW50ZXIgbXV0YXRpb24gb2YgZmllbGQgJHtmaWVsZH1gXG4gICAgKTsgfVxuXG4gICAgbGV0IG5lc3RlZE9iamVjdFRvQWRkO1xuICAgIGlmICh2YWx1ZS5jcmVhdGVBbmRMaW5rKSB7XG4gICAgICBjb25zdCBwYXJzZUZpZWxkcyA9IGF3YWl0IHRyYW5zZm9ybVR5cGVzKCdjcmVhdGUnLCB2YWx1ZS5jcmVhdGVBbmRMaW5rLCB7XG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgb3JpZ2luYWxGaWVsZHM6IG9yaWdpbmFsVmFsdWUuY3JlYXRlQW5kTGluayxcbiAgICAgICAgcmVxOiB7IGNvbmZpZywgYXV0aCwgaW5mbyB9LFxuICAgICAgfSk7XG4gICAgICBuZXN0ZWRPYmplY3RUb0FkZCA9IGF3YWl0IG9iamVjdHNNdXRhdGlvbnMuY3JlYXRlT2JqZWN0KFxuICAgICAgICB0YXJnZXRDbGFzcyxcbiAgICAgICAgcGFyc2VGaWVsZHMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgaW5mb1xuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICBvYmplY3RJZDogbmVzdGVkT2JqZWN0VG9BZGQub2JqZWN0SWQsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUubGluaykge1xuICAgICAgbGV0IG9iamVjdElkID0gdmFsdWUubGluaztcbiAgICAgIGNvbnN0IGdsb2JhbElkT2JqZWN0ID0gZnJvbUdsb2JhbElkKG9iamVjdElkKTtcbiAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSB0YXJnZXRDbGFzcykge1xuICAgICAgICBvYmplY3RJZCA9IGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkLFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1UeXBlcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBQWdFLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxH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QUVDO0VBQUssQ0FBQyxLQUNuQjtJQUNILElBQUkxRSxNQUFNLENBQUMyQixJQUFJLENBQUM0QixLQUFLLENBQUMsQ0FBQ29CLE1BQU0sR0FBRyxDQUFDLElBQUkzRSxNQUFNLENBQUMyQixJQUFJLENBQUM0QixLQUFLLENBQUMsQ0FBQ29CLE1BQU0sS0FBSyxDQUFDLEVBQ3BFO01BQUUsTUFBTSxJQUFJdkIsYUFBSyxDQUFDQyxLQUFLLENBQ3JCRCxhQUFLLENBQUNDLEtBQUssQ0FBQ3VCLGVBQWUsRUFDM0IsMkVBQTJFL0MsS0FBSyxFQUNsRixDQUFDO0lBQUU7SUFFSCxJQUFJNEQsaUJBQWlCO0lBQ3JCLElBQUlsQyxLQUFLLENBQUNtQyxhQUFhLEVBQUU7TUFDdkIsTUFBTVQsV0FBVyxHQUFHLE1BQU16RSxjQUFjLENBQUMsUUFBUSxFQUFFK0MsS0FBSyxDQUFDbUMsYUFBYSxFQUFFO1FBQ3RFL0UsU0FBUyxFQUFFNEIsV0FBVztRQUN0QjNCLGtCQUFrQjtRQUNsQkUsY0FBYyxFQUFFMEQsYUFBYSxDQUFDa0IsYUFBYTtRQUMzQzdFLEdBQUcsRUFBRTtVQUFFSSxNQUFNO1VBQUV3RCxJQUFJO1VBQUVDO1FBQUs7TUFDNUIsQ0FBQyxDQUFDO01BQ0ZlLGlCQUFpQixHQUFHLE1BQU12RyxnQkFBZ0IsQ0FBQ2dHLFlBQVksQ0FDckQzQyxXQUFXLEVBQ1gwQyxXQUFXLEVBQ1hoRSxNQUFNLEVBQ053RCxJQUFJLEVBQ0pDLElBQ0YsQ0FBQztNQUNELE9BQU87UUFDTHpCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCdEMsU0FBUyxFQUFFNEIsV0FBVztRQUN0QjZDLFFBQVEsRUFBRUssaUJBQWlCLENBQUNMO01BQzlCLENBQUM7SUFDSDtJQUNBLElBQUk3QixLQUFLLENBQUNvQyxJQUFJLEVBQUU7TUFDZCxJQUFJUCxRQUFRLEdBQUc3QixLQUFLLENBQUNvQyxJQUFJO01BQ3pCLE1BQU16QixjQUFjLEdBQUcsSUFBQUMsMEJBQVksRUFBQ2lCLFFBQVEsQ0FBQztNQUM3QyxJQUFJbEIsY0FBYyxDQUFDbEMsSUFBSSxLQUFLTyxXQUFXLEVBQUU7UUFDdkM2QyxRQUFRLEdBQUdsQixjQUFjLENBQUNHLEVBQUU7TUFDOUI7TUFDQSxPQUFPO1FBQ0xwQixNQUFNLEVBQUUsU0FBUztRQUNqQnRDLFNBQVMsRUFBRTRCLFdBQVc7UUFDdEI2QztNQUNGLENBQUM7SUFDSDtFQUNGO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -5,11 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.transformQueryInputToParse = exports.transformQueryConstraintInputToParse = void 0;
7
7
  var _graphqlRelay = require("graphql-relay");
8
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
11
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
13
8
  const parseQueryMap = {
14
9
  OR: '$or',
15
10
  AND: '$and',
@@ -109,9 +104,10 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
109
104
  */
110
105
  if (fieldValue.key && fieldValue.value !== undefined && parentConstraints && parentFieldName) {
111
106
  delete parentConstraints[parentFieldName];
112
- parentConstraints[`${parentFieldName}.${fieldValue.key}`] = _objectSpread(_objectSpread({}, parentConstraints[`${parentFieldName}.${fieldValue.key}`]), {}, {
107
+ parentConstraints[`${parentFieldName}.${fieldValue.key}`] = {
108
+ ...parentConstraints[`${parentFieldName}.${fieldValue.key}`],
113
109
  [parseConstraintMap[fieldName]]: fieldValue.value
114
- });
110
+ };
115
111
  } else if (fields[parentFieldName] && (fields[parentFieldName].type === 'Pointer' || fields[parentFieldName].type === 'Relation')) {
116
112
  const {
117
113
  targetClass
@@ -121,9 +117,10 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
121
117
  const whereTarget = fieldValue ? 'where' : 'notWhere';
122
118
  if (constraints[whereTarget]) {
123
119
  if (constraints[whereTarget].objectId) {
124
- constraints[whereTarget].objectId = _objectSpread(_objectSpread({}, constraints[whereTarget].objectId), {}, {
120
+ constraints[whereTarget].objectId = {
121
+ ...constraints[whereTarget].objectId,
125
122
  $exists: fieldValue
126
- });
123
+ };
127
124
  } else {
128
125
  constraints[whereTarget].objectId = {
129
126
  $exists: fieldValue
@@ -178,11 +175,13 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
178
175
  break;
179
176
  case 'box':
180
177
  if (typeof fieldValue === 'object' && fieldValue.bottomLeft && fieldValue.upperRight) {
181
- fieldValue = [_objectSpread({
182
- __type: 'GeoPoint'
183
- }, fieldValue.bottomLeft), _objectSpread({
184
- __type: 'GeoPoint'
185
- }, fieldValue.upperRight)];
178
+ fieldValue = [{
179
+ __type: 'GeoPoint',
180
+ ...fieldValue.bottomLeft
181
+ }, {
182
+ __type: 'GeoPoint',
183
+ ...fieldValue.upperRight
184
+ }];
186
185
  constraints[parseConstraintMap[fieldName]] = fieldValue;
187
186
  }
188
187
  break;
@@ -197,9 +196,10 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
197
196
  break;
198
197
  case 'centerSphere':
199
198
  if (typeof fieldValue === 'object' && fieldValue.center && fieldValue.distance) {
200
- fieldValue = [_objectSpread({
201
- __type: 'GeoPoint'
202
- }, fieldValue.center), fieldValue.distance];
199
+ fieldValue = [{
200
+ __type: 'GeoPoint',
201
+ ...fieldValue.center
202
+ }, fieldValue.distance];
203
203
  constraints[parseConstraintMap[fieldName]] = fieldValue;
204
204
  }
205
205
  break;
@@ -234,4 +234,4 @@ const transformQueryInputToParse = (constraints, className, parseClasses) => {
234
234
  });
235
235
  };
236
236
  exports.transformQueryInputToParse = transformQueryInputToParse;
237
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbFJlbGF5IiwicmVxdWlyZSIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwicGFyc2VRdWVyeU1hcCIsIk9SIiwiQU5EIiwiTk9SIiwicGFyc2VDb25zdHJhaW50TWFwIiwiZXF1YWxUbyIsIm5vdEVxdWFsVG8iLCJsZXNzVGhhbiIsImxlc3NUaGFuT3JFcXVhbFRvIiwiZ3JlYXRlclRoYW4iLCJncmVhdGVyVGhhbk9yRXF1YWxUbyIsImluIiwibm90SW4iLCJleGlzdHMiLCJpblF1ZXJ5S2V5Iiwibm90SW5RdWVyeUtleSIsImluUXVlcnkiLCJub3RJblF1ZXJ5IiwiY29udGFpbmVkQnkiLCJjb250YWlucyIsIm1hdGNoZXNSZWdleCIsIm9wdGlvbnMiLCJ0ZXh0Iiwic2VhcmNoIiwidGVybSIsImxhbmd1YWdlIiwiY2FzZVNlbnNpdGl2ZSIsImRpYWNyaXRpY1NlbnNpdGl2ZSIsIm5lYXJTcGhlcmUiLCJtYXhEaXN0YW5jZSIsIm1heERpc3RhbmNlSW5SYWRpYW5zIiwibWF4RGlzdGFuY2VJbk1pbGVzIiwibWF4RGlzdGFuY2VJbktpbG9tZXRlcnMiLCJ3aXRoaW4iLCJib3giLCJnZW9XaXRoaW4iLCJwb2x5Z29uIiwiY2VudGVyU3BoZXJlIiwiZ2VvSW50ZXJzZWN0cyIsInBvaW50IiwidHJhbnNmb3JtUXVlcnlDb25zdHJhaW50SW5wdXRUb1BhcnNlIiwiY29uc3RyYWludHMiLCJwYXJlbnRGaWVsZE5hbWUiLCJjbGFzc05hbWUiLCJwYXJlbnRDb25zdHJhaW50cyIsInBhcnNlQ2xhc3NlcyIsImZpZWxkcyIsImNvbnN0cmFpbnROYW1lIiwiY29uc3RyYWludFZhbHVlIiwiZ2xvYmFsSWRPYmplY3QiLCJmcm9tR2xvYmFsSWQiLCJ0eXBlIiwiaWQiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJvYmplY3RJZCIsImZpZWxkTmFtZSIsImZpZWxkVmFsdWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJ0YXJnZXRDbGFzcyIsIndoZXJlVGFyZ2V0IiwiJGV4aXN0cyIsInBhcnNlV2hlcmVUYXJnZXQiLCJ3aGVyZSIsIiRpblF1ZXJ5IiwidHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UiLCIkbm90SW5RdWVyeSIsIl9fdHlwZSIsImJvdHRvbUxlZnQiLCJ1cHBlclJpZ2h0IiwiZ2VvUG9pbnQiLCJjZW50ZXIiLCJkaXN0YW5jZSIsImV4cG9ydHMiLCJmaWVsZFZhbHVlSXRlbSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML3RyYW5zZm9ybWVycy9xdWVyeS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tR2xvYmFsSWQgfSBmcm9tICdncmFwaHFsLXJlbGF5JztcblxuY29uc3QgcGFyc2VRdWVyeU1hcCA9IHtcbiAgT1I6ICckb3InLFxuICBBTkQ6ICckYW5kJyxcbiAgTk9SOiAnJG5vcicsXG59O1xuXG5jb25zdCBwYXJzZUNvbnN0cmFpbnRNYXAgPSB7XG4gIGVxdWFsVG86ICckZXEnLFxuICBub3RFcXVhbFRvOiAnJG5lJyxcbiAgbGVzc1RoYW46ICckbHQnLFxuICBsZXNzVGhhbk9yRXF1YWxUbzogJyRsdGUnLFxuICBncmVhdGVyVGhhbjogJyRndCcsXG4gIGdyZWF0ZXJUaGFuT3JFcXVhbFRvOiAnJGd0ZScsXG4gIGluOiAnJGluJyxcbiAgbm90SW46ICckbmluJyxcbiAgZXhpc3RzOiAnJGV4aXN0cycsXG4gIGluUXVlcnlLZXk6ICckc2VsZWN0JyxcbiAgbm90SW5RdWVyeUtleTogJyRkb250U2VsZWN0JyxcbiAgaW5RdWVyeTogJyRpblF1ZXJ5JyxcbiAgbm90SW5RdWVyeTogJyRub3RJblF1ZXJ5JyxcbiAgY29udGFpbmVkQnk6ICckY29udGFpbmVkQnknLFxuICBjb250YWluczogJyRhbGwnLFxuICBtYXRjaGVzUmVnZXg6ICckcmVnZXgnLFxuICBvcHRpb25zOiAnJG9wdGlvbnMnLFxuICB0ZXh0OiAnJHRleHQnLFxuICBzZWFyY2g6ICckc2VhcmNoJyxcbiAgdGVybTogJyR0ZXJtJyxcbiAgbGFuZ3VhZ2U6ICckbGFuZ3VhZ2UnLFxuICBjYXNlU2Vuc2l0aXZlOiAnJGNhc2VTZW5zaXRpdmUnLFxuICBkaWFjcml0aWNTZW5zaXRpdmU6ICckZGlhY3JpdGljU2Vuc2l0aXZlJyxcbiAgbmVhclNwaGVyZTogJyRuZWFyU3BoZXJlJyxcbiAgbWF4RGlzdGFuY2U6ICckbWF4RGlzdGFuY2UnLFxuICBtYXhEaXN0YW5jZUluUmFkaWFuczogJyRtYXhEaXN0YW5jZUluUmFkaWFucycsXG4gIG1heERpc3RhbmNlSW5NaWxlczogJyRtYXhEaXN0YW5jZUluTWlsZXMnLFxuICBtYXhEaXN0YW5jZUluS2lsb21ldGVyczogJyRtYXhEaXN0YW5jZUluS2lsb21ldGVycycsXG4gIHdpdGhpbjogJyR3aXRoaW4nLFxuICBib3g6ICckYm94JyxcbiAgZ2VvV2l0aGluOiAnJGdlb1dpdGhpbicsXG4gIHBvbHlnb246ICckcG9seWdvbicsXG4gIGNlbnRlclNwaGVyZTogJyRjZW50ZXJTcGhlcmUnLFxuICBnZW9JbnRlcnNlY3RzOiAnJGdlb0ludGVyc2VjdHMnLFxuICBwb2ludDogJyRwb2ludCcsXG59O1xuXG5jb25zdCB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UgPSAoXG4gIGNvbnN0cmFpbnRzLFxuICBwYXJlbnRGaWVsZE5hbWUsXG4gIGNsYXNzTmFtZSxcbiAgcGFyZW50Q29uc3RyYWludHMsXG4gIHBhcnNlQ2xhc3Nlc1xuKSA9PiB7XG4gIGNvbnN0IGZpZWxkcyA9IHBhcnNlQ2xhc3Nlc1tjbGFzc05hbWVdLmZpZWxkcztcbiAgaWYgKHBhcmVudEZpZWxkTmFtZSA9PT0gJ2lkJyAmJiBjbGFzc05hbWUpIHtcbiAgICBPYmplY3Qua2V5cyhjb25zdHJhaW50cykuZm9yRWFjaChjb25zdHJhaW50TmFtZSA9PiB7XG4gICAgICBjb25zdCBjb25zdHJhaW50VmFsdWUgPSBjb25zdHJhaW50c1tjb25zdHJhaW50TmFtZV07XG4gICAgICBpZiAodHlwZW9mIGNvbnN0cmFpbnRWYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQoY29uc3RyYWludFZhbHVlKTtcblxuICAgICAgICBpZiAoZ2xvYmFsSWRPYmplY3QudHlwZSA9PT0gY2xhc3NOYW1lKSB7XG4gICAgICAgICAgY29uc3RyYWludHNbY29uc3RyYWludE5hbWVdID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb25zdHJhaW50VmFsdWUpKSB7XG4gICAgICAgIGNvbnN0cmFpbnRzW2NvbnN0cmFpbnROYW1lXSA9IGNvbnN0cmFpbnRWYWx1ZS5tYXAodmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbElkT2JqZWN0ID0gZnJvbUdsb2JhbElkKHZhbHVlKTtcblxuICAgICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSBjbGFzc05hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBnbG9iYWxJZE9iamVjdC5pZDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHBhcmVudENvbnN0cmFpbnRzLm9iamVjdElkID0gY29uc3RyYWludHM7XG4gICAgZGVsZXRlIHBhcmVudENvbnN0cmFpbnRzLmlkO1xuICB9XG4gIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgbGV0IGZpZWxkVmFsdWUgPSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgIGlmIChwYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXSkge1xuICAgICAgY29uc3RyYWludHNbcGFyc2VDb25zdHJhaW50TWFwW2ZpZWxkTmFtZV1dID0gY29uc3RyYWludHNbZmllbGROYW1lXTtcbiAgICAgIGRlbGV0ZSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJZiB3ZSBoYXZlIGEga2V5LXZhbHVlIHBhaXIsIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSB3YXkgdGhlIGNvbnN0cmFpbnQgaXMgc3RydWN0dXJlZC5cbiAgICAgKlxuICAgICAqIEV4YW1wbGU6XG4gICAgICogICBGcm9tOlxuICAgICAqICAge1xuICAgICAqICAgICBcInNvbWVGaWVsZFwiOiB7XG4gICAgICogICAgICAgXCJsZXNzVGhhblwiOiB7XG4gICAgICogICAgICAgICBcImtleVwiOlwiZm9vLmJhclwiLFxuICAgICAqICAgICAgICAgXCJ2YWx1ZVwiOiAxMDBcbiAgICAgKiAgICAgICB9LFxuICAgICAqICAgICAgIFwiZ3JlYXRlclRoYW5cIjoge1xuICAgICAqICAgICAgICAgXCJrZXlcIjpcImZvby5iYXJcIixcbiAgICAgKiAgICAgICAgIFwidmFsdWVcIjogMTBcbiAgICAgKiAgICAgICB9XG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqICAgVG86XG4gICAgICogICB7XG4gICAgICogICAgIFwic29tZUZpZWxkLmZvby5iYXJcIjoge1xuICAgICAqICAgICAgIFwiJGx0XCI6IDEwMCxcbiAgICAgKiAgICAgICBcIiRndFwiOiAxMFxuICAgICAqICAgICAgfVxuICAgICAqICAgfVxuICAgICAqL1xuICAgIGlmIChmaWVsZFZhbHVlLmtleSAmJiBmaWVsZFZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcGFyZW50Q29uc3RyYWludHMgJiYgcGFyZW50RmllbGROYW1lKSB7XG4gICAgICBkZWxldGUgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXTtcbiAgICAgIHBhcmVudENvbnN0cmFpbnRzW2Ake3BhcmVudEZpZWxkTmFtZX0uJHtmaWVsZFZhbHVlLmtleX1gXSA9IHtcbiAgICAgICAgLi4ucGFyZW50Q29uc3RyYWludHNbYCR7cGFyZW50RmllbGROYW1lfS4ke2ZpZWxkVmFsdWUua2V5fWBdLFxuICAgICAgICBbcGFyc2VDb25zdHJhaW50TWFwW2ZpZWxkTmFtZV1dOiBmaWVsZFZhbHVlLnZhbHVlLFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgZmllbGRzW3BhcmVudEZpZWxkTmFtZV0gJiZcbiAgICAgIChmaWVsZHNbcGFyZW50RmllbGROYW1lXS50eXBlID09PSAnUG9pbnRlcicgfHwgZmllbGRzW3BhcmVudEZpZWxkTmFtZV0udHlwZSA9PT0gJ1JlbGF0aW9uJylcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgdGFyZ2V0Q2xhc3MgfSA9IGZpZWxkc1twYXJlbnRGaWVsZE5hbWVdO1xuICAgICAgaWYgKGZpZWxkTmFtZSA9PT0gJ2V4aXN0cycpIHtcbiAgICAgICAgaWYgKGZpZWxkc1twYXJlbnRGaWVsZE5hbWVdLnR5cGUgPT09ICdSZWxhdGlvbicpIHtcbiAgICAgICAgICBjb25zdCB3aGVyZVRhcmdldCA9IGZpZWxkVmFsdWUgPyAnd2hlcmUnIDogJ25vdFdoZXJlJztcbiAgICAgICAgICBpZiAoY29uc3RyYWludHNbd2hlcmVUYXJnZXRdKSB7XG4gICAgICAgICAgICBpZiAoY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkKSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzW3doZXJlVGFyZ2V0XS5vYmplY3RJZCA9IHtcbiAgICAgICAgICAgICAgICAuLi5jb25zdHJhaW50c1t3aGVyZVRhcmdldF0ub2JqZWN0SWQsXG4gICAgICAgICAgICAgICAgJGV4aXN0czogZmllbGRWYWx1ZSxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0cmFpbnRzW3doZXJlVGFyZ2V0XS5vYmplY3RJZCA9IHtcbiAgICAgICAgICAgICAgICAkZXhpc3RzOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZVdoZXJlVGFyZ2V0ID0gZmllbGRWYWx1ZSA/ICckaW5RdWVyeScgOiAnJG5vdEluUXVlcnknO1xuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXVtwYXJzZVdoZXJlVGFyZ2V0XSA9IHtcbiAgICAgICAgICAgICAgd2hlcmU6IHsgb2JqZWN0SWQ6IHsgJGV4aXN0czogdHJ1ZSB9IH0sXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWxldGUgY29uc3RyYWludHMuJGV4aXN0cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdLiRleGlzdHMgPSBmaWVsZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAoZmllbGROYW1lKSB7XG4gICAgICAgIGNhc2UgJ2hhdmUnOlxuICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJGluUXVlcnkgPSB7XG4gICAgICAgICAgICB3aGVyZTogZmllbGRWYWx1ZSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZShcbiAgICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJGluUXVlcnkud2hlcmUsXG4gICAgICAgICAgICB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgIHBhcnNlQ2xhc3Nlc1xuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2hhdmVOb3QnOlxuICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJG5vdEluUXVlcnkgPSB7XG4gICAgICAgICAgICB3aGVyZTogZmllbGRWYWx1ZSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZShcbiAgICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJG5vdEluUXVlcnkud2hlcmUsXG4gICAgICAgICAgICB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgIHBhcnNlQ2xhc3Nlc1xuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWxldGUgY29uc3RyYWludHNbZmllbGROYW1lXTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoIChmaWVsZE5hbWUpIHtcbiAgICAgIGNhc2UgJ3BvaW50JzpcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFZhbHVlID09PSAnb2JqZWN0JyAmJiAhZmllbGRWYWx1ZS5fX3R5cGUpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlLl9fdHlwZSA9ICdHZW9Qb2ludCc7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICduZWFyU3BoZXJlJzpcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZFZhbHVlID09PSAnb2JqZWN0JyAmJiAhZmllbGRWYWx1ZS5fX3R5cGUpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlLl9fdHlwZSA9ICdHZW9Qb2ludCc7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdib3gnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmIGZpZWxkVmFsdWUuYm90dG9tTGVmdCAmJiBmaWVsZFZhbHVlLnVwcGVyUmlnaHQpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBfX3R5cGU6ICdHZW9Qb2ludCcsXG4gICAgICAgICAgICAgIC4uLmZpZWxkVmFsdWUuYm90dG9tTGVmdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS51cHBlclJpZ2h0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0cmFpbnRzW3BhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwb2x5Z29uJzpcbiAgICAgICAgaWYgKGZpZWxkVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuZm9yRWFjaChnZW9Qb2ludCA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGdlb1BvaW50ID09PSAnb2JqZWN0JyAmJiAhZ2VvUG9pbnQuX190eXBlKSB7XG4gICAgICAgICAgICAgIGdlb1BvaW50Ll9fdHlwZSA9ICdHZW9Qb2ludCc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXJTcGhlcmUnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmIGZpZWxkVmFsdWUuY2VudGVyICYmIGZpZWxkVmFsdWUuZGlzdGFuY2UpIHtcbiAgICAgICAgICBmaWVsZFZhbHVlID0gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBfX3R5cGU6ICdHZW9Qb2ludCcsXG4gICAgICAgICAgICAgIC4uLmZpZWxkVmFsdWUuY2VudGVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWUuZGlzdGFuY2UsXG4gICAgICAgICAgXTtcbiAgICAgICAgICBjb25zdHJhaW50c1twYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV0gPSBmaWVsZFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoZmllbGROYW1lID09PSAnd2hlcmUnKSB7XG4gICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKGZpZWxkVmFsdWUsIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zZm9ybVF1ZXJ5Q29uc3RyYWludElucHV0VG9QYXJzZShcbiAgICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgICBjbGFzc05hbWUsXG4gICAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlID0gKGNvbnN0cmFpbnRzLCBjbGFzc05hbWUsIHBhcnNlQ2xhc3NlcykgPT4ge1xuICBpZiAoIWNvbnN0cmFpbnRzIHx8IHR5cGVvZiBjb25zdHJhaW50cyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBPYmplY3Qua2V5cyhjb25zdHJhaW50cykuZm9yRWFjaChmaWVsZE5hbWUgPT4ge1xuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuXG4gICAgaWYgKHBhcnNlUXVlcnlNYXBbZmllbGROYW1lXSkge1xuICAgICAgZGVsZXRlIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgICBmaWVsZE5hbWUgPSBwYXJzZVF1ZXJ5TWFwW2ZpZWxkTmFtZV07XG4gICAgICBjb25zdHJhaW50c1tmaWVsZE5hbWVdID0gZmllbGRWYWx1ZTtcbiAgICAgIGZpZWxkVmFsdWUuZm9yRWFjaChmaWVsZFZhbHVlSXRlbSA9PiB7XG4gICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKGZpZWxkVmFsdWVJdGVtLCBjbGFzc05hbWUsIHBhcnNlQ2xhc3Nlcyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmb3JtUXVlcnlDb25zdHJhaW50SW5wdXRUb1BhcnNlKFxuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZE5hbWUsXG4gICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgY29uc3RyYWludHMsXG4gICAgICAgIHBhcnNlQ2xhc3Nlc1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufTtcblxuZXhwb3J0IHsgdHJhbnNmb3JtUXVlcnlDb25zdHJhaW50SW5wdXRUb1BhcnNlLCB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFBNkMsU0FBQUMsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFB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
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbFJlbGF5IiwicmVxdWlyZSIsInBhcnNlUXVlcnlNYXAiLCJPUiIsIkFORCIsIk5PUiIsInBhcnNlQ29uc3RyYWludE1hcCIsImVxdWFsVG8iLCJub3RFcXVhbFRvIiwibGVzc1RoYW4iLCJsZXNzVGhhbk9yRXF1YWxUbyIsImdyZWF0ZXJUaGFuIiwiZ3JlYXRlclRoYW5PckVxdWFsVG8iLCJpbiIsIm5vdEluIiwiZXhpc3RzIiwiaW5RdWVyeUtleSIsIm5vdEluUXVlcnlLZXkiLCJpblF1ZXJ5Iiwibm90SW5RdWVyeSIsImNvbnRhaW5lZEJ5IiwiY29udGFpbnMiLCJtYXRjaGVzUmVnZXgiLCJvcHRpb25zIiwidGV4dCIsInNlYXJjaCIsInRlcm0iLCJsYW5ndWFnZSIsImNhc2VTZW5zaXRpdmUiLCJkaWFjcml0aWNTZW5zaXRpdmUiLCJuZWFyU3BoZXJlIiwibWF4RGlzdGFuY2UiLCJtYXhEaXN0YW5jZUluUmFkaWFucyIsIm1heERpc3RhbmNlSW5NaWxlcyIsIm1heERpc3RhbmNlSW5LaWxvbWV0ZXJzIiwid2l0aGluIiwiYm94IiwiZ2VvV2l0aGluIiwicG9seWdvbiIsImNlbnRlclNwaGVyZSIsImdlb0ludGVyc2VjdHMiLCJwb2ludCIsInRyYW5zZm9ybVF1ZXJ5Q29uc3RyYWludElucHV0VG9QYXJzZSIsImNvbnN0cmFpbnRzIiwicGFyZW50RmllbGROYW1lIiwiY2xhc3NOYW1lIiwicGFyZW50Q29uc3RyYWludHMiLCJwYXJzZUNsYXNzZXMiLCJmaWVsZHMiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImNvbnN0cmFpbnROYW1lIiwiY29uc3RyYWludFZhbHVlIiwiZ2xvYmFsSWRPYmplY3QiLCJmcm9tR2xvYmFsSWQiLCJ0eXBlIiwiaWQiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2YWx1ZSIsIm9iamVjdElkIiwiZmllbGROYW1lIiwiZmllbGRWYWx1ZSIsImtleSIsInVuZGVmaW5lZCIsInRhcmdldENsYXNzIiwid2hlcmVUYXJnZXQiLCIkZXhpc3RzIiwicGFyc2VXaGVyZVRhcmdldCIsIndoZXJlIiwiJGluUXVlcnkiLCJ0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZSIsIiRub3RJblF1ZXJ5IiwiX190eXBlIiwiYm90dG9tTGVmdCIsInVwcGVyUmlnaHQiLCJnZW9Qb2ludCIsImNlbnRlciIsImRpc3RhbmNlIiwiZXhwb3J0cyIsImZpZWxkVmFsdWVJdGVtIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvdHJhbnNmb3JtZXJzL3F1ZXJ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21HbG9iYWxJZCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuXG5jb25zdCBwYXJzZVF1ZXJ5TWFwID0ge1xuICBPUjogJyRvcicsXG4gIEFORDogJyRhbmQnLFxuICBOT1I6ICckbm9yJyxcbn07XG5cbmNvbnN0IHBhcnNlQ29uc3RyYWludE1hcCA9IHtcbiAgZXF1YWxUbzogJyRlcScsXG4gIG5vdEVxdWFsVG86ICckbmUnLFxuICBsZXNzVGhhbjogJyRsdCcsXG4gIGxlc3NUaGFuT3JFcXVhbFRvOiAnJGx0ZScsXG4gIGdyZWF0ZXJUaGFuOiAnJGd0JyxcbiAgZ3JlYXRlclRoYW5PckVxdWFsVG86ICckZ3RlJyxcbiAgaW46ICckaW4nLFxuICBub3RJbjogJyRuaW4nLFxuICBleGlzdHM6ICckZXhpc3RzJyxcbiAgaW5RdWVyeUtleTogJyRzZWxlY3QnLFxuICBub3RJblF1ZXJ5S2V5OiAnJGRvbnRTZWxlY3QnLFxuICBpblF1ZXJ5OiAnJGluUXVlcnknLFxuICBub3RJblF1ZXJ5OiAnJG5vdEluUXVlcnknLFxuICBjb250YWluZWRCeTogJyRjb250YWluZWRCeScsXG4gIGNvbnRhaW5zOiAnJGFsbCcsXG4gIG1hdGNoZXNSZWdleDogJyRyZWdleCcsXG4gIG9wdGlvbnM6ICckb3B0aW9ucycsXG4gIHRleHQ6ICckdGV4dCcsXG4gIHNlYXJjaDogJyRzZWFyY2gnLFxuICB0ZXJtOiAnJHRlcm0nLFxuICBsYW5ndWFnZTogJyRsYW5ndWFnZScsXG4gIGNhc2VTZW5zaXRpdmU6ICckY2FzZVNlbnNpdGl2ZScsXG4gIGRpYWNyaXRpY1NlbnNpdGl2ZTogJyRkaWFjcml0aWNTZW5zaXRpdmUnLFxuICBuZWFyU3BoZXJlOiAnJG5lYXJTcGhlcmUnLFxuICBtYXhEaXN0YW5jZTogJyRtYXhEaXN0YW5jZScsXG4gIG1heERpc3RhbmNlSW5SYWRpYW5zOiAnJG1heERpc3RhbmNlSW5SYWRpYW5zJyxcbiAgbWF4RGlzdGFuY2VJbk1pbGVzOiAnJG1heERpc3RhbmNlSW5NaWxlcycsXG4gIG1heERpc3RhbmNlSW5LaWxvbWV0ZXJzOiAnJG1heERpc3RhbmNlSW5LaWxvbWV0ZXJzJyxcbiAgd2l0aGluOiAnJHdpdGhpbicsXG4gIGJveDogJyRib3gnLFxuICBnZW9XaXRoaW46ICckZ2VvV2l0aGluJyxcbiAgcG9seWdvbjogJyRwb2x5Z29uJyxcbiAgY2VudGVyU3BoZXJlOiAnJGNlbnRlclNwaGVyZScsXG4gIGdlb0ludGVyc2VjdHM6ICckZ2VvSW50ZXJzZWN0cycsXG4gIHBvaW50OiAnJHBvaW50Jyxcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVF1ZXJ5Q29uc3RyYWludElucHV0VG9QYXJzZSA9IChcbiAgY29uc3RyYWludHMsXG4gIHBhcmVudEZpZWxkTmFtZSxcbiAgY2xhc3NOYW1lLFxuICBwYXJlbnRDb25zdHJhaW50cyxcbiAgcGFyc2VDbGFzc2VzXG4pID0+IHtcbiAgY29uc3QgZmllbGRzID0gcGFyc2VDbGFzc2VzW2NsYXNzTmFtZV0uZmllbGRzO1xuICBpZiAocGFyZW50RmllbGROYW1lID09PSAnaWQnICYmIGNsYXNzTmFtZSkge1xuICAgIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGNvbnN0cmFpbnROYW1lID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGNvbnN0cmFpbnRzW2NvbnN0cmFpbnROYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29uc3RyYWludFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChjb25zdHJhaW50VmFsdWUpO1xuXG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSBjbGFzc05hbWUpIHtcbiAgICAgICAgICBjb25zdHJhaW50c1tjb25zdHJhaW50TmFtZV0gPSBnbG9iYWxJZE9iamVjdC5pZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnN0cmFpbnRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3RyYWludHNbY29uc3RyYWludE5hbWVdID0gY29uc3RyYWludFZhbHVlLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcGFyZW50Q29uc3RyYWludHMub2JqZWN0SWQgPSBjb25zdHJhaW50cztcbiAgICBkZWxldGUgcGFyZW50Q29uc3RyYWludHMuaWQ7XG4gIH1cbiAgT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZvckVhY2goZmllbGROYW1lID0+IHtcbiAgICBsZXQgZmllbGRWYWx1ZSA9IGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgaWYgKHBhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdKSB7XG4gICAgICBjb25zdHJhaW50c1twYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV0gPSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgICAgZGVsZXRlIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIHdlIGhhdmUgYSBrZXktdmFsdWUgcGFpciwgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHdheSB0aGUgY29uc3RyYWludCBpcyBzdHJ1Y3R1cmVkLlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiAgIEZyb206XG4gICAgICogICB7XG4gICAgICogICAgIFwic29tZUZpZWxkXCI6IHtcbiAgICAgKiAgICAgICBcImxlc3NUaGFuXCI6IHtcbiAgICAgKiAgICAgICAgIFwia2V5XCI6XCJmb28uYmFyXCIsXG4gICAgICogICAgICAgICBcInZhbHVlXCI6IDEwMFxuICAgICAqICAgICAgIH0sXG4gICAgICogICAgICAgXCJncmVhdGVyVGhhblwiOiB7XG4gICAgICogICAgICAgICBcImtleVwiOlwiZm9vLmJhclwiLFxuICAgICAqICAgICAgICAgXCJ2YWx1ZVwiOiAxMFxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogICBUbzpcbiAgICAgKiAgIHtcbiAgICAgKiAgICAgXCJzb21lRmllbGQuZm9vLmJhclwiOiB7XG4gICAgICogICAgICAgXCIkbHRcIjogMTAwLFxuICAgICAqICAgICAgIFwiJGd0XCI6IDEwXG4gICAgICogICAgICB9XG4gICAgICogICB9XG4gICAgICovXG4gICAgaWYgKGZpZWxkVmFsdWUua2V5ICYmIGZpZWxkVmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwYXJlbnRDb25zdHJhaW50cyAmJiBwYXJlbnRGaWVsZE5hbWUpIHtcbiAgICAgIGRlbGV0ZSBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdO1xuICAgICAgcGFyZW50Q29uc3RyYWludHNbYCR7cGFyZW50RmllbGROYW1lfS4ke2ZpZWxkVmFsdWUua2V5fWBdID0ge1xuICAgICAgICAuLi5wYXJlbnRDb25zdHJhaW50c1tgJHtwYXJlbnRGaWVsZE5hbWV9LiR7ZmllbGRWYWx1ZS5rZXl9YF0sXG4gICAgICAgIFtwYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV06IGZpZWxkVmFsdWUudmFsdWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBmaWVsZHNbcGFyZW50RmllbGROYW1lXSAmJlxuICAgICAgKGZpZWxkc1twYXJlbnRGaWVsZE5hbWVdLnR5cGUgPT09ICdQb2ludGVyJyB8fCBmaWVsZHNbcGFyZW50RmllbGROYW1lXS50eXBlID09PSAnUmVsYXRpb24nKVxuICAgICkge1xuICAgICAgY29uc3QgeyB0YXJnZXRDbGFzcyB9ID0gZmllbGRzW3BhcmVudEZpZWxkTmFtZV07XG4gICAgICBpZiAoZmllbGROYW1lID09PSAnZXhpc3RzJykge1xuICAgICAgICBpZiAoZmllbGRzW3BhcmVudEZpZWxkTmFtZV0udHlwZSA9PT0gJ1JlbGF0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHdoZXJlVGFyZ2V0ID0gZmllbGRWYWx1ZSA/ICd3aGVyZScgOiAnbm90V2hlcmUnO1xuICAgICAgICAgIGlmIChjb25zdHJhaW50c1t3aGVyZVRhcmdldF0pIHtcbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50c1t3aGVyZVRhcmdldF0ub2JqZWN0SWQpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkID0ge1xuICAgICAgICAgICAgICAgIC4uLmNvbnN0cmFpbnRzW3doZXJlVGFyZ2V0XS5vYmplY3RJZCxcbiAgICAgICAgICAgICAgICAkZXhpc3RzOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkID0ge1xuICAgICAgICAgICAgICAgICRleGlzdHM6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlV2hlcmVUYXJnZXQgPSBmaWVsZFZhbHVlID8gJyRpblF1ZXJ5JyA6ICckbm90SW5RdWVyeSc7XG4gICAgICAgICAgICBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdW3BhcnNlV2hlcmVUYXJnZXRdID0ge1xuICAgICAgICAgICAgICB3aGVyZTogeyBvYmplY3RJZDogeyAkZXhpc3RzOiB0cnVlIH0gfSxcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBjb25zdHJhaW50cy4kZXhpc3RzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJGV4aXN0cyA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChmaWVsZE5hbWUpIHtcbiAgICAgICAgY2FzZSAnaGF2ZSc6XG4gICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kaW5RdWVyeSA9IHtcbiAgICAgICAgICAgIHdoZXJlOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKFxuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kaW5RdWVyeS53aGVyZSxcbiAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaGF2ZU5vdCc6XG4gICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kbm90SW5RdWVyeSA9IHtcbiAgICAgICAgICAgIHdoZXJlOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKFxuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kbm90SW5RdWVyeS53aGVyZSxcbiAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGZpZWxkTmFtZSkge1xuICAgICAgY2FzZSAncG9pbnQnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmICFmaWVsZFZhbHVlLl9fdHlwZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25lYXJTcGhlcmUnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmICFmaWVsZFZhbHVlLl9fdHlwZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JveCc6XG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5ib3R0b21MZWZ0ICYmIGZpZWxkVmFsdWUudXBwZXJSaWdodCkge1xuICAgICAgICAgIGZpZWxkVmFsdWUgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS5ib3R0b21MZWZ0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX190eXBlOiAnR2VvUG9pbnQnLFxuICAgICAgICAgICAgICAuLi5maWVsZFZhbHVlLnVwcGVyUmlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3RyYWludHNbcGFyc2VDb25zdHJhaW50TWFwW2ZpZWxkTmFtZV1dID0gZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgICBpZiAoZmllbGRWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgZmllbGRWYWx1ZS5mb3JFYWNoKGdlb1BvaW50ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZ2VvUG9pbnQgPT09ICdvYmplY3QnICYmICFnZW9Qb2ludC5fX3R5cGUpIHtcbiAgICAgICAgICAgICAgZ2VvUG9pbnQuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlclNwaGVyZSc6XG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5jZW50ZXIgJiYgZmllbGRWYWx1ZS5kaXN0YW5jZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS5jZW50ZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGRWYWx1ZS5kaXN0YW5jZSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0cmFpbnRzW3BhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChmaWVsZE5hbWUgPT09ICd3aGVyZScpIHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UoZmllbGRWYWx1ZSwgY2xhc3NOYW1lLCBwYXJzZUNsYXNzZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlDb25zdHJhaW50SW5wdXRUb1BhcnNlKFxuICAgICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGROYW1lLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBwYXJzZUNsYXNzZXNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UgPSAoY29uc3RyYWludHMsIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKSA9PiB7XG4gIGlmICghY29uc3RyYWludHMgfHwgdHlwZW9mIGNvbnN0cmFpbnRzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG5cbiAgICBpZiAocGFyc2VRdWVyeU1hcFtmaWVsZE5hbWVdKSB7XG4gICAgICBkZWxldGUgY29uc3RyYWludHNbZmllbGROYW1lXTtcbiAgICAgIGZpZWxkTmFtZSA9IHBhcnNlUXVlcnlNYXBbZmllbGROYW1lXTtcbiAgICAgIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlO1xuICAgICAgZmllbGRWYWx1ZS5mb3JFYWNoKGZpZWxkVmFsdWVJdGVtID0+IHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UoZmllbGRWYWx1ZUl0ZW0sIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UoXG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UsIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGFBQUEsR0FBQUMsT0FBQTtBQUVBLE1BQU1DLGFBQWEsR0FBRztFQUNwQkMsRUFBRSxFQUFFLEtBQUs7RUFDVEMsR0FBRyxFQUFFLE1BQU07RUFDWEMsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVELE1BQU1DLGtCQUFrQixHQUFHO0VBQ3pCQyxPQUFPLEVBQUUsS0FBSztFQUNkQyxVQUFVLEVBQUUsS0FBSztFQUNqQkMsUUFBUSxFQUFFLEtBQUs7RUFDZkMsaUJBQWlCLEVBQUUsTUFBTTtFQUN6QkMsV0FBVyxFQUFFLEtBQUs7RUFDbEJDLG9CQUFvQixFQUFFLE1BQU07RUFDNUJDLEVBQUUsRUFBRSxLQUFLO0VBQ1RDLEtBQUssRUFBRSxNQUFNO0VBQ2JDLE1BQU0sRUFBRSxTQUFTO0VBQ2pCQyxVQUFVLEVBQUUsU0FBUztFQUNyQkMsYUFBYSxFQUFFLGFBQWE7RUFDNUJDLE9BQU8sRUFBRSxVQUFVO0VBQ25CQyxVQUFVLEVBQUUsYUFBYTtFQUN6QkMsV0FBVyxFQUFFLGNBQWM7RUFDM0JDLFFBQVEsRUFBRSxNQUFNO0VBQ2hCQyxZQUFZLEVBQUUsUUFBUTtFQUN0QkMsT0FBTyxFQUFFLFVBQVU7RUFDbkJDLElBQUksRUFBRSxPQUFPO0VBQ2JDLE1BQU0sRUFBRSxTQUFTO0VBQ2pCQyxJ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