parse-server 7.1.0-alpha.8 → 7.1.0-beta.1

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 (126) hide show
  1. package/README.md +1 -1
  2. package/lib/AccountLockout.js +2 -2
  3. package/lib/Adapters/Auth/apple.js +1 -1
  4. package/lib/Adapters/Auth/facebook.js +1 -1
  5. package/lib/Adapters/Auth/gcenter.js +1 -1
  6. package/lib/Adapters/Auth/google.js +1 -1
  7. package/lib/Adapters/Auth/gpgames.js +1 -1
  8. package/lib/Adapters/Auth/index.js +2 -2
  9. package/lib/Adapters/Auth/instagram.js +1 -1
  10. package/lib/Adapters/Auth/keycloak.js +1 -1
  11. package/lib/Adapters/Auth/ldap.js +1 -1
  12. package/lib/Adapters/Auth/mfa.js +2 -2
  13. package/lib/Adapters/Auth/utils.js +1 -1
  14. package/lib/Adapters/Cache/LRUCache.js +2 -2
  15. package/lib/Adapters/Cache/RedisCacheAdapter.js +2 -2
  16. package/lib/Adapters/Files/FilesAdapter.js +2 -2
  17. package/lib/Adapters/Files/GridFSBucketAdapter.js +2 -2
  18. package/lib/Adapters/Logger/WinstonLogger.js +2 -2
  19. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +2 -2
  20. package/lib/Adapters/PubSub/EventEmitterPubSub.js +2 -2
  21. package/lib/Adapters/PubSub/RedisPubSub.js +2 -2
  22. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +6 -6
  23. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +6 -6
  24. package/lib/Adapters/Storage/Mongo/MongoTransform.js +3 -3
  25. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +17 -10
  26. package/lib/Auth.js +16 -8
  27. package/lib/Config.js +2 -2
  28. package/lib/Controllers/AnalyticsController.js +2 -2
  29. package/lib/Controllers/CacheController.js +2 -2
  30. package/lib/Controllers/DatabaseController.js +5 -5
  31. package/lib/Controllers/FilesController.js +2 -2
  32. package/lib/Controllers/HooksController.js +2 -2
  33. package/lib/Controllers/LiveQueryController.js +1 -1
  34. package/lib/Controllers/LoggerController.js +2 -2
  35. package/lib/Controllers/ParseGraphQLController.js +5 -5
  36. package/lib/Controllers/PushController.js +2 -2
  37. package/lib/Controllers/SchemaController.js +4 -4
  38. package/lib/Controllers/UserController.js +3 -3
  39. package/lib/Controllers/index.js +3 -3
  40. package/lib/Deprecator/Deprecator.js +2 -2
  41. package/lib/GraphQL/ParseGraphQLSchema.js +2 -2
  42. package/lib/GraphQL/ParseGraphQLServer.js +2 -2
  43. package/lib/GraphQL/helpers/objectsMutations.js +2 -2
  44. package/lib/GraphQL/helpers/objectsQueries.js +2 -2
  45. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +3 -3
  46. package/lib/GraphQL/loaders/defaultRelaySchema.js +3 -3
  47. package/lib/GraphQL/loaders/filesMutations.js +3 -3
  48. package/lib/GraphQL/loaders/functionsMutations.js +3 -3
  49. package/lib/GraphQL/loaders/parseClassMutations.js +3 -3
  50. package/lib/GraphQL/loaders/parseClassQueries.js +2 -2
  51. package/lib/GraphQL/loaders/parseClassTypes.js +3 -3
  52. package/lib/GraphQL/loaders/schemaDirectives.js +1 -1
  53. package/lib/GraphQL/loaders/schemaMutations.js +2 -2
  54. package/lib/GraphQL/loaders/schemaQueries.js +2 -2
  55. package/lib/GraphQL/loaders/schemaTypes.js +1 -1
  56. package/lib/GraphQL/loaders/usersMutations.js +3 -3
  57. package/lib/GraphQL/loaders/usersQueries.js +2 -2
  58. package/lib/GraphQL/parseGraphQLUtils.js +2 -2
  59. package/lib/GraphQL/transformers/mutation.js +3 -3
  60. package/lib/GraphQL/transformers/query.js +2 -2
  61. package/lib/GraphQL/transformers/schemaFields.js +3 -3
  62. package/lib/LiveQuery/Client.js +2 -2
  63. package/lib/LiveQuery/ParseCloudCodePublisher.js +2 -2
  64. package/lib/LiveQuery/ParseLiveQueryServer.js +2 -2
  65. package/lib/LiveQuery/ParseWebSocketServer.js +2 -2
  66. package/lib/LiveQuery/QueryTools.js +3 -2
  67. package/lib/LiveQuery/SessionTokenCache.js +2 -2
  68. package/lib/LiveQuery/Subscription.js +2 -2
  69. package/lib/Options/Definitions.js +2 -2
  70. package/lib/Options/docs.js +2 -2
  71. package/lib/Options/index.js +1 -1
  72. package/lib/Options/parsers.js +1 -1
  73. package/lib/ParseServer.js +3 -3
  74. package/lib/ParseServerRESTController.js +2 -2
  75. package/lib/PromiseRouter.js +2 -2
  76. package/lib/Push/PushQueue.js +2 -2
  77. package/lib/Push/PushWorker.js +2 -2
  78. package/lib/Push/utils.js +2 -2
  79. package/lib/RestQuery.js +1 -1
  80. package/lib/RestWrite.js +3 -3
  81. package/lib/Routers/AggregateRouter.js +2 -2
  82. package/lib/Routers/AnalyticsRouter.js +2 -2
  83. package/lib/Routers/AudiencesRouter.js +2 -2
  84. package/lib/Routers/ClassesRouter.js +2 -2
  85. package/lib/Routers/CloudCodeRouter.js +2 -2
  86. package/lib/Routers/FeaturesRouter.js +2 -2
  87. package/lib/Routers/FilesRouter.js +2 -2
  88. package/lib/Routers/FunctionsRouter.js +2 -2
  89. package/lib/Routers/GlobalConfigRouter.js +2 -2
  90. package/lib/Routers/GraphQLRouter.js +2 -2
  91. package/lib/Routers/HooksRouter.js +2 -2
  92. package/lib/Routers/IAPValidationRouter.js +2 -2
  93. package/lib/Routers/InstallationsRouter.js +2 -2
  94. package/lib/Routers/LogsRouter.js +2 -2
  95. package/lib/Routers/PagesRouter.js +2 -2
  96. package/lib/Routers/PublicAPIRouter.js +2 -2
  97. package/lib/Routers/PurgeRouter.js +2 -2
  98. package/lib/Routers/PushRouter.js +2 -2
  99. package/lib/Routers/RolesRouter.js +2 -2
  100. package/lib/Routers/SchemasRouter.js +2 -2
  101. package/lib/Routers/SecurityRouter.js +2 -2
  102. package/lib/Routers/SessionsRouter.js +2 -2
  103. package/lib/Routers/UsersRouter.js +3 -3
  104. package/lib/SchemaMigrations/DefinedSchemas.js +3 -3
  105. package/lib/Security/Check.js +2 -2
  106. package/lib/Security/CheckGroup.js +1 -1
  107. package/lib/Security/CheckGroups/CheckGroupDatabase.js +2 -2
  108. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +2 -2
  109. package/lib/Security/CheckGroups/CheckGroups.js +2 -2
  110. package/lib/Security/CheckRunner.js +2 -2
  111. package/lib/SharedRest.js +1 -1
  112. package/lib/StatusHandler.js +3 -3
  113. package/lib/TestUtils.js +2 -2
  114. package/lib/Utils.js +1 -1
  115. package/lib/cli/parse-live-query-server.js +2 -2
  116. package/lib/cli/parse-server.js +2 -2
  117. package/lib/cli/utils/commander.js +2 -2
  118. package/lib/cli/utils/runner.js +2 -2
  119. package/lib/cloud-code/Parse.Cloud.js +2 -2
  120. package/lib/deprecated.js +1 -1
  121. package/lib/index.js +2 -2
  122. package/lib/logger.js +2 -2
  123. package/lib/middlewares.js +2 -2
  124. package/lib/request.js +2 -2
  125. package/lib/triggers.js +3 -3
  126. package/package.json +7 -6
@@ -26,7 +26,7 @@ var _triggers = require("../triggers");
26
26
  var defaultRelaySchema = _interopRequireWildcard(require("./loaders/defaultRelaySchema"));
27
27
  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); }
28
28
  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; }
29
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
30
30
  const RESERVED_GRAPHQL_TYPE_NAMES = ['String', 'Boolean', 'Int', 'Float', 'ID', 'ArrayResult', 'Query', 'Mutation', 'Subscription', 'CreateFileInput', 'CreateFilePayload', 'Viewer', 'SignUpInput', 'SignUpPayload', 'LogInInput', 'LogInPayload', 'LogOutInput', 'LogOutPayload', 'CloudCodeFunction', 'CallCloudCodeInput', 'CallCloudCodePayload', 'CreateClassInput', 'CreateClassPayload', 'UpdateClassInput', 'UpdateClassPayload', 'DeleteClassInput', 'DeleteClassPayload', 'PageInfo'];
31
31
  const RESERVED_GRAPHQL_QUERY_NAMES = ['health', 'viewer', 'class', 'classes'];
32
32
  const RESERVED_GRAPHQL_MUTATION_NAMES = ['signUp', 'logIn', 'logOut', 'createFile', 'callCloudCode', 'createClass', 'updateClass', 'deleteClass'];
@@ -372,4 +372,4 @@ class ParseGraphQLSchema {
372
372
  }
373
373
  }
374
374
  exports.ParseGraphQLSchema = ParseGraphQLSchema;
