parse-server 6.0.0-alpha.2 → 6.0.0-alpha.21

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 (191) hide show
  1. package/README.md +45 -17
  2. package/lib/AccountLockout.js +11 -26
  3. package/lib/Adapters/AdapterLoader.js +8 -14
  4. package/lib/Adapters/Analytics/AnalyticsAdapter.js +2 -8
  5. package/lib/Adapters/Auth/AuthAdapter.js +7 -16
  6. package/lib/Adapters/Auth/OAuth1Client.js +32 -57
  7. package/lib/Adapters/Auth/apple.js +6 -22
  8. package/lib/Adapters/Auth/facebook.js +7 -37
  9. package/lib/Adapters/Auth/gcenter.js +8 -37
  10. package/lib/Adapters/Auth/github.js +7 -10
  11. package/lib/Adapters/Auth/google.js +11 -34
  12. package/lib/Adapters/Auth/gpgames.js +5 -8
  13. package/lib/Adapters/Auth/httpsRequest.js +1 -7
  14. package/lib/Adapters/Auth/index.js +20 -65
  15. package/lib/Adapters/Auth/instagram.js +5 -9
  16. package/lib/Adapters/Auth/janraincapture.js +8 -12
  17. package/lib/Adapters/Auth/janrainengage.js +7 -11
  18. package/lib/Adapters/Auth/keycloak.js +5 -19
  19. package/lib/Adapters/Auth/ldap.js +1 -15
  20. package/lib/Adapters/Auth/line.js +7 -10
  21. package/lib/Adapters/Auth/linkedin.js +7 -12
  22. package/lib/Adapters/Auth/meetup.js +7 -10
  23. package/lib/Adapters/Auth/microsoft.js +7 -10
  24. package/lib/Adapters/Auth/oauth2.js +6 -18
  25. package/lib/Adapters/Auth/phantauth.js +8 -10
  26. package/lib/Adapters/Auth/qq.js +7 -13
  27. package/lib/Adapters/Auth/spotify.js +7 -14
  28. package/lib/Adapters/Auth/twitter.js +5 -15
  29. package/lib/Adapters/Auth/vkontakte.js +9 -15
  30. package/lib/Adapters/Auth/wechat.js +7 -10
  31. package/lib/Adapters/Auth/weibo.js +7 -11
  32. package/lib/Adapters/Cache/CacheAdapter.js +4 -12
  33. package/lib/Adapters/Cache/InMemoryCache.js +5 -19
  34. package/lib/Adapters/Cache/InMemoryCacheAdapter.js +1 -11
  35. package/lib/Adapters/Cache/LRUCache.js +1 -11
  36. package/lib/Adapters/Cache/NullCacheAdapter.js +1 -8
  37. package/lib/Adapters/Cache/RedisCacheAdapter.js +46 -87
  38. package/lib/Adapters/Cache/SchemaCache.js +1 -6
  39. package/lib/Adapters/Email/MailAdapter.js +2 -7
  40. package/lib/Adapters/Files/FilesAdapter.js +7 -21
  41. package/lib/Adapters/Files/GridFSBucketAdapter.js +6 -44
  42. package/lib/Adapters/Files/GridStoreAdapter.js +1 -1
  43. package/lib/Adapters/Logger/LoggerAdapter.js +2 -11
  44. package/lib/Adapters/Logger/WinstonLogger.js +3 -30
  45. package/lib/Adapters/Logger/WinstonLoggerAdapter.js +5 -16
  46. package/lib/Adapters/MessageQueue/EventEmitterMQ.js +3 -20
  47. package/lib/Adapters/PubSub/EventEmitterPubSub.js +1 -16
  48. package/lib/Adapters/PubSub/PubSubAdapter.js +2 -9
  49. package/lib/Adapters/PubSub/RedisPubSub.js +13 -10
  50. package/lib/Adapters/Push/PushAdapter.js +2 -8
  51. package/lib/Adapters/Storage/Mongo/MongoCollection.js +12 -37
  52. package/lib/Adapters/Storage/Mongo/MongoSchemaCollection.js +26 -79
  53. package/lib/Adapters/Storage/Mongo/MongoStorageAdapter.js +78 -209
  54. package/lib/Adapters/Storage/Mongo/MongoTransform.js +82 -371
  55. package/lib/Adapters/Storage/Postgres/PostgresClient.js +1 -13
  56. package/lib/Adapters/Storage/Postgres/PostgresConfigParser.js +1 -20
  57. package/lib/Adapters/Storage/Postgres/PostgresStorageAdapter.js +119 -446
  58. package/lib/Adapters/Storage/Postgres/sql/index.js +4 -7
  59. package/lib/Adapters/Storage/StorageAdapter.js +1 -1
  60. package/lib/Adapters/WebSocketServer/WSAdapter.js +3 -12
  61. package/lib/Adapters/WebSocketServer/WSSAdapter.js +7 -12
  62. package/lib/Auth.js +54 -121
  63. package/lib/ClientSDK.js +3 -11
  64. package/lib/Config.js +69 -113
  65. package/lib/Controllers/AdaptableController.js +6 -18
  66. package/lib/Controllers/AnalyticsController.js +1 -9
  67. package/lib/Controllers/CacheController.js +3 -23
  68. package/lib/Controllers/DatabaseController.js +147 -345
  69. package/lib/Controllers/FilesController.js +5 -34
  70. package/lib/Controllers/HooksController.js +1 -51
  71. package/lib/Controllers/LiveQueryController.js +4 -23
  72. package/lib/Controllers/LoggerController.js +15 -54
  73. package/lib/Controllers/ParseGraphQLController.js +49 -104
  74. package/lib/Controllers/PushController.js +20 -59
  75. package/lib/Controllers/SchemaController.js +154 -344
  76. package/lib/Controllers/UserController.js +11 -72
  77. package/lib/Controllers/index.js +19 -68
  78. package/lib/Controllers/types.js +1 -1
  79. package/lib/Deprecator/Deprecations.js +1 -8
  80. package/lib/Deprecator/Deprecator.js +9 -18
  81. package/lib/GraphQL/ParseGraphQLSchema.js +16 -100
  82. package/lib/GraphQL/ParseGraphQLServer.js +2 -29
  83. package/lib/GraphQL/helpers/objectsMutations.js +2 -12
  84. package/lib/GraphQL/helpers/objectsQueries.js +18 -76
  85. package/lib/GraphQL/loaders/defaultGraphQLMutations.js +1 -9
  86. package/lib/GraphQL/loaders/defaultGraphQLQueries.js +1 -8
  87. package/lib/GraphQL/loaders/defaultGraphQLTypes.js +9 -115
  88. package/lib/GraphQL/loaders/defaultRelaySchema.js +6 -18
  89. package/lib/GraphQL/loaders/filesMutations.js +2 -19
  90. package/lib/GraphQL/loaders/functionsMutations.js +6 -17
  91. package/lib/GraphQL/loaders/parseClassMutations.js +6 -44
  92. package/lib/GraphQL/loaders/parseClassQueries.js +1 -26
  93. package/lib/GraphQL/loaders/parseClassTypes.js +10 -64
  94. package/lib/GraphQL/loaders/schemaDirectives.js +1 -17
  95. package/lib/GraphQL/loaders/schemaMutations.js +1 -20
  96. package/lib/GraphQL/loaders/schemaQueries.js +1 -14
  97. package/lib/GraphQL/loaders/schemaTypes.js +2 -6
  98. package/lib/GraphQL/loaders/usersMutations.js +6 -28
  99. package/lib/GraphQL/loaders/usersQueries.js +4 -26
  100. package/lib/GraphQL/parseGraphQLUtils.js +6 -19
  101. package/lib/GraphQL/transformers/className.js +1 -4
  102. package/lib/GraphQL/transformers/constraintType.js +1 -20
  103. package/lib/GraphQL/transformers/inputType.js +1 -20
  104. package/lib/GraphQL/transformers/mutation.js +6 -51
  105. package/lib/GraphQL/transformers/outputType.js +1 -20
  106. package/lib/GraphQL/transformers/query.js +6 -42
  107. package/lib/GraphQL/transformers/schemaFields.js +7 -34
  108. package/lib/KeyPromiseQueue.js +1 -12
  109. package/lib/LiveQuery/Client.js +1 -25
  110. package/lib/LiveQuery/Id.js +1 -7
  111. package/lib/LiveQuery/ParseCloudCodePublisher.js +13 -19
  112. package/lib/LiveQuery/ParseLiveQueryServer.js +92 -306
  113. package/lib/LiveQuery/ParsePubSub.js +1 -12
  114. package/lib/LiveQuery/ParseWebSocketServer.js +4 -26
  115. package/lib/LiveQuery/QueryTools.js +14 -116
  116. package/lib/LiveQuery/RequestSchema.js +1 -1
  117. package/lib/LiveQuery/SessionTokenCache.js +1 -17
  118. package/lib/LiveQuery/Subscription.js +4 -18
  119. package/lib/LiveQuery/equalObjects.js +2 -14
  120. package/lib/Options/Definitions.js +79 -10
  121. package/lib/Options/docs.js +23 -3
  122. package/lib/Options/index.js +4 -12
  123. package/lib/Options/parsers.js +1 -18
  124. package/lib/Page.js +1 -9
  125. package/lib/ParseMessageQueue.js +1 -10
  126. package/lib/ParseServer.js +144 -182
  127. package/lib/ParseServerRESTController.js +6 -33
  128. package/lib/PromiseRouter.js +16 -50
  129. package/lib/Push/PushQueue.js +3 -15
  130. package/lib/Push/PushWorker.js +7 -32
  131. package/lib/Push/utils.js +9 -38
  132. package/lib/RestQuery.js +105 -242
  133. package/lib/RestWrite.js +212 -377
  134. package/lib/Routers/AggregateRouter.js +14 -51
  135. package/lib/Routers/AnalyticsRouter.js +2 -8
  136. package/lib/Routers/AudiencesRouter.js +1 -15
  137. package/lib/Routers/ClassesRouter.js +3 -53
  138. package/lib/Routers/CloudCodeRouter.js +1 -19
  139. package/lib/Routers/FeaturesRouter.js +1 -10
  140. package/lib/Routers/FilesRouter.js +29 -76
  141. package/lib/Routers/FunctionsRouter.js +5 -28
  142. package/lib/Routers/GlobalConfigRouter.js +4 -18
  143. package/lib/Routers/GraphQLRouter.js +1 -14
  144. package/lib/Routers/HooksRouter.js +1 -29
  145. package/lib/Routers/IAPValidationRouter.js +6 -29
  146. package/lib/Routers/InstallationsRouter.js +2 -12
  147. package/lib/Routers/LogsRouter.js +4 -16
  148. package/lib/Routers/PagesRouter.js +69 -129
  149. package/lib/Routers/PublicAPIRouter.js +3 -62
  150. package/lib/Routers/PurgeRouter.js +1 -15
  151. package/lib/Routers/PushRouter.js +2 -18
  152. package/lib/Routers/RolesRouter.js +1 -7
  153. package/lib/Routers/SchemasRouter.js +4 -34
  154. package/lib/Routers/SecurityRouter.js +1 -12
  155. package/lib/Routers/SessionsRouter.js +3 -19
  156. package/lib/Routers/UsersRouter.js +58 -155
  157. package/lib/SchemaMigrations/DefinedSchemas.js +56 -115
  158. package/lib/SchemaMigrations/Migrations.js +2 -8
  159. package/lib/Security/Check.js +8 -16
  160. package/lib/Security/CheckGroup.js +4 -11
  161. package/lib/Security/CheckGroups/CheckGroupDatabase.js +8 -18
  162. package/lib/Security/CheckGroups/CheckGroupServerConfig.js +5 -15
  163. package/lib/Security/CheckGroups/CheckGroups.js +1 -4
  164. package/lib/Security/CheckRunner.js +22 -41
  165. package/lib/StatusHandler.js +12 -69
  166. package/lib/TestUtils.js +1 -6
  167. package/lib/Utils.js +27 -66
  168. package/lib/batch.js +17 -28
  169. package/lib/cache.js +1 -3
  170. package/lib/cli/definitions/parse-live-query-server.js +1 -3
  171. package/lib/cli/definitions/parse-server.js +1 -3
  172. package/lib/cli/parse-live-query-server.js +1 -6
  173. package/lib/cli/parse-server.js +11 -21
  174. package/lib/cli/utils/commander.js +13 -51
  175. package/lib/cli/utils/runner.js +1 -14
  176. package/lib/cloud-code/Parse.Cloud.js +71 -92
  177. package/lib/cryptoUtils.js +11 -19
  178. package/lib/defaults.js +2 -14
  179. package/lib/deprecated.js +1 -2
  180. package/lib/index.js +16 -34
  181. package/lib/logger.js +6 -13
  182. package/lib/middlewares.js +147 -151
  183. package/lib/password.js +6 -10
  184. package/lib/request.js +173 -2
  185. package/lib/requiredParameter.js +1 -3
  186. package/lib/rest.js +19 -41
  187. package/lib/triggers.js +54 -252
  188. package/lib/vendor/mongodbUrl.js +125 -305
  189. package/package.json +22 -19
  190. package/lib/cloud-code/HTTPResponse.js +0 -73
  191. package/lib/cloud-code/httpRequest.js +0 -192