375
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWwiLCJfc2NoZW1hIiwiX21lcmdlIiwiX3V0aWwiLCJfcmVxdWlyZWRQYXJhbWV0ZXIiLCJkZWZhdWx0R3JhcGhRTFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJwYXJzZUNsYXNzVHlwZXMiLCJwYXJzZUNsYXNzUXVlcmllcyIsInBhcnNlQ2xhc3NNdXRhdGlvbnMiLCJkZWZhdWx0R3JhcGhRTFF1ZXJpZXMiLCJkZWZhdWx0R3JhcGhRTE11dGF0aW9ucyIsIl9QYXJzZUdyYXBoUUxDb250cm9sbGVyIiwiX0RhdGFiYXNlQ29udHJvbGxlciIsIl9TY2hlbWFDYWNoZSIsIl9wYXJzZUdyYXBoUUxVdGlscyIsInNjaGVtYURpcmVjdGl2ZXMiLCJzY2hlbWFUeXBlcyIsIl90cmlnZ2VycyIsImRlZmF1bHRSZWxheVNjaGVtYSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIm9iaiIsIlJFU0VSVkVEX0dSQVBIUUxfVFlQRV9OQU1FUyIsIlJFU0VSVkVEX0dSQVBIUUxfUVVFUllfTkFNRVMiLCJSRVNFUlZFRF9HUkFQSFFMX01VVEFUSU9OX05BTUVTIiwiUGFyc2VHcmFwaFFMU2NoZW1hIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJwYXJzZUdyYXBoUUxDb250cm9sbGVyIiwicmVxdWlyZWRQYXJhbWV0ZXIiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJsb2ciLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJhcHBJZCIsInNjaGVtYUNhY2hlIiwiU2NoZW1hQ2FjaGUiLCJsb2dDYWNoZSIsImxvYWQiLCJwYXJzZUdyYXBoUUxDb25maWciLCJfaW5pdGlhbGl6ZVNjaGVtYUFuZENvbmZpZyIsInBhcnNlQ2xhc3Nlc0FycmF5IiwiX2dldENsYXNzZXNGb3JTY2hlbWEiLCJmdW5jdGlvbk5hbWVzIiwiX2dldEZ1bmN0aW9uTmFtZXMiLCJmdW5jdGlvbk5hbWVzU3RyaW5nIiwiam9pbiIsInBhcnNlQ2xhc3NlcyIsInJlZHVjZSIsImFjYyIsImNsYXp6IiwiY2xhc3NOYW1lIiwiX2hhc1NjaGVtYUlucHV0Q2hhbmdlZCIsImdyYXBoUUxTY2hlbWEiLCJ2aWV3ZXJUeXBlIiwiZ3JhcGhRTEF1dG9TY2hlbWEiLCJncmFwaFFMVHlwZXMiLCJncmFwaFFMUXVlcmllcyIsImdyYXBoUUxNdXRhdGlvbnMiLCJncmFwaFFMU3Vic2NyaXB0aW9ucyIsImdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzRGVmaW5pdGlvbnMiLCJncmFwaFFMU2NoZW1hRGlyZWN0aXZlcyIsInJlbGF5Tm9kZUludGVyZmFjZSIsIl9nZXRQYXJzZUNsYXNzZXNXaXRoQ29uZmlnIiwiZm9yRWFjaCIsInBhcnNlQ2xhc3MiLCJwYXJzZUNsYXNzQ29uZmlnIiwia2V5cyIsImZpZWxkcyIsImZpZWxkTmFtZSIsInN0YXJ0c1dpdGgiLCJvcmRlcmVkRmllbGRzIiwic29ydCIsImxvYWRBcnJheVJlc3VsdCIsImdyYXBoUUxRdWVyeSIsInVuZGVmaW5lZCIsImxlbmd0aCIsIkdyYXBoUUxPYmplY3RUeXBlIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYWRkR3JhcGhRTFR5cGUiLCJncmFwaFFMTXV0YXRpb24iLCJncmFwaFFMU3Vic2NyaXB0aW9uIiwiR3JhcGhRTFNjaGVtYSIsInR5cGVzIiwicXVlcnkiLCJtdXRhdGlvbiIsInN1YnNjcmlwdGlvbiIsImdldFR5cGVNYXAiLCJjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcCIsIl90eXBlTWFwIiwiZmluZEFuZFJlcGxhY2VMYXN0VHlwZSIsInBhcmVudCIsImtleSIsIm9mVHlwZSIsImN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlS2V5IiwiY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUiLCJhdXRvR3JhcGhRTFNjaGVtYVR5cGUiLCJnZXRGaWVsZHMiLCJfZmllbGRzIiwiZmllbGRLZXkiLCJmaWVsZCIsImRpcmVjdGl2ZXNEZWZpbml0aW9uc1NjaGVtYSIsImF1dG9TY2hlbWEiLCJtZXJnZVNjaGVtYXMiLCJzY2hlbWFzIiwidHlwZURlZnMiLCJtZXJnZVR5cGVEZWZzIiwiX2xvZ09uY2UiLCJzZXZlcml0eSIsIm1lc3NhZ2UiLCJ0eXBlIiwidGhyb3dFcnJvciIsImlnbm9yZVJlc2VydmVkIiwiaWdub3JlQ29ubmVjdGlvbiIsImluY2x1ZGVzIiwiZmluZCIsImV4aXN0aW5nVHlwZSIsImVuZHNXaXRoIiwiRXJyb3IiLCJwdXNoIiwiYWRkR3JhcGhRTFF1ZXJ5IiwiYWRkR3JhcGhRTE11dGF0aW9uIiwiaGFuZGxlRXJyb3IiLCJlcnJvciIsIlBhcnNlIiwic3RhY2siLCJ0b0dyYXBoUUxFcnJvciIsInNjaGVtYUNvbnRyb2xsZXIiLCJQcm9taXNlIiwiYWxsIiwibG9hZFNjaGVtYSIsImdldEdyYXBoUUxDb25maWciLCJlbmFibGVkRm9yQ2xhc3NlcyIsImRpc2FibGVkRm9yQ2xhc3NlcyIsImFsbENsYXNzZXMiLCJnZXRBbGxDbGFzc2VzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZWRDbGFzc2VzIiwiZmlsdGVyIiwiaXNVc2Vyc0NsYXNzRGlzYWJsZWQiLCJzb21lIiwiY2xhc3NDb25maWdzIiwic29ydENsYXNzZXMiLCJiIiwibWFwIiwiYyIsImdldEZ1bmN0aW9uTmFtZXMiLCJmdW5jdGlvbk5hbWUiLCJ0ZXN0IiwiaXNEZWVwU3RyaWN0RXF1YWwiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0dyYXBoUUwvUGFyc2VHcmFwaFFMU2NoZW1hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCB7IEdyYXBoUUxTY2hlbWEsIEdyYXBoUUxPYmplY3RUeXBlLCBEb2N1bWVudE5vZGUsIEdyYXBoUUxOYW1lZFR5cGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IG1lcmdlU2NoZW1hcyB9IGZyb20gJ0BncmFwaHFsLXRvb2xzL3NjaGVtYSc7XG5pbXBvcnQgeyBtZXJnZVR5cGVEZWZzIH0gZnJvbSAnQGdyYXBocWwtdG9vbHMvbWVyZ2UnO1xuaW1wb3J0IHsgaXNEZWVwU3RyaWN0RXF1YWwgfSBmcm9tICd1dGlsJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuLi9yZXF1aXJlZFBhcmFtZXRlcic7XG5pbXBvcnQgKiBhcyBkZWZhdWx0R3JhcGhRTFR5cGVzIGZyb20gJy4vbG9hZGVycy9kZWZhdWx0R3JhcGhRTFR5cGVzJztcbmltcG9ydCAqIGFzIHBhcnNlQ2xhc3NUeXBlcyBmcm9tICcuL2xvYWRlcnMvcGFyc2VDbGFzc1R5cGVzJztcbmltcG9ydCAqIGFzIHBhcnNlQ2xhc3NRdWVyaWVzIGZyb20gJy4vbG9hZGVycy9wYXJzZUNsYXNzUXVlcmllcyc7XG5pbXBvcnQgKiBhcyBwYXJzZUNsYXNzTXV0YXRpb25zIGZyb20gJy4vbG9hZGVycy9wYXJzZUNsYXNzTXV0YXRpb25zJztcbmltcG9ydCAqIGFzIGRlZmF1bHRHcmFwaFFMUXVlcmllcyBmcm9tICcuL2xvYWRlcnMvZGVmYXVsdEdyYXBoUUxRdWVyaWVzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRHcmFwaFFMTXV0YXRpb25zIGZyb20gJy4vbG9hZGVycy9kZWZhdWx0R3JhcGhRTE11dGF0aW9ucyc7XG5pbXBvcnQgUGFyc2VHcmFwaFFMQ29udHJvbGxlciwgeyBQYXJzZUdyYXBoUUxDb25maWcgfSBmcm9tICcuLi9Db250cm9sbGVycy9QYXJzZUdyYXBoUUxDb250cm9sbGVyJztcbmltcG9ydCBEYXRhYmFzZUNvbnRyb2xsZXIgZnJvbSAnLi4vQ29udHJvbGxlcnMvRGF0YWJhc2VDb250cm9sbGVyJztcbmltcG9ydCBTY2hlbWFDYWNoZSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9TY2hlbWFDYWNoZSc7XG5pbXBvcnQgeyB0b0dyYXBoUUxFcnJvciB9IGZyb20gJy4vcGFyc2VHcmFwaFFMVXRpbHMnO1xuaW1wb3J0ICogYXMgc2NoZW1hRGlyZWN0aXZlcyBmcm9tICcuL2xvYWRlcnMvc2NoZW1hRGlyZWN0aXZlcyc7XG5pbXBvcnQgKiBhcyBzY2hlbWFUeXBlcyBmcm9tICcuL2xvYWRlcnMvc2NoZW1hVHlwZXMnO1xuaW1wb3J0IHsgZ2V0RnVuY3Rpb25OYW1lcyB9IGZyb20gJy4uL3RyaWdnZXJzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRSZWxheVNjaGVtYSBmcm9tICcuL2xvYWRlcnMvZGVmYXVsdFJlbGF5U2NoZW1hJztcblxuY29uc3QgUkVTRVJWRURfR1JBUEhRTF9UWVBFX05BTUVTID0gW1xuICAnU3RyaW5nJyxcbiAgJ0Jvb2xlYW4nLFxuICAnSW50JyxcbiAgJ0Zsb2F0JyxcbiAgJ0lEJyxcbiAgJ0FycmF5UmVzdWx0JyxcbiAgJ1F1ZXJ5JyxcbiAgJ011dGF0aW9uJyxcbiAgJ1N1YnNjcmlwdGlvbicsXG4gICdDcmVhdGVGaWxlSW5wdXQnLFxuICAnQ3JlYXRlRmlsZVBheWxvYWQnLFxuICAnVmlld2VyJyxcbiAgJ1NpZ25VcElucHV0JyxcbiAgJ1NpZ25VcFBheWxvYWQnLFxuICAnTG9nSW5JbnB1dCcsXG4gICdMb2dJblBheWxvYWQnLFxuICAnTG9nT3V0SW5wdXQnLFxuICAnTG9nT3V0UGF5bG9hZCcsXG4gICdDbG91ZENvZGVGdW5jdGlvbicsXG4gICdDYWxsQ2xvdWRDb2RlSW5wdXQnLFxuICAnQ2FsbENsb3VkQ29kZVBheWxvYWQnLFxuICAnQ3JlYXRlQ2xhc3NJbnB1dCcsXG4gICdDcmVhdGVDbGFzc1BheWxvYWQnLFxuICAnVXBkYXRlQ2xhc3NJbnB1dCcsXG4gICdVcGRhdGVDbGFzc1BheWxvYWQnLFxuICAnRGVsZXRlQ2xhc3NJbnB1dCcsXG4gICdEZWxldGVDbGFzc1BheWxvYWQnLFxuICAnUGFnZUluZm8nLFxuXTtcbmNvbnN0IFJFU0VSVkVEX0dSQVBIUUxfUVVFUllfTkFNRVMgPSBbJ2hlYWx0aCcsICd2aWV3ZXInLCAnY2xhc3MnLCAnY2xhc3NlcyddO1xuY29uc3QgUkVTRVJWRURfR1JBUEhRTF9NVVRBVElPTl9OQU1FUyA9IFtcbiAgJ3NpZ25VcCcsXG4gICdsb2dJbicsXG4gICdsb2dPdXQnLFxuICAnY3JlYXRlRmlsZScsXG4gICdjYWxsQ2xvdWRDb2RlJyxcbiAgJ2NyZWF0ZUNsYXNzJyxcbiAgJ3VwZGF0ZUNsYXNzJyxcbiAgJ2RlbGV0ZUNsYXNzJyxcbl07XG5cbmNsYXNzIFBhcnNlR3JhcGhRTFNjaGVtYSB7XG4gIGRhdGFiYXNlQ29udHJvbGxlcjogRGF0YWJhc2VDb250cm9sbGVyO1xuICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiBQYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuICBwYXJzZUdyYXBoUUxDb25maWc6IFBhcnNlR3JhcGhRTENvbmZpZztcbiAgbG9nOiBhbnk7XG4gIGFwcElkOiBzdHJpbmc7XG4gIGdyYXBoUUxDdXN0b21UeXBlRGVmczogPyhzdHJpbmcgfCBHcmFwaFFMU2NoZW1hIHwgRG9jdW1lbnROb2RlIHwgR3JhcGhRTE5hbWVkVHlwZVtdKTtcbiAgc2NoZW1hQ2FjaGU6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwYXJhbXM6IHtcbiAgICAgIGRhdGFiYXNlQ29udHJvbGxlcjogRGF0YWJhc2VDb250cm9sbGVyLFxuICAgICAgcGFyc2VHcmFwaFFMQ29udHJvbGxlcjogUGFyc2VHcmFwaFFMQ29udHJvbGxlcixcbiAgICAgIGxvZzogYW55LFxuICAgICAgYXBwSWQ6IHN0cmluZyxcbiAgICAgIGdyYXBoUUxDdXN0b21UeXBlRGVmczogPyhzdHJpbmcgfCBHcmFwaFFMU2NoZW1hIHwgRG9jdW1lbnROb2RlIHwgR3JhcGhRTE5hbWVkVHlwZVtdKSxcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyID1cbiAgICAgIHBhcmFtcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyIHx8XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIHBhcnNlR3JhcGhRTENvbnRyb2xsZXIgaW5zdGFuY2UhJyk7XG4gICAgdGhpcy5kYXRhYmFzZUNvbnRyb2xsZXIgPVxuICAgICAgcGFyYW1zLmRhdGFiYXNlQ29udHJvbGxlciB8fFxuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBkYXRhYmFzZUNvbnRyb2xsZXIgaW5zdGFuY2UhJyk7XG4gICAgdGhpcy5sb2cgPSBwYXJhbXMubG9nIHx8IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgbG9nIGluc3RhbmNlIScpO1xuICAgIHRoaXMuZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gcGFyYW1zLmdyYXBoUUxDdXN0b21UeXBlRGVmcztcbiAgICB0aGlzLmFwcElkID0gcGFyYW1zLmFwcElkIHx8IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIHRoZSBhcHBJZCEnKTtcbiAgICB0aGlzLnNjaGVtYUNhY2hlID0gU2NoZW1hQ2FjaGU7XG4gICAgdGhpcy5sb2dDYWNoZSA9IHt9O1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBjb25zdCB7IHBhcnNlR3JhcGhRTENvbmZpZyB9ID0gYXdhaXQgdGhpcy5faW5pdGlhbGl6ZVNjaGVtYUFuZENvbmZpZygpO1xuICAgIGNvbnN0IHBhcnNlQ2xhc3Nlc0FycmF5ID0gYXdhaXQgdGhpcy5fZ2V0Q2xhc3Nlc0ZvclNjaGVtYShwYXJzZUdyYXBoUUxDb25maWcpO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZXMgPSBhd2FpdCB0aGlzLl9nZXRGdW5jdGlvbk5hbWVzKCk7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lc1N0cmluZyA9IGZ1bmN0aW9uTmFtZXMuam9pbigpO1xuXG4gICAgY29uc3QgcGFyc2VDbGFzc2VzID0gcGFyc2VDbGFzc2VzQXJyYXkucmVkdWNlKChhY2MsIGNsYXp6KSA9PiB7XG4gICAgICBhY2NbY2xhenouY2xhc3NOYW1lXSA9IGNsYXp6O1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2hhc1NjaGVtYUlucHV0Q2hhbmdlZCh7XG4gICAgICAgIHBhcnNlQ2xhc3NlcyxcbiAgICAgICAgcGFyc2VHcmFwaFFMQ29uZmlnLFxuICAgICAgICBmdW5jdGlvbk5hbWVzU3RyaW5nLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmdyYXBoUUxTY2hlbWE7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJzZUNsYXNzZXMgPSBwYXJzZUNsYXNzZXM7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxDb25maWcgPSBwYXJzZUdyYXBoUUxDb25maWc7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWVzID0gZnVuY3Rpb25OYW1lcztcbiAgICB0aGlzLmZ1bmN0aW9uTmFtZXNTdHJpbmcgPSBmdW5jdGlvbk5hbWVzU3RyaW5nO1xuICAgIHRoaXMucGFyc2VDbGFzc1R5cGVzID0ge307XG4gICAgdGhpcy52aWV3ZXJUeXBlID0gbnVsbDtcbiAgICB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hID0gbnVsbDtcbiAgICB0aGlzLmdyYXBoUUxTY2hlbWEgPSBudWxsO1xuICAgIHRoaXMuZ3JhcGhRTFR5cGVzID0gW107XG4gICAgdGhpcy5ncmFwaFFMUXVlcmllcyA9IHt9O1xuICAgIHRoaXMuZ3JhcGhRTE11dGF0aW9ucyA9IHt9O1xuICAgIHRoaXMuZ3JhcGhRTFN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgICB0aGlzLmdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzRGVmaW5pdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuZ3JhcGhRTFNjaGVtYURpcmVjdGl2ZXMgPSB7fTtcbiAgICB0aGlzLnJlbGF5Tm9kZUludGVyZmFjZSA9IG51bGw7XG5cbiAgICBkZWZhdWx0R3JhcGhRTFR5cGVzLmxvYWQodGhpcyk7XG4gICAgZGVmYXVsdFJlbGF5U2NoZW1hLmxvYWQodGhpcyk7XG4gICAgc2NoZW1hVHlwZXMubG9hZCh0aGlzKTtcblxuICAgIHRoaXMuX2dldFBhcnNlQ2xhc3Nlc1dpdGhDb25maWcocGFyc2VDbGFzc2VzQXJyYXksIHBhcnNlR3JhcGhRTENvbmZpZykuZm9yRWFjaChcbiAgICAgIChbcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZ10pID0+IHtcbiAgICAgICAgLy8gU29tZSB0aW1lcyBzY2hlbWEgcmV0dXJuIHRoZSBfYXV0aF9kYXRhXyBmaWVsZFxuICAgICAgICAvLyBpdCB3aWxsIGxlYWQgdG8gdW5zdGFibGUgZ3JhcGhxbCBnZW5lcmF0aW9uIG9yZGVyXG4gICAgICAgIGlmIChwYXJzZUNsYXNzLmNsYXNzTmFtZSA9PT0gJ19Vc2VyJykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnNlQ2xhc3MuZmllbGRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGROYW1lLnN0YXJ0c1dpdGgoJ19hdXRoX2RhdGFfJykpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaWVsZHMgb3JkZXIgaW5zaWRlIHRoZSBzY2hlbWEgc2VlbXMgdG8gbm90IGJlIGNvbnNpc3RlbnQgYWNyb3NzXG4gICAgICAgIC8vIHJlc3RhcnQgc28gd2UgbmVlZCB0byBlbnN1cmUgYW4gYWxwaGFiZXRpY2FsIG9yZGVyXG4gICAgICAgIC8vIGFsc28gaXQncyBiZXR0ZXIgZm9yIHRoZSBwbGF5Z3JvdW5kIGRvY3VtZW50YXRpb25cbiAgICAgICAgY29uc3Qgb3JkZXJlZEZpZWxkcyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJzZUNsYXNzLmZpZWxkcylcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmZvckVhY2goZmllbGROYW1lID0+IHtcbiAgICAgICAgICAgIG9yZGVyZWRGaWVsZHNbZmllbGROYW1lXSA9IHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIHBhcnNlQ2xhc3MuZmllbGRzID0gb3JkZXJlZEZpZWxkcztcbiAgICAgICAgcGFyc2VDbGFzc1R5cGVzLmxvYWQodGhpcywgcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZyk7XG4gICAgICAgIHBhcnNlQ2xhc3NRdWVyaWVzLmxvYWQodGhpcywgcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZyk7XG4gICAgICAgIHBhcnNlQ2xhc3NNdXRhdGlvbnMubG9hZCh0aGlzLCBwYXJzZUNsYXNzLCBwYXJzZUNsYXNzQ29uZmlnKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGVmYXVsdEdyYXBoUUxUeXBlcy5sb2FkQXJyYXlSZXN1bHQodGhpcywgcGFyc2VDbGFzc2VzQXJyYXkpO1xuICAgIGRlZmF1bHRHcmFwaFFMUXVlcmllcy5sb2FkKHRoaXMpO1xuICAgIGRlZmF1bHRHcmFwaFFMTXV0YXRpb25zLmxvYWQodGhpcyk7XG5cbiAgICBsZXQgZ3JhcGhRTFF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmdyYXBoUUxRdWVyaWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICBncmFwaFFMUXVlcnkgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICBuYW1lOiAnUXVlcnknLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGlzIHRoZSB0b3AgbGV2ZWwgdHlwZSBmb3IgcXVlcmllcy4nLFxuICAgICAgICBmaWVsZHM6IHRoaXMuZ3JhcGhRTFF1ZXJpZXMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkR3JhcGhRTFR5cGUoZ3JhcGhRTFF1ZXJ5LCB0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBsZXQgZ3JhcGhRTE11dGF0aW9uID0gdW5kZWZpbmVkO1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmdyYXBoUUxNdXRhdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGdyYXBoUUxNdXRhdGlvbiA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6ICdNdXRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTXV0YXRpb24gaXMgdGhlIHRvcCBsZXZlbCB0eXBlIGZvciBtdXRhdGlvbnMuJyxcbiAgICAgICAgZmllbGRzOiB0aGlzLmdyYXBoUUxNdXRhdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkR3JhcGhRTFR5cGUoZ3JhcGhRTE11dGF0aW9uLCB0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBsZXQgZ3JhcGhRTFN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ncmFwaFFMU3Vic2NyaXB0aW9ucykubGVuZ3RoID4gMCkge1xuICAgICAgZ3JhcGhRTFN1YnNjcmlwdGlvbiA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6ICdTdWJzY3JpcHRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N1YnNjcmlwdGlvbiBpcyB0aGUgdG9wIGxldmVsIHR5cGUgZm9yIHN1YnNjcmlwdGlvbnMuJyxcbiAgICAgICAgZmllbGRzOiB0aGlzLmdyYXBoUUxTdWJzY3JpcHRpb25zLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZEdyYXBoUUxUeXBlKGdyYXBoUUxTdWJzY3JpcHRpb24sIHRydWUsIHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWEgPSBuZXcgR3JhcGhRTFNjaGVtYSh7XG4gICAgICB0eXBlczogdGhpcy5ncmFwaFFMVHlwZXMsXG4gICAgICBxdWVyeTogZ3JhcGhRTFF1ZXJ5LFxuICAgICAgbXV0YXRpb246IGdyYXBoUUxNdXRhdGlvbixcbiAgICAgIHN1YnNjcmlwdGlvbjogZ3JhcGhRTFN1YnNjcmlwdGlvbixcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmdyYXBoUUxDdXN0b21UeXBlRGVmcykge1xuICAgICAgc2NoZW1hRGlyZWN0aXZlcy5sb2FkKHRoaXMpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmdyYXBoUUxDdXN0b21UeXBlRGVmcy5nZXRUeXBlTWFwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIEluIGZvbGxvd2luZyBjb2RlIHdlIHVzZSB1bmRlcnNjb3JlIGF0dHIgdG8ga2VlcCB0aGUgZGlyZWN0IHZhcmlhYmxlIHJlZmVyZW5jZVxuICAgICAgICBjb25zdCBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcCA9IHRoaXMuZ3JhcGhRTEN1c3RvbVR5cGVEZWZzLl90eXBlTWFwO1xuICAgICAgICBjb25zdCBmaW5kQW5kUmVwbGFjZUxhc3RUeXBlID0gKHBhcmVudCwga2V5KSA9PiB7XG4gICAgICAgICAgaWYgKHBhcmVudFtrZXldLm5hbWUpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5ncmFwaFFMQXV0b1NjaGVtYS5fdHlwZU1hcFtwYXJlbnRba2V5XS5uYW1lXSAmJlxuICAgICAgICAgICAgICB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW3BhcmVudFtrZXldLm5hbWVdICE9PSBwYXJlbnRba2V5XVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHVucmVzb2x2ZWQgZmllbGQgb24gb3ZlcmxvYWRlZCBzY2hlbWFcbiAgICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgZmluYWwgdHlwZSB3aXRoIHRoZSBhdXRvIHNjaGVtYSBvbmVcbiAgICAgICAgICAgICAgcGFyZW50W2tleV0gPSB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW3BhcmVudFtrZXldLm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocGFyZW50W2tleV0ub2ZUeXBlKSB7XG4gICAgICAgICAgICAgIGZpbmRBbmRSZXBsYWNlTGFzdFR5cGUocGFyZW50W2tleV0sICdvZlR5cGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIEFkZCBub24gc2hhcmVkIHR5cGVzIGZyb20gY3VzdG9tIHNjaGVtYSB0byBhdXRvIHNjaGVtYVxuICAgICAgICAvLyBub3RlOiBzb21lIG5vbiBzaGFyZWQgdHlwZXMgY2FuIHVzZSBzb21lIHNoYXJlZCB0eXBlc1xuICAgICAgICAvLyBzbyB0aGlzIGNvZGUgbmVlZCB0byBiZSByYW4gYmVmb3JlIHRoZSBzaGFyZWQgdHlwZXMgYWRkaXRpb25cbiAgICAgICAgLy8gd2UgdXNlIHNvcnQgdG8gZW5zdXJlIHNjaGVtYSBjb25zaXN0ZW5jeSBvdmVyIHJlc3RhcnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlTWFwKVxuICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAuZm9yRWFjaChjdXN0b21HcmFwaFFMU2NoZW1hVHlwZUtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZSA9IGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlTWFwW2N1c3RvbUdyYXBoUUxTY2hlbWFUeXBlS2V5XTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIWN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlIHx8XG4gICAgICAgICAgICAgICFjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5uYW1lIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlLm5hbWUuc3RhcnRzV2l0aCgnX18nKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGF1dG9HcmFwaFFMU2NoZW1hVHlwZSA9IHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWEuX3R5cGVNYXBbXG4gICAgICAgICAgICAgIGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlLm5hbWVcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoIWF1dG9HcmFwaFFMU2NoZW1hVHlwZSkge1xuICAgICAgICAgICAgICB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW1xuICAgICAgICAgICAgICAgIGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlLm5hbWVcbiAgICAgICAgICAgICAgXSA9IGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBIYW5kbGUgc2hhcmVkIHR5cGVzXG4gICAgICAgIC8vIFdlIHBhc3MgdGhyb3VnaCBlYWNoIHR5cGUgYW5kIGVuc3VyZSB0aGF0IGFsbCBzdWIgZmllbGQgdHlwZXMgYXJlIHJlcGxhY2VkXG4gICAgICAgIC8vIHdlIHVzZSBzb3J0IHRvIGVuc3VyZSBzY2hlbWEgY29uc2lzdGVuY3kgb3ZlciByZXN0YXJ0c1xuICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcClcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmZvckVhY2goY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGVLZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUgPSBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcFtjdXN0b21HcmFwaFFMU2NoZW1hVHlwZUtleV07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFjdXN0b21HcmFwaFFMU2NoZW1hVHlwZSB8fFxuICAgICAgICAgICAgICAhY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUubmFtZSB8fFxuICAgICAgICAgICAgICBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5uYW1lLnN0YXJ0c1dpdGgoJ19fJylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhdXRvR3JhcGhRTFNjaGVtYVR5cGUgPSB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW1xuICAgICAgICAgICAgICBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5uYW1lXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAoYXV0b0dyYXBoUUxTY2hlbWFUeXBlICYmIHR5cGVvZiBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5nZXRGaWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUuX2ZpZWxkcylcbiAgICAgICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goZmllbGRLZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5fZmllbGRzW2ZpZWxkS2V5XTtcbiAgICAgICAgICAgICAgICAgIGZpbmRBbmRSZXBsYWNlTGFzdFR5cGUoZmllbGQsICd0eXBlJyk7XG4gICAgICAgICAgICAgICAgICBhdXRvR3JhcGhRTFNjaGVtYVR5cGUuX2ZpZWxkc1tmaWVsZC5uYW1lXSA9IGZpZWxkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyYXBoUUxTY2hlbWEgPSB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5ncmFwaFFMU2NoZW1hID0gYXdhaXQgdGhpcy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMoe1xuICAgICAgICAgIGRpcmVjdGl2ZXNEZWZpbml0aW9uc1NjaGVtYTogdGhpcy5ncmFwaFFMU2NoZW1hRGlyZWN0aXZlc0RlZmluaXRpb25zLFxuICAgICAgICAgIGF1dG9TY2hlbWE6IHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWEsXG4gICAgICAgICAgZ3JhcGhRTFNjaGVtYURpcmVjdGl2ZXM6IHRoaXMuZ3JhcGhRTFNjaGVtYURpcmVjdGl2ZXMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmFwaFFMU2NoZW1hID0gbWVyZ2VTY2hlbWFzKHtcbiAgICAgICAgICBzY2hlbWFzOiBbdGhpcy5ncmFwaFFMQXV0b1NjaGVtYV0sXG4gICAgICAgICAgdHlwZURlZnM6IG1lcmdlVHlwZURlZnMoW1xuICAgICAgICAgICAgdGhpcy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICAgICAgICB0aGlzLmdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzRGVmaW5pdGlvbnMsXG4gICAgICAgICAgXSksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyYXBoUUxTY2hlbWEgPSB0aGlzLmdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzKHRoaXMuZ3JhcGhRTFNjaGVtYSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JhcGhRTFNjaGVtYSA9IHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhRTFNjaGVtYTtcbiAgfVxuXG4gIF9sb2dPbmNlKHNldmVyaXR5LCBtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMubG9nQ2FjaGVbbWVzc2FnZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2dbc2V2ZXJpdHldKG1lc3NhZ2UpO1xuICAgIHRoaXMubG9nQ2FjaGVbbWVzc2FnZV0gPSB0cnVlO1xuICB9XG5cbiAgYWRkR3JhcGhRTFR5cGUodHlwZSwgdGhyb3dFcnJvciA9IGZhbHNlLCBpZ25vcmVSZXNlcnZlZCA9IGZhbHNlLCBpZ25vcmVDb25uZWN0aW9uID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAoIWlnbm9yZVJlc2VydmVkICYmIFJFU0VSVkVEX0dSQVBIUUxfVFlQRV9OQU1FUy5pbmNsdWRlcyh0eXBlLm5hbWUpKSB8fFxuICAgICAgdGhpcy5ncmFwaFFMVHlwZXMuZmluZChleGlzdGluZ1R5cGUgPT4gZXhpc3RpbmdUeXBlLm5hbWUgPT09IHR5cGUubmFtZSkgfHxcbiAgICAgICghaWdub3JlQ29ubmVjdGlvbiAmJiB0eXBlLm5hbWUuZW5kc1dpdGgoJ0Nvbm5lY3Rpb24nKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVHlwZSAke3R5cGUubmFtZX0gY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBhdXRvIHNjaGVtYSBiZWNhdXNlIGl0IGNvbGxpZGVkIHdpdGggYW4gZXhpc3RpbmcgdHlwZS5gO1xuICAgICAgaWYgKHRocm93RXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9nT25jZSgnd2FybicsIG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5ncmFwaFFMVHlwZXMucHVzaCh0eXBlKTtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGFkZEdyYXBoUUxRdWVyeShmaWVsZE5hbWUsIGZpZWxkLCB0aHJvd0Vycm9yID0gZmFsc2UsIGlnbm9yZVJlc2VydmVkID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAoIWlnbm9yZVJlc2VydmVkICYmIFJFU0VSVkVEX0dSQVBIUUxfUVVFUllfTkFNRVMuaW5jbHVkZXMoZmllbGROYW1lKSkgfHxcbiAgICAgIHRoaXMuZ3JhcGhRTFF1ZXJpZXNbZmllbGROYW1lXVxuICAgICkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBRdWVyeSAke2ZpZWxkTmFtZX0gY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBhdXRvIHNjaGVtYSBiZWNhdXNlIGl0IGNvbGxpZGVkIHdpdGggYW4gZXhpc3RpbmcgZmllbGQuYDtcbiAgICAgIGlmICh0aHJvd0Vycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvZ09uY2UoJ3dhcm4nLCBtZXNzYWdlKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuZ3JhcGhRTFF1ZXJpZXNbZmllbGROYW1lXSA9IGZpZWxkO1xuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIGFkZEdyYXBoUUxNdXRhdGlvbihmaWVsZE5hbWUsIGZpZWxkLCB0aHJvd0Vycm9yID0gZmFsc2UsIGlnbm9yZVJlc2VydmVkID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAoIWlnbm9yZVJlc2VydmVkICYmIFJFU0VSVkVEX0dSQVBIUUxfTVVUQVRJT05fTkFNRVMuaW5jbHVkZXMoZmllbGROYW1lKSkgfHxcbiAgICAgIHRoaXMuZ3JhcGhRTE11dGF0aW9uc1tmaWVsZE5hbWVdXG4gICAgKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYE11dGF0aW9uICR7ZmllbGROYW1lfSBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIGF1dG8gc2NoZW1hIGJlY2F1c2UgaXQgY29sbGlkZWQgd2l0aCBhbiBleGlzdGluZyBmaWVsZC5gO1xuICAgICAgaWYgKHRocm93RXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9nT25jZSgnd2FybicsIG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5ncmFwaFFMTXV0YXRpb25zW2ZpZWxkTmFtZV0gPSBmaWVsZDtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcignUGFyc2UgZXJyb3I6ICcsIGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZXJyb3IoJ1VuY2F1Z2h0IGludGVybmFsIHNlcnZlciBlcnJvci4nLCBlcnJvciwgZXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgICB0aHJvdyB0b0dyYXBoUUxFcnJvcihlcnJvcik7XG4gIH1cblxuICBhc3luYyBfaW5pdGlhbGl6ZVNjaGVtYUFuZENvbmZpZygpIHtcbiAgICBjb25zdCBbc2NoZW1hQ29udHJvbGxlciwgcGFyc2VHcmFwaFFMQ29uZmlnXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZGF0YWJhc2VDb250cm9sbGVyLmxvYWRTY2hlbWEoKSxcbiAgICAgIHRoaXMucGFyc2VHcmFwaFFMQ29udHJvbGxlci5nZXRHcmFwaFFMQ29uZmlnKCksXG4gICAgXSk7XG5cbiAgICB0aGlzLnNjaGVtYUNvbnRyb2xsZXIgPSBzY2hlbWFDb250cm9sbGVyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcnNlR3JhcGhRTENvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGNsYXNzZXMgZm91bmQgYnkgdGhlIGBzY2hlbWFDb250cm9sbGVyYFxuICAgKiBtaW51cyB0aG9zZSBmaWx0ZXJlZCBvdXQgYnkgdGhlIGFwcCdzIHBhcnNlR3JhcGhRTENvbmZpZy5cbiAgICovXG4gIGFzeW5jIF9nZXRDbGFzc2VzRm9yU2NoZW1hKHBhcnNlR3JhcGhRTENvbmZpZzogUGFyc2VHcmFwaFFMQ29uZmlnKSB7XG4gICAgY29uc3QgeyBlbmFibGVkRm9yQ2xhc3NlcywgZGlzYWJsZWRGb3JDbGFzc2VzIH0gPSBwYXJzZUdyYXBoUUxDb25maWc7XG4gICAgY29uc3QgYWxsQ2xhc3NlcyA9IGF3YWl0IHRoaXMuc2NoZW1hQ29udHJvbGxlci5nZXRBbGxDbGFzc2VzKCk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShlbmFibGVkRm9yQ2xhc3NlcykgfHwgQXJyYXkuaXNBcnJheShkaXNhYmxlZEZvckNsYXNzZXMpKSB7XG4gICAgICBsZXQgaW5jbHVkZWRDbGFzc2VzID0gYWxsQ2xhc3NlcztcbiAgICAgIGlmIChlbmFibGVkRm9yQ2xhc3Nlcykge1xuICAgICAgICBpbmNsdWRlZENsYXNzZXMgPSBhbGxDbGFzc2VzLmZpbHRlcihjbGF6eiA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWRGb3JDbGFzc2VzLmluY2x1ZGVzKGNsYXp6LmNsYXNzTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRpc2FibGVkRm9yQ2xhc3Nlcykge1xuICAgICAgICAvLyBDbGFzc2VzIGluY2x1ZGVkIGluIGBlbmFibGVkRm9yQ2xhc3Nlc2AgdGhhdFxuICAgICAgICAvLyBhcmUgYWxzbyBwcmVzZW50IGluIGBkaXNhYmxlZEZvckNsYXNzZXNgIHdpbGxcbiAgICAgICAgLy8gc3RpbGwgYmUgZmlsdGVyZWQgb3V0XG4gICAgICAgIGluY2x1ZGVkQ2xhc3NlcyA9IGluY2x1ZGVkQ2xhc3Nlcy5maWx0ZXIoY2xhenogPT4ge1xuICAgICAgICAgIHJldHVybiAhZGlzYWJsZWRGb3JDbGFzc2VzLmluY2x1ZGVzKGNsYXp6LmNsYXNzTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzVXNlcnNDbGFzc0Rpc2FibGVkID0gIWluY2x1ZGVkQ2xhc3Nlcy5zb21lKGNsYXp6ID0+IHtcbiAgICAgICAgcmV0dXJuIGNsYXp6LmNsYXNzTmFtZSA9PT0gJ19Vc2VyJztcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaW5jbHVkZWRDbGFzc2VzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWxsQ2xhc3NlcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdHVwbGVzXG4gICAqIHRoYXQgcHJvdmlkZSB0aGUgcGFyc2VDbGFzcyBhbG9uZyB3aXRoXG4gICAqIGl0cyBwYXJzZUNsYXNzQ29uZmlnIHdoZXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgX2dldFBhcnNlQ2xhc3Nlc1dpdGhDb25maWcocGFyc2VDbGFzc2VzLCBwYXJzZUdyYXBoUUxDb25maWc6IFBhcnNlR3JhcGhRTENvbmZpZykge1xuICAgIGNvbnN0IHsgY2xhc3NDb25maWdzIH0gPSBwYXJzZUdyYXBoUUxDb25maWc7XG5cbiAgICAvLyBNYWtlIHN1cmVzIHRoYXQgdGhlIGRlZmF1bHQgY2xhc3NlcyBhbmQgY2xhc3NlcyB0aGF0XG4gICAgLy8gc3RhcnRzIHdpdGggY2FwaXRhbGl6ZWQgbGV0dGVyIHdpbGwgYmUgZ2VuZXJhdGVkIGZpcnN0LlxuICAgIGNvbnN0IHNvcnRDbGFzc2VzID0gKGEsIGIpID0+IHtcbiAgICAgIGEgPSBhLmNsYXNzTmFtZTtcbiAgICAgIGIgPSBiLmNsYXNzTmFtZTtcbiAgICAgIGlmIChhWzBdID09PSAnXycpIHtcbiAgICAgICAgaWYgKGJbMF0gIT09ICdfJykge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGJbMF0gPT09ICdfJykge1xuICAgICAgICBpZiAoYVswXSAhPT0gJ18nKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmIChhIDwgYikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3Nlcy5zb3J0KHNvcnRDbGFzc2VzKS5tYXAocGFyc2VDbGFzcyA9PiB7XG4gICAgICBsZXQgcGFyc2VDbGFzc0NvbmZpZztcbiAgICAgIGlmIChjbGFzc0NvbmZpZ3MpIHtcbiAgICAgICAgcGFyc2VDbGFzc0NvbmZpZyA9IGNsYXNzQ29uZmlncy5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IHBhcnNlQ2xhc3MuY2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZ107XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBfZ2V0RnVuY3Rpb25OYW1lcygpIHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0RnVuY3Rpb25OYW1lcyh0aGlzLmFwcElkKS5maWx0ZXIoZnVuY3Rpb25OYW1lID0+IHtcbiAgICAgIGlmICgvXltfYS16QS1aXVtfYS16QS1aMC05XSokLy50ZXN0KGZ1bmN0aW9uTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sb2dPbmNlKFxuICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICBgRnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgYXV0byBzY2hlbWEgYmVjYXVzZSBHcmFwaFFMIG5hbWVzIG11c3QgbWF0Y2ggL15bX2EtekEtWl1bX2EtekEtWjAtOV0qJC8uYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBjaGFuZ2VzIHRvIHRoZSBwYXJzZUNsYXNzZXNcbiAgICogb2JqZWN0cyAoaS5lLiBkYXRhYmFzZSBzY2hlbWEpIG9yIHRvXG4gICAqIHRoZSBwYXJzZUdyYXBoUUxDb25maWcgb2JqZWN0LiBJZiBub1xuICAgKiBjaGFuZ2VzIGFyZSBmb3VuZCwgcmV0dXJuIHRydWU7XG4gICAqL1xuICBfaGFzU2NoZW1hSW5wdXRDaGFuZ2VkKHBhcmFtczoge1xuICAgIHBhcnNlQ2xhc3NlczogYW55LFxuICAgIHBhcnNlR3JhcGhRTENvbmZpZzogP1BhcnNlR3JhcGhRTENvbmZpZyxcbiAgICBmdW5jdGlvbk5hbWVzU3RyaW5nOiBzdHJpbmcsXG4gIH0pOiBib29sZWFuIHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NlcywgcGFyc2VHcmFwaFFMQ29uZmlnLCBmdW5jdGlvbk5hbWVzU3RyaW5nIH0gPSBwYXJhbXM7XG5cbiAgICAvLyBGaXJzdCBpbml0XG4gICAgaWYgKCF0aGlzLmdyYXBoUUxTY2hlbWEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlzRGVlcFN0cmljdEVxdWFsKHRoaXMucGFyc2VHcmFwaFFMQ29uZmlnLCBwYXJzZUdyYXBoUUxDb25maWcpICYmXG4gICAgICB0aGlzLmZ1bmN0aW9uTmFtZXNTdHJpbmcgPT09IGZ1bmN0aW9uTmFtZXNTdHJpbmcgJiZcbiAgICAgIGlzRGVlcFN0cmljdEVxdWFsKHRoaXMucGFyc2VDbGFzc2VzLCBwYXJzZUNsYXNzZXMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCB7IFBhcnNlR3JhcGhRTFNjaGVtYSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sbUJBQUEsR0FBQUMsdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFRLGVBQUEsR0FBQUQsdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFTLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBVSxtQkFBQSxHQUFBSCx1QkFBQSxDQUFBUCxPQUFBO0FBQ0EsSUFBQVcscUJBQUEsR0FBQUosdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFZLHVCQUFBLEdBQUFMLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBYSx1QkFBQSxHQUFBTix1QkFBQSxDQUFBUCxPQUFBO0FBQ0EsSUFBQWMsbUJBQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFl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
375
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWwiLCJfc2NoZW1hIiwiX21lcmdlIiwiX3V0aWwiLCJfcmVxdWlyZWRQYXJhbWV0ZXIiLCJkZWZhdWx0R3JhcGhRTFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJwYXJzZUNsYXNzVHlwZXMiLCJwYXJzZUNsYXNzUXVlcmllcyIsInBhcnNlQ2xhc3NNdXRhdGlvbnMiLCJkZWZhdWx0R3JhcGhRTFF1ZXJpZXMiLCJkZWZhdWx0R3JhcGhRTE11dGF0aW9ucyIsIl9QYXJzZUdyYXBoUUxDb250cm9sbGVyIiwiX0RhdGFiYXNlQ29udHJvbGxlciIsIl9TY2hlbWFDYWNoZSIsIl9wYXJzZUdyYXBoUUxVdGlscyIsInNjaGVtYURpcmVjdGl2ZXMiLCJzY2hlbWFUeXBlcyIsIl90cmlnZ2VycyIsImRlZmF1bHRSZWxheVNjaGVtYSIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIlJFU0VSVkVEX0dSQVBIUUxfVFlQRV9OQU1FUyIsIlJFU0VSVkVEX0dSQVBIUUxfUVVFUllfTkFNRVMiLCJSRVNFUlZFRF9HUkFQSFFMX01VVEFUSU9OX05BTUVTIiwiUGFyc2VHcmFwaFFMU2NoZW1hIiwiY29uc3RydWN0b3IiLCJwYXJhbXMiLCJwYXJzZUdyYXBoUUxDb250cm9sbGVyIiwicmVxdWlyZWRQYXJhbWV0ZXIiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJsb2ciLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJhcHBJZCIsInNjaGVtYUNhY2hlIiwiU2NoZW1hQ2FjaGUiLCJsb2dDYWNoZSIsImxvYWQiLCJwYXJzZUdyYXBoUUxDb25maWciLCJfaW5pdGlhbGl6ZVNjaGVtYUFuZENvbmZpZyIsInBhcnNlQ2xhc3Nlc0FycmF5IiwiX2dldENsYXNzZXNGb3JTY2hlbWEiLCJmdW5jdGlvbk5hbWVzIiwiX2dldEZ1bmN0aW9uTmFtZXMiLCJmdW5jdGlvbk5hbWVzU3RyaW5nIiwiam9pbiIsInBhcnNlQ2xhc3NlcyIsInJlZHVjZSIsImFjYyIsImNsYXp6IiwiY2xhc3NOYW1lIiwiX2hhc1NjaGVtYUlucHV0Q2hhbmdlZCIsImdyYXBoUUxTY2hlbWEiLCJ2aWV3ZXJUeXBlIiwiZ3JhcGhRTEF1dG9TY2hlbWEiLCJncmFwaFFMVHlwZXMiLCJncmFwaFFMUXVlcmllcyIsImdyYXBoUUxNdXRhdGlvbnMiLCJncmFwaFFMU3Vic2NyaXB0aW9ucyIsImdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzRGVmaW5pdGlvbnMiLCJncmFwaFFMU2NoZW1hRGlyZWN0aXZlcyIsInJlbGF5Tm9kZUludGVyZmFjZSIsIl9nZXRQYXJzZUNsYXNzZXNXaXRoQ29uZmlnIiwiZm9yRWFjaCIsInBhcnNlQ2xhc3MiLCJwYXJzZUNsYXNzQ29uZmlnIiwia2V5cyIsImZpZWxkcyIsImZpZWxkTmFtZSIsInN0YXJ0c1dpdGgiLCJvcmRlcmVkRmllbGRzIiwic29ydCIsImxvYWRBcnJheVJlc3VsdCIsImdyYXBoUUxRdWVyeSIsInVuZGVmaW5lZCIsImxlbmd0aCIsIkdyYXBoUUxPYmplY3RUeXBlIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiYWRkR3JhcGhRTFR5cGUiLCJncmFwaFFMTXV0YXRpb24iLCJncmFwaFFMU3Vic2NyaXB0aW9uIiwiR3JhcGhRTFNjaGVtYSIsInR5cGVzIiwicXVlcnkiLCJtdXRhdGlvbiIsInN1YnNjcmlwdGlvbiIsImdldFR5cGVNYXAiLCJjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcCIsIl90eXBlTWFwIiwiZmluZEFuZFJlcGxhY2VMYXN0VHlwZSIsInBhcmVudCIsImtleSIsIm9mVHlwZSIsImN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlS2V5IiwiY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUiLCJhdXRvR3JhcGhRTFNjaGVtYVR5cGUiLCJnZXRGaWVsZHMiLCJfZmllbGRzIiwiZmllbGRLZXkiLCJmaWVsZCIsImRpcmVjdGl2ZXNEZWZpbml0aW9uc1NjaGVtYSIsImF1dG9TY2hlbWEiLCJtZXJnZVNjaGVtYXMiLCJzY2hlbWFzIiwidHlwZURlZnMiLCJtZXJnZVR5cGVEZWZzIiwiX2xvZ09uY2UiLCJzZXZlcml0eSIsIm1lc3NhZ2UiLCJ0eXBlIiwidGhyb3dFcnJvciIsImlnbm9yZVJlc2VydmVkIiwiaWdub3JlQ29ubmVjdGlvbiIsImluY2x1ZGVzIiwiZmluZCIsImV4aXN0aW5nVHlwZSIsImVuZHNXaXRoIiwiRXJyb3IiLCJwdXNoIiwiYWRkR3JhcGhRTFF1ZXJ5IiwiYWRkR3JhcGhRTE11dGF0aW9uIiwiaGFuZGxlRXJyb3IiLCJlcnJvciIsIlBhcnNlIiwic3RhY2siLCJ0b0dyYXBoUUxFcnJvciIsInNjaGVtYUNvbnRyb2xsZXIiLCJQcm9taXNlIiwiYWxsIiwibG9hZFNjaGVtYSIsImdldEdyYXBoUUxDb25maWciLCJlbmFibGVkRm9yQ2xhc3NlcyIsImRpc2FibGVkRm9yQ2xhc3NlcyIsImFsbENsYXNzZXMiLCJnZXRBbGxDbGFzc2VzIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5jbHVkZWRDbGFzc2VzIiwiZmlsdGVyIiwiaXNVc2Vyc0NsYXNzRGlzYWJsZWQiLCJzb21lIiwiY2xhc3NDb25maWdzIiwic29ydENsYXNzZXMiLCJiIiwibWFwIiwiYyIsImdldEZ1bmN0aW9uTmFtZXMiLCJmdW5jdGlvbk5hbWUiLCJ0ZXN0IiwiaXNEZWVwU3RyaWN0RXF1YWwiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0dyYXBoUUwvUGFyc2VHcmFwaFFMU2NoZW1hLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCB7IEdyYXBoUUxTY2hlbWEsIEdyYXBoUUxPYmplY3RUeXBlLCBEb2N1bWVudE5vZGUsIEdyYXBoUUxOYW1lZFR5cGUgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IG1lcmdlU2NoZW1hcyB9IGZyb20gJ0BncmFwaHFsLXRvb2xzL3NjaGVtYSc7XG5pbXBvcnQgeyBtZXJnZVR5cGVEZWZzIH0gZnJvbSAnQGdyYXBocWwtdG9vbHMvbWVyZ2UnO1xuaW1wb3J0IHsgaXNEZWVwU3RyaWN0RXF1YWwgfSBmcm9tICd1dGlsJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuLi9yZXF1aXJlZFBhcmFtZXRlcic7XG5pbXBvcnQgKiBhcyBkZWZhdWx0R3JhcGhRTFR5cGVzIGZyb20gJy4vbG9hZGVycy9kZWZhdWx0R3JhcGhRTFR5cGVzJztcbmltcG9ydCAqIGFzIHBhcnNlQ2xhc3NUeXBlcyBmcm9tICcuL2xvYWRlcnMvcGFyc2VDbGFzc1R5cGVzJztcbmltcG9ydCAqIGFzIHBhcnNlQ2xhc3NRdWVyaWVzIGZyb20gJy4vbG9hZGVycy9wYXJzZUNsYXNzUXVlcmllcyc7XG5pbXBvcnQgKiBhcyBwYXJzZUNsYXNzTXV0YXRpb25zIGZyb20gJy4vbG9hZGVycy9wYXJzZUNsYXNzTXV0YXRpb25zJztcbmltcG9ydCAqIGFzIGRlZmF1bHRHcmFwaFFMUXVlcmllcyBmcm9tICcuL2xvYWRlcnMvZGVmYXVsdEdyYXBoUUxRdWVyaWVzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRHcmFwaFFMTXV0YXRpb25zIGZyb20gJy4vbG9hZGVycy9kZWZhdWx0R3JhcGhRTE11dGF0aW9ucyc7XG5pbXBvcnQgUGFyc2VHcmFwaFFMQ29udHJvbGxlciwgeyBQYXJzZUdyYXBoUUxDb25maWcgfSBmcm9tICcuLi9Db250cm9sbGVycy9QYXJzZUdyYXBoUUxDb250cm9sbGVyJztcbmltcG9ydCBEYXRhYmFzZUNvbnRyb2xsZXIgZnJvbSAnLi4vQ29udHJvbGxlcnMvRGF0YWJhc2VDb250cm9sbGVyJztcbmltcG9ydCBTY2hlbWFDYWNoZSBmcm9tICcuLi9BZGFwdGVycy9DYWNoZS9TY2hlbWFDYWNoZSc7XG5pbXBvcnQgeyB0b0dyYXBoUUxFcnJvciB9IGZyb20gJy4vcGFyc2VHcmFwaFFMVXRpbHMnO1xuaW1wb3J0ICogYXMgc2NoZW1hRGlyZWN0aXZlcyBmcm9tICcuL2xvYWRlcnMvc2NoZW1hRGlyZWN0aXZlcyc7XG5pbXBvcnQgKiBhcyBzY2hlbWFUeXBlcyBmcm9tICcuL2xvYWRlcnMvc2NoZW1hVHlwZXMnO1xuaW1wb3J0IHsgZ2V0RnVuY3Rpb25OYW1lcyB9IGZyb20gJy4uL3RyaWdnZXJzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRSZWxheVNjaGVtYSBmcm9tICcuL2xvYWRlcnMvZGVmYXVsdFJlbGF5U2NoZW1hJztcblxuY29uc3QgUkVTRVJWRURfR1JBUEhRTF9UWVBFX05BTUVTID0gW1xuICAnU3RyaW5nJyxcbiAgJ0Jvb2xlYW4nLFxuICAnSW50JyxcbiAgJ0Zsb2F0JyxcbiAgJ0lEJyxcbiAgJ0FycmF5UmVzdWx0JyxcbiAgJ1F1ZXJ5JyxcbiAgJ011dGF0aW9uJyxcbiAgJ1N1YnNjcmlwdGlvbicsXG4gICdDcmVhdGVGaWxlSW5wdXQnLFxuICAnQ3JlYXRlRmlsZVBheWxvYWQnLFxuICAnVmlld2VyJyxcbiAgJ1NpZ25VcElucHV0JyxcbiAgJ1NpZ25VcFBheWxvYWQnLFxuICAnTG9nSW5JbnB1dCcsXG4gICdMb2dJblBheWxvYWQnLFxuICAnTG9nT3V0SW5wdXQnLFxuICAnTG9nT3V0UGF5bG9hZCcsXG4gICdDbG91ZENvZGVGdW5jdGlvbicsXG4gICdDYWxsQ2xvdWRDb2RlSW5wdXQnLFxuICAnQ2FsbENsb3VkQ29kZVBheWxvYWQnLFxuICAnQ3JlYXRlQ2xhc3NJbnB1dCcsXG4gICdDcmVhdGVDbGFzc1BheWxvYWQnLFxuICAnVXBkYXRlQ2xhc3NJbnB1dCcsXG4gICdVcGRhdGVDbGFzc1BheWxvYWQnLFxuICAnRGVsZXRlQ2xhc3NJbnB1dCcsXG4gICdEZWxldGVDbGFzc1BheWxvYWQnLFxuICAnUGFnZUluZm8nLFxuXTtcbmNvbnN0IFJFU0VSVkVEX0dSQVBIUUxfUVVFUllfTkFNRVMgPSBbJ2hlYWx0aCcsICd2aWV3ZXInLCAnY2xhc3MnLCAnY2xhc3NlcyddO1xuY29uc3QgUkVTRVJWRURfR1JBUEhRTF9NVVRBVElPTl9OQU1FUyA9IFtcbiAgJ3NpZ25VcCcsXG4gICdsb2dJbicsXG4gICdsb2dPdXQnLFxuICAnY3JlYXRlRmlsZScsXG4gICdjYWxsQ2xvdWRDb2RlJyxcbiAgJ2NyZWF0ZUNsYXNzJyxcbiAgJ3VwZGF0ZUNsYXNzJyxcbiAgJ2RlbGV0ZUNsYXNzJyxcbl07XG5cbmNsYXNzIFBhcnNlR3JhcGhRTFNjaGVtYSB7XG4gIGRhdGFiYXNlQ29udHJvbGxlcjogRGF0YWJhc2VDb250cm9sbGVyO1xuICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiBQYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuICBwYXJzZUdyYXBoUUxDb25maWc6IFBhcnNlR3JhcGhRTENvbmZpZztcbiAgbG9nOiBhbnk7XG4gIGFwcElkOiBzdHJpbmc7XG4gIGdyYXBoUUxDdXN0b21UeXBlRGVmczogPyhzdHJpbmcgfCBHcmFwaFFMU2NoZW1hIHwgRG9jdW1lbnROb2RlIHwgR3JhcGhRTE5hbWVkVHlwZVtdKTtcbiAgc2NoZW1hQ2FjaGU6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwYXJhbXM6IHtcbiAgICAgIGRhdGFiYXNlQ29udHJvbGxlcjogRGF0YWJhc2VDb250cm9sbGVyLFxuICAgICAgcGFyc2VHcmFwaFFMQ29udHJvbGxlcjogUGFyc2VHcmFwaFFMQ29udHJvbGxlcixcbiAgICAgIGxvZzogYW55LFxuICAgICAgYXBwSWQ6IHN0cmluZyxcbiAgICAgIGdyYXBoUUxDdXN0b21UeXBlRGVmczogPyhzdHJpbmcgfCBHcmFwaFFMU2NoZW1hIHwgRG9jdW1lbnROb2RlIHwgR3JhcGhRTE5hbWVkVHlwZVtdKSxcbiAgICB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyID1cbiAgICAgIHBhcmFtcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyIHx8XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIHBhcnNlR3JhcGhRTENvbnRyb2xsZXIgaW5zdGFuY2UhJyk7XG4gICAgdGhpcy5kYXRhYmFzZUNvbnRyb2xsZXIgPVxuICAgICAgcGFyYW1zLmRhdGFiYXNlQ29udHJvbGxlciB8fFxuICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBkYXRhYmFzZUNvbnRyb2xsZXIgaW5zdGFuY2UhJyk7XG4gICAgdGhpcy5sb2cgPSBwYXJhbXMubG9nIHx8IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGEgbG9nIGluc3RhbmNlIScpO1xuICAgIHRoaXMuZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gcGFyYW1zLmdyYXBoUUxDdXN0b21UeXBlRGVmcztcbiAgICB0aGlzLmFwcElkID0gcGFyYW1zLmFwcElkIHx8IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIHRoZSBhcHBJZCEnKTtcbiAgICB0aGlzLnNjaGVtYUNhY2hlID0gU2NoZW1hQ2FjaGU7XG4gICAgdGhpcy5sb2dDYWNoZSA9IHt9O1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICBjb25zdCB7IHBhcnNlR3JhcGhRTENvbmZpZyB9ID0gYXdhaXQgdGhpcy5faW5pdGlhbGl6ZVNjaGVtYUFuZENvbmZpZygpO1xuICAgIGNvbnN0IHBhcnNlQ2xhc3Nlc0FycmF5ID0gYXdhaXQgdGhpcy5fZ2V0Q2xhc3Nlc0ZvclNjaGVtYShwYXJzZUdyYXBoUUxDb25maWcpO1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZXMgPSBhd2FpdCB0aGlzLl9nZXRGdW5jdGlvbk5hbWVzKCk7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lc1N0cmluZyA9IGZ1bmN0aW9uTmFtZXMuam9pbigpO1xuXG4gICAgY29uc3QgcGFyc2VDbGFzc2VzID0gcGFyc2VDbGFzc2VzQXJyYXkucmVkdWNlKChhY2MsIGNsYXp6KSA9PiB7XG4gICAgICBhY2NbY2xhenouY2xhc3NOYW1lXSA9IGNsYXp6O1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuX2hhc1NjaGVtYUlucHV0Q2hhbmdlZCh7XG4gICAgICAgIHBhcnNlQ2xhc3NlcyxcbiAgICAgICAgcGFyc2VHcmFwaFFMQ29uZmlnLFxuICAgICAgICBmdW5jdGlvbk5hbWVzU3RyaW5nLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIHJldHVybiB0aGlzLmdyYXBoUUxTY2hlbWE7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJzZUNsYXNzZXMgPSBwYXJzZUNsYXNzZXM7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxDb25maWcgPSBwYXJzZUdyYXBoUUxDb25maWc7XG4gICAgdGhpcy5mdW5jdGlvbk5hbWVzID0gZnVuY3Rpb25OYW1lcztcbiAgICB0aGlzLmZ1bmN0aW9uTmFtZXNTdHJpbmcgPSBmdW5jdGlvbk5hbWVzU3RyaW5nO1xuICAgIHRoaXMucGFyc2VDbGFzc1R5cGVzID0ge307XG4gICAgdGhpcy52aWV3ZXJUeXBlID0gbnVsbDtcbiAgICB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hID0gbnVsbDtcbiAgICB0aGlzLmdyYXBoUUxTY2hlbWEgPSBudWxsO1xuICAgIHRoaXMuZ3JhcGhRTFR5cGVzID0gW107XG4gICAgdGhpcy5ncmFwaFFMUXVlcmllcyA9IHt9O1xuICAgIHRoaXMuZ3JhcGhRTE11dGF0aW9ucyA9IHt9O1xuICAgIHRoaXMuZ3JhcGhRTFN1YnNjcmlwdGlvbnMgPSB7fTtcbiAgICB0aGlzLmdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzRGVmaW5pdGlvbnMgPSBudWxsO1xuICAgIHRoaXMuZ3JhcGhRTFNjaGVtYURpcmVjdGl2ZXMgPSB7fTtcbiAgICB0aGlzLnJlbGF5Tm9kZUludGVyZmFjZSA9IG51bGw7XG5cbiAgICBkZWZhdWx0R3JhcGhRTFR5cGVzLmxvYWQodGhpcyk7XG4gICAgZGVmYXVsdFJlbGF5U2NoZW1hLmxvYWQodGhpcyk7XG4gICAgc2NoZW1hVHlwZXMubG9hZCh0aGlzKTtcblxuICAgIHRoaXMuX2dldFBhcnNlQ2xhc3Nlc1dpdGhDb25maWcocGFyc2VDbGFzc2VzQXJyYXksIHBhcnNlR3JhcGhRTENvbmZpZykuZm9yRWFjaChcbiAgICAgIChbcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZ10pID0+IHtcbiAgICAgICAgLy8gU29tZSB0aW1lcyBzY2hlbWEgcmV0dXJuIHRoZSBfYXV0aF9kYXRhXyBmaWVsZFxuICAgICAgICAvLyBpdCB3aWxsIGxlYWQgdG8gdW5zdGFibGUgZ3JhcGhxbCBnZW5lcmF0aW9uIG9yZGVyXG4gICAgICAgIGlmIChwYXJzZUNsYXNzLmNsYXNzTmFtZSA9PT0gJ19Vc2VyJykge1xuICAgICAgICAgIE9iamVjdC5rZXlzKHBhcnNlQ2xhc3MuZmllbGRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgICAgICAgICBpZiAoZmllbGROYW1lLnN0YXJ0c1dpdGgoJ19hdXRoX2RhdGFfJykpIHtcbiAgICAgICAgICAgICAgZGVsZXRlIHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGaWVsZHMgb3JkZXIgaW5zaWRlIHRoZSBzY2hlbWEgc2VlbXMgdG8gbm90IGJlIGNvbnNpc3RlbnQgYWNyb3NzXG4gICAgICAgIC8vIHJlc3RhcnQgc28gd2UgbmVlZCB0byBlbnN1cmUgYW4gYWxwaGFiZXRpY2FsIG9yZGVyXG4gICAgICAgIC8vIGFsc28gaXQncyBiZXR0ZXIgZm9yIHRoZSBwbGF5Z3JvdW5kIGRvY3VtZW50YXRpb25cbiAgICAgICAgY29uc3Qgb3JkZXJlZEZpZWxkcyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhwYXJzZUNsYXNzLmZpZWxkcylcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmZvckVhY2goZmllbGROYW1lID0+IHtcbiAgICAgICAgICAgIG9yZGVyZWRGaWVsZHNbZmllbGROYW1lXSA9IHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgfSk7XG4gICAgICAgIHBhcnNlQ2xhc3MuZmllbGRzID0gb3JkZXJlZEZpZWxkcztcbiAgICAgICAgcGFyc2VDbGFzc1R5cGVzLmxvYWQodGhpcywgcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZyk7XG4gICAgICAgIHBhcnNlQ2xhc3NRdWVyaWVzLmxvYWQodGhpcywgcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZyk7XG4gICAgICAgIHBhcnNlQ2xhc3NNdXRhdGlvbnMubG9hZCh0aGlzLCBwYXJzZUNsYXNzLCBwYXJzZUNsYXNzQ29uZmlnKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZGVmYXVsdEdyYXBoUUxUeXBlcy5sb2FkQXJyYXlSZXN1bHQodGhpcywgcGFyc2VDbGFzc2VzQXJyYXkpO1xuICAgIGRlZmF1bHRHcmFwaFFMUXVlcmllcy5sb2FkKHRoaXMpO1xuICAgIGRlZmF1bHRHcmFwaFFMTXV0YXRpb25zLmxvYWQodGhpcyk7XG5cbiAgICBsZXQgZ3JhcGhRTFF1ZXJ5ID0gdW5kZWZpbmVkO1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmdyYXBoUUxRdWVyaWVzKS5sZW5ndGggPiAwKSB7XG4gICAgICBncmFwaFFMUXVlcnkgPSBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICBuYW1lOiAnUXVlcnknLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1F1ZXJ5IGlzIHRoZSB0b3AgbGV2ZWwgdHlwZSBmb3IgcXVlcmllcy4nLFxuICAgICAgICBmaWVsZHM6IHRoaXMuZ3JhcGhRTFF1ZXJpZXMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkR3JhcGhRTFR5cGUoZ3JhcGhRTFF1ZXJ5LCB0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBsZXQgZ3JhcGhRTE11dGF0aW9uID0gdW5kZWZpbmVkO1xuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmdyYXBoUUxNdXRhdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGdyYXBoUUxNdXRhdGlvbiA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6ICdNdXRhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnTXV0YXRpb24gaXMgdGhlIHRvcCBsZXZlbCB0eXBlIGZvciBtdXRhdGlvbnMuJyxcbiAgICAgICAgZmllbGRzOiB0aGlzLmdyYXBoUUxNdXRhdGlvbnMsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkR3JhcGhRTFR5cGUoZ3JhcGhRTE11dGF0aW9uLCB0cnVlLCB0cnVlKTtcbiAgICB9XG5cbiAgICBsZXQgZ3JhcGhRTFN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5ncmFwaFFMU3Vic2NyaXB0aW9ucykubGVuZ3RoID4gMCkge1xuICAgICAgZ3JhcGhRTFN1YnNjcmlwdGlvbiA9IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6ICdTdWJzY3JpcHRpb24nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1N1YnNjcmlwdGlvbiBpcyB0aGUgdG9wIGxldmVsIHR5cGUgZm9yIHN1YnNjcmlwdGlvbnMuJyxcbiAgICAgICAgZmllbGRzOiB0aGlzLmdyYXBoUUxTdWJzY3JpcHRpb25zLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZEdyYXBoUUxUeXBlKGdyYXBoUUxTdWJzY3JpcHRpb24sIHRydWUsIHRydWUpO1xuICAgIH1cblxuICAgIHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWEgPSBuZXcgR3JhcGhRTFNjaGVtYSh7XG4gICAgICB0eXBlczogdGhpcy5ncmFwaFFMVHlwZXMsXG4gICAgICBxdWVyeTogZ3JhcGhRTFF1ZXJ5LFxuICAgICAgbXV0YXRpb246IGdyYXBoUUxNdXRhdGlvbixcbiAgICAgIHN1YnNjcmlwdGlvbjogZ3JhcGhRTFN1YnNjcmlwdGlvbixcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmdyYXBoUUxDdXN0b21UeXBlRGVmcykge1xuICAgICAgc2NoZW1hRGlyZWN0aXZlcy5sb2FkKHRoaXMpO1xuICAgICAgaWYgKHR5cGVvZiB0aGlzLmdyYXBoUUxDdXN0b21UeXBlRGVmcy5nZXRUeXBlTWFwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIC8vIEluIGZvbGxvd2luZyBjb2RlIHdlIHVzZSB1bmRlcnNjb3JlIGF0dHIgdG8ga2VlcCB0aGUgZGlyZWN0IHZhcmlhYmxlIHJlZmVyZW5jZVxuICAgICAgICBjb25zdCBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcCA9IHRoaXMuZ3JhcGhRTEN1c3RvbVR5cGVEZWZzLl90eXBlTWFwO1xuICAgICAgICBjb25zdCBmaW5kQW5kUmVwbGFjZUxhc3RUeXBlID0gKHBhcmVudCwga2V5KSA9PiB7XG4gICAgICAgICAgaWYgKHBhcmVudFtrZXldLm5hbWUpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5ncmFwaFFMQXV0b1NjaGVtYS5fdHlwZU1hcFtwYXJlbnRba2V5XS5uYW1lXSAmJlxuICAgICAgICAgICAgICB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW3BhcmVudFtrZXldLm5hbWVdICE9PSBwYXJlbnRba2V5XVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHVucmVzb2x2ZWQgZmllbGQgb24gb3ZlcmxvYWRlZCBzY2hlbWFcbiAgICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgZmluYWwgdHlwZSB3aXRoIHRoZSBhdXRvIHNjaGVtYSBvbmVcbiAgICAgICAgICAgICAgcGFyZW50W2tleV0gPSB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW3BhcmVudFtrZXldLm5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAocGFyZW50W2tleV0ub2ZUeXBlKSB7XG4gICAgICAgICAgICAgIGZpbmRBbmRSZXBsYWNlTGFzdFR5cGUocGFyZW50W2tleV0sICdvZlR5cGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIEFkZCBub24gc2hhcmVkIHR5cGVzIGZyb20gY3VzdG9tIHNjaGVtYSB0byBhdXRvIHNjaGVtYVxuICAgICAgICAvLyBub3RlOiBzb21lIG5vbiBzaGFyZWQgdHlwZXMgY2FuIHVzZSBzb21lIHNoYXJlZCB0eXBlc1xuICAgICAgICAvLyBzbyB0aGlzIGNvZGUgbmVlZCB0byBiZSByYW4gYmVmb3JlIHRoZSBzaGFyZWQgdHlwZXMgYWRkaXRpb25cbiAgICAgICAgLy8gd2UgdXNlIHNvcnQgdG8gZW5zdXJlIHNjaGVtYSBjb25zaXN0ZW5jeSBvdmVyIHJlc3RhcnRzXG4gICAgICAgIE9iamVjdC5rZXlzKGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlTWFwKVxuICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAuZm9yRWFjaChjdXN0b21HcmFwaFFMU2NoZW1hVHlwZUtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZSA9IGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlTWFwW2N1c3RvbUdyYXBoUUxTY2hlbWFUeXBlS2V5XTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgIWN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlIHx8XG4gICAgICAgICAgICAgICFjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5uYW1lIHx8XG4gICAgICAgICAgICAgIGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlLm5hbWUuc3RhcnRzV2l0aCgnX18nKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGF1dG9HcmFwaFFMU2NoZW1hVHlwZSA9IHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWEuX3R5cGVNYXBbXG4gICAgICAgICAgICAgIGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlLm5hbWVcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoIWF1dG9HcmFwaFFMU2NoZW1hVHlwZSkge1xuICAgICAgICAgICAgICB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW1xuICAgICAgICAgICAgICAgIGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlLm5hbWVcbiAgICAgICAgICAgICAgXSA9IGN1c3RvbUdyYXBoUUxTY2hlbWFUeXBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAvLyBIYW5kbGUgc2hhcmVkIHR5cGVzXG4gICAgICAgIC8vIFdlIHBhc3MgdGhyb3VnaCBlYWNoIHR5cGUgYW5kIGVuc3VyZSB0aGF0IGFsbCBzdWIgZmllbGQgdHlwZXMgYXJlIHJlcGxhY2VkXG4gICAgICAgIC8vIHdlIHVzZSBzb3J0IHRvIGVuc3VyZSBzY2hlbWEgY29uc2lzdGVuY3kgb3ZlciByZXN0YXJ0c1xuICAgICAgICBPYmplY3Qua2V5cyhjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcClcbiAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgLmZvckVhY2goY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGVLZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUgPSBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZU1hcFtjdXN0b21HcmFwaFFMU2NoZW1hVHlwZUtleV07XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICFjdXN0b21HcmFwaFFMU2NoZW1hVHlwZSB8fFxuICAgICAgICAgICAgICAhY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUubmFtZSB8fFxuICAgICAgICAgICAgICBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5uYW1lLnN0YXJ0c1dpdGgoJ19fJylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBhdXRvR3JhcGhRTFNjaGVtYVR5cGUgPSB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hLl90eXBlTWFwW1xuICAgICAgICAgICAgICBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5uYW1lXG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBpZiAoYXV0b0dyYXBoUUxTY2hlbWFUeXBlICYmIHR5cGVvZiBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5nZXRGaWVsZHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgT2JqZWN0LmtleXMoY3VzdG9tR3JhcGhRTFNjaGVtYVR5cGUuX2ZpZWxkcylcbiAgICAgICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAgICAgLmZvckVhY2goZmllbGRLZXkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBjdXN0b21HcmFwaFFMU2NoZW1hVHlwZS5fZmllbGRzW2ZpZWxkS2V5XTtcbiAgICAgICAgICAgICAgICAgIGZpbmRBbmRSZXBsYWNlTGFzdFR5cGUoZmllbGQsICd0eXBlJyk7XG4gICAgICAgICAgICAgICAgICBhdXRvR3JhcGhRTFNjaGVtYVR5cGUuX2ZpZWxkc1tmaWVsZC5uYW1lXSA9IGZpZWxkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyYXBoUUxTY2hlbWEgPSB0aGlzLmdyYXBoUUxBdXRvU2NoZW1hO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5ncmFwaFFMU2NoZW1hID0gYXdhaXQgdGhpcy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMoe1xuICAgICAgICAgIGRpcmVjdGl2ZXNEZWZpbml0aW9uc1NjaGVtYTogdGhpcy5ncmFwaFFMU2NoZW1hRGlyZWN0aXZlc0RlZmluaXRpb25zLFxuICAgICAgICAgIGF1dG9TY2hlbWE6IHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWEsXG4gICAgICAgICAgZ3JhcGhRTFNjaGVtYURpcmVjdGl2ZXM6IHRoaXMuZ3JhcGhRTFNjaGVtYURpcmVjdGl2ZXMsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmFwaFFMU2NoZW1hID0gbWVyZ2VTY2hlbWFzKHtcbiAgICAgICAgICBzY2hlbWFzOiBbdGhpcy5ncmFwaFFMQXV0b1NjaGVtYV0sXG4gICAgICAgICAgdHlwZURlZnM6IG1lcmdlVHlwZURlZnMoW1xuICAgICAgICAgICAgdGhpcy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICAgICAgICB0aGlzLmdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzRGVmaW5pdGlvbnMsXG4gICAgICAgICAgXSksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmdyYXBoUUxTY2hlbWEgPSB0aGlzLmdyYXBoUUxTY2hlbWFEaXJlY3RpdmVzKHRoaXMuZ3JhcGhRTFNjaGVtYSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ3JhcGhRTFNjaGVtYSA9IHRoaXMuZ3JhcGhRTEF1dG9TY2hlbWE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ3JhcGhRTFNjaGVtYTtcbiAgfVxuXG4gIF9sb2dPbmNlKHNldmVyaXR5LCBtZXNzYWdlKSB7XG4gICAgaWYgKHRoaXMubG9nQ2FjaGVbbWVzc2FnZV0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5sb2dbc2V2ZXJpdHldKG1lc3NhZ2UpO1xuICAgIHRoaXMubG9nQ2FjaGVbbWVzc2FnZV0gPSB0cnVlO1xuICB9XG5cbiAgYWRkR3JhcGhRTFR5cGUodHlwZSwgdGhyb3dFcnJvciA9IGZhbHNlLCBpZ25vcmVSZXNlcnZlZCA9IGZhbHNlLCBpZ25vcmVDb25uZWN0aW9uID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAoIWlnbm9yZVJlc2VydmVkICYmIFJFU0VSVkVEX0dSQVBIUUxfVFlQRV9OQU1FUy5pbmNsdWRlcyh0eXBlLm5hbWUpKSB8fFxuICAgICAgdGhpcy5ncmFwaFFMVHlwZXMuZmluZChleGlzdGluZ1R5cGUgPT4gZXhpc3RpbmdUeXBlLm5hbWUgPT09IHR5cGUubmFtZSkgfHxcbiAgICAgICghaWdub3JlQ29ubmVjdGlvbiAmJiB0eXBlLm5hbWUuZW5kc1dpdGgoJ0Nvbm5lY3Rpb24nKSlcbiAgICApIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVHlwZSAke3R5cGUubmFtZX0gY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBhdXRvIHNjaGVtYSBiZWNhdXNlIGl0IGNvbGxpZGVkIHdpdGggYW4gZXhpc3RpbmcgdHlwZS5gO1xuICAgICAgaWYgKHRocm93RXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9nT25jZSgnd2FybicsIG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5ncmFwaFFMVHlwZXMucHVzaCh0eXBlKTtcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxuXG4gIGFkZEdyYXBoUUxRdWVyeShmaWVsZE5hbWUsIGZpZWxkLCB0aHJvd0Vycm9yID0gZmFsc2UsIGlnbm9yZVJlc2VydmVkID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAoIWlnbm9yZVJlc2VydmVkICYmIFJFU0VSVkVEX0dSQVBIUUxfUVVFUllfTkFNRVMuaW5jbHVkZXMoZmllbGROYW1lKSkgfHxcbiAgICAgIHRoaXMuZ3JhcGhRTFF1ZXJpZXNbZmllbGROYW1lXVxuICAgICkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBRdWVyeSAke2ZpZWxkTmFtZX0gY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBhdXRvIHNjaGVtYSBiZWNhdXNlIGl0IGNvbGxpZGVkIHdpdGggYW4gZXhpc3RpbmcgZmllbGQuYDtcbiAgICAgIGlmICh0aHJvd0Vycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2xvZ09uY2UoJ3dhcm4nLCBtZXNzYWdlKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHRoaXMuZ3JhcGhRTFF1ZXJpZXNbZmllbGROYW1lXSA9IGZpZWxkO1xuICAgIHJldHVybiBmaWVsZDtcbiAgfVxuXG4gIGFkZEdyYXBoUUxNdXRhdGlvbihmaWVsZE5hbWUsIGZpZWxkLCB0aHJvd0Vycm9yID0gZmFsc2UsIGlnbm9yZVJlc2VydmVkID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAoIWlnbm9yZVJlc2VydmVkICYmIFJFU0VSVkVEX0dSQVBIUUxfTVVUQVRJT05fTkFNRVMuaW5jbHVkZXMoZmllbGROYW1lKSkgfHxcbiAgICAgIHRoaXMuZ3JhcGhRTE11dGF0aW9uc1tmaWVsZE5hbWVdXG4gICAgKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYE11dGF0aW9uICR7ZmllbGROYW1lfSBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIGF1dG8gc2NoZW1hIGJlY2F1c2UgaXQgY29sbGlkZWQgd2l0aCBhbiBleGlzdGluZyBmaWVsZC5gO1xuICAgICAgaWYgKHRocm93RXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5fbG9nT25jZSgnd2FybicsIG1lc3NhZ2UpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5ncmFwaFFMTXV0YXRpb25zW2ZpZWxkTmFtZV0gPSBmaWVsZDtcbiAgICByZXR1cm4gZmllbGQ7XG4gIH1cblxuICBoYW5kbGVFcnJvcihlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFBhcnNlLkVycm9yKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcignUGFyc2UgZXJyb3I6ICcsIGVycm9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZXJyb3IoJ1VuY2F1Z2h0IGludGVybmFsIHNlcnZlciBlcnJvci4nLCBlcnJvciwgZXJyb3Iuc3RhY2spO1xuICAgIH1cbiAgICB0aHJvdyB0b0dyYXBoUUxFcnJvcihlcnJvcik7XG4gIH1cblxuICBhc3luYyBfaW5pdGlhbGl6ZVNjaGVtYUFuZENvbmZpZygpIHtcbiAgICBjb25zdCBbc2NoZW1hQ29udHJvbGxlciwgcGFyc2VHcmFwaFFMQ29uZmlnXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZGF0YWJhc2VDb250cm9sbGVyLmxvYWRTY2hlbWEoKSxcbiAgICAgIHRoaXMucGFyc2VHcmFwaFFMQ29udHJvbGxlci5nZXRHcmFwaFFMQ29uZmlnKCksXG4gICAgXSk7XG5cbiAgICB0aGlzLnNjaGVtYUNvbnRyb2xsZXIgPSBzY2hlbWFDb250cm9sbGVyO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcnNlR3JhcGhRTENvbmZpZyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIGNsYXNzZXMgZm91bmQgYnkgdGhlIGBzY2hlbWFDb250cm9sbGVyYFxuICAgKiBtaW51cyB0aG9zZSBmaWx0ZXJlZCBvdXQgYnkgdGhlIGFwcCdzIHBhcnNlR3JhcGhRTENvbmZpZy5cbiAgICovXG4gIGFzeW5jIF9nZXRDbGFzc2VzRm9yU2NoZW1hKHBhcnNlR3JhcGhRTENvbmZpZzogUGFyc2VHcmFwaFFMQ29uZmlnKSB7XG4gICAgY29uc3QgeyBlbmFibGVkRm9yQ2xhc3NlcywgZGlzYWJsZWRGb3JDbGFzc2VzIH0gPSBwYXJzZUdyYXBoUUxDb25maWc7XG4gICAgY29uc3QgYWxsQ2xhc3NlcyA9IGF3YWl0IHRoaXMuc2NoZW1hQ29udHJvbGxlci5nZXRBbGxDbGFzc2VzKCk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShlbmFibGVkRm9yQ2xhc3NlcykgfHwgQXJyYXkuaXNBcnJheShkaXNhYmxlZEZvckNsYXNzZXMpKSB7XG4gICAgICBsZXQgaW5jbHVkZWRDbGFzc2VzID0gYWxsQ2xhc3NlcztcbiAgICAgIGlmIChlbmFibGVkRm9yQ2xhc3Nlcykge1xuICAgICAgICBpbmNsdWRlZENsYXNzZXMgPSBhbGxDbGFzc2VzLmZpbHRlcihjbGF6eiA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVuYWJsZWRGb3JDbGFzc2VzLmluY2x1ZGVzKGNsYXp6LmNsYXNzTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGRpc2FibGVkRm9yQ2xhc3Nlcykge1xuICAgICAgICAvLyBDbGFzc2VzIGluY2x1ZGVkIGluIGBlbmFibGVkRm9yQ2xhc3Nlc2AgdGhhdFxuICAgICAgICAvLyBhcmUgYWxzbyBwcmVzZW50IGluIGBkaXNhYmxlZEZvckNsYXNzZXNgIHdpbGxcbiAgICAgICAgLy8gc3RpbGwgYmUgZmlsdGVyZWQgb3V0XG4gICAgICAgIGluY2x1ZGVkQ2xhc3NlcyA9IGluY2x1ZGVkQ2xhc3Nlcy5maWx0ZXIoY2xhenogPT4ge1xuICAgICAgICAgIHJldHVybiAhZGlzYWJsZWRGb3JDbGFzc2VzLmluY2x1ZGVzKGNsYXp6LmNsYXNzTmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmlzVXNlcnNDbGFzc0Rpc2FibGVkID0gIWluY2x1ZGVkQ2xhc3Nlcy5zb21lKGNsYXp6ID0+IHtcbiAgICAgICAgcmV0dXJuIGNsYXp6LmNsYXNzTmFtZSA9PT0gJ19Vc2VyJztcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gaW5jbHVkZWRDbGFzc2VzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYWxsQ2xhc3NlcztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdHVwbGVzXG4gICAqIHRoYXQgcHJvdmlkZSB0aGUgcGFyc2VDbGFzcyBhbG9uZyB3aXRoXG4gICAqIGl0cyBwYXJzZUNsYXNzQ29uZmlnIHdoZXJlIHByb3ZpZGVkLlxuICAgKi9cbiAgX2dldFBhcnNlQ2xhc3Nlc1dpdGhDb25maWcocGFyc2VDbGFzc2VzLCBwYXJzZUdyYXBoUUxDb25maWc6IFBhcnNlR3JhcGhRTENvbmZpZykge1xuICAgIGNvbnN0IHsgY2xhc3NDb25maWdzIH0gPSBwYXJzZUdyYXBoUUxDb25maWc7XG5cbiAgICAvLyBNYWtlIHN1cmVzIHRoYXQgdGhlIGRlZmF1bHQgY2xhc3NlcyBhbmQgY2xhc3NlcyB0aGF0XG4gICAgLy8gc3RhcnRzIHdpdGggY2FwaXRhbGl6ZWQgbGV0dGVyIHdpbGwgYmUgZ2VuZXJhdGVkIGZpcnN0LlxuICAgIGNvbnN0IHNvcnRDbGFzc2VzID0gKGEsIGIpID0+IHtcbiAgICAgIGEgPSBhLmNsYXNzTmFtZTtcbiAgICAgIGIgPSBiLmNsYXNzTmFtZTtcbiAgICAgIGlmIChhWzBdID09PSAnXycpIHtcbiAgICAgICAgaWYgKGJbMF0gIT09ICdfJykge1xuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGJbMF0gPT09ICdfJykge1xuICAgICAgICBpZiAoYVswXSAhPT0gJ18nKSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfSBlbHNlIGlmIChhIDwgYikge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHBhcnNlQ2xhc3Nlcy5zb3J0KHNvcnRDbGFzc2VzKS5tYXAocGFyc2VDbGFzcyA9PiB7XG4gICAgICBsZXQgcGFyc2VDbGFzc0NvbmZpZztcbiAgICAgIGlmIChjbGFzc0NvbmZpZ3MpIHtcbiAgICAgICAgcGFyc2VDbGFzc0NvbmZpZyA9IGNsYXNzQ29uZmlncy5maW5kKGMgPT4gYy5jbGFzc05hbWUgPT09IHBhcnNlQ2xhc3MuY2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbcGFyc2VDbGFzcywgcGFyc2VDbGFzc0NvbmZpZ107XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBfZ2V0RnVuY3Rpb25OYW1lcygpIHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0RnVuY3Rpb25OYW1lcyh0aGlzLmFwcElkKS5maWx0ZXIoZnVuY3Rpb25OYW1lID0+IHtcbiAgICAgIGlmICgvXltfYS16QS1aXVtfYS16QS1aMC05XSokLy50ZXN0KGZ1bmN0aW9uTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sb2dPbmNlKFxuICAgICAgICAgICd3YXJuJyxcbiAgICAgICAgICBgRnVuY3Rpb24gJHtmdW5jdGlvbk5hbWV9IGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgYXV0byBzY2hlbWEgYmVjYXVzZSBHcmFwaFFMIG5hbWVzIG11c3QgbWF0Y2ggL15bX2EtekEtWl1bX2EtekEtWjAtOV0qJC8uYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGZvciBjaGFuZ2VzIHRvIHRoZSBwYXJzZUNsYXNzZXNcbiAgICogb2JqZWN0cyAoaS5lLiBkYXRhYmFzZSBzY2hlbWEpIG9yIHRvXG4gICAqIHRoZSBwYXJzZUdyYXBoUUxDb25maWcgb2JqZWN0LiBJZiBub1xuICAgKiBjaGFuZ2VzIGFyZSBmb3VuZCwgcmV0dXJuIHRydWU7XG4gICAqL1xuICBfaGFzU2NoZW1hSW5wdXRDaGFuZ2VkKHBhcmFtczoge1xuICAgIHBhcnNlQ2xhc3NlczogYW55LFxuICAgIHBhcnNlR3JhcGhRTENvbmZpZzogP1BhcnNlR3JhcGhRTENvbmZpZyxcbiAgICBmdW5jdGlvbk5hbWVzU3RyaW5nOiBzdHJpbmcsXG4gIH0pOiBib29sZWFuIHtcbiAgICBjb25zdCB7IHBhcnNlQ2xhc3NlcywgcGFyc2VHcmFwaFFMQ29uZmlnLCBmdW5jdGlvbk5hbWVzU3RyaW5nIH0gPSBwYXJhbXM7XG5cbiAgICAvLyBGaXJzdCBpbml0XG4gICAgaWYgKCF0aGlzLmdyYXBoUUxTY2hlbWEpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGlzRGVlcFN0cmljdEVxdWFsKHRoaXMucGFyc2VHcmFwaFFMQ29uZmlnLCBwYXJzZUdyYXBoUUxDb25maWcpICYmXG4gICAgICB0aGlzLmZ1bmN0aW9uTmFtZXNTdHJpbmcgPT09IGZ1bmN0aW9uTmFtZXNTdHJpbmcgJiZcbiAgICAgIGlzRGVlcFN0cmljdEVxdWFsKHRoaXMucGFyc2VDbGFzc2VzLCBwYXJzZUNsYXNzZXMpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbmV4cG9ydCB7IFBhcnNlR3JhcGhRTFNjaGVtYSB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxLQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sbUJBQUEsR0FBQUMsdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFRLGVBQUEsR0FBQUQsdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFTLGlCQUFBLEdBQUFGLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBVSxtQkFBQSxHQUFBSCx1QkFBQSxDQUFBUCxPQUFBO0FBQ0EsSUFBQVcscUJBQUEsR0FBQUosdUJBQUEsQ0FBQVAsT0FBQTtBQUNBLElBQUFZLHVCQUFBLEdBQUFMLHVCQUFBLENBQUFQLE9BQUE7QUFDQSxJQUFBYSx1QkFBQSxHQUFBTix1QkFBQSxDQUFBUCxPQUFBO0FBQ0EsSUFBQWMsbUJBQUEsR0FBQWYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFlLFlBQUEs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
@@ -19,7 +19,7 @@ var _ParseGraphQLSchema = require("./ParseGraphQLSchema");
19
19
  var _ParseGraphQLController = _interopRequireWildcard(require("../Controllers/ParseGraphQLController"));