@@ -3,26 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SchemasRouter = exports.internalUpdateSchema = exports.internalCreateSchema = void 0;
7
-
6
+ exports.internalUpdateSchema = exports.internalCreateSchema = exports.SchemasRouter = void 0;
8
7
  var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
9
-
10
8
  var middleware = _interopRequireWildcard(require("../middlewares"));
11
-
12
9
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
-
14
10
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  // schemas.js
19
- var Parse = require('parse/node').Parse,
20
- SchemaController = require('../Controllers/SchemaController');
21
13
 
14
+ var Parse = require('parse/node').Parse,
15
+ SchemaController = require('../Controllers/SchemaController');
22
16
  function classNameMismatchResponse(bodyClass, pathClass) {
23
17
  throw new Parse.Error(Parse.Error.INVALID_CLASS_NAME, `Class name mismatch between ${bodyClass} and ${pathClass}.`);
24
18
  }
25
-
26
19
  function getAllSchemas(req) {
27
20
  return req.config.database.loadSchema({
28
21
  clearCache: true
@@ -34,7 +27,6 @@ function getAllSchemas(req) {
34
27
  }
35
28
  }));
36
29
  }
37
-
38
30
  function getOneSchema(req) {
39
31
  const className = req.params.className;
40
32
  return req.config.database.loadSchema({
@@ -49,15 +41,12 @@ function getOneSchema(req) {
49
41
  }
50
42
  });
51
43
  }
52
-
53
44
  const checkIfDefinedSchemasIsUsed = req => {
54
45
  var _req$config, _req$config$schema;
55
-
56
46
  if (((_req$config = req.config) === null || _req$config === void 0 ? void 0 : (_req$config$schema = _req$config.schema) === null || _req$config$schema === void 0 ? void 0 : _req$config$schema.lockSchemas) === true) {
57
47
  throw new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, 'Cannot perform this operation when schemas options is used.');
58
48
  }
59
49
  };
60
-
61
50
  const internalCreateSchema = async (className, body, config) => {
62
51
  const controller = await config.database.loadSchema({
63
52
  clearCache: true
@@ -67,9 +56,7 @@ const internalCreateSchema = async (className, body, config) => {
67
56
  response
68
57
  };
69
58
  };
70
-
71
59
  exports.internalCreateSchema = internalCreateSchema;
72
-
73
60
  const internalUpdateSchema = async (className, body, config) => {
74
61
  const controller = await config.database.loadSchema({
75
62
  clearCache: true
@@ -79,60 +66,45 @@ const internalUpdateSchema = async (className, body, config) => {
79
66
  response
80
67
  };
81
68
  };
82
-
83
69
  exports.internalUpdateSchema = internalUpdateSchema;
84
-
85
70
  async function createSchema(req) {
86
71
  checkIfDefinedSchemasIsUsed(req);
87
-
88
72
  if (req.auth.isReadOnly) {
89
73
  throw new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to create a schema.");
90
74
  }
91
-
92
75
  if (req.params.className && req.body.className) {
93
76
  if (req.params.className != req.body.className) {
94
77
  return classNameMismatchResponse(req.body.className, req.params.className);
95
78
  }
96
79
  }
97
-
98
80
  const className = req.params.className || req.body.className;
99
-
100
81
  if (!className) {
101
82
  throw new Parse.Error(135, `POST ${req.path} needs a class name.`);
102
83
  }
103
-
104
84
  return await internalCreateSchema(className, req.body, req.config);
105
85
  }
106
-
107
86
  function modifySchema(req) {
108
87
  checkIfDefinedSchemasIsUsed(req);
109
-
110
88
  if (req.auth.isReadOnly) {
111
89
  throw new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to update a schema.");
112
90
  }
113
-
114
91
  if (req.body.className && req.body.className != req.params.className) {
115
92
  return classNameMismatchResponse(req.body.className, req.params.className);
116
93
  }
117
-
118
94
  const className = req.params.className;
119
95
  return internalUpdateSchema(className, req.body, req.config);
120
96
  }
121
-
122
97
  const deleteSchema = req => {
123
98
  if (req.auth.isReadOnly) {
124
99
  throw new Parse.Error(Parse.Error.OPERATION_FORBIDDEN, "read-only masterKey isn't allowed to delete a schema.");
125
100
  }
126
-
127
101
  if (!SchemaController.classNameIsValid(req.params.className)) {
128
102
  throw new Parse.Error(Parse.Error.INVALID_CLASS_NAME, SchemaController.invalidClassNameMessage(req.params.className));
129
103
  }
130
-
131
104
  return req.config.database.deleteSchema(req.params.className).then(() => ({
132
105
  response: {}
133
106
  }));
134
107
  };
135
-
136
108
  class SchemasRouter extends _PromiseRouter.default {
137
109
  mountRoutes() {
138
110
  this.route('GET', '/schemas', middleware.promiseEnforceMasterKeyAccess, getAllSchemas);
@@ -142,8 +114,6 @@ class SchemasRouter extends _PromiseRouter.default {
142
114
  this.route('PUT', '/schemas/:className', middleware.promiseEnforceMasterKeyAccess, modifySchema);
143
115
  this.route('DELETE', '/schemas/:className', middleware.promiseEnforceMasterKeyAccess, deleteSchema);
144
116
  }
145
-
146
117
  }
147
-
148
118
  exports.SchemasRouter = SchemasRouter;
149
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1NjaGVtYXNSb3V0ZXIuanMiXSwibmFtZXMiOlsiUGFyc2UiLCJyZXF1aXJlIiwiU2NoZW1hQ29udHJvbGxlciIsImNsYXNzTmFtZU1pc21hdGNoUmVzcG9uc2UiLCJib2R5Q2xhc3MiLCJwYXRoQ2xhc3MiLCJFcnJvciIsIklOVkFMSURfQ0xBU1NfTkFNRSIsImdldEFsbFNjaGVtYXMiLCJyZXEiLCJjb25maWciLCJkYXRhYmFzZSIsImxvYWRTY2hlbWEiLCJjbGVhckNhY2hlIiwidGhlbiIsInNjaGVtYUNvbnRyb2xsZXIiLCJnZXRBbGxDbGFzc2VzIiwic2NoZW1hcyIsInJlc3BvbnNlIiwicmVzdWx0cyIsImdldE9uZVNjaGVtYSIsImNsYXNzTmFtZSIsInBhcmFtcyIsInNjaGVtYSIsImNhdGNoIiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJjaGVja0lmRGVmaW5lZFNjaGVtYXNJc1VzZWQiLCJsb2NrU2NoZW1hcyIsIk9QRVJBVElPTl9GT1JCSURERU4iLCJpbnRlcm5hbENyZWF0ZVNjaGVtYSIsImJvZHkiLCJjb250cm9sbGVyIiwiYWRkQ2xhc3NJZk5vdEV4aXN0cyIsImZpZWxkcyIsImNsYXNzTGV2ZWxQZXJtaXNzaW9ucyIsImluZGV4ZXMiLCJpbnRlcm5hbFVwZGF0ZVNjaGVtYSIsInVwZGF0ZUNsYXNzIiwiY3JlYXRlU2NoZW1hIiwiYXV0aCIsImlzUmVhZE9ubHkiLCJwYXRoIiwibW9kaWZ5U2NoZW1hIiwiZGVsZXRlU2NoZW1hIiwiY2xhc3NOYW1lSXNWYWxpZCIsImludmFsaWRDbGFzc05hbWVNZXNzYWdlIiwiU2NoZW1hc1JvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwibWlkZGxld2FyZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0E7O0FBQ0E7Ozs7Ozs7O0FBTkE7QUFF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QSxTQUFLTyxLQUFMLENBQ0UsUUFERixFQUVFLHFCQUZGLEVBR0VDLFVBQVUsQ0FBQ0MsNkJBSGIsRUFJRVIsWUFKRjtBQU1EOztBQTVCOEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzY2hlbWFzLmpzXG5cbnZhciBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgU2NoZW1hQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL0NvbnRyb2xsZXJzL1NjaGVtYUNvbnRyb2xsZXInKTtcblxuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi4vUHJvbWlzZVJvdXRlcic7XG5pbXBvcnQgKiBhcyBtaWRkbGV3YXJlIGZyb20gJy4uL21pZGRsZXdhcmVzJztcblxuZnVuY3Rpb24gY2xhc3NOYW1lTWlzbWF0Y2hSZXNwb25zZShib2R5Q2xhc3MsIHBhdGhDbGFzcykge1xuICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgUGFyc2UuRXJyb3IuSU5WQUxJRF9DTEFTU19OQU1FLFxuICAgIGBDbGFzcyBuYW1lIG1pc21hdGNoIGJldHdlZW4gJHtib2R5Q2xhc3N9IGFuZCAke3BhdGhDbGFzc30uYFxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRBbGxTY2hlbWFzKHJlcSkge1xuICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZVxuICAgIC5sb2FkU2NoZW1hKHsgY2xlYXJDYWNoZTogdHJ1ZSB9KVxuICAgIC50aGVuKHNjaGVtYUNvbnRyb2xsZXIgPT4gc2NoZW1hQ29udHJvbGxlci5nZXRBbGxDbGFzc2VzKHsgY2xlYXJDYWNoZTogdHJ1ZSB9KSlcbiAgICAudGhlbihzY2hlbWFzID0+ICh7IHJlc3BvbnNlOiB7IHJlc3VsdHM6IHNjaGVtYXMgfSB9KSk7XG59XG5cbmZ1bmN0aW9uIGdldE9uZVNjaGVtYShyZXEpIHtcbiAgY29uc3QgY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG4gIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlXG4gICAgLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pXG4gICAgLnRoZW4oc2NoZW1hQ29udHJvbGxlciA9PiBzY2hlbWFDb250cm9sbGVyLmdldE9uZVNjaGVtYShjbGFzc05hbWUsIHRydWUpKVxuICAgIC50aGVuKHNjaGVtYSA9PiAoeyByZXNwb25zZTogc2NoZW1hIH0pKVxuICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9DTEFTU19OQU1FLCBgQ2xhc3MgJHtjbGFzc05hbWV9IGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVEVSTkFMX1NFUlZFUl9FUlJPUiwgJ0RhdGFiYXNlIGFkYXB0ZXIgZXJyb3IuJyk7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmNvbnN0IGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZCA9IHJlcSA9PiB7XG4gIGlmIChyZXEuY29uZmlnPy5zY2hlbWE/LmxvY2tTY2hlbWFzID09PSB0cnVlKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT1BFUkFUSU9OX0ZPUkJJRERFTixcbiAgICAgICdDYW5ub3QgcGVyZm9ybSB0aGlzIG9wZXJhdGlvbiB3aGVuIHNjaGVtYXMgb3B0aW9ucyBpcyB1c2VkLidcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaW50ZXJuYWxDcmVhdGVTY2hlbWEgPSBhc3luYyAoY2xhc3NOYW1lLCBib2R5LCBjb25maWcpID0+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IGF3YWl0IGNvbmZpZy5kYXRhYmFzZS5sb2FkU2NoZW1hKHsgY2xlYXJDYWNoZTogdHJ1ZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjb250cm9sbGVyLmFkZENsYXNzSWZOb3RFeGlzdHMoXG4gICAgY2xhc3NOYW1lLFxuICAgIGJvZHkuZmllbGRzLFxuICAgIGJvZHkuY2xhc3NMZXZlbFBlcm1pc3Npb25zLFxuICAgIGJvZHkuaW5kZXhlc1xuICApO1xuICByZXR1cm4ge1xuICAgIHJlc3BvbnNlLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGludGVybmFsVXBkYXRlU2NoZW1hID0gYXN5bmMgKGNsYXNzTmFtZSwgYm9keSwgY29uZmlnKSA9PiB7XG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBhd2FpdCBjb25maWcuZGF0YWJhc2UubG9hZFNjaGVtYSh7IGNsZWFyQ2FjaGU6IHRydWUgfSk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY29udHJvbGxlci51cGRhdGVDbGFzcyhcbiAgICBjbGFzc05hbWUsXG4gICAgYm9keS5maWVsZHMgfHwge30sXG4gICAgYm9keS5jbGFzc0xldmVsUGVybWlzc2lvbnMsXG4gICAgYm9keS5pbmRleGVzLFxuICAgIGNvbmZpZy5kYXRhYmFzZVxuICApO1xuICByZXR1cm4geyByZXNwb25zZSB9O1xufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlU2NoZW1hKHJlcSkge1xuICBjaGVja0lmRGVmaW5lZFNjaGVtYXNJc1VzZWQocmVxKTtcbiAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgXCJyZWFkLW9ubHkgbWFzdGVyS2V5IGlzbid0IGFsbG93ZWQgdG8gY3JlYXRlIGEgc2NoZW1hLlwiXG4gICAgKTtcbiAgfVxuICBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgJiYgcmVxLmJvZHkuY2xhc3NOYW1lKSB7XG4gICAgaWYgKHJlcS5wYXJhbXMuY2xhc3NOYW1lICE9IHJlcS5ib2R5LmNsYXNzTmFtZSkge1xuICAgICAgcmV0dXJuIGNsYXNzTmFtZU1pc21hdGNoUmVzcG9uc2UocmVxLmJvZHkuY2xhc3NOYW1lLCByZXEucGFyYW1zLmNsYXNzTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWUgfHwgcmVxLmJvZHkuY2xhc3NOYW1lO1xuICBpZiAoIWNsYXNzTmFtZSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcigxMzUsIGBQT1NUICR7cmVxLnBhdGh9IG5lZWRzIGEgY2xhc3MgbmFtZS5gKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBpbnRlcm5hbENyZWF0ZVNjaGVtYShjbGFzc05hbWUsIHJlcS5ib2R5LCByZXEuY29uZmlnKTtcbn1cblxuZnVuY3Rpb24gbW9kaWZ5U2NoZW1hKHJlcSkge1xuICBjaGVja0lmRGVmaW5lZFNjaGVtYXNJc1VzZWQocmVxKTtcbiAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgXCJyZWFkLW9ubHkgbWFzdGVyS2V5IGlzbid0IGFsbG93ZWQgdG8gdXBkYXRlIGEgc2NoZW1hLlwiXG4gICAgKTtcbiAgfVxuICBpZiAocmVxLmJvZHkuY2xhc3NOYW1lICYmIHJlcS5ib2R5LmNsYXNzTmFtZSAhPSByZXEucGFyYW1zLmNsYXNzTmFtZSkge1xuICAgIHJldHVybiBjbGFzc05hbWVNaXNtYXRjaFJlc3BvbnNlKHJlcS5ib2R5LmNsYXNzTmFtZSwgcmVxLnBhcmFtcy5jbGFzc05hbWUpO1xuICB9XG4gIGNvbnN0IGNsYXNzTmFtZSA9IHJlcS5wYXJhbXMuY2xhc3NOYW1lO1xuXG4gIHJldHVybiBpbnRlcm5hbFVwZGF0ZVNjaGVtYShjbGFzc05hbWUsIHJlcS5ib2R5LCByZXEuY29uZmlnKTtcbn1cblxuY29uc3QgZGVsZXRlU2NoZW1hID0gcmVxID0+IHtcbiAgaWYgKHJlcS5hdXRoLmlzUmVhZE9ubHkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgXCJyZWFkLW9ubHkgbWFzdGVyS2V5IGlzbid0IGFsbG93ZWQgdG8gZGVsZXRlIGEgc2NoZW1hLlwiXG4gICAgKTtcbiAgfVxuICBpZiAoIVNjaGVtYUNvbnRyb2xsZXIuY2xhc3NOYW1lSXNWYWxpZChyZXEucGFyYW1zLmNsYXNzTmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsXG4gICAgICBTY2hlbWFDb250cm9sbGVyLmludmFsaWRDbGFzc05hbWVNZXNzYWdlKHJlcS5wYXJhbXMuY2xhc3NOYW1lKVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlcS5jb25maWcuZGF0YWJhc2UuZGVsZXRlU2NoZW1hKHJlcS5wYXJhbXMuY2xhc3NOYW1lKS50aGVuKCgpID0+ICh7IHJlc3BvbnNlOiB7fSB9KSk7XG59O1xuXG5leHBvcnQgY2xhc3MgU2NoZW1hc1JvdXRlciBleHRlbmRzIFByb21pc2VSb3V0ZXIge1xuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3NjaGVtYXMnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBnZXRBbGxTY2hlbWFzKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0dFVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgZ2V0T25lU2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9zY2hlbWFzJywgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcywgY3JlYXRlU2NoZW1hKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BPU1QnLFxuICAgICAgJy9zY2hlbWFzLzpjbGFzc05hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIGNyZWF0ZVNjaGVtYVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdQVVQnLFxuICAgICAgJy9zY2hlbWFzLzpjbGFzc05hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIG1vZGlmeVNjaGVtYVxuICAgICk7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdERUxFVEUnLFxuICAgICAgJy9zY2hlbWFzLzpjbGFzc05hbWUnLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIGRlbGV0ZVNjaGVtYVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJTY2hlbWFDb250cm9sbGVyIiwiY2xhc3NOYW1lTWlzbWF0Y2hSZXNwb25zZSIsImJvZHlDbGFzcyIsInBhdGhDbGFzcyIsIkVycm9yIiwiSU5WQUxJRF9DTEFTU19OQU1FIiwiZ2V0QWxsU2NoZW1hcyIsInJlcSIsImNvbmZpZyIsImRhdGFiYXNlIiwibG9hZFNjaGVtYSIsImNsZWFyQ2FjaGUiLCJ0aGVuIiwic2NoZW1hQ29udHJvbGxlciIsImdldEFsbENsYXNzZXMiLCJzY2hlbWFzIiwicmVzcG9uc2UiLCJyZXN1bHRzIiwiZ2V0T25lU2NoZW1hIiwiY2xhc3NOYW1lIiwicGFyYW1zIiwic2NoZW1hIiwiY2F0Y2giLCJlcnJvciIsInVuZGVmaW5lZCIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsImNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZCIsImxvY2tTY2hlbWFzIiwiT1BFUkFUSU9OX0ZPUkJJRERFTiIsImludGVybmFsQ3JlYXRlU2NoZW1hIiwiYm9keSIsImNvbnRyb2xsZXIiLCJhZGRDbGFzc0lmTm90RXhpc3RzIiwiZmllbGRzIiwiY2xhc3NMZXZlbFBlcm1pc3Npb25zIiwiaW5kZXhlcyIsImludGVybmFsVXBkYXRlU2NoZW1hIiwidXBkYXRlQ2xhc3MiLCJjcmVhdGVTY2hlbWEiLCJhdXRoIiwiaXNSZWFkT25seSIsInBhdGgiLCJtb2RpZnlTY2hlbWEiLCJkZWxldGVTY2hlbWEiLCJjbGFzc05hbWVJc1ZhbGlkIiwiaW52YWxpZENsYXNzTmFtZU1lc3NhZ2UiLCJTY2hlbWFzUm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJtaWRkbGV3YXJlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TY2hlbWFzUm91dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNjaGVtYXMuanNcblxudmFyIFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlLFxuICBTY2hlbWFDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vQ29udHJvbGxlcnMvU2NoZW1hQ29udHJvbGxlcicpO1xuXG5pbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuXG5mdW5jdGlvbiBjbGFzc05hbWVNaXNtYXRjaFJlc3BvbnNlKGJvZHlDbGFzcywgcGF0aENsYXNzKSB7XG4gIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICBQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsXG4gICAgYENsYXNzIG5hbWUgbWlzbWF0Y2ggYmV0d2VlbiAke2JvZHlDbGFzc30gYW5kICR7cGF0aENsYXNzfS5gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbFNjaGVtYXMocmVxKSB7XG4gIHJldHVybiByZXEuY29uZmlnLmRhdGFiYXNlXG4gICAgLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pXG4gICAgLnRoZW4oc2NoZW1hQ29udHJvbGxlciA9PiBzY2hlbWFDb250cm9sbGVyLmdldEFsbENsYXNzZXMoeyBjbGVhckNhY2hlOiB0cnVlIH0pKVxuICAgIC50aGVuKHNjaGVtYXMgPT4gKHsgcmVzcG9uc2U6IHsgcmVzdWx0czogc2NoZW1hcyB9IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0T25lU2NoZW1hKHJlcSkge1xuICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZTtcbiAgcmV0dXJuIHJlcS5jb25maWcuZGF0YWJhc2VcbiAgICAubG9hZFNjaGVtYSh7IGNsZWFyQ2FjaGU6IHRydWUgfSlcbiAgICAudGhlbihzY2hlbWFDb250cm9sbGVyID0+IHNjaGVtYUNvbnRyb2xsZXIuZ2V0T25lU2NoZW1hKGNsYXNzTmFtZSwgdHJ1ZSkpXG4gICAgLnRoZW4oc2NoZW1hID0+ICh7IHJlc3BvbnNlOiBzY2hlbWEgfSkpXG4gICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgIGlmIChlcnJvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX0NMQVNTX05BTUUsIGBDbGFzcyAke2NsYXNzTmFtZX0gZG9lcyBub3QgZXhpc3QuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5URVJOQUxfU0VSVkVSX0VSUk9SLCAnRGF0YWJhc2UgYWRhcHRlciBlcnJvci4nKTtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuY29uc3QgY2hlY2tJZkRlZmluZWRTY2hlbWFzSXNVc2VkID0gcmVxID0+IHtcbiAgaWYgKHJlcS5jb25maWc/LnNjaGVtYT8ubG9ja1NjaGVtYXMgPT09IHRydWUpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PUEVSQVRJT05fRk9SQklEREVOLFxuICAgICAgJ0Nhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIHdoZW4gc2NoZW1hcyBvcHRpb25zIGlzIHVzZWQuJ1xuICAgICk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpbnRlcm5hbENyZWF0ZVNjaGVtYSA9IGFzeW5jIChjbGFzc05hbWUsIGJvZHksIGNvbmZpZykgPT4ge1xuICBjb25zdCBjb250cm9sbGVyID0gYXdhaXQgY29uZmlnLmRhdGFiYXNlLmxvYWRTY2hlbWEoeyBjbGVhckNhY2hlOiB0cnVlIH0pO1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNvbnRyb2xsZXIuYWRkQ2xhc3NJZk5vdEV4aXN0cyhcbiAgICBjbGFzc05hbWUsXG4gICAgYm9keS5maWVsZHMsXG4gICAgYm9keS5jbGFzc0xldmVsUGVybWlzc2lvbnMsXG4gICAgYm9keS5pbmRleGVzXG4gICk7XG4gIHJldHVybiB7XG4gICAgcmVzcG9uc2UsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaW50ZXJuYWxVcGRhdGVTY2hlbWEgPSBhc3luYyAoY2xhc3NOYW1lLCBib2R5LCBjb25maWcpID0+IHtcbiAgY29uc3QgY29udHJvbGxlciA9IGF3YWl0IGNvbmZpZy5kYXRhYmFzZS5sb2FkU2NoZW1hKHsgY2xlYXJDYWNoZTogdHJ1ZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjb250cm9sbGVyLnVwZGF0ZUNsYXNzKFxuICAgIGNsYXNzTmFtZSxcbiAgICBib2R5LmZpZWxkcyB8fCB7fSxcbiAgICBib2R5LmNsYXNzTGV2ZWxQZXJtaXNzaW9ucyxcbiAgICBib2R5LmluZGV4ZXMsXG4gICAgY29uZmlnLmRhdGFiYXNlXG4gICk7XG4gIHJldHVybiB7IHJlc3BvbnNlIH07XG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVTY2hlbWEocmVxKSB7XG4gIGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZChyZXEpO1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBjcmVhdGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmIChyZXEucGFyYW1zLmNsYXNzTmFtZSAmJiByZXEuYm9keS5jbGFzc05hbWUpIHtcbiAgICBpZiAocmVxLnBhcmFtcy5jbGFzc05hbWUgIT0gcmVxLmJvZHkuY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lTWlzbWF0Y2hSZXNwb25zZShyZXEuYm9keS5jbGFzc05hbWUsIHJlcS5wYXJhbXMuY2xhc3NOYW1lKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBjbGFzc05hbWUgPSByZXEucGFyYW1zLmNsYXNzTmFtZSB8fCByZXEuYm9keS5jbGFzc05hbWU7XG4gIGlmICghY2xhc3NOYW1lKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKDEzNSwgYFBPU1QgJHtyZXEucGF0aH0gbmVlZHMgYSBjbGFzcyBuYW1lLmApO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGludGVybmFsQ3JlYXRlU2NoZW1hKGNsYXNzTmFtZSwgcmVxLmJvZHksIHJlcS5jb25maWcpO1xufVxuXG5mdW5jdGlvbiBtb2RpZnlTY2hlbWEocmVxKSB7XG4gIGNoZWNrSWZEZWZpbmVkU2NoZW1hc0lzVXNlZChyZXEpO1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byB1cGRhdGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmIChyZXEuYm9keS5jbGFzc05hbWUgJiYgcmVxLmJvZHkuY2xhc3NOYW1lICE9IHJlcS5wYXJhbXMuY2xhc3NOYW1lKSB7XG4gICAgcmV0dXJuIGNsYXNzTmFtZU1pc21hdGNoUmVzcG9uc2UocmVxLmJvZHkuY2xhc3NOYW1lLCByZXEucGFyYW1zLmNsYXNzTmFtZSk7XG4gIH1cbiAgY29uc3QgY2xhc3NOYW1lID0gcmVxLnBhcmFtcy5jbGFzc05hbWU7XG5cbiAgcmV0dXJuIGludGVybmFsVXBkYXRlU2NoZW1hKGNsYXNzTmFtZSwgcmVxLmJvZHksIHJlcS5jb25maWcpO1xufVxuXG5jb25zdCBkZWxldGVTY2hlbWEgPSByZXEgPT4ge1xuICBpZiAocmVxLmF1dGguaXNSZWFkT25seSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9QRVJBVElPTl9GT1JCSURERU4sXG4gICAgICBcInJlYWQtb25seSBtYXN0ZXJLZXkgaXNuJ3QgYWxsb3dlZCB0byBkZWxldGUgYSBzY2hlbWEuXCJcbiAgICApO1xuICB9XG4gIGlmICghU2NoZW1hQ29udHJvbGxlci5jbGFzc05hbWVJc1ZhbGlkKHJlcS5wYXJhbXMuY2xhc3NOYW1lKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLklOVkFMSURfQ0xBU1NfTkFNRSxcbiAgICAgIFNjaGVtYUNvbnRyb2xsZXIuaW52YWxpZENsYXNzTmFtZU1lc3NhZ2UocmVxLnBhcmFtcy5jbGFzc05hbWUpXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcmVxLmNvbmZpZy5kYXRhYmFzZS5kZWxldGVTY2hlbWEocmVxLnBhcmFtcy5jbGFzc05hbWUpLnRoZW4oKCkgPT4gKHsgcmVzcG9uc2U6IHt9IH0pKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBTY2hlbWFzUm91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvc2NoZW1hcycsIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsIGdldEFsbFNjaGVtYXMpO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvc2NoZW1hcy86Y2xhc3NOYW1lJyxcbiAgICAgIG1pZGRsZXdhcmUucHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MsXG4gICAgICBnZXRPbmVTY2hlbWFcbiAgICApO1xuICAgIHRoaXMucm91dGUoJ1BPU1QnLCAnL3NjaGVtYXMnLCBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLCBjcmVhdGVTY2hlbWEpO1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnUE9TVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgY3JlYXRlU2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ1BVVCcsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgbW9kaWZ5U2NoZW1hXG4gICAgKTtcbiAgICB0aGlzLnJvdXRlKFxuICAgICAgJ0RFTEVURScsXG4gICAgICAnL3NjaGVtYXMvOmNsYXNzTmFtZScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgZGVsZXRlU2NoZW1hXG4gICAgKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLQTtBQUNBO0FBQTZDO0FBQUE7QUFBQTtBQU43Qzs7QUFFQSxJQUFJQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQ0QsS0FBSztFQUNyQ0UsZ0JBQWdCLEdBQUdELE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQztBQUsvRCxTQUFTRSx5QkFBeUIsQ0FBQ0MsU0FBUyxFQUFFQyxTQUFTLEVBQUU7RUFDdkQsTUFBTSxJQUFJTCxLQUFLLENBQUNNLEtBQUssQ0FDbkJOLEtBQUssQ0FBQ00sS0FBSyxDQUFDQyxrQkFBa0IsRUFDN0IsK0JBQThCSCxTQUFVLFFBQU9DLFNBQVUsR0FBRSxDQUM3RDtBQUNIO0FBRUEsU0FBU0csYUFBYSxDQUFDQyxHQUFHLEVBQUU7RUFDMUIsT0FBT0EsR0FBRyxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FDdkJDLFVBQVUsQ0FBQztJQUFFQyxVQUFVLEVBQUU7RUFBSyxDQUFDLENBQUMsQ0FDaENDLElBQUksQ0FBQ0MsZ0JBQWdCLElBQUlBLGdCQUFnQixDQUFDQyxhQUFhLENBQUM7SUFBRUgsVUFBVSxFQUFFO0VBQUssQ0FBQyxDQUFDLENBQUMsQ0FDOUVDLElBQUksQ0FBQ0csT0FBTyxLQUFLO0lBQUVDLFFBQVEsRUFBRTtNQUFFQyxPQUFPLEVBQUVGO0lBQVE7RUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRDtBQUVBLFNBQVNHLFlBQVksQ0FBQ1gsR0FBRyxFQUFFO0VBQ3pCLE1BQU1ZLFNBQVMsR0FBR1osR0FBRyxDQUFDYSxNQUFNLENBQUNE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
@@ -4,19 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.SecurityRouter = void 0;
7
-
8
7
  var _PromiseRouter = _interopRequireDefault(require("../PromiseRouter"));
9
-
10
8
  var middleware = _interopRequireWildcard(require("../middlewares"));
11
-
12
9
  var _CheckRunner = _interopRequireDefault(require("../Security/CheckRunner"));
13
-
14
10
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
-
16
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  class SecurityRouter extends _PromiseRouter.default {
21
14
  mountRoutes() {
22
15
  this.route('GET', '/security', middleware.promiseEnforceMasterKeyAccess, this._enforceSecurityCheckEnabled, async req => {
@@ -27,10 +20,8 @@ class SecurityRouter extends _PromiseRouter.default {
27
20
  };
28
21
  });
29
22
  }
30
-
31
23
  async _enforceSecurityCheckEnabled(req) {
32
24
  const config = req.config;
33
-
34
25
  if (!config.security || !config.security.enableCheck) {
35
26
  const error = new Error();
36
27
  error.status = 409;
@@ -38,10 +29,8 @@ class SecurityRouter extends _PromiseRouter.default {
38
29
  throw error;
39
30
  }
40
31
  }
41
-
42
32
  }
43
-
44
33
  exports.SecurityRouter = SecurityRouter;
45
34
  var _default = SecurityRouter;
46
35
  exports.default = _default;
47
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1NlY3VyaXR5Um91dGVyLmpzIl0sIm5hbWVzIjpbIlNlY3VyaXR5Um91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50Um91dGVzIiwicm91dGUiLCJtaWRkbGV3YXJlIiwicHJvbWlzZUVuZm9yY2VNYXN0ZXJLZXlBY2Nlc3MiLCJfZW5mb3JjZVNlY3VyaXR5Q2hlY2tFbmFibGVkIiwicmVxIiwicmVwb3J0IiwiQ2hlY2tSdW5uZXIiLCJjb25maWciLCJzZWN1cml0eSIsInJ1biIsInN0YXR1cyIsInJlc3BvbnNlIiwiZW5hYmxlQ2hlY2siLCJlcnJvciIsIkVycm9yIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOzs7Ozs7OztBQUVPLE1BQU1BLGNBQU4sU0FBNkJDLHNCQUE3QixDQUEyQztBQUNoREMsRUFBQUEsV0FBVyxHQUFHO0FBQ1osU0FBS0MsS0FBTCxDQUNFLEtBREYsRUFFRSxXQUZGLEVBR0VDLFVBQVUsQ0FBQ0MsNkJBSGIsRUFJRSxLQUFLQyw0QkFKUCxFQUtFLE1BQU1DLEdBQU4sSUFBYTtBQUNYLFlBQU1DLE1BQU0sR0FBRyxNQUFNLElBQUlDLG9CQUFKLENBQWdCRixHQUFHLENBQUNHLE1BQUosQ0FBV0MsUUFBM0IsRUFBcUNDLEdBQXJDLEVBQXJCO0FBQ0EsYUFBTztBQUNMQyxRQUFBQSxNQUFNLEVBQUUsR0FESDtBQUVMQyxRQUFBQSxRQUFRLEVBQUVOO0FBRkwsT0FBUDtBQUlELEtBWEg7QUFhRDs7QUFFaUMsUUFBNUJGLDRCQUE0QixDQUFDQyxHQUFELEVBQU07QUFDdEMsVUFBTUcsTUFBTSxHQUFHSCxHQUFHLENBQUNHLE1BQW5COztBQUNBLFFBQUksQ0FBQ0EsTUFBTSxDQUFDQyxRQUFSLElBQW9CLENBQUNELE1BQU0sQ0FBQ0MsUUFBUCxDQUFnQkksV0FBekMsRUFBc0Q7QUFDcEQsWUFBTUMsS0FBSyxHQUFHLElBQUlDLEtBQUosRUFBZDtBQUNBRCxNQUFBQSxLQUFLLENBQUNILE1BQU4sR0FBZSxHQUFmO0FBQ0FHLE1BQUFBLEtBQUssQ0FBQ0UsT0FBTixHQUFnQiwwRUFBaEI7QUFDQSxZQUFNRixLQUFOO0FBQ0Q7QUFDRjs7QUF6QitDOzs7ZUE0Qm5DaEIsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQcm9taXNlUm91dGVyIGZyb20gJy4uL1Byb21pc2VSb3V0ZXInO1xuaW1wb3J0ICogYXMgbWlkZGxld2FyZSBmcm9tICcuLi9taWRkbGV3YXJlcyc7XG5pbXBvcnQgQ2hlY2tSdW5uZXIgZnJvbSAnLi4vU2VjdXJpdHkvQ2hlY2tSdW5uZXInO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlSb3V0ZXIgZXh0ZW5kcyBQcm9taXNlUm91dGVyIHtcbiAgbW91bnRSb3V0ZXMoKSB7XG4gICAgdGhpcy5yb3V0ZShcbiAgICAgICdHRVQnLFxuICAgICAgJy9zZWN1cml0eScsXG4gICAgICBtaWRkbGV3YXJlLnByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzLFxuICAgICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5Q2hlY2tFbmFibGVkLFxuICAgICAgYXN5bmMgcmVxID0+IHtcbiAgICAgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQgbmV3IENoZWNrUnVubmVyKHJlcS5jb25maWcuc2VjdXJpdHkpLnJ1bigpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICAgIHJlc3BvbnNlOiByZXBvcnQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIF9lbmZvcmNlU2VjdXJpdHlDaGVja0VuYWJsZWQocmVxKSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBpZiAoIWNvbmZpZy5zZWN1cml0eSB8fCAhY29uZmlnLnNlY3VyaXR5LmVuYWJsZUNoZWNrKSB7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcigpO1xuICAgICAgZXJyb3Iuc3RhdHVzID0gNDA5O1xuICAgICAgZXJyb3IubWVzc2FnZSA9ICdFbmFibGUgUGFyc2UgU2VydmVyIG9wdGlvbiBgc2VjdXJpdHkuZW5hYmxlQ2hlY2tgIHRvIHJ1biBzZWN1cml0eSBjaGVjay4nO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlY3VyaXR5Um91dGVyO1xuIl19
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZWN1cml0eVJvdXRlciIsIlByb21pc2VSb3V0ZXIiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwibWlkZGxld2FyZSIsInByb21pc2VFbmZvcmNlTWFzdGVyS2V5QWNjZXNzIiwiX2VuZm9yY2VTZWN1cml0eUNoZWNrRW5hYmxlZCIsInJlcSIsInJlcG9ydCIsIkNoZWNrUnVubmVyIiwiY29uZmlnIiwic2VjdXJpdHkiLCJydW4iLCJzdGF0dXMiLCJyZXNwb25zZSIsImVuYWJsZUNoZWNrIiwiZXJyb3IiLCJFcnJvciIsIm1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TZWN1cml0eVJvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvbWlzZVJvdXRlciBmcm9tICcuLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCAqIGFzIG1pZGRsZXdhcmUgZnJvbSAnLi4vbWlkZGxld2FyZXMnO1xuaW1wb3J0IENoZWNrUnVubmVyIGZyb20gJy4uL1NlY3VyaXR5L0NoZWNrUnVubmVyJztcblxuZXhwb3J0IGNsYXNzIFNlY3VyaXR5Um91dGVyIGV4dGVuZHMgUHJvbWlzZVJvdXRlciB7XG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoXG4gICAgICAnR0VUJyxcbiAgICAgICcvc2VjdXJpdHknLFxuICAgICAgbWlkZGxld2FyZS5wcm9taXNlRW5mb3JjZU1hc3RlcktleUFjY2VzcyxcbiAgICAgIHRoaXMuX2VuZm9yY2VTZWN1cml0eUNoZWNrRW5hYmxlZCxcbiAgICAgIGFzeW5jIHJlcSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcG9ydCA9IGF3YWl0IG5ldyBDaGVja1J1bm5lcihyZXEuY29uZmlnLnNlY3VyaXR5KS5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGF0dXM6IDIwMCxcbiAgICAgICAgICByZXNwb25zZTogcmVwb3J0LFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBhc3luYyBfZW5mb3JjZVNlY3VyaXR5Q2hlY2tFbmFibGVkKHJlcSkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHJlcS5jb25maWc7XG4gICAgaWYgKCFjb25maWcuc2VjdXJpdHkgfHwgIWNvbmZpZy5zZWN1cml0eS5lbmFibGVDaGVjaykge1xuICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoKTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwOTtcbiAgICAgIGVycm9yLm1lc3NhZ2UgPSAnRW5hYmxlIFBhcnNlIFNlcnZlciBvcHRpb24gYHNlY3VyaXR5LmVuYWJsZUNoZWNrYCB0byBydW4gc2VjdXJpdHkgY2hlY2suJztcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZWN1cml0eVJvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQWtEO0FBQUE7QUFBQTtBQUUzQyxNQUFNQSxjQUFjLFNBQVNDLHNCQUFhLENBQUM7RUFDaERDLFdBQVcsR0FBRztJQUNaLElBQUksQ0FBQ0MsS0FBSyxDQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1hDLFVBQVUsQ0FBQ0MsNkJBQTZCLEVBQ3hDLElBQUksQ0FBQ0MsNEJBQTRCLEVBQ2pDLE1BQU1DLEdBQUcsSUFBSTtNQUNYLE1BQU1DLE1BQU0sR0FBRyxNQUFNLElBQUlDLG9CQUFXLENBQUNGLEdBQUcsQ0FBQ0csTUFBTSxDQUFDQyxRQUFRLENBQUMsQ0FBQ0MsR0FBRyxFQUFFO01BQy9ELE9BQU87UUFDTEMsTUFBTSxFQUFFLEdBQUc7UUFDWEMsUUFBUSxFQUFFTjtNQUNaLENBQUM7SUFDSCxDQUFDLENBQ0Y7RUFDSDtFQUVBLE1BQU1GLDRCQUE0QixDQUFDQyxHQUFHLEVBQUU7SUFDdEMsTUFBTUcsTUFBTSxHQUFHSCxHQUFHLENBQUNHLE1BQU07SUFDekIsSUFBSSxDQUFDQSxNQUFNLENBQUNDLFFBQVEsSUFBSSxDQUFDRCxNQUFNLENBQUNDLFFBQVEsQ0FBQ0ksV0FBVyxFQUFFO01BQ3BELE1BQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFLLEVBQUU7TUFDekJELEtBQUssQ0FBQ0gsTUFBTSxHQUFHLEdBQUc7TUFDbEJHLEtBQUssQ0FBQ0UsT0FBTyxHQUFHLDBFQUEwRTtNQUMxRixNQUFNRixLQUFLO0lBQ2I7RUFDRjtBQUNGO0FBQUM7QUFBQSxlQUVjaEIsY0FBYztBQUFBIn0=
@@ -4,52 +4,40 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.SessionsRouter = void 0;
7
-
8
7
  var _ClassesRouter = _interopRequireDefault(require("./ClassesRouter"));
9
-
10
8
  var _node = _interopRequireDefault(require("parse/node"));
11
-
12
9
  var _rest = _interopRequireDefault(require("../rest"));
13
-
14
10
  var _Auth = _interopRequireDefault(require("../Auth"));
15
-
16
11
  var _RestWrite = _interopRequireDefault(require("../RestWrite"));
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  class SessionsRouter extends _ClassesRouter.default {
21
14
  className() {
22
15
  return '_Session';
23
16
  }
24
-
25
17
  handleMe(req) {
26
18
  // TODO: Verify correct behavior
27
19
  if (!req.info || !req.info.sessionToken) {
28
20
  throw new _node.default.Error(_node.default.Error.INVALID_SESSION_TOKEN, 'Session token required.');
29
21
  }
30
-
31
22
  return _rest.default.find(req.config, _Auth.default.master(req.config), '_Session', {
32
23
  sessionToken: req.info.sessionToken
33
24
  }, undefined, req.info.clientSDK, req.info.context).then(response => {
34
25
  if (!response.results || response.results.length == 0) {
35
26
  throw new _node.default.Error(_node.default.Error.INVALID_SESSION_TOKEN, 'Session token not found.');
36
27
  }
37
-
38
28
  return {
39
29
  response: response.results[0]
40
30
  };
41
31
  });
42
32
  }
43
-
44
33
  handleUpdateToRevocableSession(req) {
45
34
  const config = req.config;
46
- const user = req.auth.user; // Issue #2720
35
+ const user = req.auth.user;
36
+ // Issue #2720
47
37
  // Calling without a session token would result in a not found user
48
-
49
38
  if (!user) {
50
39
  throw new _node.default.Error(_node.default.Error.OBJECT_NOT_FOUND, 'invalid session');
51
40
  }
52
-
53
41
  const {
54
42
  sessionData,
55
43
  createSession
@@ -60,7 +48,6 @@ class SessionsRouter extends _ClassesRouter.default {
60
48
  },
61
49
  installationId: req.auth.installationId
62
50
  });
63
-
64
51
  return createSession().then(() => {
65
52
  // delete the session token, use the db to skip beforeSave
66
53
  return config.database.update('_User', {
@@ -76,7 +63,6 @@ class SessionsRouter extends _ClassesRouter.default {
76
63
  });
77
64
  });
78
65
  }
79
-
80
66
  mountRoutes() {
81
67
  this.route('GET', '/sessions/me', req => {
82
68
  return this.handleMe(req);
@@ -100,10 +86,8 @@ class SessionsRouter extends _ClassesRouter.default {
100
86
  return this.handleUpdateToRevocableSession(req);
101
87
  });
102
88
  }
103
-
104
89
  }
105
-
106
90
  exports.SessionsRouter = SessionsRouter;
107
91
  var _default = SessionsRouter;
108
92
  exports.default = _default;
109
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Sb3V0ZXJzL1Nlc3Npb25zUm91dGVyLmpzIl0sIm5hbWVzIjpbIlNlc3Npb25zUm91dGVyIiwiQ2xhc3Nlc1JvdXRlciIsImNsYXNzTmFtZSIsImhhbmRsZU1lIiwicmVxIiwiaW5mbyIsInNlc3Npb25Ub2tlbiIsIlBhcnNlIiwiRXJyb3IiLCJJTlZBTElEX1NFU1NJT05fVE9LRU4iLCJyZXN0IiwiZmluZCIsImNvbmZpZyIsIkF1dGgiLCJtYXN0ZXIiLCJ1bmRlZmluZWQiLCJjbGllbnRTREsiLCJjb250ZXh0IiwidGhlbiIsInJlc3BvbnNlIiwicmVzdWx0cyIsImxlbmd0aCIsImhhbmRsZVVwZGF0ZVRvUmV2b2NhYmxlU2Vzc2lvbiIsInVzZXIiLCJhdXRoIiwiT0JKRUNUX05PVF9GT1VORCIsInNlc3Npb25EYXRhIiwiY3JlYXRlU2Vzc2lvbiIsIlJlc3RXcml0ZSIsInVzZXJJZCIsImlkIiwiY3JlYXRlZFdpdGgiLCJhY3Rpb24iLCJpbnN0YWxsYXRpb25JZCIsImRhdGFiYXNlIiwidXBkYXRlIiwib2JqZWN0SWQiLCJfX29wIiwiUHJvbWlzZSIsInJlc29sdmUiLCJtb3VudFJvdXRlcyIsInJvdXRlIiwiaGFuZGxlRmluZCIsImhhbmRsZUdldCIsImhhbmRsZUNyZWF0ZSIsImhhbmRsZVVwZGF0ZSIsImhhbmRsZURlbGV0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRU8sTUFBTUEsY0FBTixTQUE2QkMsc0JBQTdCLENBQTJDO0FBQ2hEQyxFQUFBQSxTQUFTLEdBQUc7QUFDVixXQUFPLFVBQVA7QUFDRDs7QUFFREMsRUFBQUEsUUFBUSxDQUFDQyxHQUFELEVBQU07QUFDWjtBQUNBLFFBQUksQ0FBQ0EsR0FBRyxDQUFDQyxJQUFMLElBQWEsQ0FBQ0QsR0FBRyxDQUFDQyxJQUFKLENBQVNDLFlBQTNCLEVBQXlDO0FBQ3ZDLFlBQU0sSUFBSUMsY0FBTUMsS0FBVixDQUFnQkQs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QUFuQixFQUFnQ3JDLEdBQUcsSUFBSTtBQUNyQyxhQUFPLEtBQUt3QyxZQUFMLENBQWtCeEMsR0FBbEIsQ0FBUDtBQUNELEtBRkQ7QUFHQSxTQUFLcUMsS0FBTCxDQUFXLEtBQVgsRUFBa0IscUJBQWxCLEVBQXlDckMsR0FBRyxJQUFJO0FBQzlDLGFBQU8sS0FBS3lDLFlBQUwsQ0FBa0J6QyxHQUFsQixDQUFQO0FBQ0QsS0FGRDtBQUdBLFNBQUtxQyxLQUFMLENBQVcsUUFBWCxFQUFxQixxQkFBckIsRUFBNENyQyxHQUFHLElBQUk7QUFDakQsYUFBTyxLQUFLMEMsWUFBTCxDQUFrQjFDLEdBQWxCLENBQVA7QUFDRCxLQUZEO0FBR0EsU0FBS3FDLEtBQUwsQ0FBVyxNQUFYLEVBQW1CLDRCQUFuQixFQUFpRHJDLEdBQUcsSUFBSTtBQUN0RCxhQUFPLEtBQUtrQiw4QkFBTCxDQUFvQ2xCLEdBQXBDLENBQVA7QUFDRCxLQUZEO0FBR0Q7O0FBdEYrQzs7O2VBeUZuQ0osYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDbGFzc2VzUm91dGVyIGZyb20gJy4vQ2xhc3Nlc1JvdXRlcic7XG5pbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgcmVzdCBmcm9tICcuLi9yZXN0JztcbmltcG9ydCBBdXRoIGZyb20gJy4uL0F1dGgnO1xuaW1wb3J0IFJlc3RXcml0ZSBmcm9tICcuLi9SZXN0V3JpdGUnO1xuXG5leHBvcnQgY2xhc3MgU2Vzc2lvbnNSb3V0ZXIgZXh0ZW5kcyBDbGFzc2VzUm91dGVyIHtcbiAgY2xhc3NOYW1lKCkge1xuICAgIHJldHVybiAnX1Nlc3Npb24nO1xuICB9XG5cbiAgaGFuZGxlTWUocmVxKSB7XG4gICAgLy8gVE9ETzogVmVyaWZ5IGNvcnJlY3QgYmVoYXZpb3JcbiAgICBpZiAoIXJlcS5pbmZvIHx8ICFyZXEuaW5mby5zZXNzaW9uVG9rZW4pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIHJlcXVpcmVkLicpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdFxuICAgICAgLmZpbmQoXG4gICAgICAgIHJlcS5jb25maWcsXG4gICAgICAgIEF1dGgubWFzdGVyKHJlcS5jb25maWcpLFxuICAgICAgICAnX1Nlc3Npb24nLFxuICAgICAgICB7IHNlc3Npb25Ub2tlbjogcmVxLmluZm8uc2Vzc2lvblRva2VuIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgcmVxLmluZm8uY2xpZW50U0RLLFxuICAgICAgICByZXEuaW5mby5jb250ZXh0XG4gICAgICApXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UucmVzdWx0cyB8fCByZXNwb25zZS5yZXN1bHRzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfU0VTU0lPTl9UT0tFTiwgJ1Nlc3Npb24gdG9rZW4gbm90IGZvdW5kLicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlLnJlc3VsdHNbMF0sXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVVwZGF0ZVRvUmV2b2NhYmxlU2Vzc2lvbihyZXEpIHtcbiAgICBjb25zdCBjb25maWcgPSByZXEuY29uZmlnO1xuICAgIGNvbnN0IHVzZXIgPSByZXEuYXV0aC51c2VyO1xuICAgIC8vIElzc3VlICMyNzIwXG4gICAgLy8gQ2FsbGluZyB3aXRob3V0IGEgc2Vzc2lvbiB0b2tlbiB3b3VsZCByZXN1bHQgaW4gYSBub3QgZm91bmQgdXNlclxuICAgIGlmICghdXNlcikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdpbnZhbGlkIHNlc3Npb24nKTtcbiAgICB9XG4gICAgY29uc3QgeyBzZXNzaW9uRGF0YSwgY3JlYXRlU2Vzc2lvbiB9ID0gUmVzdFdyaXRlLmNyZWF0ZVNlc3Npb24oY29uZmlnLCB7XG4gICAgICB1c2VySWQ6IHVzZXIuaWQsXG4gICAgICBjcmVhdGVkV2l0aDoge1xuICAgICAgICBhY3Rpb246ICd1cGdyYWRlJyxcbiAgICAgIH0sXG4gICAgICBpbnN0YWxsYXRpb25JZDogcmVxLmF1dGguaW5zdGFsbGF0aW9uSWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3JlYXRlU2Vzc2lvbigpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIC8vIGRlbGV0ZSB0aGUgc2Vzc2lvbiB0b2tlbiwgdXNlIHRoZSBkYiB0byBza2lwIGJlZm9yZVNhdmVcbiAgICAgICAgcmV0dXJuIGNvbmZpZy5kYXRhYmFzZS51cGRhdGUoXG4gICAgICAgICAgJ19Vc2VyJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvYmplY3RJZDogdXNlci5pZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNlc3Npb25Ub2tlbjogeyBfX29wOiAnRGVsZXRlJyB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyByZXNwb25zZTogc2Vzc2lvbkRhdGEgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG1vdW50Um91dGVzKCkge1xuICAgIHRoaXMucm91dGUoJ0dFVCcsICcvc2Vzc2lvbnMvbWUnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlTWUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3Nlc3Npb25zJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZUZpbmQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3Nlc3Npb25zLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVHZXQocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy9zZXNzaW9ucycsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVDcmVhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQVVQnLCAnL3Nlc3Npb25zLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdERUxFVEUnLCAnL3Nlc3Npb25zLzpvYmplY3RJZCcsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVEZWxldGUocmVxKTtcbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlKCdQT1NUJywgJy91cGdyYWRlVG9SZXZvY2FibGVTZXNzaW9uJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZVVwZGF0ZVRvUmV2b2NhYmxlU2Vzc2lvbihyZXEpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNlc3Npb25zUm91dGVyO1xuIl19
93
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTZXNzaW9uc1JvdXRlciIsIkNsYXNzZXNSb3V0ZXIiLCJjbGFzc05hbWUiLCJoYW5kbGVNZSIsInJlcSIsImluZm8iLCJzZXNzaW9uVG9rZW4iLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9TRVNTSU9OX1RPS0VOIiwicmVzdCIsImZpbmQiLCJjb25maWciLCJBdXRoIiwibWFzdGVyIiwidW5kZWZpbmVkIiwiY2xpZW50U0RLIiwiY29udGV4dCIsInRoZW4iLCJyZXNwb25zZSIsInJlc3VsdHMiLCJsZW5ndGgiLCJoYW5kbGVVcGRhdGVUb1Jldm9jYWJsZVNlc3Npb24iLCJ1c2VyIiwiYXV0aCIsIk9CSkVDVF9OT1RfRk9VTkQiLCJzZXNzaW9uRGF0YSIsImNyZWF0ZVNlc3Npb24iLCJSZXN0V3JpdGUiLCJ1c2VySWQiLCJpZCIsImNyZWF0ZWRXaXRoIiwiYWN0aW9uIiwiaW5zdGFsbGF0aW9uSWQiLCJkYXRhYmFzZSIsInVwZGF0ZSIsIm9iamVjdElkIiwiX19vcCIsIlByb21pc2UiLCJyZXNvbHZlIiwibW91bnRSb3V0ZXMiLCJyb3V0ZSIsImhhbmRsZUZpbmQiLCJoYW5kbGVHZXQiLCJoYW5kbGVDcmVhdGUiLCJoYW5kbGVVcGRhdGUiLCJoYW5kbGVEZWxldGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvUm91dGVycy9TZXNzaW9uc1JvdXRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ2xhc3Nlc1JvdXRlciBmcm9tICcuL0NsYXNzZXNSb3V0ZXInO1xuaW1wb3J0IFBhcnNlIGZyb20gJ3BhcnNlL25vZGUnO1xuaW1wb3J0IHJlc3QgZnJvbSAnLi4vcmVzdCc7XG5pbXBvcnQgQXV0aCBmcm9tICcuLi9BdXRoJztcbmltcG9ydCBSZXN0V3JpdGUgZnJvbSAnLi4vUmVzdFdyaXRlJztcblxuZXhwb3J0IGNsYXNzIFNlc3Npb25zUm91dGVyIGV4dGVuZHMgQ2xhc3Nlc1JvdXRlciB7XG4gIGNsYXNzTmFtZSgpIHtcbiAgICByZXR1cm4gJ19TZXNzaW9uJztcbiAgfVxuXG4gIGhhbmRsZU1lKHJlcSkge1xuICAgIC8vIFRPRE86IFZlcmlmeSBjb3JyZWN0IGJlaGF2aW9yXG4gICAgaWYgKCFyZXEuaW5mbyB8fCAhcmVxLmluZm8uc2Vzc2lvblRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9TRVNTSU9OX1RPS0VOLCAnU2Vzc2lvbiB0b2tlbiByZXF1aXJlZC4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3RcbiAgICAgIC5maW5kKFxuICAgICAgICByZXEuY29uZmlnLFxuICAgICAgICBBdXRoLm1hc3RlcihyZXEuY29uZmlnKSxcbiAgICAgICAgJ19TZXNzaW9uJyxcbiAgICAgICAgeyBzZXNzaW9uVG9rZW46IHJlcS5pbmZvLnNlc3Npb25Ub2tlbiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHJlcS5pbmZvLmNsaWVudFNESyxcbiAgICAgICAgcmVxLmluZm8uY29udGV4dFxuICAgICAgKVxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLnJlc3VsdHMgfHwgcmVzcG9uc2UucmVzdWx0cy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5JTlZBTElEX1NFU1NJT05fVE9LRU4sICdTZXNzaW9uIHRva2VuIG5vdCBmb3VuZC4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZS5yZXN1bHRzWzBdLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGVUb1Jldm9jYWJsZVNlc3Npb24ocmVxKSB7XG4gICAgY29uc3QgY29uZmlnID0gcmVxLmNvbmZpZztcbiAgICBjb25zdCB1c2VyID0gcmVxLmF1dGgudXNlcjtcbiAgICAvLyBJc3N1ZSAjMjcyMFxuICAgIC8vIENhbGxpbmcgd2l0aG91dCBhIHNlc3Npb24gdG9rZW4gd291bGQgcmVzdWx0IGluIGEgbm90IGZvdW5kIHVzZXJcbiAgICBpZiAoIXVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnaW52YWxpZCBzZXNzaW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHsgc2Vzc2lvbkRhdGEsIGNyZWF0ZVNlc3Npb24gfSA9IFJlc3RXcml0ZS5jcmVhdGVTZXNzaW9uKGNvbmZpZywge1xuICAgICAgdXNlcklkOiB1c2VyLmlkLFxuICAgICAgY3JlYXRlZFdpdGg6IHtcbiAgICAgICAgYWN0aW9uOiAndXBncmFkZScsXG4gICAgICB9LFxuICAgICAgaW5zdGFsbGF0aW9uSWQ6IHJlcS5hdXRoLmluc3RhbGxhdGlvbklkLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNyZWF0ZVNlc3Npb24oKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBkZWxldGUgdGhlIHNlc3Npb24gdG9rZW4sIHVzZSB0aGUgZGIgdG8gc2tpcCBiZWZvcmVTYXZlXG4gICAgICAgIHJldHVybiBjb25maWcuZGF0YWJhc2UudXBkYXRlKFxuICAgICAgICAgICdfVXNlcicsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2JqZWN0SWQ6IHVzZXIuaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZXNzaW9uVG9rZW46IHsgX19vcDogJ0RlbGV0ZScgfSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgcmVzcG9uc2U6IHNlc3Npb25EYXRhIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBtb3VudFJvdXRlcygpIHtcbiAgICB0aGlzLnJvdXRlKCdHRVQnLCAnL3Nlc3Npb25zL21lJywgcmVxID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmhhbmRsZU1lKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXNzaW9ucycsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVGaW5kKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnR0VUJywgJy9zZXNzaW9ucy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlR2V0KHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvc2Vzc2lvbnMnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlQ3JlYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUFVUJywgJy9zZXNzaW9ucy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlVXBkYXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnREVMRVRFJywgJy9zZXNzaW9ucy86b2JqZWN0SWQnLCByZXEgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRGVsZXRlKHJlcSk7XG4gICAgfSk7XG4gICAgdGhpcy5yb3V0ZSgnUE9TVCcsICcvdXBncmFkZVRvUmV2b2NhYmxlU2Vzc2lvbicsIHJlcSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5oYW5kbGVVcGRhdGVUb1Jldm9jYWJsZVNlc3Npb24ocmVxKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBTZXNzaW9uc1JvdXRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFxQztBQUU5QixNQUFNQSxjQUFjLFNBQVNDLHNCQUFhLENBQUM7RUFDaERDLFNBQVMsR0FBRztJQUNWLE9BQU8sVUFBVTtFQUNuQjtFQUVBQyxRQUFRLENBQUNDLEdBQUcsRUFBRTtJQUNaO0lBQ0EsSUFBSSxDQUFDQSxHQUFHLENBQUNDLElBQUksSUFBSSxDQUFDRCxHQUFHLENBQUNDLElBQUksQ0FBQ0MsWUFB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