20
20
  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); }
21
21
  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; }
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
23
23
  class ParseGraphQLServer {
24
24
  constructor(parseServer, config) {
25
25
  this.parseServer = parseServer || (0, _requiredParameter.default)('You must provide a parseServer instance!');
@@ -152,4 +152,4 @@ class ParseGraphQLServer {
152
152
  }
153
153
  }
154
154
  exports.ParseGraphQLServer = ParseGraphQLServer;
155
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ycyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxVcGxvYWRFeHByZXNzIiwiX3NlcnZlciIsIl9leHByZXNzIiwiX2Rpc2FibGVkIiwiX2V4cHJlc3MyIiwiX2dyYXBocWwiLCJfc3Vic2NyaXB0aW9uc1RyYW5zcG9ydFdzIiwiX21pZGRsZXdhcmVzIiwiX3JlcXVpcmVkUGFyYW1ldGVyIiwiX2xvZ2dlciIsIl9QYXJzZUdyYXBoUUxTY2hlbWEiLCJfUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0Iiwib2JqIiwiUGFyc2VHcmFwaFFMU2VydmVyIiwiY29uc3RydWN0b3IiLCJwYXJzZVNlcnZlciIsImNvbmZpZyIsInJlcXVpcmVkUGFyYW1ldGVyIiwiZ3JhcGhRTFBhdGgiLCJwYXJzZUdyYXBoUUxDb250cm9sbGVyIiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImRlZmF1bHRMb2dnZXIiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJQYXJzZUdyYXBoUUxTY2hlbWEiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJhcHBJZCIsIl9nZXRHcmFwaFFMT3B0aW9ucyIsInNjaGVtYSIsImxvYWQiLCJjb250ZXh0IiwicmVxIiwicmVzIiwiaW5mbyIsImF1dGgiLCJlcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJfZ2V0U2VydmVyIiwic2NoZW1hUmVmIiwiZ3JhcGhRTFNjaGVtYSIsIm5ld1NjaGVtYVJlZiIsImFwb2xsbyIsIkFwb2xsb1NlcnZlciIsImNzcmZQcmV2ZW50aW9uIiwicmVxdWVzdEhlYWRlcnMiLCJpbnRyb3NwZWN0aW9uIiwicGx1Z2lucyIsIkFwb2xsb1NlcnZlclBsdWdpbkNhY2hlQ29udHJvbERpc2FibGVkIiwic3RhcnQiLCJleHByZXNzTWlkZGxld2FyZSIsIl90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyIsIm1heFVwbG9hZFNpemUiLCJ1bml0TWFwIiwia2IiLCJtYiIsImdiIiwiTnVtYmVyIiwic2xpY2UiLCJNYXRoIiwicG93IiwidG9Mb3dlckNhc2UiLCJhcHBseUdyYXBoUUwiLCJhcHAiLCJ1c2UiLCJjb3JzTWlkZGxld2FyZSIsImhhbmRsZVBhcnNlSGVhZGVycyIsImhhbmRsZVBhcnNlU2Vzc2lvbiIsImhhbmRsZVBhcnNlRXJyb3JzIiwiZ3JhcGhxbFVwbG9hZEV4cHJlc3MiLCJtYXhGaWxlU2l6ZSIsImV4cHJlc3MiLCJqc29uIiwibmV4dCIsInNlcnZlciIsImFwcGx5UGxheWdyb3VuZCIsInBsYXlncm91bmRQYXRoIiwiX3JlcSIsInNldEhlYWRlciIsIndyaXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1hc3RlcktleSIsImVuZCIsImNyZWF0ZVN1YnNjcmlwdGlvbnMiLCJTdWJzY3JpcHRpb25TZXJ2ZXIiLCJjcmVhdGUiLCJleGVjdXRlIiwic3Vic2NyaWJlIiwib25PcGVyYXRpb24iLCJfbWVzc2FnZSIsInBhcmFtcyIsIndlYlNvY2tldCIsImFzc2lnbiIsInVwZ3JhZGVSZXEiLCJwYXRoIiwic3Vic2NyaXB0aW9uc1BhdGgiLCJzZXRHcmFwaFFMQ29uZmlnIiwiZ3JhcGhRTENvbmZpZyIsInVwZGF0ZUdyYXBoUUxDb25maWciLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0dyYXBoUUwvUGFyc2VHcmFwaFFMU2VydmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3JzTWlkZGxld2FyZSBmcm9tICdjb3JzJztcbmltcG9ydCBncmFwaHFsVXBsb2FkRXhwcmVzcyBmcm9tICdncmFwaHFsLXVwbG9hZC9ncmFwaHFsVXBsb2FkRXhwcmVzcy5qcyc7XG5pbXBvcnQgeyBBcG9sbG9TZXJ2ZXIgfSBmcm9tICdAYXBvbGxvL3NlcnZlcic7XG5pbXBvcnQgeyBleHByZXNzTWlkZGxld2FyZSB9IGZyb20gJ0BhcG9sbG8vc2VydmVyL2V4cHJlc3M0JztcbmltcG9ydCB7IEFwb2xsb1NlcnZlclBsdWdpbkNhY2hlQ29udHJvbERpc2FibGVkIH0gZnJvbSAnQGFwb2xsby9zZXJ2ZXIvcGx1Z2luL2Rpc2FibGVkJztcbmltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgZXhlY3V0ZSwgc3Vic2NyaWJlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2ZXIgfSBmcm9tICdzdWJzY3JpcHRpb25zLXRyYW5zcG9ydC13cyc7XG5pbXBvcnQgeyBoYW5kbGVQYXJzZUVycm9ycywgaGFuZGxlUGFyc2VIZWFkZXJzLCBoYW5kbGVQYXJzZVNlc3Npb24gfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgcmVxdWlyZWRQYXJhbWV0ZXIgZnJvbSAnLi4vcmVxdWlyZWRQYXJhbWV0ZXInO1xuaW1wb3J0IGRlZmF1bHRMb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFBhcnNlR3JhcGhRTFNjaGVtYSB9IGZyb20gJy4vUGFyc2VHcmFwaFFMU2NoZW1hJztcbmltcG9ydCBQYXJzZUdyYXBoUUxDb250cm9sbGVyLCB7IFBhcnNlR3JhcGhRTENvbmZpZyB9IGZyb20gJy4uL0NvbnRyb2xsZXJzL1BhcnNlR3JhcGhRTENvbnRyb2xsZXInO1xuXG5jbGFzcyBQYXJzZUdyYXBoUUxTZXJ2ZXIge1xuICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiBQYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuXG4gIGNvbnN0cnVjdG9yKHBhcnNlU2VydmVyLCBjb25maWcpIHtcbiAgICB0aGlzLnBhcnNlU2VydmVyID0gcGFyc2VTZXJ2ZXIgfHwgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBwYXJzZVNlcnZlciBpbnN0YW5jZSEnKTtcbiAgICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLmdyYXBoUUxQYXRoKSB7XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZy5ncmFwaFFMUGF0aCEnKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyID0gdGhpcy5wYXJzZVNlcnZlci5jb25maWcucGFyc2VHcmFwaFFMQ29udHJvbGxlcjtcbiAgICB0aGlzLmxvZyA9XG4gICAgICAodGhpcy5wYXJzZVNlcnZlci5jb25maWcgJiYgdGhpcy5wYXJzZVNlcnZlci5jb25maWcubG9nZ2VyQ29udHJvbGxlcikgfHwgZGVmYXVsdExvZ2dlcjtcbiAgICB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYSA9IG5ldyBQYXJzZUdyYXBoUUxTY2hlbWEoe1xuICAgICAgcGFyc2VHcmFwaFFMQ29udHJvbGxlcjogdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLFxuICAgICAgZGF0YWJhc2VDb250cm9sbGVyOiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5kYXRhYmFzZUNvbnRyb2xsZXIsXG4gICAgICBsb2c6IHRoaXMubG9nLFxuICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzOiB0aGlzLmNvbmZpZy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICBhcHBJZDogdGhpcy5wYXJzZVNlcnZlci5jb25maWcuYXBwSWQsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBfZ2V0R3JhcGhRTE9wdGlvbnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVtYTogYXdhaXQgdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEubG9hZCgpLFxuICAgICAgICBjb250ZXh0OiBhc3luYyAoeyByZXEsIHJlcyB9KSA9PiB7XG4gICAgICAgICAgcmVzLnNldCgnYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luJywgcmVxLmdldCgnb3JpZ2luJykgfHwgJyonKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzogcmVxLmluZm8sXG4gICAgICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgICAgICBhdXRoOiByZXEuYXV0aCxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcihlLnN0YWNrIHx8ICh0eXBlb2YgZS50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJyAmJiBlLnRvU3RyaW5nKCkpIHx8IGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBfZ2V0U2VydmVyKCkge1xuICAgIGNvbnN0IHNjaGVtYVJlZiA9IHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hLmdyYXBoUUxTY2hlbWE7XG4gICAgY29uc3QgbmV3U2NoZW1hUmVmID0gYXdhaXQgdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEubG9hZCgpO1xuICAgIGlmIChzY2hlbWFSZWYgPT09IG5ld1NjaGVtYVJlZiAmJiB0aGlzLl9zZXJ2ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXJ2ZXI7XG4gICAgfVxuICAgIGNvbnN0IHsgc2NoZW1hLCBjb250ZXh0IH0gPSBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucygpO1xuICAgIGNvbnN0IGFwb2xsbyA9IG5ldyBBcG9sbG9TZXJ2ZXIoe1xuICAgICAgY3NyZlByZXZlbnRpb246IHtcbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LmFwb2xsb2dyYXBocWwuY29tL2RvY3Mvcm91dGVyL2NvbmZpZ3VyYXRpb24vY3NyZi9cbiAgICAgICAgLy8gbmVlZGVkIHNpbmNlIHdlIHVzZSBncmFwaHFsIHVwbG9hZFxuICAgICAgICByZXF1ZXN0SGVhZGVyczogWydYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJ10sXG4gICAgICB9LFxuICAgICAgaW50cm9zcGVjdGlvbjogdHJ1ZSxcbiAgICAgIHBsdWdpbnM6IFtBcG9sbG9TZXJ2ZXJQbHVnaW5DYWNoZUNvbnRyb2xEaXNhYmxlZCgpXSxcbiAgICAgIHNjaGVtYSxcbiAgICB9KTtcbiAgICBhd2FpdCBhcG9sbG8uc3RhcnQoKTtcbiAgICB0aGlzLl9zZXJ2ZXIgPSBleHByZXNzTWlkZGxld2FyZShhcG9sbG8sIHtcbiAgICAgIGNvbnRleHQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZlcjtcbiAgfVxuXG4gIF90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyhtYXhVcGxvYWRTaXplKSB7XG4gICAgY29uc3QgdW5pdE1hcCA9IHtcbiAgICAgIGtiOiAxLFxuICAgICAgbWI6IDIsXG4gICAgICBnYjogMyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIE51bWJlcihtYXhVcGxvYWRTaXplLnNsaWNlKDAsIC0yKSkgKlxuICAgICAgTWF0aC5wb3coMTAyNCwgdW5pdE1hcFttYXhVcGxvYWRTaXplLnNsaWNlKC0yKS50b0xvd2VyQ2FzZSgpXSlcbiAgICApO1xuICB9XG5cbiAgYXBwbHlHcmFwaFFMKGFwcCkge1xuICAgIGlmICghYXBwIHx8ICFhcHAudXNlKSB7XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhbiBFeHByZXNzLmpzIGFwcCBpbnN0YW5jZSEnKTtcbiAgICB9XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgY29yc01pZGRsZXdhcmUoKSk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VIZWFkZXJzKTtcbiAgICBhcHAudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBoYW5kbGVQYXJzZVNlc3Npb24pO1xuICAgIGFwcC51c2UodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsIGhhbmRsZVBhcnNlRXJyb3JzKTtcbiAgICBhcHAudXNlKFxuICAgICAgdGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsXG4gICAgICBncmFwaHFsVXBsb2FkRXhwcmVzcyh7XG4gICAgICAgIG1heEZpbGVTaXplOiB0aGlzLl90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyhcbiAgICAgICAgICB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5tYXhVcGxvYWRTaXplIHx8ICcyMG1iJ1xuICAgICAgICApLFxuICAgICAgfSlcbiAgICApO1xuICAgIGFwcC51c2UodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsIGV4cHJlc3MuanNvbigpLCBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHRoaXMuX2dldFNlcnZlcigpO1xuICAgICAgcmV0dXJuIHNlcnZlcihyZXEsIHJlcywgbmV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBhcHBseVBsYXlncm91bmQoYXBwKSB7XG4gICAgaWYgKCFhcHAgfHwgIWFwcC5nZXQpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIEV4cHJlc3MuanMgYXBwIGluc3RhbmNlIScpO1xuICAgIH1cblxuICAgIGFwcC5nZXQoXG4gICAgICB0aGlzLmNvbmZpZy5wbGF5Z3JvdW5kUGF0aCB8fFxuICAgICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZy5wbGF5Z3JvdW5kUGF0aCB0byBhcHBseVBsYXlncm91bmQhJyksXG4gICAgICAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgcmVzLndyaXRlKFxuICAgICAgICAgIGA8ZGl2IGlkPVwic2FuZGJveFwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjBcIj48L2Rpdj5cbiAgICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vZW1iZWRkYWJsZS1zYW5kYm94LmNkbi5hcG9sbG9ncmFwaHFsLmNvbS9fbGF0ZXN0L2VtYmVkZGFibGUtc2FuZGJveC51bWQucHJvZHVjdGlvbi5taW4uanNcIj48L3NjcmlwdD5cbiAgICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgICBuZXcgd2luZG93LkVtYmVkZGVkU2FuZGJveCh7XG4gICAgICAgICAgICAgdGFyZ2V0OiBcIiNzYW5kYm94XCIsXG4gICAgICAgICAgICAgZW5kcG9pbnRJc0VkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICBpbml0aWFsRW5kcG9pbnQ6IFwiJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCl9XCIsXG4gICAgICAgICAgICAgaGFuZGxlUmVxdWVzdDogKGVuZHBvaW50VXJsLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaChlbmRwb2ludFVybCwge1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb25zLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICdYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJzogXCIke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmFwcElkKX1cIixcbiAgICAgICAgICAgICAgICAgICAgJ1gtUGFyc2UtTWFzdGVyLUtleSc6IFwiJHtKU09OLnN0cmluZ2lmeSh0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5tYXN0ZXJLZXkpfVwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICB9KTtcbiAgICAgICAgICAgLy8gYWR2YW5jZWQgb3B0aW9uczogaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vZG9jcy9zdHVkaW8vZXhwbG9yZXIvc2FuZGJveCNlbWJlZGRpbmctc2FuZGJveFxuICAgICAgICAgIDwvc2NyaXB0PmBcbiAgICAgICAgKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTdWJzY3JpcHRpb25zKHNlcnZlcikge1xuICAgIFN1YnNjcmlwdGlvblNlcnZlci5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGV4ZWN1dGUsXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgb25PcGVyYXRpb246IGFzeW5jIChfbWVzc2FnZSwgcGFyYW1zLCB3ZWJTb2NrZXQpID0+XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW1zLCBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyh3ZWJTb2NrZXQudXBncmFkZVJlcSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBwYXRoOlxuICAgICAgICAgIHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoIHx8XG4gICAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuc3Vic2NyaXB0aW9uc1BhdGggdG8gY3JlYXRlU3Vic2NyaXB0aW9ucyEnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0R3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLnVwZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdB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
155
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29ycyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxVcGxvYWRFeHByZXNzIiwiX3NlcnZlciIsIl9leHByZXNzIiwiX2Rpc2FibGVkIiwiX2V4cHJlc3MyIiwiX2dyYXBocWwiLCJfc3Vic2NyaXB0aW9uc1RyYW5zcG9ydFdzIiwiX21pZGRsZXdhcmVzIiwiX3JlcXVpcmVkUGFyYW1ldGVyIiwiX2xvZ2dlciIsIl9QYXJzZUdyYXBoUUxTY2hlbWEiLCJfUGFyc2VHcmFwaFFMQ29udHJvbGxlciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiUGFyc2VHcmFwaFFMU2VydmVyIiwiY29uc3RydWN0b3IiLCJwYXJzZVNlcnZlciIsImNvbmZpZyIsInJlcXVpcmVkUGFyYW1ldGVyIiwiZ3JhcGhRTFBhdGgiLCJwYXJzZUdyYXBoUUxDb250cm9sbGVyIiwibG9nIiwibG9nZ2VyQ29udHJvbGxlciIsImRlZmF1bHRMb2dnZXIiLCJwYXJzZUdyYXBoUUxTY2hlbWEiLCJQYXJzZUdyYXBoUUxTY2hlbWEiLCJkYXRhYmFzZUNvbnRyb2xsZXIiLCJncmFwaFFMQ3VzdG9tVHlwZURlZnMiLCJhcHBJZCIsIl9nZXRHcmFwaFFMT3B0aW9ucyIsInNjaGVtYSIsImxvYWQiLCJjb250ZXh0IiwicmVxIiwicmVzIiwiaW5mbyIsImF1dGgiLCJlcnJvciIsInN0YWNrIiwidG9TdHJpbmciLCJfZ2V0U2VydmVyIiwic2NoZW1hUmVmIiwiZ3JhcGhRTFNjaGVtYSIsIm5ld1NjaGVtYVJlZiIsImFwb2xsbyIsIkFwb2xsb1NlcnZlciIsImNzcmZQcmV2ZW50aW9uIiwicmVxdWVzdEhlYWRlcnMiLCJpbnRyb3NwZWN0aW9uIiwicGx1Z2lucyIsIkFwb2xsb1NlcnZlclBsdWdpbkNhY2hlQ29udHJvbERpc2FibGVkIiwic3RhcnQiLCJleHByZXNzTWlkZGxld2FyZSIsIl90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyIsIm1heFVwbG9hZFNpemUiLCJ1bml0TWFwIiwia2IiLCJtYiIsImdiIiwiTnVtYmVyIiwic2xpY2UiLCJNYXRoIiwicG93IiwidG9Mb3dlckNhc2UiLCJhcHBseUdyYXBoUUwiLCJhcHAiLCJ1c2UiLCJjb3JzTWlkZGxld2FyZSIsImhhbmRsZVBhcnNlSGVhZGVycyIsImhhbmRsZVBhcnNlU2Vzc2lvbiIsImhhbmRsZVBhcnNlRXJyb3JzIiwiZ3JhcGhxbFVwbG9hZEV4cHJlc3MiLCJtYXhGaWxlU2l6ZSIsImV4cHJlc3MiLCJqc29uIiwibmV4dCIsInNlcnZlciIsImFwcGx5UGxheWdyb3VuZCIsInBsYXlncm91bmRQYXRoIiwiX3JlcSIsInNldEhlYWRlciIsIndyaXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1hc3RlcktleSIsImVuZCIsImNyZWF0ZVN1YnNjcmlwdGlvbnMiLCJTdWJzY3JpcHRpb25TZXJ2ZXIiLCJjcmVhdGUiLCJleGVjdXRlIiwic3Vic2NyaWJlIiwib25PcGVyYXRpb24iLCJfbWVzc2FnZSIsInBhcmFtcyIsIndlYlNvY2tldCIsImFzc2lnbiIsInVwZ3JhZGVSZXEiLCJwYXRoIiwic3Vic2NyaXB0aW9uc1BhdGgiLCJzZXRHcmFwaFFMQ29uZmlnIiwiZ3JhcGhRTENvbmZpZyIsInVwZGF0ZUdyYXBoUUxDb25maWciLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL0dyYXBoUUwvUGFyc2VHcmFwaFFMU2VydmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb3JzTWlkZGxld2FyZSBmcm9tICdjb3JzJztcbmltcG9ydCBncmFwaHFsVXBsb2FkRXhwcmVzcyBmcm9tICdncmFwaHFsLXVwbG9hZC9ncmFwaHFsVXBsb2FkRXhwcmVzcy5qcyc7XG5pbXBvcnQgeyBBcG9sbG9TZXJ2ZXIgfSBmcm9tICdAYXBvbGxvL3NlcnZlcic7XG5pbXBvcnQgeyBleHByZXNzTWlkZGxld2FyZSB9IGZyb20gJ0BhcG9sbG8vc2VydmVyL2V4cHJlc3M0JztcbmltcG9ydCB7IEFwb2xsb1NlcnZlclBsdWdpbkNhY2hlQ29udHJvbERpc2FibGVkIH0gZnJvbSAnQGFwb2xsby9zZXJ2ZXIvcGx1Z2luL2Rpc2FibGVkJztcbmltcG9ydCBleHByZXNzIGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgZXhlY3V0ZSwgc3Vic2NyaWJlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb25TZXJ2ZXIgfSBmcm9tICdzdWJzY3JpcHRpb25zLXRyYW5zcG9ydC13cyc7XG5pbXBvcnQgeyBoYW5kbGVQYXJzZUVycm9ycywgaGFuZGxlUGFyc2VIZWFkZXJzLCBoYW5kbGVQYXJzZVNlc3Npb24gfSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgcmVxdWlyZWRQYXJhbWV0ZXIgZnJvbSAnLi4vcmVxdWlyZWRQYXJhbWV0ZXInO1xuaW1wb3J0IGRlZmF1bHRMb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFBhcnNlR3JhcGhRTFNjaGVtYSB9IGZyb20gJy4vUGFyc2VHcmFwaFFMU2NoZW1hJztcbmltcG9ydCBQYXJzZUdyYXBoUUxDb250cm9sbGVyLCB7IFBhcnNlR3JhcGhRTENvbmZpZyB9IGZyb20gJy4uL0NvbnRyb2xsZXJzL1BhcnNlR3JhcGhRTENvbnRyb2xsZXInO1xuXG5jbGFzcyBQYXJzZUdyYXBoUUxTZXJ2ZXIge1xuICBwYXJzZUdyYXBoUUxDb250cm9sbGVyOiBQYXJzZUdyYXBoUUxDb250cm9sbGVyO1xuXG4gIGNvbnN0cnVjdG9yKHBhcnNlU2VydmVyLCBjb25maWcpIHtcbiAgICB0aGlzLnBhcnNlU2VydmVyID0gcGFyc2VTZXJ2ZXIgfHwgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBwYXJzZVNlcnZlciBpbnN0YW5jZSEnKTtcbiAgICBpZiAoIWNvbmZpZyB8fCAhY29uZmlnLmdyYXBoUUxQYXRoKSB7XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZy5ncmFwaFFMUGF0aCEnKTtcbiAgICB9XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyID0gdGhpcy5wYXJzZVNlcnZlci5jb25maWcucGFyc2VHcmFwaFFMQ29udHJvbGxlcjtcbiAgICB0aGlzLmxvZyA9XG4gICAgICAodGhpcy5wYXJzZVNlcnZlci5jb25maWcgJiYgdGhpcy5wYXJzZVNlcnZlci5jb25maWcubG9nZ2VyQ29udHJvbGxlcikgfHwgZGVmYXVsdExvZ2dlcjtcbiAgICB0aGlzLnBhcnNlR3JhcGhRTFNjaGVtYSA9IG5ldyBQYXJzZUdyYXBoUUxTY2hlbWEoe1xuICAgICAgcGFyc2VHcmFwaFFMQ29udHJvbGxlcjogdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLFxuICAgICAgZGF0YWJhc2VDb250cm9sbGVyOiB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5kYXRhYmFzZUNvbnRyb2xsZXIsXG4gICAgICBsb2c6IHRoaXMubG9nLFxuICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzOiB0aGlzLmNvbmZpZy5ncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICBhcHBJZDogdGhpcy5wYXJzZVNlcnZlci5jb25maWcuYXBwSWQsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBfZ2V0R3JhcGhRTE9wdGlvbnMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjaGVtYTogYXdhaXQgdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEubG9hZCgpLFxuICAgICAgICBjb250ZXh0OiBhc3luYyAoeyByZXEsIHJlcyB9KSA9PiB7XG4gICAgICAgICAgcmVzLnNldCgnYWNjZXNzLWNvbnRyb2wtYWxsb3ctb3JpZ2luJywgcmVxLmdldCgnb3JpZ2luJykgfHwgJyonKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaW5mbzogcmVxLmluZm8sXG4gICAgICAgICAgICBjb25maWc6IHJlcS5jb25maWcsXG4gICAgICAgICAgICBhdXRoOiByZXEuYXV0aCxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvcihlLnN0YWNrIHx8ICh0eXBlb2YgZS50b1N0cmluZyA9PT0gJ2Z1bmN0aW9uJyAmJiBlLnRvU3RyaW5nKCkpIHx8IGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBfZ2V0U2VydmVyKCkge1xuICAgIGNvbnN0IHNjaGVtYVJlZiA9IHRoaXMucGFyc2VHcmFwaFFMU2NoZW1hLmdyYXBoUUxTY2hlbWE7XG4gICAgY29uc3QgbmV3U2NoZW1hUmVmID0gYXdhaXQgdGhpcy5wYXJzZUdyYXBoUUxTY2hlbWEubG9hZCgpO1xuICAgIGlmIChzY2hlbWFSZWYgPT09IG5ld1NjaGVtYVJlZiAmJiB0aGlzLl9zZXJ2ZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZXJ2ZXI7XG4gICAgfVxuICAgIGNvbnN0IHsgc2NoZW1hLCBjb250ZXh0IH0gPSBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucygpO1xuICAgIGNvbnN0IGFwb2xsbyA9IG5ldyBBcG9sbG9TZXJ2ZXIoe1xuICAgICAgY3NyZlByZXZlbnRpb246IHtcbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LmFwb2xsb2dyYXBocWwuY29tL2RvY3Mvcm91dGVyL2NvbmZpZ3VyYXRpb24vY3NyZi9cbiAgICAgICAgLy8gbmVlZGVkIHNpbmNlIHdlIHVzZSBncmFwaHFsIHVwbG9hZFxuICAgICAgICByZXF1ZXN0SGVhZGVyczogWydYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJ10sXG4gICAgICB9LFxuICAgICAgaW50cm9zcGVjdGlvbjogdHJ1ZSxcbiAgICAgIHBsdWdpbnM6IFtBcG9sbG9TZXJ2ZXJQbHVnaW5DYWNoZUNvbnRyb2xEaXNhYmxlZCgpXSxcbiAgICAgIHNjaGVtYSxcbiAgICB9KTtcbiAgICBhd2FpdCBhcG9sbG8uc3RhcnQoKTtcbiAgICB0aGlzLl9zZXJ2ZXIgPSBleHByZXNzTWlkZGxld2FyZShhcG9sbG8sIHtcbiAgICAgIGNvbnRleHQsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuX3NlcnZlcjtcbiAgfVxuXG4gIF90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyhtYXhVcGxvYWRTaXplKSB7XG4gICAgY29uc3QgdW5pdE1hcCA9IHtcbiAgICAgIGtiOiAxLFxuICAgICAgbWI6IDIsXG4gICAgICBnYjogMyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIE51bWJlcihtYXhVcGxvYWRTaXplLnNsaWNlKDAsIC0yKSkgKlxuICAgICAgTWF0aC5wb3coMTAyNCwgdW5pdE1hcFttYXhVcGxvYWRTaXplLnNsaWNlKC0yKS50b0xvd2VyQ2FzZSgpXSlcbiAgICApO1xuICB9XG5cbiAgYXBwbHlHcmFwaFFMKGFwcCkge1xuICAgIGlmICghYXBwIHx8ICFhcHAudXNlKSB7XG4gICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhbiBFeHByZXNzLmpzIGFwcCBpbnN0YW5jZSEnKTtcbiAgICB9XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgY29yc01pZGRsZXdhcmUoKSk7XG4gICAgYXBwLnVzZSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCwgaGFuZGxlUGFyc2VIZWFkZXJzKTtcbiAgICBhcHAudXNlKHRoaXMuY29uZmlnLmdyYXBoUUxQYXRoLCBoYW5kbGVQYXJzZVNlc3Npb24pO1xuICAgIGFwcC51c2UodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsIGhhbmRsZVBhcnNlRXJyb3JzKTtcbiAgICBhcHAudXNlKFxuICAgICAgdGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsXG4gICAgICBncmFwaHFsVXBsb2FkRXhwcmVzcyh7XG4gICAgICAgIG1heEZpbGVTaXplOiB0aGlzLl90cmFuc2Zvcm1NYXhVcGxvYWRTaXplVG9CeXRlcyhcbiAgICAgICAgICB0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5tYXhVcGxvYWRTaXplIHx8ICcyMG1iJ1xuICAgICAgICApLFxuICAgICAgfSlcbiAgICApO1xuICAgIGFwcC51c2UodGhpcy5jb25maWcuZ3JhcGhRTFBhdGgsIGV4cHJlc3MuanNvbigpLCBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgIGNvbnN0IHNlcnZlciA9IGF3YWl0IHRoaXMuX2dldFNlcnZlcigpO1xuICAgICAgcmV0dXJuIHNlcnZlcihyZXEsIHJlcywgbmV4dCk7XG4gICAgfSk7XG4gIH1cblxuICBhcHBseVBsYXlncm91bmQoYXBwKSB7XG4gICAgaWYgKCFhcHAgfHwgIWFwcC5nZXQpIHtcbiAgICAgIHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIEV4cHJlc3MuanMgYXBwIGluc3RhbmNlIScpO1xuICAgIH1cblxuICAgIGFwcC5nZXQoXG4gICAgICB0aGlzLmNvbmZpZy5wbGF5Z3JvdW5kUGF0aCB8fFxuICAgICAgICByZXF1aXJlZFBhcmFtZXRlcignWW91IG11c3QgcHJvdmlkZSBhIGNvbmZpZy5wbGF5Z3JvdW5kUGF0aCB0byBhcHBseVBsYXlncm91bmQhJyksXG4gICAgICAoX3JlcSwgcmVzKSA9PiB7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWwnKTtcbiAgICAgICAgcmVzLndyaXRlKFxuICAgICAgICAgIGA8ZGl2IGlkPVwic2FuZGJveFwiIHN0eWxlPVwicG9zaXRpb246YWJzb2x1dGU7dG9wOjA7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjBcIj48L2Rpdj5cbiAgICAgICAgICA8c2NyaXB0IHNyYz1cImh0dHBzOi8vZW1iZWRkYWJsZS1zYW5kYm94LmNkbi5hcG9sbG9ncmFwaHFsLmNvbS9fbGF0ZXN0L2VtYmVkZGFibGUtc2FuZGJveC51bWQucHJvZHVjdGlvbi5taW4uanNcIj48L3NjcmlwdD5cbiAgICAgICAgICA8c2NyaXB0PlxuICAgICAgICAgICBuZXcgd2luZG93LkVtYmVkZGVkU2FuZGJveCh7XG4gICAgICAgICAgICAgdGFyZ2V0OiBcIiNzYW5kYm94XCIsXG4gICAgICAgICAgICAgZW5kcG9pbnRJc0VkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICBpbml0aWFsRW5kcG9pbnQ6IFwiJHtKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZy5ncmFwaFFMUGF0aCl9XCIsXG4gICAgICAgICAgICAgaGFuZGxlUmVxdWVzdDogKGVuZHBvaW50VXJsLCBvcHRpb25zKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBmZXRjaChlbmRwb2ludFVybCwge1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAuLi5vcHRpb25zLmhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgICdYLVBhcnNlLUFwcGxpY2F0aW9uLUlkJzogXCIke0pTT04uc3RyaW5naWZ5KHRoaXMucGFyc2VTZXJ2ZXIuY29uZmlnLmFwcElkKX1cIixcbiAgICAgICAgICAgICAgICAgICAgJ1gtUGFyc2UtTWFzdGVyLUtleSc6IFwiJHtKU09OLnN0cmluZ2lmeSh0aGlzLnBhcnNlU2VydmVyLmNvbmZpZy5tYXN0ZXJLZXkpfVwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICB9KTtcbiAgICAgICAgICAgLy8gYWR2YW5jZWQgb3B0aW9uczogaHR0cHM6Ly93d3cuYXBvbGxvZ3JhcGhxbC5jb20vZG9jcy9zdHVkaW8vZXhwbG9yZXIvc2FuZGJveCNlbWJlZGRpbmctc2FuZGJveFxuICAgICAgICAgIDwvc2NyaXB0PmBcbiAgICAgICAgKTtcbiAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBjcmVhdGVTdWJzY3JpcHRpb25zKHNlcnZlcikge1xuICAgIFN1YnNjcmlwdGlvblNlcnZlci5jcmVhdGUoXG4gICAgICB7XG4gICAgICAgIGV4ZWN1dGUsXG4gICAgICAgIHN1YnNjcmliZSxcbiAgICAgICAgb25PcGVyYXRpb246IGFzeW5jIChfbWVzc2FnZSwgcGFyYW1zLCB3ZWJTb2NrZXQpID0+XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih7fSwgcGFyYW1zLCBhd2FpdCB0aGlzLl9nZXRHcmFwaFFMT3B0aW9ucyh3ZWJTb2NrZXQudXBncmFkZVJlcSkpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBwYXRoOlxuICAgICAgICAgIHRoaXMuY29uZmlnLnN1YnNjcmlwdGlvbnNQYXRoIHx8XG4gICAgICAgICAgcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBjb25maWcuc3Vic2NyaXB0aW9uc1BhdGggdG8gY3JlYXRlU3Vic2NyaXB0aW9ucyEnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgc2V0R3JhcGhRTENvbmZpZyhncmFwaFFMQ29uZmlnOiBQYXJzZUdyYXBoUUxDb25maWcpOiBQcm9taXNlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZUdyYXBoUUxDb250cm9sbGVyLnVwZGF0ZUdyYXBoUUxDb25maWcoZ3JhcGhRTENvbmZpZyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGFyc2VHcmFwaFFMU2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFGLE9B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
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.updateObject = exports.deleteObject = exports.createObject = void 0;
7
7
  var _rest = _interopRequireDefault(require("../../rest"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
9
  const createObject = async (className, fields, config, auth, info) => {
10
10
  if (!fields) {
11
11
  fields = {};
@@ -27,4 +27,4 @@ const deleteObject = async (className, objectId, config, auth, info) => {
27
27
  return true;
28
28
  };
29
29
  exports.deleteObject = deleteObject;
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjcmVhdGVPYmplY3QiLCJjbGFzc05hbWUiLCJmaWVsZHMiLCJjb25maWciLCJhdXRoIiwiaW5mbyIsInJlc3QiLCJjcmVhdGUiLCJjbGllbnRTREsiLCJjb250ZXh0IiwicmVzcG9uc2UiLCJleHBvcnRzIiwidXBkYXRlT2JqZWN0Iiwib2JqZWN0SWQiLCJ1cGRhdGUiLCJkZWxldGVPYmplY3QiLCJkZWwiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC9oZWxwZXJzL29iamVjdHNNdXRhdGlvbnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlc3QgZnJvbSAnLi4vLi4vcmVzdCc7XG5cbmNvbnN0IGNyZWF0ZU9iamVjdCA9IGFzeW5jIChjbGFzc05hbWUsIGZpZWxkcywgY29uZmlnLCBhdXRoLCBpbmZvKSA9PiB7XG4gIGlmICghZmllbGRzKSB7XG4gICAgZmllbGRzID0ge307XG4gIH1cblxuICByZXR1cm4gKGF3YWl0IHJlc3QuY3JlYXRlKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBmaWVsZHMsIGluZm8uY2xpZW50U0RLLCBpbmZvLmNvbnRleHQpKVxuICAgIC5yZXNwb25zZTtcbn07XG5cbmNvbnN0IHVwZGF0ZU9iamVjdCA9IGFzeW5jIChjbGFzc05hbWUsIG9iamVjdElkLCBmaWVsZHMsIGNvbmZpZywgYXV0aCwgaW5mbykgPT4ge1xuICBpZiAoIWZpZWxkcykge1xuICAgIGZpZWxkcyA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICBhd2FpdCByZXN0LnVwZGF0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgeyBvYmplY3RJZCB9LCBmaWVsZHMsIGluZm8uY2xpZW50U0RLLCBpbmZvLmNvbnRleHQpXG4gICkucmVzcG9uc2U7XG59O1xuXG5jb25zdCBkZWxldGVPYmplY3QgPSBhc3luYyAoY2xhc3NOYW1lLCBvYmplY3RJZCwgY29uZmlnLCBhdXRoLCBpbmZvKSA9PiB7XG4gIGF3YWl0IHJlc3QuZGVsKGNvbmZpZywgYXV0aCwgY2xhc3NOYW1lLCBvYmplY3RJZCwgaW5mby5jb250ZXh0KTtcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgeyBjcmVhdGVPYmplY3QsIHVwZGF0ZU9iamVjdCwgZGVsZXRlT2JqZWN0IH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUE4QixTQUFBRCx1QkFBQUUsR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUU5QixNQUFNRyxZQUFZLEdBQUcsTUFBQUEsQ0FBT0MsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEtBQUs7RUFDcEUsSUFBSSxDQUFDSCxNQUFNLEVBQUU7SUFDWEEsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNiO0VBRUEsT0FBTyxDQUFDLE1BQU1JLGFBQUksQ0FBQ0MsTUFBTSxDQUFDSixNQUFNLEVBQUVDLElBQUksRUFBRUgsU0FBUyxFQUFFQyxNQUFNLEVBQUVHLElBQUksQ0FBQ0csU0FBUyxFQUFFSCxJQUFJLENBQUNJLE9BQU8sQ0FBQyxFQUNyRkMsUUFBUTtBQUNiLENBQUM7QUFBQ0MsT0FBQSxDQUFBWCxZQUFBLEdBQUFBLFlBQUE7QUFFRixNQUFNWSxZQUFZLEdBQUcsTUFBQUEsQ0FBT1gsU0FBUyxFQUFFWSxRQUFRLEVBQUVYLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksS0FBSztFQUM5RSxJQUFJLENBQUNILE1BQU0sRUFBRTtJQUNYQSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ2I7RUFFQSxPQUFPLENBQ0wsTUFBTUksYUFBSSxDQUFDUSxNQUFNLENBQUNYLE1BQU0sRUFBRUMsSUFBSSxFQUFFSCxTQUFTLEVBQUU7SUFBRVk7RUFBUyxDQUFDLEVBQUVYLE1BQU0sRUFBRUcsSUFBSSxDQUFDRyxTQUFTLEVBQUVILElBQUksQ0FBQ0ksT0FBTyxDQUFDLEVBQzlGQyxRQUFRO0FBQ1osQ0FBQztBQUFDQyxPQUFBLENBQUFDLFlBQUEsR0FBQUEsWUFBQTtBQUVGLE1BQU1HLFlBQVksR0FBRyxNQUFBQSxDQUFPZCxTQUFTLEVBQUVZLFFBQVEsRUFBRVYsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLElBQUksS0FBSztFQUN0RSxNQUFNQyxhQUFJLENBQUNVLEdBQUcsQ0FBQ2IsTUFBTSxFQUFFQyxJQUFJLEVBQUVILFNBQVMsRUFBRVksUUFBUSxFQUFFUixJQUFJLENBQUNJLE9BQU8sQ0FBQztFQUMvRCxPQUFPLElBQUk7QUFDYixDQUFDO0FBQUNFLE9BQUEsQ0FBQUksWUFBQSxHQUFBQSxZQUFBIiwiaWdub3JlTGlzdCI6W119
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY3JlYXRlT2JqZWN0IiwiY2xhc3NOYW1lIiwiZmllbGRzIiwiY29uZmlnIiwiYXV0aCIsImluZm8iLCJyZXN0IiwiY3JlYXRlIiwiY2xpZW50U0RLIiwiY29udGV4dCIsInJlc3BvbnNlIiwiZXhwb3J0cyIsInVwZGF0ZU9iamVjdCIsIm9iamVjdElkIiwidXBkYXRlIiwiZGVsZXRlT2JqZWN0IiwiZGVsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvaGVscGVycy9vYmplY3RzTXV0YXRpb25zLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZXN0IGZyb20gJy4uLy4uL3Jlc3QnO1xuXG5jb25zdCBjcmVhdGVPYmplY3QgPSBhc3luYyAoY2xhc3NOYW1lLCBmaWVsZHMsIGNvbmZpZywgYXV0aCwgaW5mbykgPT4ge1xuICBpZiAoIWZpZWxkcykge1xuICAgIGZpZWxkcyA9IHt9O1xuICB9XG5cbiAgcmV0dXJuIChhd2FpdCByZXN0LmNyZWF0ZShjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgZmllbGRzLCBpbmZvLmNsaWVudFNESywgaW5mby5jb250ZXh0KSlcbiAgICAucmVzcG9uc2U7XG59O1xuXG5jb25zdCB1cGRhdGVPYmplY3QgPSBhc3luYyAoY2xhc3NOYW1lLCBvYmplY3RJZCwgZmllbGRzLCBjb25maWcsIGF1dGgsIGluZm8pID0+IHtcbiAgaWYgKCFmaWVsZHMpIHtcbiAgICBmaWVsZHMgPSB7fTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgYXdhaXQgcmVzdC51cGRhdGUoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHsgb2JqZWN0SWQgfSwgZmllbGRzLCBpbmZvLmNsaWVudFNESywgaW5mby5jb250ZXh0KVxuICApLnJlc3BvbnNlO1xufTtcblxuY29uc3QgZGVsZXRlT2JqZWN0ID0gYXN5bmMgKGNsYXNzTmFtZSwgb2JqZWN0SWQsIGNvbmZpZywgYXV0aCwgaW5mbykgPT4ge1xuICBhd2FpdCByZXN0LmRlbChjb25maWcsIGF1dGgsIGNsYXNzTmFtZSwgb2JqZWN0SWQsIGluZm8uY29udGV4dCk7XG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlT2JqZWN0LCB1cGRhdGVPYmplY3QsIGRlbGV0ZU9iamVjdCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBOEIsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFOUIsTUFBTUcsWUFBWSxHQUFHLE1BQUFBLENBQU9DLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLElBQUksRUFBRUMsSUFBSSxLQUFLO0VBQ3BFLElBQUksQ0FBQ0gsTUFBTSxFQUFFO0lBQ1hBLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDYjtFQUVBLE9BQU8sQ0FBQyxNQUFNSSxhQUFJLENBQUNDLE1BQU0sQ0FBQ0osTUFBTSxFQUFFQyxJQUFJLEVBQUVILFNBQVMsRUFBRUMsTUFBTSxFQUFFRyxJQUFJLENBQUNHLFNBQVMsRUFBRUgsSUFBSSxDQUFDSSxPQUFPLENBQUMsRUFDckZDLFFBQVE7QUFDYixDQUFDO0FBQUNDLE9BQUEsQ0FBQVgsWUFBQSxHQUFBQSxZQUFBO0FBRUYsTUFBTVksWUFBWSxHQUFHLE1BQUFBLENBQU9YLFNBQVMsRUFBRVksUUFBUSxFQUFFWCxNQUFNLEVBQUVDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEtBQUs7RUFDOUUsSUFBSSxDQUFDSCxNQUFNLEVBQUU7SUFDWEEsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNiO0VBRUEsT0FBTyxDQUNMLE1BQU1JLGFBQUksQ0FBQ1EsTUFBTSxDQUFDWCxNQUFNLEVBQUVDLElBQUksRUFBRUgsU0FBUyxFQUFFO0lBQUVZO0VBQVMsQ0FBQyxFQUFFWCxNQUFNLEVBQUVHLElBQUksQ0FBQ0csU0FBUyxFQUFFSCxJQUFJLENBQUNJLE9BQU8sQ0FBQyxFQUM5RkMsUUFBUTtBQUNaLENBQUM7QUFBQ0MsT0FBQSxDQUFBQyxZQUFBLEdBQUFBLFlBQUE7QUFFRixNQUFNRyxZQUFZLEdBQUcsTUFBQUEsQ0FBT2QsU0FBUyxFQUFFWSxRQUFRLEVBQUVWLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxJQUFJLEtBQUs7RUFDdEUsTUFBTUMsYUFBSSxDQUFDVSxHQUFHLENBQUNiLE1BQU0sRUFBRUMsSUFBSSxFQUFFSCxTQUFTLEVBQUVZLFFBQVEsRUFBRVIsSUFBSSxDQUFDSSxPQUFPLENBQUM7RUFDL0QsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUFDRSxPQUFBLENBQUFJLFlBQUEsR0FBQUEsWUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -8,7 +8,7 @@ var _node = _interopRequireDefault(require("parse/node"));
8
8
  var _graphqlRelay = require("graphql-relay");
9
9
  var _rest = _interopRequireDefault(require("../../rest"));
10
10
  var _query = require("../transformers/query");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
12
  // Eslint/Prettier conflict
13
13
  /* eslint-disable*/
14
14
  const needToGetAllKeys = (fields, keys, parseClasses) => keys ? keys.split(',').some(keyName => {
@@ -242,4 +242,4 @@ const calculateSkipAndLimit = (skipInput, first, after, last, before, maxLimit)
242
242
  };
243
243
  };
244
244
  exports.calculateSkipAndLimit = calculateSkipAndLimit;
245
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxSZWxheSIsIl9yZXN0IiwiX3F1ZXJ5Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJuZWVkVG9HZXRBbGxLZXlzIiwiZmllbGRzIiwia2V5cyIsInBhcnNlQ2xhc3NlcyIsInNwbGl0Iiwic29tZSIsImtleU5hbWUiLCJrZXkiLCJ0eXBlIiwic3ViQ2xhc3MiLCJ0YXJnZXRDbGFzcyIsImV4cG9ydHMiLCJnZXRPYmplY3QiLCJjbGFzc05hbWUiLCJvYmplY3RJZCIsImluY2x1ZGUiLCJyZWFkUHJlZmVyZW5jZSIsImluY2x1ZGVSZWFkUHJlZmVyZW5jZSIsImNvbmZpZyIsImF1dGgiLCJpbmZvIiwib3B0aW9ucyIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXNwb25zZSIsInJlc3QiLCJnZXQiLCJjbGllbnRTREsiLCJjb250ZXh0IiwicmVzdWx0cyIsImxlbmd0aCIsIlBhcnNlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwib2JqZWN0Iiwic2Vzc2lvblRva2VuIiwiZmluZE9iamVjdHMiLCJ3aGVyZSIsIm9yZGVyIiwic2tpcElucHV0IiwiZmlyc3QiLCJhZnRlciIsImxhc3QiLCJiZWZvcmUiLCJpbmNsdWRlQWxsIiwic3VicXVlcnlSZWFkUHJlZmVyZW5jZSIsInNlbGVjdGVkRmllbGRzIiwidHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UiLCJza2lwQW5kTGltaXRDYWxjdWxhdGlvbiIsImNhbGN1bGF0ZVNraXBBbmRMaW1pdCIsIm1heExpbWl0Iiwic2tpcCIsImxpbWl0IiwibmVlZFRvUHJlQ291bnQiLCJwcmVDb3VudCIsInVuZGVmaW5lZCIsInByZUNvdW50T3B0aW9ucyIsImNvdW50IiwiT2JqZWN0IiwiZmluZCIsImZpZWxkIiwic3RhcnRzV2l0aCIsImluY2x1ZGVzIiwiZmluZFJlc3VsdCIsImVkZ2VzIiwicGFnZUluZm8iLCJtYXAiLCJyZXN1bHQiLCJpbmRleCIsImN1cnNvciIsIm9mZnNldFRvQ3Vyc29yIiwibm9kZSIsImhhc1ByZXZpb3VzUGFnZSIsInN0YXJ0Q3Vyc29yIiwiZW5kQ3Vyc29yIiwiaGFzTmV4dFBhZ2UiLCJJTlZBTElEX1FVRVJZIiwiY3Vyc29yVG9PZmZzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC9oZWxwZXJzL29iamVjdHNRdWVyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCB7IG9mZnNldFRvQ3Vyc29yLCBjdXJzb3JUb09mZnNldCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi4vLi4vcmVzdCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZSB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy9xdWVyeSc7XG5cbi8vIEVzbGludC9QcmV0dGllciBjb25mbGljdFxuLyogZXNsaW50LWRpc2FibGUqL1xuY29uc3QgbmVlZFRvR2V0QWxsS2V5cyA9IChmaWVsZHMsIGtleXMsIHBhcnNlQ2xhc3NlcykgPT5cbiAga2V5c1xuICAgID8ga2V5cy5zcGxpdCgnLCcpLnNvbWUoa2V5TmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKGZpZWxkc1trZXlbMF1dKSB7XG4gICAgICAgICAgaWYgKGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdSZWxhdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBpZiAoZmllbGRzW2tleVswXV0udHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJDbGFzcyA9IHBhcnNlQ2xhc3Nlc1tmaWVsZHNba2V5WzBdXS50YXJnZXRDbGFzc107XG4gICAgICAgICAgICBpZiAoc3ViQ2xhc3MgJiYgc3ViQ2xhc3MuZmllbGRzW2tleVsxXV0pIHtcbiAgICAgICAgICAgICAgLy8gQ3VycmVudCBzdWIga2V5IGlzIG5vdCBjdXN0b21cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAha2V5WzFdIHx8XG4gICAgICAgICAgICBmaWVsZHNba2V5WzBdXS50eXBlID09PSAnQXJyYXknIHx8XG4gICAgICAgICAgICBmaWVsZHNba2V5WzBdXS50eXBlID09PSAnT2JqZWN0J1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gY3VycmVudCBrZXkgaXMgbm90IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBLZXkgbm90IGZvdW5kIGludG8gUGFyc2UgU2NoZW1hIHNvIGl0J3MgY3VzdG9tXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICA6IHRydWU7XG4vKiBlc2xpbnQtZW5hYmxlKi9cblxuY29uc3QgZ2V0T2JqZWN0ID0gYXN5bmMgKFxuICBjbGFzc05hbWUsXG4gIG9iamVjdElkLFxuICBrZXlzLFxuICBpbmNsdWRlLFxuICByZWFkUHJlZmVyZW5jZSxcbiAgaW5jbHVkZVJlYWRQcmVmZXJlbmNlLFxuICBjb25maWcsXG4gIGF1dGgsXG4gIGluZm8sXG4gIHBhcnNlQ2xhc3Nlc1xuKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB7fTtcbiAgdHJ5IHtcbiAgICBpZiAoIW5lZWRUb0dldEFsbEtleXMocGFyc2VDbGFzc2VzW2NsYXNzTmFtZV0uZmllbGRzLCBrZXlzLCBwYXJzZUNsYXNzZXMpKSB7XG4gICAgICBvcHRpb25zLmtleXMgPSBrZXlzO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH1cbiAgaWYgKGluY2x1ZGUpIHtcbiAgICBvcHRpb25zLmluY2x1ZGUgPSBpbmNsdWRlO1xuICAgIGlmIChpbmNsdWRlUmVhZFByZWZlcmVuY2UpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZVJlYWRQcmVmZXJlbmNlID0gaW5jbHVkZVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cbiAgfVxuICBpZiAocmVhZFByZWZlcmVuY2UpIHtcbiAgICBvcHRpb25zLnJlYWRQcmVmZXJlbmNlID0gcmVhZFByZWZlcmVuY2U7XG4gIH1cblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlc3QuZ2V0KFxuICAgIGNvbmZpZyxcbiAgICBhdXRoLFxuICAgIGNsYXNzTmFtZSxcbiAgICBvYmplY3RJZCxcbiAgICBvcHRpb25zLFxuICAgIGluZm8uY2xpZW50U0RLLFxuICAgIGluZm8uY29udGV4dFxuICApO1xuXG4gIGlmICghcmVzcG9uc2UucmVzdWx0cyB8fCByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kLicpO1xuICB9XG5cbiAgY29uc3Qgb2JqZWN0ID0gcmVzcG9uc2UucmVzdWx0c1swXTtcbiAgaWYgKGNsYXNzTmFtZSA9PT0gJ19Vc2VyJykge1xuICAgIGRlbGV0ZSBvYmplY3Quc2Vzc2lvblRva2VuO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5jb25zdCBmaW5kT2JqZWN0cyA9IGFzeW5jIChcbiAgY2xhc3NOYW1lLFxuICB3aGVyZSxcbiAgb3JkZXIsXG4gIHNraXBJbnB1dCxcbiAgZmlyc3QsXG4gIGFmdGVyLFxuICBsYXN0LFxuICBiZWZvcmUsXG4gIGtleXMsXG4gIGluY2x1ZGUsXG4gIGluY2x1ZGVBbGwsXG4gIHJlYWRQcmVmZXJlbmNlLFxuICBpbmNsdWRlUmVhZFByZWZlcmVuY2UsXG4gIHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2UsXG4gIGNvbmZpZyxcbiAgYXV0aCxcbiAgaW5mbyxcbiAgc2VsZWN0ZWRGaWVsZHMsXG4gIHBhcnNlQ2xhc3Nlc1xuKSA9PiB7XG4gIGlmICghd2hlcmUpIHtcbiAgICB3aGVyZSA9IHt9O1xuICB9XG4gIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKHdoZXJlLCBjbGFzc05hbWUsIHBhcnNlQ2xhc3Nlcyk7XG4gIGNvbnN0IHNraXBBbmRMaW1pdENhbGN1bGF0aW9uID0gY2FsY3VsYXRlU2tpcEFuZExpbWl0KFxuICAgIHNraXBJbnB1dCxcbiAgICBmaXJzdCxcbiAgICBhZnRlcixcbiAgICBsYXN0LFxuICAgIGJlZm9yZSxcbiAgICBjb25maWcubWF4TGltaXRcbiAgKTtcbiAgbGV0IHsgc2tpcCB9ID0gc2tpcEFuZExpbWl0Q2FsY3VsYXRpb247XG4gIGNvbnN0IHsgbGltaXQsIG5lZWRUb1ByZUNvdW50IH0gPSBza2lwQW5kTGltaXRDYWxjdWxhdGlvbjtcbiAgbGV0IHByZUNvdW50ID0gdW5kZWZpbmVkO1xuICBpZiAobmVlZFRvUHJlQ291bnQpIHtcbiAgICBjb25zdCBwcmVDb3VudE9wdGlvbnMgPSB7XG4gICAgICBsaW1pdDogMCxcbiAgICAgIGNvdW50OiB0cnVlLFxuICAgIH07XG4gICAgaWYgKHJlYWRQcmVmZXJlbmNlKSB7XG4gICAgICBwcmVDb3VudE9wdGlvbnMucmVhZFByZWZlcmVuY2UgPSByZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHdoZXJlKS5sZW5ndGggPiAwICYmIHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2UpIHtcbiAgICAgIHByZUNvdW50T3B0aW9ucy5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID0gc3VicXVlcnlSZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgcHJlQ291bnQgPSAoXG4gICAgICBhd2FpdCByZXN0LmZpbmQoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHdoZXJlLCBwcmVDb3VudE9wdGlvbnMsIGluZm8uY2xpZW50U0RLLCBpbmZvLmNvbnRleHQpXG4gICAgKS5jb3VudDtcbiAgICBpZiAoKHNraXAgfHwgMCkgKyBsaW1pdCA8IHByZUNvdW50KSB7XG4gICAgICBza2lwID0gcHJlQ291bnQgLSBsaW1pdDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0ge307XG5cbiAgaWYgKHNlbGVjdGVkRmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuc3RhcnRzV2l0aCgnZWRnZXMuJykgfHwgZmllbGQuc3RhcnRzV2l0aCgncGFnZUluZm8uJykpKSB7XG4gICAgaWYgKGxpbWl0IHx8IGxpbWl0ID09PSAwKSB7XG4gICAgICBvcHRpb25zLmxpbWl0ID0gbGltaXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSAxMDA7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSAwKSB7XG4gICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgb3B0aW9ucy5vcmRlciA9IG9yZGVyO1xuICAgICAgfVxuICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgb3B0aW9ucy5za2lwID0gc2tpcDtcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWcubWF4TGltaXQgJiYgb3B0aW9ucy5saW1pdCA+IGNvbmZpZy5tYXhMaW1pdCkge1xuICAgICAgICAvLyBTaWxlbnRseSByZXBsYWNlIHRoZSBsaW1pdCBvbiB0aGUgcXVlcnkgd2l0aCB0aGUgbWF4IGNvbmZpZ3VyZWRcbiAgICAgICAgb3B0aW9ucy5saW1pdCA9IGNvbmZpZy5tYXhMaW1pdDtcbiAgICAgIH1cbiAgICAgIGlmICghbmVlZFRvR2V0QWxsS2V5cyhwYXJzZUNsYXNzZXNbY2xhc3NOYW1lXS5maWVsZHMsIGtleXMsIHBhcnNlQ2xhc3NlcykpIHtcbiAgICAgICAgb3B0aW9ucy5rZXlzID0ga2V5cztcbiAgICAgIH1cbiAgICAgIGlmIChpbmNsdWRlQWxsID09PSB0cnVlKSB7XG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZUFsbCA9IGluY2x1ZGVBbGw7XG4gICAgICB9XG4gICAgICBpZiAoIW9wdGlvbnMuaW5jbHVkZUFsbCAmJiBpbmNsdWRlKSB7XG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZSA9IGluY2x1ZGU7XG4gICAgICB9XG4gICAgICBpZiAoKG9wdGlvbnMuaW5jbHVkZUFsbCB8fCBvcHRpb25zLmluY2x1ZGUpICYmIGluY2x1ZGVSZWFkUHJlZmVyZW5jZSkge1xuICAgICAgICBvcHRpb25zLmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9IGluY2x1ZGVSZWFkUHJlZmVyZW5jZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucy5saW1pdCA9IDA7XG4gIH1cblxuICBpZiAoXG4gICAgKHNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKCdjb3VudCcpIHx8XG4gICAgICBzZWxlY3RlZEZpZWxkcy5pbmNsdWRlcygncGFnZUluZm8uaGFzUHJldmlvdXNQYWdlJykgfHxcbiAgICAgIHNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKCdwYWdlSW5mby5oYXNOZXh0UGFnZScpKSAmJlxuICAgICFuZWVkVG9QcmVDb3VudFxuICApIHtcbiAgICBvcHRpb25zLmNvdW50ID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChyZWFkUHJlZmVyZW5jZSkge1xuICAgIG9wdGlvbnMucmVhZFByZWZlcmVuY2UgPSByZWFkUHJlZmVyZW5jZTtcbiAgfVxuICBpZiAoT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDAgJiYgc3VicXVlcnlSZWFkUHJlZmVyZW5jZSkge1xuICAgIG9wdGlvbnMuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9IHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2U7XG4gIH1cblxuICBsZXQgcmVzdWx0cywgY291bnQ7XG4gIGlmIChvcHRpb25zLmNvdW50IHx8ICFvcHRpb25zLmxpbWl0IHx8IChvcHRpb25zLmxpbWl0ICYmIG9wdGlvbnMubGltaXQgPiAwKSkge1xuICAgIGNvbnN0IGZpbmRSZXN1bHQgPSBhd2FpdCByZXN0LmZpbmQoXG4gICAgICBjb25maWcsXG4gICAgICBhdXRoLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgd2hlcmUsXG4gICAgICBvcHRpb25zLFxuICAgICAgaW5mby5jbGllbnRTREssXG4gICAgICBpbmZvLmNvbnRleHRcbiAgICApO1xuICAgIHJlc3VsdHMgPSBmaW5kUmVzdWx0LnJlc3VsdHM7XG4gICAgY291bnQgPSBmaW5kUmVzdWx0LmNvdW50O1xuICB9XG5cbiAgbGV0IGVkZ2VzID0gbnVsbDtcbiAgbGV0IHBhZ2VJbmZvID0gbnVsbDtcbiAgaWYgKHJlc3VsdHMpIHtcbiAgICBlZGdlcyA9IHJlc3VsdHMubWFwKChyZXN1bHQsIGluZGV4KSA9PiAoe1xuICAgICAgY3Vyc29yOiBvZmZzZXRUb0N1cnNvcigoc2tpcCB8fCAwKSArIGluZGV4KSxcbiAgICAgIG5vZGU6IHJlc3VsdCxcbiAgICB9KSk7XG5cbiAgICBwYWdlSW5mbyA9IHtcbiAgICAgIGhhc1ByZXZpb3VzUGFnZTpcbiAgICAgICAgKChwcmVDb3VudCAmJiBwcmVDb3VudCA+IDApIHx8IChjb3VudCAmJiBjb3VudCA+IDApKSAmJiBza2lwICE9PSB1bmRlZmluZWQgJiYgc2tpcCA+IDAsXG4gICAgICBzdGFydEN1cnNvcjogb2Zmc2V0VG9DdXJzb3Ioc2tpcCB8fCAwKSxcbiAgICAgIGVuZEN1cnNvcjogb2Zmc2V0VG9DdXJzb3IoKHNraXAgfHwgMCkgKyAocmVzdWx0cy5sZW5ndGggfHwgMSkgLSAxKSxcbiAgICAgIGhhc05leHRQYWdlOiAocHJlQ291bnQgfHwgY291bnQpID4gKHNraXAgfHwgMCkgKyByZXN1bHRzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlZGdlcyxcbiAgICBwYWdlSW5mbyxcbiAgICBjb3VudDogcHJlQ291bnQgfHwgY291bnQsXG4gIH07XG59O1xuXG5jb25zdCBjYWxjdWxhdGVTa2lwQW5kTGltaXQgPSAoc2tpcElucHV0LCBmaXJzdCwgYWZ0ZXIsIGxhc3QsIGJlZm9yZSwgbWF4TGltaXQpID0+IHtcbiAgbGV0IHNraXAgPSB1bmRlZmluZWQ7XG4gIGxldCBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgbGV0IG5lZWRUb1ByZUNvdW50ID0gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBza2lwIGlucHV0XG4gIGlmIChza2lwSW5wdXQgfHwgc2tpcElucHV0ID09PSAwKSB7XG4gICAgaWYgKHNraXBJbnB1dCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1FVRVJZLCAnU2tpcCBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgc2tpcCA9IHNraXBJbnB1dDtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlcyB0aGUgYWZ0ZXIgcGFyYW1cbiAgaWYgKGFmdGVyKSB7XG4gICAgYWZ0ZXIgPSBjdXJzb3JUb09mZnNldChhZnRlcik7XG4gICAgaWYgKCghYWZ0ZXIgJiYgYWZ0ZXIgIT09IDApIHx8IGFmdGVyIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdBZnRlciBpcyBub3QgYSB2YWxpZCBjdXJzb3InKTtcbiAgICB9XG5cbiAgICAvLyBJZiBza2lwIGFuZCBhZnRlciBhcmUgcGFzc2VkLCBhIG5ldyBza2lwIGlzIGNhbGN1bGF0ZWQgYnkgYWRkaW5nIHRoZW1cbiAgICBza2lwID0gKHNraXAgfHwgMCkgKyAoYWZ0ZXIgKyAxKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlcyB0aGUgZmlyc3QgcGFyYW1cbiAgaWYgKGZpcnN0IHx8IGZpcnN0ID09PSAwKSB7XG4gICAgaWYgKGZpcnN0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdGaXJzdCBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZmlyc3QgcGFyYW0gaXMgdHJhbnNsYXRlZCB0byB0aGUgbGltaXQgcGFyYW0gb2YgdGhlIFBhcnNlIGxlZ2FjeSBBUElcbiAgICBsaW1pdCA9IGZpcnN0O1xuICB9XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBiZWZvcmUgcGFyYW1cbiAgaWYgKGJlZm9yZSB8fCBiZWZvcmUgPT09IDApIHtcbiAgICAvLyBUaGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgY3Vyc29yIHRvIHRoZSBpbmRleCBvZiB0aGUgb2JqZWN0XG4gICAgYmVmb3JlID0gY3Vyc29yVG9PZmZzZXQoYmVmb3JlKTtcbiAgICBpZiAoKCFiZWZvcmUgJiYgYmVmb3JlICE9PSAwKSB8fCBiZWZvcmUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0JlZm9yZSBpcyBub3QgYSB2YWxpZCBjdXJzb3InKTtcbiAgICB9XG5cbiAgICBpZiAoKHNraXAgfHwgMCkgPj0gYmVmb3JlKSB7XG4gICAgICAvLyBJZiB0aGUgYmVmb3JlIGluZGV4IGlzIGxlc3MgdGhhbiB0aGUgc2tpcCwgbm8gb2JqZWN0cyB3aWxsIGJlIHJldHVybmVkXG4gICAgICBsaW1pdCA9IDA7XG4gICAgfSBlbHNlIGlmICgoIWxpbWl0ICYmIGxpbWl0ICE9PSAwKSB8fCAoc2tpcCB8fCAwKSArIGxpbWl0ID4gYmVmb3JlKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyBsaW1pdCBzZXQsIHRoZSBsaW1pdCBpcyBjYWxjdWxhdGVkLiBPciwgaWYgdGhlIGxpbWl0IChwbHVzIHNraXApIGlzIGJpZ2dlciB0aGFuIHRoZSBiZWZvcmUgaW5kZXgsIHRoZSBuZXcgbGltaXQgaXMgc2V0LlxuICAgICAgbGltaXQgPSBiZWZvcmUgLSAoc2tpcCB8fCAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZXMgdGhlIGxhc3QgcGFyYW1cbiAgaWYgKGxhc3QgfHwgbGFzdCA9PT0gMCkge1xuICAgIGlmIChsYXN0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdMYXN0IHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChsYXN0ID4gbWF4TGltaXQpIHtcbiAgICAgIC8vIExhc3QgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gUGFyc2Ugc2VydmVyIG1heExpbWl0IGNvbmZpZy5cbiAgICAgIGxhc3QgPSBtYXhMaW1pdDtcbiAgICB9XG5cbiAgICBpZiAobGltaXQgfHwgbGltaXQgPT09IDApIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJldmlvdXMgbGltaXQgc2V0LCBpdCBtYXkgYmUgYWRqdXN0ZWRcbiAgICAgIGlmIChsYXN0IDwgbGltaXQpIHtcbiAgICAgICAgLy8gaWYgbGFzdCBpcyBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgbGltaXRcbiAgICAgICAgc2tpcCA9IChza2lwIHx8IDApICsgKGxpbWl0IC0gbGFzdCk7IC8vIFRoZSBza2lwIGlzIGFkanVzdGVkXG4gICAgICAgIGxpbWl0ID0gbGFzdDsgLy8gdGhlIGxpbWl0IGlzIGFkanVzdGVkXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAwKSB7XG4gICAgICAvLyBObyBvYmplY3RzIHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgIGxpbWl0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gcHJldmlvdXMgbGltaXQgc2V0LCB0aGUgbGltaXQgd2lsbCBiZSBlcXVhbCB0byBsYXN0IGFuZCBwcmUgY291bnQgaXMgbmVlZGVkLlxuICAgICAgbGltaXQgPSBsYXN0O1xuICAgICAgbmVlZFRvUHJlQ291bnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHNraXAsXG4gICAgbGltaXQsXG4gICAgbmVlZFRvUHJlQ291bnQsXG4gIH07XG59O1xuXG5leHBvcnQgeyBnZXRPYmplY3QsIGZpbmRPYmplY3RzLCBjYWxjdWxhdGVTa2lwQW5kTGltaXQsIG5lZWRUb0dldEFsbEtleXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQW1FLFNBQUFELHVCQUFBSyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRW5FO0FBQ0E7QUFDQSxNQUFNRyxnQkFBZ0IsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEVBQUVDLFlBQVksS0FDbERELElBQUksR0FDQUEsSUFBSSxDQUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUNDLElBQUksQ0FBQ0MsT0FBTyxJQUFJO0VBQzlCLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDRixLQUFLLENBQUMsR0FBRyxDQUFDO0VBQzlCLElBQUlILE1BQU0sQ0FBQ00sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDbEIsSUFBSU4sTUFBTSxDQUFDTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxLQUFLLFVBQVUsRUFBRSxPQUFPLEtBQUs7SUFDcEQsSUFBSVAsTUFBTSxDQUFDTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUNyQyxNQUFNQyxRQUFRLEdBQUdOLFlBQVksQ0FBQ0YsTUFBTSxDQUFDTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csV0FBVyxDQUFDO01BQ3pELElBQUlELFFBQVEsSUFBSUEsUUFBUSxDQUFDUixNQUFNLENBQUNNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3ZDO1FBQ0EsT0FBTyxLQUFLO01BQ2Q7SUFDRixDQUFDLE1BQU0sSUFDTCxDQUFDQSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQ1BOLE1BQU0sQ0FBQ00sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUNDLElBQUksS0FBSyxPQUFPLElBQy9CUCxNQUFNLENBQUNNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxJQUFJLEtBQUssUUFBUSxFQUNoQztNQUNBO01BQ0EsT0FBTyxLQUFLO0lBQ2Q7RUFDRjtFQUNBO0VBQ0EsT0FBTyxJQUFJO0FBQ2IsQ0FBQyxDQUFDLEdBQ0YsSUFBSTtBQUNWO0FBQUFHLE9BQUEsQ0FBQVgsZ0JBQUEsR0FBQUEsZ0JBQUE7QUFFQSxNQUFNWSxTQUFTLEdBQUcsTUFBQUEsQ0FDaEJDLFNBQVMsRUFDVEMsUUFBUSxFQUNSWixJQUFJLEVBQ0phLE9BQU8sRUFDUEMsY0FBYyxFQUNkQyxxQkFBcUIsRUFDckJDLE1BQU0sRUFDTkMsSUFBSSxFQUNKQyxJQUFJLEVBQ0pqQixZQUFZLEtBQ1Q7RUFDSCxNQUFNa0IsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUNsQixJQUFJO0lBQ0YsSUFBSSxDQUFDckIsZ0JBQWdCLENBQUNHLFlBQVksQ0FBQ1UsU0FBUyxDQUFDLENBQUNaLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxZQUFZLENBQUMsRUFBRTtNQUN6RWtCLE9BQU8sQ0FBQ25CLElBQUksR0FBR0EsSUFBSTtJQUNyQjtFQUNGLENBQUMsQ0FBQyxPQUFPb0IsQ0FBQyxFQUFFO0lBQ1ZDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDRixDQUFDLENBQUM7RUFDbEI7RUFDQSxJQUFJUCxPQUFPLEVBQUU7SUFDWE0sT0FBTyxDQUFDTixPQUFPLEdBQUdBLE9BQU87SUFDekIsSUFBSUUscUJBQXFCLEVBQUU7TUFDekJJLE9BQU8sQ0FBQ0oscUJBQXFCLEdBQUdBLHFCQUFxQjtJQUN2RDtFQUNGO0VBQ0EsSUFBSUQsY0FBYyxFQUFFO0lBQ2xCSyxPQUFPLENBQUNMLGNBQWMsR0FBR0EsY0FBYztFQUN6QztFQUVBLE1BQU1TLFFBQVEsR0FBRyxNQUFNQyxhQUFJLENBQUNDLEdBQUcsQ0FDN0JULE1BQU0sRUFDTkMsSUFBSSxFQUNKTixTQUFTLEVBQ1RDLFFBQVEsRUFDUk8sT0FBTyxFQUNQRCxJQUFJLENBQUNRLFNBQVMsRUFDZFIsSUFBSSxDQUFDUyxPQUNQLENBQUM7RUFFRCxJQUFJLENBQUNKLFFBQVEsQ0FBQ0ssT0FBTyxJQUFJTCxRQUFRLENBQUNLLE9BQU8sQ0FBQ0MsTUFBTSxJQUFJLENBQUMsRUFBRTtJQUNyRCxNQUFNLElBQUlDLGFBQUssQ0FBQ0MsS0FBSyxDQUFDRCxhQUFLLENBQUNDLEtBQUssQ0FBQ0MsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUM7RUFDMUU7RUFFQSxNQUFNQyxNQUFNLEdBQUdWLFFBQVEsQ0FBQ0ssT0FBTyxDQUFDLENBQUMsQ0FBQztFQUNsQyxJQUFJakIsU0FBUyxLQUFLLE9BQU8sRUFBRTtJQUN6QixPQUFPc0IsTUFBTSxDQUFDQyxZQUFZO0VBQzVCO0VBQ0EsT0FBT0QsTUFBTTtBQUNmLENBQUM7QUFBQ3hCLE9BQUEsQ0FBQUMsU0FBQSxHQUFBQSxTQUFBO0FBRUYsTUFBTXlCLFdBQVcsR0FBRyxNQUFBQSxDQUNsQnhCLFNBQVMsRUFDVHlCLEtBQUssRUFDTEMsS0FBSyxFQUNMQyxTQUFTLEVBQ1RDLEtBQUssRUFDTEMsS0FBSyxFQUNMQyxJQUFJLEVBQ0pDLE1BQU0sRUFDTjFDLElBQUksRUFDSmEsT0FBTyxFQUNQOEIsVUFBVSxFQUNWN0IsY0FBYyxFQUNkQyxxQkFBcUIsRUFDckI2QixzQkFBc0IsRUFDdEI1QixNQUFNLEVBQ05DLElBQUksRUFDSkMsSUFBSSxFQUNKMkIsY0FBYyxFQUNkNUMsWUFBWSxLQUNUO0VBQ0gsSUFBSSxDQUFDbUMsS0FBSyxFQUFFO0lBQ1ZBLEtBQUssR0FBRyxDQUFDLENBQUM7RUFDWjtFQUNBLElBQUFVLGlDQUEwQixFQUFDVixLQUFLLEVBQUV6QixTQUFTLEVBQUVWLFlBQVksQ0FBQztFQUMxRCxNQUFNOEMsdUJBQXVCLEdBQUdDLHFCQUFxQixDQUNuRFYsU0FBUyxFQUNUQyxLQUFLLEVBQ0xDLEtBQUssRUFDTEMsSUFBSSxFQUNKQyxNQUFNLEVBQ04xQixNQUFNLENBQUNpQyxRQUNULENBQUM7RUFDRCxJQUFJO0lBQUVDO0VBQUssQ0FBQyxHQUFHSCx1QkFBdUI7RUFDdEMsTUFBTTtJQUFFSSxLQUFLO0lBQUVDO0VBQWUsQ0FBQyxHQUFHTCx1QkFBdUI7RUFDekQsSUFBSU0sUUFBUSxHQUFHQyxTQUFTO0VBQ3hCLElBQUlGLGNBQWMsRUFBRTtJQUNsQixNQUFNRyxlQUFlLEdBQUc7TUFDdEJKLEtBQUssRUFBRSxDQUFDO01BQ1JLLEtBQUssRUFBRTtJQUNULENBQUM7SUFDRCxJQUFJMUMsY0FBYyxFQUFFO01BQ2xCeUMsZUFBZSxDQUFDekMsY0FBYyxHQUFHQSxjQUFjO0lBQ2pEO0lBQ0EsSUFBSTJDLE1BQU0sQ0FBQ3pELElBQUksQ0FBQ29DLEtBQUssQ0FBQyxDQUFDUCxNQUFNLEdBQUcsQ0FBQyxJQUFJZSxzQkFBc0IsRUFBRTtNQUMzRFcsZUFBZSxDQUFDWCxzQkFBc0IsR0FBR0Esc0JBQXNCO0lBQ2pFO0lBQ0FTLFFBQVEsR0FBRyxDQUNULE1BQU03QixhQUFJLENBQUNrQyxJQUFJLENBQUMxQyxNQUFNLEVBQUVDLElBQUksRUFBRU4sU0FBUyxFQUFFeUIsS0FBSyxFQUFFbUIsZUFBZSxFQUFFckMsSUFBSSxDQUFDUSxTQUFTLEVBQUVSLElBQUksQ0FBQ1MsT0FBTyxDQUFDLEVBQzlGNkIsS0FBSztJQUNQLElBQUksQ0FBQ04sSUFBSSxJQUFJLENBQUMsSUFBSUMsS0FBSyxHQUFHRSxRQUFRLEVBQUU7TUFDbENILElBQUksR0FBR0csUUFBUSxHQUFHRixLQUFLO0lBQ3pCO0VBQ0Y7RUFFQSxNQUFNaEMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUVsQixJQUFJMEIsY0FBYyxDQUFDYSxJQUFJLENBQUNDLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUlELEtBQUssQ0FBQ0MsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDN0YsSUFBSVQsS0FBSyxJQUFJQSxLQUFLLEtBQUssQ0FBQyxFQUFFO01BQ3hCaEMsT0FBTyxDQUFDZ0MsS0FBSyxHQUFHQSxLQUFLO0lBQ3ZCLENBQUMsTUFBTTtNQUNMaEMsT0FBTyxDQUFDZ0MsS0FBSyxHQUFHLEdBQUc7SUFDckI7SUFDQSxJQUFJaEMsT0FBTyxDQUFDZ0MsS0FBSyxLQUFLLENBQUMsRUFBRTtNQUN2QixJQUFJZCxLQUFLLEVBQUU7UUFDVGxCLE9BQU8sQ0FBQ2tCLEtBQUssR0FBR0EsS0FBSztNQUN2QjtNQUNBLElBQUlhLElBQUksRUFBRTtRQUNSL0IsT0FBTyxDQUFDK0IsSUFBSSxHQUFHQSxJQUFJO01BQ3JCO01BQ0EsSUFBSWxDLE1BQU0sQ0FBQ2lDLFFBQVEsSUFBSTlCLE9BQU8sQ0FBQ2dDLEtBQUssR0FBR25DLE1BQU0sQ0FBQ2lDLFFBQVEsRUFBRTtRQUN0RDtRQUNBOUIsT0FBTyxDQUFDZ0MsS0FBSyxHQUFHbkMsTUFBTSxDQUFDaUMsUUFBUTtNQUNqQztNQUNBLElBQUksQ0FBQ25ELGdCQUFnQixDQUFDRyxZQUFZLENBQUNVLFNBQVMsQ0FBQyxDQUFDWixNQUFNLEVBQUVDLElBQUksRUFBRUMsWUFBWSxDQUFDLEVBQUU7UUFDekVrQixPQUFPLENBQUNuQixJQUFJLEdBQUdBLElBQUk7TUFDckI7TUFDQSxJQUFJMkMsVUFBVSxLQUFLLElBQUksRUFBRTtRQUN2QnhCLE9BQU8sQ0FBQ3dCLFVBQVUsR0FBR0EsVUFBVTtNQUNqQztNQUNBLElBQUksQ0FBQ3hCLE9BQU8sQ0FBQ3dCLFVBQVUsSUFBSTlCLE9BQU8sRUFBRTtRQUNsQ00sT0FBTyxDQUFDTixPQUFPLEdBQUdBLE9BQU87TUFDM0I7TUFDQSxJQUFJLENBQUNNLE9BQU8sQ0FBQ3dCLFVBQVUsSUFBSXhCLE9BQU8sQ0FBQ04sT0FBTyxLQUFLRSxxQkFBcUIsRUFBRTtRQUNwRUksT0FBTyxDQUFDSixxQkFBcUIsR0FBR0EscUJBQXFCO01BQ3ZEO0lBQ0Y7RUFDRixDQUFDLE1BQU07SUFDTEksT0FBTyxDQUFDZ0MsS0FBSyxHQUFHLENBQUM7RUFDbkI7RUFFQSxJQUNFLENBQUNOLGNBQWMsQ0FBQ2dCLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFDL0JoQixjQUFjLENBQUNnQixRQUFRLENBQUMsMEJBQTBCLENBQUMsSUFDbkRoQixjQUFjLENBQUNnQixRQUFRLENBQUMsc0JBQXNCLENBQUMsS0FDakQsQ0FBQ1QsY0FBYyxFQUNmO0lBQ0FqQyxPQUFPLENBQUNxQyxLQUFLLEdBQUcsSUFBSTtFQUN0QjtFQUVBLElBQUkxQyxjQUFjLEVBQUU7SUFDbEJLLE9BQU8sQ0FBQ0wsY0FBYyxHQUFHQSxjQUFjO0VBQ3pDO0VBQ0EsSUFBSTJDLE1BQU0sQ0FBQ3pELElBQUksQ0FBQ29DLEtBQUssQ0FBQyxDQUFDUCxNQUFNLEdBQUcsQ0FBQyxJQUFJZSxzQkFBc0IsRUFBRTtJQUMzRHpCLE9BQU8sQ0FBQ3lCLHNCQUFzQixHQUFHQSxzQkFBc0I7RUFDekQ7RUFFQSxJQUFJaEIsT0FBTyxFQUFFNEIsS0FBSztFQUNsQixJQUFJckMsT0FBTyxDQUFDcUMsS0FBSyxJQUFJLENBQUNyQyxPQUFPLENBQUNnQyxLQUFLLElBQUtoQyxPQUFPLENBQUNnQyxLQUFLLElBQUloQyxPQUFPLENBQUNnQyxLQUFLLEdBQUcsQ0FBRSxFQUFFO0lBQzNFLE1BQU1XLFVBQVUsR0FBRyxNQUFNdEMsYUFBSSxDQUFDa0MsSUFBSSxDQUNoQzFDLE1BQU0sRUFDTkMsSUFBSSxFQUNKTixTQUFTLEVBQ1R5QixLQUFLLEVBQ0xqQixPQUFPLEVBQ1BELElBQUksQ0FBQ1EsU0FBUyxFQUNkUixJQUFJLENBQUNTLE9BQ1AsQ0FBQztJQUNEQyxPQUFPLEdBQUdrQyxVQUFVLENBQUNsQyxPQUFPO0lBQzVCNEIsS0FBSyxHQUFHTSxVQUFVLENBQUNOLEtBQUs7RUFDMUI7RUFFQSxJQUFJTyxLQUFLLEdBQUcsSUFBSTtFQUNoQixJQUFJQyxRQUFRLEdBQUcsSUFBSTtFQUNuQixJQUFJcEMsT0FBTyxFQUFFO0lBQ1htQyxLQUFLLEdBQUduQyxPQUFPLENBQUNxQyxHQUFHLENBQUMsQ0FBQ0MsTUFBTSxFQUFFQyxLQUFLLE1BQU07TUFDdENDLE1BQU0sRUFBRSxJQUFBQyw0QkFBYyxFQUFDLENBQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJaUIsS0FBSyxDQUFDO01BQzNDRyxJQUFJLEVBQUVKO0lBQ1IsQ0FBQyxDQUFDLENBQUM7SUFFSEYsUUFBUSxHQUFHO01BQ1RPLGVBQWUsRUFDYixDQUFFbEIsUUFBUSxJQUFJQSxRQUFRLEdBQUcsQ0FBQyxJQUFNRyxLQUFLLElBQUlBLEtBQUssR0FBRyxDQUFFLEtBQUtOLElBQUksS0FBS0ksU0FBUyxJQUFJSixJQUFJLEdBQUcsQ0FBQztNQUN4RnNCLFdBQVcsRUFBRSxJQUFBSCw0QkFBYyxFQUFDbkIsSUFBSSxJQUFJLENBQUMsQ0FBQztNQUN0Q3VCLFNBQVMsRUFBRSxJQUFBSiw0QkFBYyxFQUFDLENBQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLdEIsT0FBTyxDQUFDQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO01BQ2xFNkMsV0FBVyxFQUFFLENBQUNyQixRQUFRLElBQUlHLEtBQUssSUFBSSxDQUFDTixJQUFJLElBQUksQ0FBQyxJQUFJdEIsT0FBTyxDQUFDQztJQUMzRCxDQUFDO0VBQ0g7RUFFQSxPQUFPO0lBQ0xrQyxLQUFLO0lBQ0xDLFFBQVE7SUFDUlIsS0FBSyxFQUFFSCxRQUFRLElBQUlHO0VBQ3JCLENBQUM7QUFDSCxDQUFDO0FBQUMvQyxPQUFBLENBQUEwQixXQUFBLEdBQUFBLFdBQUE7QUFFRixNQUFNYSxxQkFBcUIsR0FBR0EsQ0FBQ1YsU0FBUyxFQUFFQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEVBQUVPLFFBQVEsS0FBSztFQUNqRixJQUFJQyxJQUFJLEdBQUdJLFNBQVM7RUFDcEIsSUFBSUgsS0FBSyxHQUFHRyxTQUFTO0VBQ3JCLElBQUlGLGNBQWMsR0FBRyxLQUFLOztFQUUxQjtFQUNBLElBQUlkLFNBQVMsSUFBSUEsU0FBUyxLQUFLLENBQUMsRUFBRTtJQUNoQyxJQUFJQSxTQUFTLEdBQUcsQ0FBQyxFQUFFO01BQ2pCLE1BQU0sSUFBSVIsYUFBSyxDQUFDQyxLQUFLLENBQUNELGFBQUssQ0FBQ0MsS0FBSyxDQUFDNEMsYUFBYSxFQUFFLGtDQUFrQyxDQUFDO0lBQ3RGO0lBQ0F6QixJQUFJLEdBQUdaLFNBQVM7RUFDbEI7O0VBRUE7RUFDQSxJQUFJRSxLQUFLLEVBQUU7SUFDVEEsS0FBSyxHQUFHLElBQUFvQyw0QkFBYyxFQUFDcEMsS0FBSyxDQUFDO0lBQzdCLElBQUssQ0FBQ0EsS0FBSyxJQUFJQSxLQUFLLEtBQUssQ0FBQyxJQUFLQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO01BQ3hDLE1BQU0sSUFBSVYsYUFBSyxDQUFDQyxLQUFLLENBQUNELGFBQUssQ0FBQ0MsS0FBSyxDQUFDNEMsYUFBYSxFQUFFLDZCQUE2QixDQUFDO0lBQ2pGOztJQUVBO0lBQ0F6QixJQUFJLEdBQUcsQ0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBS1YsS0FBSyxHQUFHLENBQUMsQ0FBQztFQUNsQzs7RUFFQTtFQUNBLElBQUlELEtBQUssSUFBSUEsS0FBSyxLQUFLLENBQUMsRUFBRTtJQUN4QixJQUFJQSxLQUFLLEdBQUcsQ0FBQyxFQUFFO01BQ2IsTUFBTSxJQUFJVCxhQUFLLENBQUNDLEtBQUssQ0FBQ0QsYUFBSyxDQUFDQyxLQUFLLENBQUM0QyxhQUFhLEVBQUUsbUNBQW1DLENBQUM7SUFDdkY7O0lBRUE7SUFDQXhCLEtBQUssR0FBR1osS0FBSztFQUNmOztFQUVBO0VBQ0EsSUFBSUcsTUFBTSxJQUFJQSxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQzFCO0lBQ0FBLE1BQU0sR0FBRyxJQUFBa0MsNEJBQWMsRUFBQ2xDLE1BQU0sQ0FBQztJQUMvQixJQUFLLENBQUNBLE1BQU0sSUFBSUEsTUFBTSxLQUFLLENBQUMsSUFBS0EsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUMzQyxNQUFNLElBQUlaLGFBQUssQ0FBQ0MsS0FBSyxDQUFDRCxhQUFLLENBQUNDLEtBQUssQ0FBQzRDLGFBQWEsRUFBRSw4QkFBOEIsQ0FBQztJQUNsRjtJQUVBLElBQUksQ0FBQ3pCLElBQUksSUFBSSxDQUFDLEtBQUtSLE1BQU0sRUFBRTtNQUN6QjtNQUNBUyxLQUFLLEdBQUcsQ0FBQztJQUNYLENBQUMsTUFBTSxJQUFLLENBQUNBLEtBQUssSUFBSUEsS0FBSyxLQUFLLENBQUMsSUFBSyxDQUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJQyxLQUFLLEdBQUdULE1BQU0sRUFBRTtNQUNsRTtNQUNBUyxLQUFLLEdBQUdULE1BQU0sSUFBSVEsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUM5QjtFQUNGOztFQUVBO0VBQ0EsSUFBSVQsSUFBSSxJQUFJQSxJQUFJLEtBQUssQ0FBQyxFQUFFO0lBQ3RCLElBQUlBLElBQUksR0FBRyxDQUFDLEVBQUU7TUFDWixNQUFNLElBQUlYLGFBQUssQ0FBQ0MsS0FBSyxDQUFDRCxhQUFLLENBQUNDLEtBQUssQ0FBQzRDLGFBQWEsRUFBRSxrQ0FBa0MsQ0FBQztJQUN0RjtJQUVBLElBQUlsQyxJQUFJLEdBQUdRLFFBQVEsRUFBRTtNQUNuQjtNQUNBUixJQUFJLEdBQUdRLFFBQVE7SUFDakI7SUFFQSxJQUFJRSxLQUFLLElBQUlBLEtBQUssS0FBSyxDQUFDLEVBQUU7TUFDeEI7TUFDQSxJQUFJVixJQUFJLEdBQUdVLEtBQUssRUFBRTtRQUNoQjtRQUNBRCxJQUFJLEdBQUcsQ0FBQ0EsSUFBSSxJQUFJLENBQUMsS0FBS0MsS0FBSyxHQUFHVixJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JDVSxLQUFLLEdBQUdWLElBQUksQ0FBQyxDQUFDO01BQ2hCO0lBQ0YsQ0FBQyxNQUFNLElBQUlBLElBQUksS0FBSyxDQUFDLEVBQUU7TUFDckI7TUFDQVUsS0FBSyxHQUFHLENBQUM7SUFDWCxDQUFDLE1BQU07TUFDTDtNQUNBQSxLQUFLLEdBQUdWLElBQUk7TUFDWlcsY0FBYyxHQUFHLElBQUk7SUFDdkI7RUFDRjtFQUNBLE9BQU87SUFDTEYsSUFBSTtJQUNKQyxLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFBQzNDLE9BQUEsQ0FBQXVDLHFCQUFBLEdBQUFBLHFCQUFBIiwiaWdub3JlTGlzdCI6W119
245
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxSZWxheSIsIl9yZXN0IiwiX3F1ZXJ5IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibmVlZFRvR2V0QWxsS2V5cyIsImZpZWxkcyIsImtleXMiLCJwYXJzZUNsYXNzZXMiLCJzcGxpdCIsInNvbWUiLCJrZXlOYW1lIiwia2V5IiwidHlwZSIsInN1YkNsYXNzIiwidGFyZ2V0Q2xhc3MiLCJleHBvcnRzIiwiZ2V0T2JqZWN0IiwiY2xhc3NOYW1lIiwib2JqZWN0SWQiLCJpbmNsdWRlIiwicmVhZFByZWZlcmVuY2UiLCJpbmNsdWRlUmVhZFByZWZlcmVuY2UiLCJjb25maWciLCJhdXRoIiwiaW5mbyIsIm9wdGlvbnMiLCJjb25zb2xlIiwiZXJyb3IiLCJyZXNwb25zZSIsInJlc3QiLCJnZXQiLCJjbGllbnRTREsiLCJjb250ZXh0IiwicmVzdWx0cyIsImxlbmd0aCIsIlBhcnNlIiwiRXJyb3IiLCJPQkpFQ1RfTk9UX0ZPVU5EIiwib2JqZWN0Iiwic2Vzc2lvblRva2VuIiwiZmluZE9iamVjdHMiLCJ3aGVyZSIsIm9yZGVyIiwic2tpcElucHV0IiwiZmlyc3QiLCJhZnRlciIsImxhc3QiLCJiZWZvcmUiLCJpbmNsdWRlQWxsIiwic3VicXVlcnlSZWFkUHJlZmVyZW5jZSIsInNlbGVjdGVkRmllbGRzIiwidHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UiLCJza2lwQW5kTGltaXRDYWxjdWxhdGlvbiIsImNhbGN1bGF0ZVNraXBBbmRMaW1pdCIsIm1heExpbWl0Iiwic2tpcCIsImxpbWl0IiwibmVlZFRvUHJlQ291bnQiLCJwcmVDb3VudCIsInVuZGVmaW5lZCIsInByZUNvdW50T3B0aW9ucyIsImNvdW50IiwiT2JqZWN0IiwiZmluZCIsImZpZWxkIiwic3RhcnRzV2l0aCIsImluY2x1ZGVzIiwiZmluZFJlc3VsdCIsImVkZ2VzIiwicGFnZUluZm8iLCJtYXAiLCJyZXN1bHQiLCJpbmRleCIsImN1cnNvciIsIm9mZnNldFRvQ3Vyc29yIiwibm9kZSIsImhhc1ByZXZpb3VzUGFnZSIsInN0YXJ0Q3Vyc29yIiwiZW5kQ3Vyc29yIiwiaGFzTmV4dFBhZ2UiLCJJTlZBTElEX1FVRVJZIiwiY3Vyc29yVG9PZmZzZXQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC9oZWxwZXJzL29iamVjdHNRdWVyaWVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcbmltcG9ydCB7IG9mZnNldFRvQ3Vyc29yLCBjdXJzb3JUb09mZnNldCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi4vLi4vcmVzdCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1RdWVyeUlucHV0VG9QYXJzZSB9IGZyb20gJy4uL3RyYW5zZm9ybWVycy9xdWVyeSc7XG5cbi8vIEVzbGludC9QcmV0dGllciBjb25mbGljdFxuLyogZXNsaW50LWRpc2FibGUqL1xuY29uc3QgbmVlZFRvR2V0QWxsS2V5cyA9IChmaWVsZHMsIGtleXMsIHBhcnNlQ2xhc3NlcykgPT5cbiAga2V5c1xuICAgID8ga2V5cy5zcGxpdCgnLCcpLnNvbWUoa2V5TmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleU5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKGZpZWxkc1trZXlbMF1dKSB7XG4gICAgICAgICAgaWYgKGZpZWxkc1trZXlbMF1dLnR5cGUgPT09ICdSZWxhdGlvbicpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICBpZiAoZmllbGRzW2tleVswXV0udHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgICAgICAgICBjb25zdCBzdWJDbGFzcyA9IHBhcnNlQ2xhc3Nlc1tmaWVsZHNba2V5WzBdXS50YXJnZXRDbGFzc107XG4gICAgICAgICAgICBpZiAoc3ViQ2xhc3MgJiYgc3ViQ2xhc3MuZmllbGRzW2tleVsxXV0pIHtcbiAgICAgICAgICAgICAgLy8gQ3VycmVudCBzdWIga2V5IGlzIG5vdCBjdXN0b21cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAha2V5WzFdIHx8XG4gICAgICAgICAgICBmaWVsZHNba2V5WzBdXS50eXBlID09PSAnQXJyYXknIHx8XG4gICAgICAgICAgICBmaWVsZHNba2V5WzBdXS50eXBlID09PSAnT2JqZWN0J1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgLy8gY3VycmVudCBrZXkgaXMgbm90IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBLZXkgbm90IGZvdW5kIGludG8gUGFyc2UgU2NoZW1hIHNvIGl0J3MgY3VzdG9tXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSlcbiAgICA6IHRydWU7XG4vKiBlc2xpbnQtZW5hYmxlKi9cblxuY29uc3QgZ2V0T2JqZWN0ID0gYXN5bmMgKFxuICBjbGFzc05hbWUsXG4gIG9iamVjdElkLFxuICBrZXlzLFxuICBpbmNsdWRlLFxuICByZWFkUHJlZmVyZW5jZSxcbiAgaW5jbHVkZVJlYWRQcmVmZXJlbmNlLFxuICBjb25maWcsXG4gIGF1dGgsXG4gIGluZm8sXG4gIHBhcnNlQ2xhc3Nlc1xuKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB7fTtcbiAgdHJ5IHtcbiAgICBpZiAoIW5lZWRUb0dldEFsbEtleXMocGFyc2VDbGFzc2VzW2NsYXNzTmFtZV0uZmllbGRzLCBrZXlzLCBwYXJzZUNsYXNzZXMpKSB7XG4gICAgICBvcHRpb25zLmtleXMgPSBrZXlzO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gIH1cbiAgaWYgKGluY2x1ZGUpIHtcbiAgICBvcHRpb25zLmluY2x1ZGUgPSBpbmNsdWRlO1xuICAgIGlmIChpbmNsdWRlUmVhZFByZWZlcmVuY2UpIHtcbiAgICAgIG9wdGlvbnMuaW5jbHVkZVJlYWRQcmVmZXJlbmNlID0gaW5jbHVkZVJlYWRQcmVmZXJlbmNlO1xuICAgIH1cbiAgfVxuICBpZiAocmVhZFByZWZlcmVuY2UpIHtcbiAgICBvcHRpb25zLnJlYWRQcmVmZXJlbmNlID0gcmVhZFByZWZlcmVuY2U7XG4gIH1cblxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlc3QuZ2V0KFxuICAgIGNvbmZpZyxcbiAgICBhdXRoLFxuICAgIGNsYXNzTmFtZSxcbiAgICBvYmplY3RJZCxcbiAgICBvcHRpb25zLFxuICAgIGluZm8uY2xpZW50U0RLLFxuICAgIGluZm8uY29udGV4dFxuICApO1xuXG4gIGlmICghcmVzcG9uc2UucmVzdWx0cyB8fCByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdPYmplY3Qgbm90IGZvdW5kLicpO1xuICB9XG5cbiAgY29uc3Qgb2JqZWN0ID0gcmVzcG9uc2UucmVzdWx0c1swXTtcbiAgaWYgKGNsYXNzTmFtZSA9PT0gJ19Vc2VyJykge1xuICAgIGRlbGV0ZSBvYmplY3Quc2Vzc2lvblRva2VuO1xuICB9XG4gIHJldHVybiBvYmplY3Q7XG59O1xuXG5jb25zdCBmaW5kT2JqZWN0cyA9IGFzeW5jIChcbiAgY2xhc3NOYW1lLFxuICB3aGVyZSxcbiAgb3JkZXIsXG4gIHNraXBJbnB1dCxcbiAgZmlyc3QsXG4gIGFmdGVyLFxuICBsYXN0LFxuICBiZWZvcmUsXG4gIGtleXMsXG4gIGluY2x1ZGUsXG4gIGluY2x1ZGVBbGwsXG4gIHJlYWRQcmVmZXJlbmNlLFxuICBpbmNsdWRlUmVhZFByZWZlcmVuY2UsXG4gIHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2UsXG4gIGNvbmZpZyxcbiAgYXV0aCxcbiAgaW5mbyxcbiAgc2VsZWN0ZWRGaWVsZHMsXG4gIHBhcnNlQ2xhc3Nlc1xuKSA9PiB7XG4gIGlmICghd2hlcmUpIHtcbiAgICB3aGVyZSA9IHt9O1xuICB9XG4gIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKHdoZXJlLCBjbGFzc05hbWUsIHBhcnNlQ2xhc3Nlcyk7XG4gIGNvbnN0IHNraXBBbmRMaW1pdENhbGN1bGF0aW9uID0gY2FsY3VsYXRlU2tpcEFuZExpbWl0KFxuICAgIHNraXBJbnB1dCxcbiAgICBmaXJzdCxcbiAgICBhZnRlcixcbiAgICBsYXN0LFxuICAgIGJlZm9yZSxcbiAgICBjb25maWcubWF4TGltaXRcbiAgKTtcbiAgbGV0IHsgc2tpcCB9ID0gc2tpcEFuZExpbWl0Q2FsY3VsYXRpb247XG4gIGNvbnN0IHsgbGltaXQsIG5lZWRUb1ByZUNvdW50IH0gPSBza2lwQW5kTGltaXRDYWxjdWxhdGlvbjtcbiAgbGV0IHByZUNvdW50ID0gdW5kZWZpbmVkO1xuICBpZiAobmVlZFRvUHJlQ291bnQpIHtcbiAgICBjb25zdCBwcmVDb3VudE9wdGlvbnMgPSB7XG4gICAgICBsaW1pdDogMCxcbiAgICAgIGNvdW50OiB0cnVlLFxuICAgIH07XG4gICAgaWYgKHJlYWRQcmVmZXJlbmNlKSB7XG4gICAgICBwcmVDb3VudE9wdGlvbnMucmVhZFByZWZlcmVuY2UgPSByZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHdoZXJlKS5sZW5ndGggPiAwICYmIHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2UpIHtcbiAgICAgIHByZUNvdW50T3B0aW9ucy5zdWJxdWVyeVJlYWRQcmVmZXJlbmNlID0gc3VicXVlcnlSZWFkUHJlZmVyZW5jZTtcbiAgICB9XG4gICAgcHJlQ291bnQgPSAoXG4gICAgICBhd2FpdCByZXN0LmZpbmQoY29uZmlnLCBhdXRoLCBjbGFzc05hbWUsIHdoZXJlLCBwcmVDb3VudE9wdGlvbnMsIGluZm8uY2xpZW50U0RLLCBpbmZvLmNvbnRleHQpXG4gICAgKS5jb3VudDtcbiAgICBpZiAoKHNraXAgfHwgMCkgKyBsaW1pdCA8IHByZUNvdW50KSB7XG4gICAgICBza2lwID0gcHJlQ291bnQgLSBsaW1pdDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcHRpb25zID0ge307XG5cbiAgaWYgKHNlbGVjdGVkRmllbGRzLmZpbmQoZmllbGQgPT4gZmllbGQuc3RhcnRzV2l0aCgnZWRnZXMuJykgfHwgZmllbGQuc3RhcnRzV2l0aCgncGFnZUluZm8uJykpKSB7XG4gICAgaWYgKGxpbWl0IHx8IGxpbWl0ID09PSAwKSB7XG4gICAgICBvcHRpb25zLmxpbWl0ID0gbGltaXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubGltaXQgPSAxMDA7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpbWl0ICE9PSAwKSB7XG4gICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgb3B0aW9ucy5vcmRlciA9IG9yZGVyO1xuICAgICAgfVxuICAgICAgaWYgKHNraXApIHtcbiAgICAgICAgb3B0aW9ucy5za2lwID0gc2tpcDtcbiAgICAgIH1cbiAgICAgIGlmIChjb25maWcubWF4TGltaXQgJiYgb3B0aW9ucy5saW1pdCA+IGNvbmZpZy5tYXhMaW1pdCkge1xuICAgICAgICAvLyBTaWxlbnRseSByZXBsYWNlIHRoZSBsaW1pdCBvbiB0aGUgcXVlcnkgd2l0aCB0aGUgbWF4IGNvbmZpZ3VyZWRcbiAgICAgICAgb3B0aW9ucy5saW1pdCA9IGNvbmZpZy5tYXhMaW1pdDtcbiAgICAgIH1cbiAgICAgIGlmICghbmVlZFRvR2V0QWxsS2V5cyhwYXJzZUNsYXNzZXNbY2xhc3NOYW1lXS5maWVsZHMsIGtleXMsIHBhcnNlQ2xhc3NlcykpIHtcbiAgICAgICAgb3B0aW9ucy5rZXlzID0ga2V5cztcbiAgICAgIH1cbiAgICAgIGlmIChpbmNsdWRlQWxsID09PSB0cnVlKSB7XG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZUFsbCA9IGluY2x1ZGVBbGw7XG4gICAgICB9XG4gICAgICBpZiAoIW9wdGlvbnMuaW5jbHVkZUFsbCAmJiBpbmNsdWRlKSB7XG4gICAgICAgIG9wdGlvbnMuaW5jbHVkZSA9IGluY2x1ZGU7XG4gICAgICB9XG4gICAgICBpZiAoKG9wdGlvbnMuaW5jbHVkZUFsbCB8fCBvcHRpb25zLmluY2x1ZGUpICYmIGluY2x1ZGVSZWFkUHJlZmVyZW5jZSkge1xuICAgICAgICBvcHRpb25zLmluY2x1ZGVSZWFkUHJlZmVyZW5jZSA9IGluY2x1ZGVSZWFkUHJlZmVyZW5jZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucy5saW1pdCA9IDA7XG4gIH1cblxuICBpZiAoXG4gICAgKHNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKCdjb3VudCcpIHx8XG4gICAgICBzZWxlY3RlZEZpZWxkcy5pbmNsdWRlcygncGFnZUluZm8uaGFzUHJldmlvdXNQYWdlJykgfHxcbiAgICAgIHNlbGVjdGVkRmllbGRzLmluY2x1ZGVzKCdwYWdlSW5mby5oYXNOZXh0UGFnZScpKSAmJlxuICAgICFuZWVkVG9QcmVDb3VudFxuICApIHtcbiAgICBvcHRpb25zLmNvdW50ID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChyZWFkUHJlZmVyZW5jZSkge1xuICAgIG9wdGlvbnMucmVhZFByZWZlcmVuY2UgPSByZWFkUHJlZmVyZW5jZTtcbiAgfVxuICBpZiAoT2JqZWN0LmtleXMod2hlcmUpLmxlbmd0aCA+IDAgJiYgc3VicXVlcnlSZWFkUHJlZmVyZW5jZSkge1xuICAgIG9wdGlvbnMuc3VicXVlcnlSZWFkUHJlZmVyZW5jZSA9IHN1YnF1ZXJ5UmVhZFByZWZlcmVuY2U7XG4gIH1cblxuICBsZXQgcmVzdWx0cywgY291bnQ7XG4gIGlmIChvcHRpb25zLmNvdW50IHx8ICFvcHRpb25zLmxpbWl0IHx8IChvcHRpb25zLmxpbWl0ICYmIG9wdGlvbnMubGltaXQgPiAwKSkge1xuICAgIGNvbnN0IGZpbmRSZXN1bHQgPSBhd2FpdCByZXN0LmZpbmQoXG4gICAgICBjb25maWcsXG4gICAgICBhdXRoLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgd2hlcmUsXG4gICAgICBvcHRpb25zLFxuICAgICAgaW5mby5jbGllbnRTREssXG4gICAgICBpbmZvLmNvbnRleHRcbiAgICApO1xuICAgIHJlc3VsdHMgPSBmaW5kUmVzdWx0LnJlc3VsdHM7XG4gICAgY291bnQgPSBmaW5kUmVzdWx0LmNvdW50O1xuICB9XG5cbiAgbGV0IGVkZ2VzID0gbnVsbDtcbiAgbGV0IHBhZ2VJbmZvID0gbnVsbDtcbiAgaWYgKHJlc3VsdHMpIHtcbiAgICBlZGdlcyA9IHJlc3VsdHMubWFwKChyZXN1bHQsIGluZGV4KSA9PiAoe1xuICAgICAgY3Vyc29yOiBvZmZzZXRUb0N1cnNvcigoc2tpcCB8fCAwKSArIGluZGV4KSxcbiAgICAgIG5vZGU6IHJlc3VsdCxcbiAgICB9KSk7XG5cbiAgICBwYWdlSW5mbyA9IHtcbiAgICAgIGhhc1ByZXZpb3VzUGFnZTpcbiAgICAgICAgKChwcmVDb3VudCAmJiBwcmVDb3VudCA+IDApIHx8IChjb3VudCAmJiBjb3VudCA+IDApKSAmJiBza2lwICE9PSB1bmRlZmluZWQgJiYgc2tpcCA+IDAsXG4gICAgICBzdGFydEN1cnNvcjogb2Zmc2V0VG9DdXJzb3Ioc2tpcCB8fCAwKSxcbiAgICAgIGVuZEN1cnNvcjogb2Zmc2V0VG9DdXJzb3IoKHNraXAgfHwgMCkgKyAocmVzdWx0cy5sZW5ndGggfHwgMSkgLSAxKSxcbiAgICAgIGhhc05leHRQYWdlOiAocHJlQ291bnQgfHwgY291bnQpID4gKHNraXAgfHwgMCkgKyByZXN1bHRzLmxlbmd0aCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlZGdlcyxcbiAgICBwYWdlSW5mbyxcbiAgICBjb3VudDogcHJlQ291bnQgfHwgY291bnQsXG4gIH07XG59O1xuXG5jb25zdCBjYWxjdWxhdGVTa2lwQW5kTGltaXQgPSAoc2tpcElucHV0LCBmaXJzdCwgYWZ0ZXIsIGxhc3QsIGJlZm9yZSwgbWF4TGltaXQpID0+IHtcbiAgbGV0IHNraXAgPSB1bmRlZmluZWQ7XG4gIGxldCBsaW1pdCA9IHVuZGVmaW5lZDtcbiAgbGV0IG5lZWRUb1ByZUNvdW50ID0gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBza2lwIGlucHV0XG4gIGlmIChza2lwSW5wdXQgfHwgc2tpcElucHV0ID09PSAwKSB7XG4gICAgaWYgKHNraXBJbnB1dCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1FVRVJZLCAnU2tpcCBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgc2tpcCA9IHNraXBJbnB1dDtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlcyB0aGUgYWZ0ZXIgcGFyYW1cbiAgaWYgKGFmdGVyKSB7XG4gICAgYWZ0ZXIgPSBjdXJzb3JUb09mZnNldChhZnRlcik7XG4gICAgaWYgKCghYWZ0ZXIgJiYgYWZ0ZXIgIT09IDApIHx8IGFmdGVyIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdBZnRlciBpcyBub3QgYSB2YWxpZCBjdXJzb3InKTtcbiAgICB9XG5cbiAgICAvLyBJZiBza2lwIGFuZCBhZnRlciBhcmUgcGFzc2VkLCBhIG5ldyBza2lwIGlzIGNhbGN1bGF0ZWQgYnkgYWRkaW5nIHRoZW1cbiAgICBza2lwID0gKHNraXAgfHwgMCkgKyAoYWZ0ZXIgKyAxKTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlcyB0aGUgZmlyc3QgcGFyYW1cbiAgaWYgKGZpcnN0IHx8IGZpcnN0ID09PSAwKSB7XG4gICAgaWYgKGZpcnN0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdGaXJzdCBzaG91bGQgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZmlyc3QgcGFyYW0gaXMgdHJhbnNsYXRlZCB0byB0aGUgbGltaXQgcGFyYW0gb2YgdGhlIFBhcnNlIGxlZ2FjeSBBUElcbiAgICBsaW1pdCA9IGZpcnN0O1xuICB9XG5cbiAgLy8gVmFsaWRhdGVzIHRoZSBiZWZvcmUgcGFyYW1cbiAgaWYgKGJlZm9yZSB8fCBiZWZvcmUgPT09IDApIHtcbiAgICAvLyBUaGlzIG1ldGhvZCBjb252ZXJ0cyB0aGUgY3Vyc29yIHRvIHRoZSBpbmRleCBvZiB0aGUgb2JqZWN0XG4gICAgYmVmb3JlID0gY3Vyc29yVG9PZmZzZXQoYmVmb3JlKTtcbiAgICBpZiAoKCFiZWZvcmUgJiYgYmVmb3JlICE9PSAwKSB8fCBiZWZvcmUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9RVUVSWSwgJ0JlZm9yZSBpcyBub3QgYSB2YWxpZCBjdXJzb3InKTtcbiAgICB9XG5cbiAgICBpZiAoKHNraXAgfHwgMCkgPj0gYmVmb3JlKSB7XG4gICAgICAvLyBJZiB0aGUgYmVmb3JlIGluZGV4IGlzIGxlc3MgdGhhbiB0aGUgc2tpcCwgbm8gb2JqZWN0cyB3aWxsIGJlIHJldHVybmVkXG4gICAgICBsaW1pdCA9IDA7XG4gICAgfSBlbHNlIGlmICgoIWxpbWl0ICYmIGxpbWl0ICE9PSAwKSB8fCAoc2tpcCB8fCAwKSArIGxpbWl0ID4gYmVmb3JlKSB7XG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyBsaW1pdCBzZXQsIHRoZSBsaW1pdCBpcyBjYWxjdWxhdGVkLiBPciwgaWYgdGhlIGxpbWl0IChwbHVzIHNraXApIGlzIGJpZ2dlciB0aGFuIHRoZSBiZWZvcmUgaW5kZXgsIHRoZSBuZXcgbGltaXQgaXMgc2V0LlxuICAgICAgbGltaXQgPSBiZWZvcmUgLSAoc2tpcCB8fCAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZXMgdGhlIGxhc3QgcGFyYW1cbiAgaWYgKGxhc3QgfHwgbGFzdCA9PT0gMCkge1xuICAgIGlmIChsYXN0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfUVVFUlksICdMYXN0IHNob3VsZCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmIChsYXN0ID4gbWF4TGltaXQpIHtcbiAgICAgIC8vIExhc3QgY2FuJ3QgYmUgYmlnZ2VyIHRoYW4gUGFyc2Ugc2VydmVyIG1heExpbWl0IGNvbmZpZy5cbiAgICAgIGxhc3QgPSBtYXhMaW1pdDtcbiAgICB9XG5cbiAgICBpZiAobGltaXQgfHwgbGltaXQgPT09IDApIHtcbiAgICAgIC8vIElmIHRoZXJlIGlzIGEgcHJldmlvdXMgbGltaXQgc2V0LCBpdCBtYXkgYmUgYWRqdXN0ZWRcbiAgICAgIGlmIChsYXN0IDwgbGltaXQpIHtcbiAgICAgICAgLy8gaWYgbGFzdCBpcyBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgbGltaXRcbiAgICAgICAgc2tpcCA9IChza2lwIHx8IDApICsgKGxpbWl0IC0gbGFzdCk7IC8vIFRoZSBza2lwIGlzIGFkanVzdGVkXG4gICAgICAgIGxpbWl0ID0gbGFzdDsgLy8gdGhlIGxpbWl0IGlzIGFkanVzdGVkXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChsYXN0ID09PSAwKSB7XG4gICAgICAvLyBObyBvYmplY3RzIHdpbGwgYmUgcmV0dXJuZWRcbiAgICAgIGxpbWl0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gcHJldmlvdXMgbGltaXQgc2V0LCB0aGUgbGltaXQgd2lsbCBiZSBlcXVhbCB0byBsYXN0IGFuZCBwcmUgY291bnQgaXMgbmVlZGVkLlxuICAgICAgbGltaXQgPSBsYXN0O1xuICAgICAgbmVlZFRvUHJlQ291bnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHNraXAsXG4gICAgbGltaXQsXG4gICAgbmVlZFRvUHJlQ291bnQsXG4gIH07XG59O1xuXG5leHBvcnQgeyBnZXRPYmplY3QsIGZpbmRPYmplY3RzLCBjYWxjdWxhdGVTa2lwQW5kTGltaXQsIG5lZWRUb0dldEFsbEtleXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsS0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBRCxPQUFBO0FB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