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
@@ -4,15 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.transformQueryInputToParse = exports.transformQueryConstraintInputToParse = void 0;
7
-
8
7
  var _graphqlRelay = require("graphql-relay");
9
-
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
-
14
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
13
  const parseQueryMap = {
17
14
  OR: '$or',
18
15
  AND: '$and',
@@ -55,28 +52,22 @@ const parseConstraintMap = {
55
52
  geoIntersects: '$geoIntersects',
56
53
  point: '$point'
57
54
  };
58
-
59
55
  const transformQueryConstraintInputToParse = (constraints, parentFieldName, className, parentConstraints, parseClasses) => {
60
56
  const fields = parseClasses[className].fields;
61
-
62
57
  if (parentFieldName === 'id' && className) {
63
58
  Object.keys(constraints).forEach(constraintName => {
64
59
  const constraintValue = constraints[constraintName];
65
-
66
60
  if (typeof constraintValue === 'string') {
67
61
  const globalIdObject = (0, _graphqlRelay.fromGlobalId)(constraintValue);
68
-
69
62
  if (globalIdObject.type === className) {
70
63
  constraints[constraintName] = globalIdObject.id;
71
64
  }
72
65
  } else if (Array.isArray(constraintValue)) {
73
66
  constraints[constraintName] = constraintValue.map(value => {
74
67
  const globalIdObject = (0, _graphqlRelay.fromGlobalId)(value);
75
-
76
68
  if (globalIdObject.type === className) {
77
69
  return globalIdObject.id;
78
70
  }
79
-
80
71
  return value;
81
72
  });
82
73
  }
@@ -84,10 +75,8 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
84
75
  parentConstraints.objectId = constraints;
85
76
  delete parentConstraints.id;
86
77
  }
87
-
88
78
  Object.keys(constraints).forEach(fieldName => {
89
79
  let fieldValue = constraints[fieldName];
90
-
91
80
  if (parseConstraintMap[fieldName]) {
92
81
  constraints[parseConstraintMap[fieldName]] = constraints[fieldName];
93
82
  delete constraints[fieldName];
@@ -118,8 +107,6 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
118
107
  * }
119
108
  * }
120
109
  */
121
-
122
-
123
110
  if (fieldValue.key && fieldValue.value !== undefined && parentConstraints && parentFieldName) {
124
111
  delete parentConstraints[parentFieldName];
125
112
  parentConstraints[`${parentFieldName}.${fieldValue.key}`] = _objectSpread(_objectSpread({}, parentConstraints[`${parentFieldName}.${fieldValue.key}`]), {}, {
@@ -129,11 +116,9 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
129
116
  const {
130
117
  targetClass
131
118
  } = fields[parentFieldName];
132
-
133
119
  if (fieldName === 'exists') {
134
120
  if (fields[parentFieldName].type === 'Relation') {
135
121
  const whereTarget = fieldValue ? 'where' : 'notWhere';
136
-
137
122
  if (constraints[whereTarget]) {
138
123
  if (constraints[whereTarget].objectId) {
139
124
  constraints[whereTarget].objectId = _objectSpread(_objectSpread({}, constraints[whereTarget].objectId), {}, {
@@ -155,15 +140,12 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
155
140
  className: targetClass
156
141
  };
157
142
  }
158
-
159
143
  delete constraints.$exists;
160
144
  } else {
161
145
  parentConstraints[parentFieldName].$exists = fieldValue;
162
146
  }
163
-
164
147
  return;
165
148
  }
166
-
167
149
  switch (fieldName) {
168
150
  case 'have':
169
151
  parentConstraints[parentFieldName].$inQuery = {
@@ -172,7 +154,6 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
172
154
  };
173
155
  transformQueryInputToParse(parentConstraints[parentFieldName].$inQuery.where, targetClass, parseClasses);
174
156
  break;
175
-
176
157
  case 'haveNot':
177
158
  parentConstraints[parentFieldName].$notInQuery = {
178
159
  where: fieldValue,
@@ -181,26 +162,20 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
181
162
  transformQueryInputToParse(parentConstraints[parentFieldName].$notInQuery.where, targetClass, parseClasses);
182
163
  break;
183
164
  }
184
-
185
165
  delete constraints[fieldName];
186
166
  return;
187
167
  }
188
-
189
168
  switch (fieldName) {
190
169
  case 'point':
191
170
  if (typeof fieldValue === 'object' && !fieldValue.__type) {
192
171
  fieldValue.__type = 'GeoPoint';
193
172
  }
194
-
195
173
  break;
196
-
197
174
  case 'nearSphere':
198
175
  if (typeof fieldValue === 'object' && !fieldValue.__type) {
199
176
  fieldValue.__type = 'GeoPoint';
200
177
  }
201
-
202
178
  break;
203
-
204
179
  case 'box':
205
180
  if (typeof fieldValue === 'object' && fieldValue.bottomLeft && fieldValue.upperRight) {
206
181
  fieldValue = [_objectSpread({
@@ -210,9 +185,7 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
210
185
  }, fieldValue.upperRight)];
211
186
  constraints[parseConstraintMap[fieldName]] = fieldValue;
212
187
  }
213
-
214
188
  break;
215
-
216
189
  case 'polygon':
217
190
  if (fieldValue instanceof Array) {
218
191
  fieldValue.forEach(geoPoint => {
@@ -221,9 +194,7 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
221
194
  }
222
195
  });
223
196
  }
224
-
225
197
  break;
226
-
227
198
  case 'centerSphere':
228
199
  if (typeof fieldValue === 'object' && fieldValue.center && fieldValue.distance) {
229
200
  fieldValue = [_objectSpread({
@@ -231,10 +202,8 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
231
202
  }, fieldValue.center), fieldValue.distance];
232
203
  constraints[parseConstraintMap[fieldName]] = fieldValue;
233
204
  }
234
-
235
205
  break;
236
206
  }
237
-
238
207
  if (typeof fieldValue === 'object') {
239
208
  if (fieldName === 'where') {
240
209
  transformQueryInputToParse(fieldValue, className, parseClasses);
@@ -244,17 +213,13 @@ const transformQueryConstraintInputToParse = (constraints, parentFieldName, clas
244
213
  }
245
214
  });
246
215
  };
247
-
248
216
  exports.transformQueryConstraintInputToParse = transformQueryConstraintInputToParse;
249
-
250
217
  const transformQueryInputToParse = (constraints, className, parseClasses) => {
251
218
  if (!constraints || typeof constraints !== 'object') {
252
219
  return;
253
220
  }
254
-
255
221
  Object.keys(constraints).forEach(fieldName => {
256
222
  const fieldValue = constraints[fieldName];
257
-
258
223
  if (parseQueryMap[fieldName]) {
259
224
  delete constraints[fieldName];
260
225
  fieldName = parseQueryMap[fieldName];
@@ -268,6 +233,5 @@ const transformQueryInputToParse = (constraints, className, parseClasses) => {
268
233
  }
269
234
  });
270
235
  };
271
-
272
236
  exports.transformQueryInputToParse = transformQueryInputToParse;
273
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML3RyYW5zZm9ybWVycy9xdWVyeS5qcyJdLCJuYW1lcyI6WyJwYXJzZVF1ZXJ5TWFwIiwiT1IiLCJBTkQiLCJOT1IiLCJwYXJzZUNvbnN0cmFpbnRNYXAiLCJlcXVhbFRvIiwibm90RXF1YWxUbyIsImxlc3NUaGFuIiwibGVzc1RoYW5PckVxdWFsVG8iLCJncmVhdGVyVGhhbiIsImdyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiaW4iLCJub3RJbiIsImV4aXN0cyIsImluUXVlcnlLZXkiLCJub3RJblF1ZXJ5S2V5IiwiaW5RdWVyeSIsIm5vdEluUXVlcnkiLCJjb250YWluZWRCeSIsImNvbnRhaW5zIiwibWF0Y2hlc1JlZ2V4Iiwib3B0aW9ucyIsInRleHQiLCJzZWFyY2giLCJ0ZXJtIiwibGFuZ3VhZ2UiLCJjYXNlU2Vuc2l0aXZlIiwiZGlhY3JpdGljU2Vuc2l0aXZlIiwibmVhclNwaGVyZSIsIm1heERpc3RhbmNlIiwibWF4RGlzdGFuY2VJblJhZGlhbnMiLCJtYXhEaXN0YW5jZUluTWlsZXMiLCJtYXhEaXN0YW5jZUluS2lsb21ldGVycyIsIndpdGhpbiIsImJveCIsImdlb1dpdGhpbiIsInBvbHlnb24iLCJjZW50ZXJTcGhlcmUiLCJnZW9JbnRlcnNlY3RzIiwicG9pbnQiLCJ0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UiLCJjb25zdHJhaW50cyIsInBhcmVudEZpZWxkTmFtZSIsImNsYXNzTmFtZSIsInBhcmVudENvbnN0cmFpbnRzIiwicGFyc2VDbGFzc2VzIiwiZmllbGRzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJjb25zdHJhaW50TmFtZSIsImNvbnN0cmFpbnRWYWx1ZSIsImdsb2JhbElkT2JqZWN0IiwidHlwZSIsImlkIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwidmFsdWUiLCJvYmplY3RJZCIsImZpZWxkTmFtZSIsImZpZWxkVmFsdWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJ0YXJnZXRDbGFzcyIsIndoZXJlVGFyZ2V0IiwiJGV4aXN0cyIsInBhcnNlV2hlcmVUYXJnZXQiLCJ3aGVyZSIsIiRpblF1ZXJ5IiwidHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UiLCIkbm90SW5RdWVyeSIsIl9fdHlwZSIsImJvdHRvbUxlZnQiLCJ1cHBlclJpZ2h0IiwiZ2VvUG9pbnQiLCJjZW50ZXIiLCJkaXN0YW5jZSIsImZpZWxkVmFsdWVJdGVtIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUEsTUFBTUEsYUFBYSxHQUFHO0FBQ3BCQyxFQUFBQSxFQUFFLEVBQUUsS0FEZ0I7QUFFcEJDLEVBQUFBLEdBQUcsRUFBRSxNQUZlO0FBR3BCQyxFQUFBQSxHQUFHLEVBQUU7QUFIZSxDQUF0QjtBQU1BLE1BQU1DLGtCQUFrQixHQUFHO0FBQ3pCQyxFQUFBQSxPQUFPLEVBQUUsS0FEZ0I7QUFFekJDLEVBQUFBLFVBQVUsRUFBRSxLQUZhO0FBR3pCQyxFQUFBQSxRQUFRLEVBQUUsS0FIZTtBQUl6QkMsRUFBQUEsaUJBQWlCLEVBQUUsTUFKTTtBQUt6QkMsRUFBQUEsV0FBVyxFQUFFLEtBTFk7QUFNekJDLEVBQUFBLG9CQUFvQixFQUFFLE1BTkc7QUFPekJDLEVBQUFBLEVBQUUsRUFBRSxLQVBxQjtBQVF6QkMsRUFBQUEsS0FBSyxFQUFFLE1BUmtCO0FBU3pCQyxFQUFBQSxNQUFNLEVBQUUsU0FUaUI7QUFVekJDLEVBQUFBLFVBQVUsRUFBRSxTQVZhO0FBV3pCQyxFQUFBQSxhQUFhLEVBQUUsYUFYVTtBQVl6QkMsRUFBQUEsT0FBTyxFQUFFLFVBWmdCO0FBYXpCQyxFQUFBQSxVQUFVLEVBQUUsYUFiYTtBQWN6QkMsRUFBQUEsV0FBVyxFQUFFLGNBZFk7QUFlekJDLEVBQUFBLFFBQVEsRUFBRSxNQWZlO0FBZ0J6QkMsRUFBQUEsWUFBWSxFQUFFLFFBaEJXO0FBaUJ6QkMsRUFBQUEsT0FBTyxFQUFFLFVBakJnQjtBQWtCekJDLEVBQUFBLElBQUksRUFBRSxPQWxCbUI7QUFtQnpCQyxFQUFBQSxN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QlEsT0FBekIsQ0FBaUNXLFNBQVMsSUFBSTtBQUM1QyxVQUFNQyxVQUFVLEdBQUdwQixXQUFXLENBQUNtQixTQUFELENBQTlCOztBQUVBLFFBQUk1RCxhQUFhLENBQUM0RCxTQUFELENBQWpCLEVBQThCO0FBQzVCLGFBQU9uQixXQUFXLENBQUNtQixTQUFELENBQWxCO0FBQ0FBLE1BQUFBLFNBQVMsR0FBRzVELGFBQWEsQ0FBQzRELFNBQUQsQ0FBekI7QUFDQW5CLE1BQUFBLFdBQVcsQ0FBQ21CLFNBQUQsQ0FBWCxHQUF5QkMsVUFBekI7QUFDQUEsTUFBQUEsVUFBVSxDQUFDWixPQUFYLENBQW1CNkIsY0FBYyxJQUFJO0FBQ25DUixRQUFBQSwwQkFBMEIsQ0FBQ1EsY0FBRCxFQUFpQm5DLFNBQWpCLEVBQTRCRSxZQUE1QixDQUExQjtBQUNELE9BRkQ7QUFHQTtBQUNELEtBUkQsTUFRTztBQUNMTCxNQUFBQSxvQ0FBb0MsQ0FDbENxQixVQURrQyxFQUVsQ0QsU0FGa0MsRUFHbENqQixTQUhrQyxFQUlsQ0YsV0FKa0MsRUFLbENJLFlBTGtDLENBQXBDO0FBT0Q7QUFDRixHQXBCRDtBQXFCRCxDQTFCRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21HbG9iYWxJZCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuXG5jb25zdCBwYXJzZVF1ZXJ5TWFwID0ge1xuICBPUjogJyRvcicsXG4gIEFORDogJyRhbmQnLFxuICBOT1I6ICckbm9yJyxcbn07XG5cbmNvbnN0IHBhcnNlQ29uc3RyYWludE1hcCA9IHtcbiAgZXF1YWxUbzogJyRlcScsXG4gIG5vdEVxdWFsVG86ICckbmUnLFxuICBsZXNzVGhhbjogJyRsdCcsXG4gIGxlc3NUaGFuT3JFcXVhbFRvOiAnJGx0ZScsXG4gIGdyZWF0ZXJUaGFuOiAnJGd0JyxcbiAgZ3JlYXRlclRoYW5PckVxdWFsVG86ICckZ3RlJyxcbiAgaW46ICckaW4nLFxuICBub3RJbjogJyRuaW4nLFxuICBleGlzdHM6ICckZXhpc3RzJyxcbiAgaW5RdWVyeUtleTogJyRzZWxlY3QnLFxuICBub3RJblF1ZXJ5S2V5OiAnJGRvbnRTZWxlY3QnLFxuICBpblF1ZXJ5OiAnJGluUXVlcnknLFxuICBub3RJblF1ZXJ5OiAnJG5vdEluUXVlcnknLFxuICBjb250YWluZWRCeTogJyRjb250YWluZWRCeScsXG4gIGNvbnRhaW5zOiAnJGFsbCcsXG4gIG1hdGNoZXNSZWdleDogJyRyZWdleCcsXG4gIG9wdGlvbnM6ICckb3B0aW9ucycsXG4gIHRleHQ6ICckdGV4dCcsXG4gIHNlYXJjaDogJyRzZWFyY2gnLFxuICB0ZXJtOiAnJHRlcm0nLFxuICBsYW5ndWFnZTogJyRsYW5ndWFnZScsXG4gIGNhc2VTZW5zaXRpdmU6ICckY2FzZVNlbnNpdGl2ZScsXG4gIGRpYWNyaXRpY1NlbnNpdGl2ZTogJyRkaWFjcml0aWNTZW5zaXRpdmUnLFxuICBuZWFyU3BoZXJlOiAnJG5lYXJTcGhlcmUnLFxuICBtYXhEaXN0YW5jZTogJyRtYXhEaXN0YW5jZScsXG4gIG1heERpc3RhbmNlSW5SYWRpYW5zOiAnJG1heERpc3RhbmNlSW5SYWRpYW5zJyxcbiAgbWF4RGlzdGFuY2VJbk1pbGVzOiAnJG1heERpc3RhbmNlSW5NaWxlcycsXG4gIG1heERpc3RhbmNlSW5LaWxvbWV0ZXJzOiAnJG1heERpc3RhbmNlSW5LaWxvbWV0ZXJzJyxcbiAgd2l0aGluOiAnJHdpdGhpbicsXG4gIGJveDogJyRib3gnLFxuICBnZW9XaXRoaW46ICckZ2VvV2l0aGluJyxcbiAgcG9seWdvbjogJyRwb2x5Z29uJyxcbiAgY2VudGVyU3BoZXJlOiAnJGNlbnRlclNwaGVyZScsXG4gIGdlb0ludGVyc2VjdHM6ICckZ2VvSW50ZXJzZWN0cycsXG4gIHBvaW50OiAnJHBvaW50Jyxcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVF1ZXJ5Q29uc3RyYWludElucHV0VG9QYXJzZSA9IChcbiAgY29uc3RyYWludHMsXG4gIHBhcmVudEZpZWxkTmFtZSxcbiAgY2xhc3NOYW1lLFxuICBwYXJlbnRDb25zdHJhaW50cyxcbiAgcGFyc2VDbGFzc2VzXG4pID0+IHtcbiAgY29uc3QgZmllbGRzID0gcGFyc2VDbGFzc2VzW2NsYXNzTmFtZV0uZmllbGRzO1xuICBpZiAocGFyZW50RmllbGROYW1lID09PSAnaWQnICYmIGNsYXNzTmFtZSkge1xuICAgIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGNvbnN0cmFpbnROYW1lID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGNvbnN0cmFpbnRzW2NvbnN0cmFpbnROYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29uc3RyYWludFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChjb25zdHJhaW50VmFsdWUpO1xuXG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSBjbGFzc05hbWUpIHtcbiAgICAgICAgICBjb25zdHJhaW50c1tjb25zdHJhaW50TmFtZV0gPSBnbG9iYWxJZE9iamVjdC5pZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnN0cmFpbnRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3RyYWludHNbY29uc3RyYWludE5hbWVdID0gY29uc3RyYWludFZhbHVlLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcGFyZW50Q29uc3RyYWludHMub2JqZWN0SWQgPSBjb25zdHJhaW50cztcbiAgICBkZWxldGUgcGFyZW50Q29uc3RyYWludHMuaWQ7XG4gIH1cbiAgT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZvckVhY2goZmllbGROYW1lID0+IHtcbiAgICBsZXQgZmllbGRWYWx1ZSA9IGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgaWYgKHBhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdKSB7XG4gICAgICBjb25zdHJhaW50c1twYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV0gPSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgICAgZGVsZXRlIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIHdlIGhhdmUgYSBrZXktdmFsdWUgcGFpciwgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHdheSB0aGUgY29uc3RyYWludCBpcyBzdHJ1Y3R1cmVkLlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiAgIEZyb206XG4gICAgICogICB7XG4gICAgICogICAgIFwic29tZUZpZWxkXCI6IHtcbiAgICAgKiAgICAgICBcImxlc3NUaGFuXCI6IHtcbiAgICAgKiAgICAgICAgIFwia2V5XCI6XCJmb28uYmFyXCIsXG4gICAgICogICAgICAgICBcInZhbHVlXCI6IDEwMFxuICAgICAqICAgICAgIH0sXG4gICAgICogICAgICAgXCJncmVhdGVyVGhhblwiOiB7XG4gICAgICogICAgICAgICBcImtleVwiOlwiZm9vLmJhclwiLFxuICAgICAqICAgICAgICAgXCJ2YWx1ZVwiOiAxMFxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogICBUbzpcbiAgICAgKiAgIHtcbiAgICAgKiAgICAgXCJzb21lRmllbGQuZm9vLmJhclwiOiB7XG4gICAgICogICAgICAgXCIkbHRcIjogMTAwLFxuICAgICAqICAgICAgIFwiJGd0XCI6IDEwXG4gICAgICogICAgICB9XG4gICAgICogICB9XG4gICAgICovXG4gICAgaWYgKGZpZWxkVmFsdWUua2V5ICYmIGZpZWxkVmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwYXJlbnRDb25zdHJhaW50cyAmJiBwYXJlbnRGaWVsZE5hbWUpIHtcbiAgICAgIGRlbGV0ZSBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdO1xuICAgICAgcGFyZW50Q29uc3RyYWludHNbYCR7cGFyZW50RmllbGROYW1lfS4ke2ZpZWxkVmFsdWUua2V5fWBdID0ge1xuICAgICAgICAuLi5wYXJlbnRDb25zdHJhaW50c1tgJHtwYXJlbnRGaWVsZE5hbWV9LiR7ZmllbGRWYWx1ZS5rZXl9YF0sXG4gICAgICAgIFtwYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV06IGZpZWxkVmFsdWUudmFsdWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBmaWVsZHNbcGFyZW50RmllbGROYW1lXSAmJlxuICAgICAgKGZpZWxkc1twYXJlbnRGaWVsZE5hbWVdLnR5cGUgPT09ICdQb2ludGVyJyB8fCBmaWVsZHNbcGFyZW50RmllbGROYW1lXS50eXBlID09PSAnUmVsYXRpb24nKVxuICAgICkge1xuICAgICAgY29uc3QgeyB0YXJnZXRDbGFzcyB9ID0gZmllbGRzW3BhcmVudEZpZWxkTmFtZV07XG4gICAgICBpZiAoZmllbGROYW1lID09PSAnZXhpc3RzJykge1xuICAgICAgICBpZiAoZmllbGRzW3BhcmVudEZpZWxkTmFtZV0udHlwZSA9PT0gJ1JlbGF0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHdoZXJlVGFyZ2V0ID0gZmllbGRWYWx1ZSA/ICd3aGVyZScgOiAnbm90V2hlcmUnO1xuICAgICAgICAgIGlmIChjb25zdHJhaW50c1t3aGVyZVRhcmdldF0pIHtcbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50c1t3aGVyZVRhcmdldF0ub2JqZWN0SWQpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkID0ge1xuICAgICAgICAgICAgICAgIC4uLmNvbnN0cmFpbnRzW3doZXJlVGFyZ2V0XS5vYmplY3RJZCxcbiAgICAgICAgICAgICAgICAkZXhpc3RzOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkID0ge1xuICAgICAgICAgICAgICAgICRleGlzdHM6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlV2hlcmVUYXJnZXQgPSBmaWVsZFZhbHVlID8gJyRpblF1ZXJ5JyA6ICckbm90SW5RdWVyeSc7XG4gICAgICAgICAgICBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdW3BhcnNlV2hlcmVUYXJnZXRdID0ge1xuICAgICAgICAgICAgICB3aGVyZTogeyBvYmplY3RJZDogeyAkZXhpc3RzOiB0cnVlIH0gfSxcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBjb25zdHJhaW50cy4kZXhpc3RzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJGV4aXN0cyA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChmaWVsZE5hbWUpIHtcbiAgICAgICAgY2FzZSAnaGF2ZSc6XG4gICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kaW5RdWVyeSA9IHtcbiAgICAgICAgICAgIHdoZXJlOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKFxuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kaW5RdWVyeS53aGVyZSxcbiAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaGF2ZU5vdCc6XG4gICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kbm90SW5RdWVyeSA9IHtcbiAgICAgICAgICAgIHdoZXJlOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKFxuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kbm90SW5RdWVyeS53aGVyZSxcbiAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGZpZWxkTmFtZSkge1xuICAgICAgY2FzZSAncG9pbnQnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmICFmaWVsZFZhbHVlLl9fdHlwZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25lYXJTcGhlcmUnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmICFmaWVsZFZhbHVlLl9fdHlwZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JveCc6XG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5ib3R0b21MZWZ0ICYmIGZpZWxkVmFsdWUudXBwZXJSaWdodCkge1xuICAgICAgICAgIGZpZWxkVmFsdWUgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS5ib3R0b21MZWZ0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX190eXBlOiAnR2VvUG9pbnQnLFxuICAgICAgICAgICAgICAuLi5maWVsZFZhbHVlLnVwcGVyUmlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3RyYWludHNbcGFyc2VDb25zdHJhaW50TWFwW2ZpZWxkTmFtZV1dID0gZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgICBpZiAoZmllbGRWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgZmllbGRWYWx1ZS5mb3JFYWNoKGdlb1BvaW50ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZ2VvUG9pbnQgPT09ICdvYmplY3QnICYmICFnZW9Qb2ludC5fX3R5cGUpIHtcbiAgICAgICAgICAgICAgZ2VvUG9pbnQuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlclNwaGVyZSc6XG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5jZW50ZXIgJiYgZmllbGRWYWx1ZS5kaXN0YW5jZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS5jZW50ZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGRWYWx1ZS5kaXN0YW5jZSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0cmFpbnRzW3BhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChmaWVsZE5hbWUgPT09ICd3aGVyZScpIHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UoZmllbGRWYWx1ZSwgY2xhc3NOYW1lLCBwYXJzZUNsYXNzZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlDb25zdHJhaW50SW5wdXRUb1BhcnNlKFxuICAgICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGROYW1lLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBwYXJzZUNsYXNzZXNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UgPSAoY29uc3RyYWludHMsIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKSA9PiB7XG4gIGlmICghY29uc3RyYWludHMgfHwgdHlwZW9mIGNvbnN0cmFpbnRzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG5cbiAgICBpZiAocGFyc2VRdWVyeU1hcFtmaWVsZE5hbWVdKSB7XG4gICAgICBkZWxldGUgY29uc3RyYWludHNbZmllbGROYW1lXTtcbiAgICAgIGZpZWxkTmFtZSA9IHBhcnNlUXVlcnlNYXBbZmllbGROYW1lXTtcbiAgICAgIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlO1xuICAgICAgZmllbGRWYWx1ZS5mb3JFYWNoKGZpZWxkVmFsdWVJdGVtID0+IHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UoZmllbGRWYWx1ZUl0ZW0sIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UoXG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UsIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlIH07XG4iXX0=
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZVF1ZXJ5TWFwIiwiT1IiLCJBTkQiLCJOT1IiLCJwYXJzZUNvbnN0cmFpbnRNYXAiLCJlcXVhbFRvIiwibm90RXF1YWxUbyIsImxlc3NUaGFuIiwibGVzc1RoYW5PckVxdWFsVG8iLCJncmVhdGVyVGhhbiIsImdyZWF0ZXJUaGFuT3JFcXVhbFRvIiwiaW4iLCJub3RJbiIsImV4aXN0cyIsImluUXVlcnlLZXkiLCJub3RJblF1ZXJ5S2V5IiwiaW5RdWVyeSIsIm5vdEluUXVlcnkiLCJjb250YWluZWRCeSIsImNvbnRhaW5zIiwibWF0Y2hlc1JlZ2V4Iiwib3B0aW9ucyIsInRleHQiLCJzZWFyY2giLCJ0ZXJtIiwibGFuZ3VhZ2UiLCJjYXNlU2Vuc2l0aXZlIiwiZGlhY3JpdGljU2Vuc2l0aXZlIiwibmVhclNwaGVyZSIsIm1heERpc3RhbmNlIiwibWF4RGlzdGFuY2VJblJhZGlhbnMiLCJtYXhEaXN0YW5jZUluTWlsZXMiLCJtYXhEaXN0YW5jZUluS2lsb21ldGVycyIsIndpdGhpbiIsImJveCIsImdlb1dpdGhpbiIsInBvbHlnb24iLCJjZW50ZXJTcGhlcmUiLCJnZW9JbnRlcnNlY3RzIiwicG9pbnQiLCJ0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UiLCJjb25zdHJhaW50cyIsInBhcmVudEZpZWxkTmFtZSIsImNsYXNzTmFtZSIsInBhcmVudENvbnN0cmFpbnRzIiwicGFyc2VDbGFzc2VzIiwiZmllbGRzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJjb25zdHJhaW50TmFtZSIsImNvbnN0cmFpbnRWYWx1ZSIsImdsb2JhbElkT2JqZWN0IiwiZnJvbUdsb2JhbElkIiwidHlwZSIsImlkIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwidmFsdWUiLCJvYmplY3RJZCIsImZpZWxkTmFtZSIsImZpZWxkVmFsdWUiLCJrZXkiLCJ1bmRlZmluZWQiLCJ0YXJnZXRDbGFzcyIsIndoZXJlVGFyZ2V0IiwiJGV4aXN0cyIsInBhcnNlV2hlcmVUYXJnZXQiLCJ3aGVyZSIsIiRpblF1ZXJ5IiwidHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UiLCIkbm90SW5RdWVyeSIsIl9fdHlwZSIsImJvdHRvbUxlZnQiLCJ1cHBlclJpZ2h0IiwiZ2VvUG9pbnQiLCJjZW50ZXIiLCJkaXN0YW5jZSIsImZpZWxkVmFsdWVJdGVtIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvdHJhbnNmb3JtZXJzL3F1ZXJ5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21HbG9iYWxJZCB9IGZyb20gJ2dyYXBocWwtcmVsYXknO1xuXG5jb25zdCBwYXJzZVF1ZXJ5TWFwID0ge1xuICBPUjogJyRvcicsXG4gIEFORDogJyRhbmQnLFxuICBOT1I6ICckbm9yJyxcbn07XG5cbmNvbnN0IHBhcnNlQ29uc3RyYWludE1hcCA9IHtcbiAgZXF1YWxUbzogJyRlcScsXG4gIG5vdEVxdWFsVG86ICckbmUnLFxuICBsZXNzVGhhbjogJyRsdCcsXG4gIGxlc3NUaGFuT3JFcXVhbFRvOiAnJGx0ZScsXG4gIGdyZWF0ZXJUaGFuOiAnJGd0JyxcbiAgZ3JlYXRlclRoYW5PckVxdWFsVG86ICckZ3RlJyxcbiAgaW46ICckaW4nLFxuICBub3RJbjogJyRuaW4nLFxuICBleGlzdHM6ICckZXhpc3RzJyxcbiAgaW5RdWVyeUtleTogJyRzZWxlY3QnLFxuICBub3RJblF1ZXJ5S2V5OiAnJGRvbnRTZWxlY3QnLFxuICBpblF1ZXJ5OiAnJGluUXVlcnknLFxuICBub3RJblF1ZXJ5OiAnJG5vdEluUXVlcnknLFxuICBjb250YWluZWRCeTogJyRjb250YWluZWRCeScsXG4gIGNvbnRhaW5zOiAnJGFsbCcsXG4gIG1hdGNoZXNSZWdleDogJyRyZWdleCcsXG4gIG9wdGlvbnM6ICckb3B0aW9ucycsXG4gIHRleHQ6ICckdGV4dCcsXG4gIHNlYXJjaDogJyRzZWFyY2gnLFxuICB0ZXJtOiAnJHRlcm0nLFxuICBsYW5ndWFnZTogJyRsYW5ndWFnZScsXG4gIGNhc2VTZW5zaXRpdmU6ICckY2FzZVNlbnNpdGl2ZScsXG4gIGRpYWNyaXRpY1NlbnNpdGl2ZTogJyRkaWFjcml0aWNTZW5zaXRpdmUnLFxuICBuZWFyU3BoZXJlOiAnJG5lYXJTcGhlcmUnLFxuICBtYXhEaXN0YW5jZTogJyRtYXhEaXN0YW5jZScsXG4gIG1heERpc3RhbmNlSW5SYWRpYW5zOiAnJG1heERpc3RhbmNlSW5SYWRpYW5zJyxcbiAgbWF4RGlzdGFuY2VJbk1pbGVzOiAnJG1heERpc3RhbmNlSW5NaWxlcycsXG4gIG1heERpc3RhbmNlSW5LaWxvbWV0ZXJzOiAnJG1heERpc3RhbmNlSW5LaWxvbWV0ZXJzJyxcbiAgd2l0aGluOiAnJHdpdGhpbicsXG4gIGJveDogJyRib3gnLFxuICBnZW9XaXRoaW46ICckZ2VvV2l0aGluJyxcbiAgcG9seWdvbjogJyRwb2x5Z29uJyxcbiAgY2VudGVyU3BoZXJlOiAnJGNlbnRlclNwaGVyZScsXG4gIGdlb0ludGVyc2VjdHM6ICckZ2VvSW50ZXJzZWN0cycsXG4gIHBvaW50OiAnJHBvaW50Jyxcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVF1ZXJ5Q29uc3RyYWludElucHV0VG9QYXJzZSA9IChcbiAgY29uc3RyYWludHMsXG4gIHBhcmVudEZpZWxkTmFtZSxcbiAgY2xhc3NOYW1lLFxuICBwYXJlbnRDb25zdHJhaW50cyxcbiAgcGFyc2VDbGFzc2VzXG4pID0+IHtcbiAgY29uc3QgZmllbGRzID0gcGFyc2VDbGFzc2VzW2NsYXNzTmFtZV0uZmllbGRzO1xuICBpZiAocGFyZW50RmllbGROYW1lID09PSAnaWQnICYmIGNsYXNzTmFtZSkge1xuICAgIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGNvbnN0cmFpbnROYW1lID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cmFpbnRWYWx1ZSA9IGNvbnN0cmFpbnRzW2NvbnN0cmFpbnROYW1lXTtcbiAgICAgIGlmICh0eXBlb2YgY29uc3RyYWludFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChjb25zdHJhaW50VmFsdWUpO1xuXG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSBjbGFzc05hbWUpIHtcbiAgICAgICAgICBjb25zdHJhaW50c1tjb25zdHJhaW50TmFtZV0gPSBnbG9iYWxJZE9iamVjdC5pZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGNvbnN0cmFpbnRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3RyYWludHNbY29uc3RyYWludE5hbWVdID0gY29uc3RyYWludFZhbHVlLm1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQodmFsdWUpO1xuXG4gICAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IGNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcGFyZW50Q29uc3RyYWludHMub2JqZWN0SWQgPSBjb25zdHJhaW50cztcbiAgICBkZWxldGUgcGFyZW50Q29uc3RyYWludHMuaWQ7XG4gIH1cbiAgT2JqZWN0LmtleXMoY29uc3RyYWludHMpLmZvckVhY2goZmllbGROYW1lID0+IHtcbiAgICBsZXQgZmllbGRWYWx1ZSA9IGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgaWYgKHBhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdKSB7XG4gICAgICBjb25zdHJhaW50c1twYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV0gPSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgICAgZGVsZXRlIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIElmIHdlIGhhdmUgYSBrZXktdmFsdWUgcGFpciwgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHdheSB0aGUgY29uc3RyYWludCBpcyBzdHJ1Y3R1cmVkLlxuICAgICAqXG4gICAgICogRXhhbXBsZTpcbiAgICAgKiAgIEZyb206XG4gICAgICogICB7XG4gICAgICogICAgIFwic29tZUZpZWxkXCI6IHtcbiAgICAgKiAgICAgICBcImxlc3NUaGFuXCI6IHtcbiAgICAgKiAgICAgICAgIFwia2V5XCI6XCJmb28uYmFyXCIsXG4gICAgICogICAgICAgICBcInZhbHVlXCI6IDEwMFxuICAgICAqICAgICAgIH0sXG4gICAgICogICAgICAgXCJncmVhdGVyVGhhblwiOiB7XG4gICAgICogICAgICAgICBcImtleVwiOlwiZm9vLmJhclwiLFxuICAgICAqICAgICAgICAgXCJ2YWx1ZVwiOiAxMFxuICAgICAqICAgICAgIH1cbiAgICAgKiAgICAgfVxuICAgICAqICAgfVxuICAgICAqXG4gICAgICogICBUbzpcbiAgICAgKiAgIHtcbiAgICAgKiAgICAgXCJzb21lRmllbGQuZm9vLmJhclwiOiB7XG4gICAgICogICAgICAgXCIkbHRcIjogMTAwLFxuICAgICAqICAgICAgIFwiJGd0XCI6IDEwXG4gICAgICogICAgICB9XG4gICAgICogICB9XG4gICAgICovXG4gICAgaWYgKGZpZWxkVmFsdWUua2V5ICYmIGZpZWxkVmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwYXJlbnRDb25zdHJhaW50cyAmJiBwYXJlbnRGaWVsZE5hbWUpIHtcbiAgICAgIGRlbGV0ZSBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdO1xuICAgICAgcGFyZW50Q29uc3RyYWludHNbYCR7cGFyZW50RmllbGROYW1lfS4ke2ZpZWxkVmFsdWUua2V5fWBdID0ge1xuICAgICAgICAuLi5wYXJlbnRDb25zdHJhaW50c1tgJHtwYXJlbnRGaWVsZE5hbWV9LiR7ZmllbGRWYWx1ZS5rZXl9YF0sXG4gICAgICAgIFtwYXJzZUNvbnN0cmFpbnRNYXBbZmllbGROYW1lXV06IGZpZWxkVmFsdWUudmFsdWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBmaWVsZHNbcGFyZW50RmllbGROYW1lXSAmJlxuICAgICAgKGZpZWxkc1twYXJlbnRGaWVsZE5hbWVdLnR5cGUgPT09ICdQb2ludGVyJyB8fCBmaWVsZHNbcGFyZW50RmllbGROYW1lXS50eXBlID09PSAnUmVsYXRpb24nKVxuICAgICkge1xuICAgICAgY29uc3QgeyB0YXJnZXRDbGFzcyB9ID0gZmllbGRzW3BhcmVudEZpZWxkTmFtZV07XG4gICAgICBpZiAoZmllbGROYW1lID09PSAnZXhpc3RzJykge1xuICAgICAgICBpZiAoZmllbGRzW3BhcmVudEZpZWxkTmFtZV0udHlwZSA9PT0gJ1JlbGF0aW9uJykge1xuICAgICAgICAgIGNvbnN0IHdoZXJlVGFyZ2V0ID0gZmllbGRWYWx1ZSA/ICd3aGVyZScgOiAnbm90V2hlcmUnO1xuICAgICAgICAgIGlmIChjb25zdHJhaW50c1t3aGVyZVRhcmdldF0pIHtcbiAgICAgICAgICAgIGlmIChjb25zdHJhaW50c1t3aGVyZVRhcmdldF0ub2JqZWN0SWQpIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkID0ge1xuICAgICAgICAgICAgICAgIC4uLmNvbnN0cmFpbnRzW3doZXJlVGFyZ2V0XS5vYmplY3RJZCxcbiAgICAgICAgICAgICAgICAkZXhpc3RzOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3RyYWludHNbd2hlcmVUYXJnZXRdLm9iamVjdElkID0ge1xuICAgICAgICAgICAgICAgICRleGlzdHM6IGZpZWxkVmFsdWUsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlV2hlcmVUYXJnZXQgPSBmaWVsZFZhbHVlID8gJyRpblF1ZXJ5JyA6ICckbm90SW5RdWVyeSc7XG4gICAgICAgICAgICBwYXJlbnRDb25zdHJhaW50c1twYXJlbnRGaWVsZE5hbWVdW3BhcnNlV2hlcmVUYXJnZXRdID0ge1xuICAgICAgICAgICAgICB3aGVyZTogeyBvYmplY3RJZDogeyAkZXhpc3RzOiB0cnVlIH0gfSxcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGRlbGV0ZSBjb25zdHJhaW50cy4kZXhpc3RzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudENvbnN0cmFpbnRzW3BhcmVudEZpZWxkTmFtZV0uJGV4aXN0cyA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChmaWVsZE5hbWUpIHtcbiAgICAgICAgY2FzZSAnaGF2ZSc6XG4gICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kaW5RdWVyeSA9IHtcbiAgICAgICAgICAgIHdoZXJlOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKFxuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kaW5RdWVyeS53aGVyZSxcbiAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaGF2ZU5vdCc6XG4gICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kbm90SW5RdWVyeSA9IHtcbiAgICAgICAgICAgIHdoZXJlOiBmaWVsZFZhbHVlLFxuICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlKFxuICAgICAgICAgICAgcGFyZW50Q29uc3RyYWludHNbcGFyZW50RmllbGROYW1lXS4kbm90SW5RdWVyeS53aGVyZSxcbiAgICAgICAgICAgIHRhcmdldENsYXNzLFxuICAgICAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBjb25zdHJhaW50c1tmaWVsZE5hbWVdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBzd2l0Y2ggKGZpZWxkTmFtZSkge1xuICAgICAgY2FzZSAncG9pbnQnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmICFmaWVsZFZhbHVlLl9fdHlwZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ25lYXJTcGhlcmUnOlxuICAgICAgICBpZiAodHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmICFmaWVsZFZhbHVlLl9fdHlwZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JveCc6XG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5ib3R0b21MZWZ0ICYmIGZpZWxkVmFsdWUudXBwZXJSaWdodCkge1xuICAgICAgICAgIGZpZWxkVmFsdWUgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS5ib3R0b21MZWZ0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgX190eXBlOiAnR2VvUG9pbnQnLFxuICAgICAgICAgICAgICAuLi5maWVsZFZhbHVlLnVwcGVyUmlnaHQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgICAgY29uc3RyYWludHNbcGFyc2VDb25zdHJhaW50TWFwW2ZpZWxkTmFtZV1dID0gZmllbGRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3BvbHlnb24nOlxuICAgICAgICBpZiAoZmllbGRWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgZmllbGRWYWx1ZS5mb3JFYWNoKGdlb1BvaW50ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZ2VvUG9pbnQgPT09ICdvYmplY3QnICYmICFnZW9Qb2ludC5fX3R5cGUpIHtcbiAgICAgICAgICAgICAgZ2VvUG9pbnQuX190eXBlID0gJ0dlb1BvaW50JztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlclNwaGVyZSc6XG4gICAgICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcgJiYgZmllbGRWYWx1ZS5jZW50ZXIgJiYgZmllbGRWYWx1ZS5kaXN0YW5jZSkge1xuICAgICAgICAgIGZpZWxkVmFsdWUgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIF9fdHlwZTogJ0dlb1BvaW50JyxcbiAgICAgICAgICAgICAgLi4uZmllbGRWYWx1ZS5jZW50ZXIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmllbGRWYWx1ZS5kaXN0YW5jZSxcbiAgICAgICAgICBdO1xuICAgICAgICAgIGNvbnN0cmFpbnRzW3BhcnNlQ29uc3RyYWludE1hcFtmaWVsZE5hbWVdXSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgZmllbGRWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChmaWVsZE5hbWUgPT09ICd3aGVyZScpIHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UoZmllbGRWYWx1ZSwgY2xhc3NOYW1lLCBwYXJzZUNsYXNzZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlDb25zdHJhaW50SW5wdXRUb1BhcnNlKFxuICAgICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgICAgZmllbGROYW1lLFxuICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgICBwYXJzZUNsYXNzZXNcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UgPSAoY29uc3RyYWludHMsIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKSA9PiB7XG4gIGlmICghY29uc3RyYWludHMgfHwgdHlwZW9mIGNvbnN0cmFpbnRzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIE9iamVjdC5rZXlzKGNvbnN0cmFpbnRzKS5mb3JFYWNoKGZpZWxkTmFtZSA9PiB7XG4gICAgY29uc3QgZmllbGRWYWx1ZSA9IGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV07XG5cbiAgICBpZiAocGFyc2VRdWVyeU1hcFtmaWVsZE5hbWVdKSB7XG4gICAgICBkZWxldGUgY29uc3RyYWludHNbZmllbGROYW1lXTtcbiAgICAgIGZpZWxkTmFtZSA9IHBhcnNlUXVlcnlNYXBbZmllbGROYW1lXTtcbiAgICAgIGNvbnN0cmFpbnRzW2ZpZWxkTmFtZV0gPSBmaWVsZFZhbHVlO1xuICAgICAgZmllbGRWYWx1ZS5mb3JFYWNoKGZpZWxkVmFsdWVJdGVtID0+IHtcbiAgICAgICAgdHJhbnNmb3JtUXVlcnlJbnB1dFRvUGFyc2UoZmllbGRWYWx1ZUl0ZW0sIGNsYXNzTmFtZSwgcGFyc2VDbGFzc2VzKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UoXG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkTmFtZSxcbiAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICBjb25zdHJhaW50cyxcbiAgICAgICAgcGFyc2VDbGFzc2VzXG4gICAgICApO1xuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1RdWVyeUNvbnN0cmFpbnRJbnB1dFRvUGFyc2UsIHRyYW5zZm9ybVF1ZXJ5SW5wdXRUb1BhcnNlIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQTZDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFN0MsTUFBTUEsYUFBYSxHQUFHO0VBQ3BCQyxFQUFFLEVBQUUsS0FBSztFQUNUQyxHQUFHLEVBQUUsTUFBTTtFQUNYQyxHQUFHLEVBQUU7QUFDUCxDQUFDO0FBRUQsTUFBTUMsa0JBQWtCLEdBQUc7RUFDekJDLE9BQU8sRUFBRSxLQUFLO0VBQ2RDLFVBQVUsRUFBRSxLQUFLO0VBQ2pCQyxRQUFRLEVBQUUsS0FBSztFQUNmQyxpQkFBaUIsRUFBRSxNQUFNO0VBQ3pCQyxXQUFXLEVBQUUsS0FBSztFQUNsQkMsb0JBQW9CLEVBQUUsTUFBTTtFQUM1QkMsRUFBRSxFQUFFLEtBQUs7RUFDVEMsS0FBSyxFQUFFLE1BQU07RUFDYkMsTUFBTSxFQUFFLFNBQVM7RUFDakJDLFVBQVUsRUFBRSxTQUFTO0VBQ3JCQyxhQUFhLEVBQUUsYUFBYTtFQUM1QkMsT0FBTyxFQUFFLFVBQVU7RUFDbkJDLFVBQVUsRUFBRSxhQUFhO0VBQ3pCQyxXQUFXLEVBQUUsY0FBYztFQUMzQkMsUUFBUSxFQUFFLE1BQU07RUFDaEJDLFlBQVksRUFBRSxRQUFRO0VBQ3RCQyxPQUFPLEVBQUUsVUFBVTtFQUNuQkMsSUFBSSxFQUFFLE9BQU87RUFDYkMsTUFBTSxFQUFFLFNBQVM7RUFDakJDLElBQUksRUFBRSxPQUFPO0VBQ2JDLFFBQVEsRUFBRSxX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
@@ -3,25 +3,19 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.transformToGraphQL = exports.transformToParse = void 0;
7
-
6
+ exports.transformToParse = exports.transformToGraphQL = void 0;
8
7
  var _node = _interopRequireDefault(require("parse/node"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
13
-
14
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
-
16
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
-
9
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
18
14
  const transformToParse = (graphQLSchemaFields, existingFields) => {
19
15
  if (!graphQLSchemaFields) {
20
16
  return {};
21
17
  }
22
-
23
18
  let parseSchemaFields = {};
24
-
25
19
  const reducerGenerator = type => (parseSchemaFields, field) => {
26
20
  if (type === 'Remove') {
27
21
  if (existingFields[field.name]) {
@@ -34,15 +28,12 @@ const transformToParse = (graphQLSchemaFields, existingFields) => {
34
28
  return parseSchemaFields;
35
29
  }
36
30
  }
37
-
38
31
  if (graphQLSchemaFields.remove && graphQLSchemaFields.remove.find(removeField => removeField.name === field.name)) {
39
32
  return parseSchemaFields;
40
33
  }
41
-
42
34
  if (parseSchemaFields[field.name] || existingFields && existingFields[field.name]) {
43
35
  throw new _node.default.Error(_node.default.Error.INVALID_KEY_NAME, `Duplicated field name: ${field.name}`);
44
36
  }
45
-
46
37
  if (type === 'Relation' || type === 'Pointer') {
47
38
  return _objectSpread(_objectSpread({}, parseSchemaFields), {}, {
48
39
  [field.name]: {
@@ -51,71 +42,54 @@ const transformToParse = (graphQLSchemaFields, existingFields) => {
51
42
  }
52
43
  });
53
44
  }
54
-
55
45
  return _objectSpread(_objectSpread({}, parseSchemaFields), {}, {
56
46
  [field.name]: {
57
47
  type
58
48
  }
59
49
  });
60
50
  };
61
-
62
51
  if (graphQLSchemaFields.addStrings) {
63
52
  parseSchemaFields = graphQLSchemaFields.addStrings.reduce(reducerGenerator('String'), parseSchemaFields);
64
53
  }
65
-
66
54
  if (graphQLSchemaFields.addNumbers) {
67
55
  parseSchemaFields = graphQLSchemaFields.addNumbers.reduce(reducerGenerator('Number'), parseSchemaFields);
68
56
  }
69
-
70
57
  if (graphQLSchemaFields.addBooleans) {
71
58
  parseSchemaFields = graphQLSchemaFields.addBooleans.reduce(reducerGenerator('Boolean'), parseSchemaFields);
72
59
  }
73
-
74
60
  if (graphQLSchemaFields.addArrays) {
75
61
  parseSchemaFields = graphQLSchemaFields.addArrays.reduce(reducerGenerator('Array'), parseSchemaFields);
76
62
  }
77
-
78
63
  if (graphQLSchemaFields.addObjects) {
79
64
  parseSchemaFields = graphQLSchemaFields.addObjects.reduce(reducerGenerator('Object'), parseSchemaFields);
80
65
  }
81
-
82
66
  if (graphQLSchemaFields.addDates) {
83
67
  parseSchemaFields = graphQLSchemaFields.addDates.reduce(reducerGenerator('Date'), parseSchemaFields);
84
68
  }
85
-
86
69
  if (graphQLSchemaFields.addFiles) {
87
70
  parseSchemaFields = graphQLSchemaFields.addFiles.reduce(reducerGenerator('File'), parseSchemaFields);
88
71
  }
89
-
90
72
  if (graphQLSchemaFields.addGeoPoint) {
91
73
  parseSchemaFields = [graphQLSchemaFields.addGeoPoint].reduce(reducerGenerator('GeoPoint'), parseSchemaFields);
92
74
  }
93
-
94
75
  if (graphQLSchemaFields.addPolygons) {
95
76
  parseSchemaFields = graphQLSchemaFields.addPolygons.reduce(reducerGenerator('Polygon'), parseSchemaFields);
96
77
  }
97
-
98
78
  if (graphQLSchemaFields.addBytes) {
99
79
  parseSchemaFields = graphQLSchemaFields.addBytes.reduce(reducerGenerator('Bytes'), parseSchemaFields);
100
80
  }
101
-
102
81
  if (graphQLSchemaFields.addPointers) {
103
82
  parseSchemaFields = graphQLSchemaFields.addPointers.reduce(reducerGenerator('Pointer'), parseSchemaFields);
104
83
  }
105
-
106
84
  if (graphQLSchemaFields.addRelations) {
107
85
  parseSchemaFields = graphQLSchemaFields.addRelations.reduce(reducerGenerator('Relation'), parseSchemaFields);
108
86
  }
109
-
110
87
  if (existingFields && graphQLSchemaFields.remove) {
111
88
  parseSchemaFields = graphQLSchemaFields.remove.reduce(reducerGenerator('Remove'), parseSchemaFields);
112
89
  }
113
-
114
90
  return parseSchemaFields;
115
91
  };
116
-
117
92
  exports.transformToParse = transformToParse;
118
-
119
93
  const transformToGraphQL = parseSchemaFields => {
120
94
  return Object.keys(parseSchemaFields).map(name => ({
121
95
  name,
@@ -123,6 +97,5 @@ const transformToGraphQL = parseSchemaFields => {
123
97
  targetClassName: parseSchemaFields[name].targetClass
124
98
  }));
125
99
  };
126
-
127
100
  exports.transformToGraphQL = transformToGraphQL;
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML3RyYW5zZm9ybWVycy9zY2hlbWFGaWVsZHMuanMiXSwibmFtZXMiOlsidHJhbnNmb3JtVG9QYXJzZSIsImdyYXBoUUxTY2hlbWFGaWVsZHMiLCJleGlzdGluZ0ZpZWxkcyIsInBhcnNlU2NoZW1hRmllbGRzIiwicmVkdWNlckdlbmVyYXRvciIsInR5cGUiLCJmaWVsZCIsIm5hbWUiLCJfX29wIiwicmVtb3ZlIiwiZmluZCIsInJlbW92ZUZpZWxkIiwiUGFyc2UiLCJFcnJvciIsIklOVkFMSURfS0VZX05BTUUiLCJ0YXJnZXRDbGFzcyIsInRhcmdldENsYXNzTmFtZSIsImFkZFN0cmluZ3MiLCJyZWR1Y2UiLCJhZGROdW1iZXJzIiwiYWRkQm9vbGVhbnMiLCJhZGRBcnJheXMiLCJhZGRPYmplY3RzIiwiYWRkRGF0ZXMiLCJhZGRGaWxlcyIsImFkZEdlb1BvaW50IiwiYWRkUG9seWdvbnMiLCJhZGRCeXRlcyIsImFkZFBvaW50ZXJzIiwiYWRkUmVsYXRpb25zIiwidHJhbnNmb3JtVG9HcmFwaFFMIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7Ozs7Ozs7O0FBRUEsTUFBTUEsZ0JBQWdCLEdBQUcsQ0FBQ0MsbUJBQUQsRUFBc0JDLGNBQXRCLEtBQXlDO0FBQ2hFLE1BQUksQ0FBQ0QsbUJBQUwsRUFBMEI7QUFDeEIsV0FBTyxFQUFQO0FBQ0Q7O0FBRUQsTUFBSUUsaUJBQWlCLEdBQUcsRUFBeEI7O0FBRUEsUUFBTUMsZ0JBQWdCLEdBQUdDLElBQUksSUFBSSxDQUFDRixpQkFBRCxFQUFvQkcsS0FBcEIsS0FBOEI7QUFDN0QsUUFBSUQsSUFBSSxLQUFLLFFBQWIsRUFBdUI7QUFDckIsVUFBSUgsY0FBYyxDQUFDSSxLQUFLLENBQUNDLElBQVAsQ0FBbEIsRUFBZ0M7QUFDOUIsK0NBQ0tKLGlCQURMO0FBRUUsV0FBQ0csS0FBSyxDQUFDQyxJQUFQLEdBQWM7QUFDWkMsWUFBQUEsSUFB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QTlIRDs7OztBQWdJQSxNQUFNMkIsa0JBQWtCLEdBQUczQixpQkFBaUIsSUFBSTtBQUM5QyxTQUFPNEIsTUFBTSxDQUFDQyxJQUFQLENBQVk3QixpQkFBWixFQUErQjhCLEdBQS9CLENBQW1DMUIsSUFBSSxLQUFLO0FBQ2pEQSxJQUFBQSxJQURpRDtBQUVqREYsSUFBQUEsSUFBSSxFQUFFRixpQkFBaUIsQ0FBQ0ksSUFBRCxDQUFqQixDQUF3QkYsSUFGbUI7QUFHakRXLElBQUFBLGVBQWUsRUFBRWIsaUJBQWlCLENBQUNJLElBQUQsQ0FBakIsQ0FBd0JRO0FBSFEsR0FBTCxDQUF2QyxDQUFQO0FBS0QsQ0FORCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQYXJzZSBmcm9tICdwYXJzZS9ub2RlJztcblxuY29uc3QgdHJhbnNmb3JtVG9QYXJzZSA9IChncmFwaFFMU2NoZW1hRmllbGRzLCBleGlzdGluZ0ZpZWxkcykgPT4ge1xuICBpZiAoIWdyYXBoUUxTY2hlbWFGaWVsZHMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBsZXQgcGFyc2VTY2hlbWFGaWVsZHMgPSB7fTtcblxuICBjb25zdCByZWR1Y2VyR2VuZXJhdG9yID0gdHlwZSA9PiAocGFyc2VTY2hlbWFGaWVsZHMsIGZpZWxkKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdSZW1vdmUnKSB7XG4gICAgICBpZiAoZXhpc3RpbmdGaWVsZHNbZmllbGQubmFtZV0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wYXJzZVNjaGVtYUZpZWxkcyxcbiAgICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICAgIF9fb3A6ICdEZWxldGUnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGdyYXBoUUxTY2hlbWFGaWVsZHMucmVtb3ZlICYmXG4gICAgICBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZS5maW5kKHJlbW92ZUZpZWxkID0+IHJlbW92ZUZpZWxkLm5hbWUgPT09IGZpZWxkLm5hbWUpXG4gICAgKSB7XG4gICAgICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG4gICAgfVxuICAgIGlmIChwYXJzZVNjaGVtYUZpZWxkc1tmaWVsZC5uYW1lXSB8fCAoZXhpc3RpbmdGaWVsZHMgJiYgZXhpc3RpbmdGaWVsZHNbZmllbGQubmFtZV0pKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuSU5WQUxJRF9LRVlfTkFNRSwgYER1cGxpY2F0ZWQgZmllbGQgbmFtZTogJHtmaWVsZC5uYW1lfWApO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ1JlbGF0aW9uJyB8fCB0eXBlID09PSAnUG9pbnRlcicpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnBhcnNlU2NoZW1hRmllbGRzLFxuICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHRhcmdldENsYXNzOiBmaWVsZC50YXJnZXRDbGFzc05hbWUsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucGFyc2VTY2hlbWFGaWVsZHMsXG4gICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgdHlwZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfTtcblxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRTdHJpbmdzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFN0cmluZ3MucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignU3RyaW5nJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkTnVtYmVycykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGROdW1iZXJzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ051bWJlcicpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZEJvb2xlYW5zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZEJvb2xlYW5zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0Jvb2xlYW4nKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRBcnJheXMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkQXJyYXlzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0FycmF5JyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkT2JqZWN0cykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRPYmplY3RzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ09iamVjdCcpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZERhdGVzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZERhdGVzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ0RhdGUnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRGaWxlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRGaWxlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdGaWxlJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkR2VvUG9pbnQpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IFtncmFwaFFMU2NoZW1hRmllbGRzLmFkZEdlb1BvaW50XS5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdHZW9Qb2ludCcpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvbHlnb25zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvbHlnb25zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1BvbHlnb24nKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCeXRlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCeXRlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdCeXRlcycpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvaW50ZXJzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFBvaW50ZXJzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1BvaW50ZXInKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRSZWxhdGlvbnMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkUmVsYXRpb25zLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1JlbGF0aW9uJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGV4aXN0aW5nRmllbGRzICYmIGdyYXBoUUxTY2hlbWFGaWVsZHMucmVtb3ZlKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZS5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdSZW1vdmUnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZVNjaGVtYUZpZWxkcztcbn07XG5cbmNvbnN0IHRyYW5zZm9ybVRvR3JhcGhRTCA9IHBhcnNlU2NoZW1hRmllbGRzID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHBhcnNlU2NoZW1hRmllbGRzKS5tYXAobmFtZSA9PiAoe1xuICAgIG5hbWUsXG4gICAgdHlwZTogcGFyc2VTY2hlbWFGaWVsZHNbbmFtZV0udHlwZSxcbiAgICB0YXJnZXRDbGFzc05hbWU6IHBhcnNlU2NoZW1hRmllbGRzW25hbWVdLnRhcmdldENsYXNzLFxuICB9KSk7XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1Ub1BhcnNlLCB0cmFuc2Zvcm1Ub0dyYXBoUUwgfTtcbiJdfQ==
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ0cmFuc2Zvcm1Ub1BhcnNlIiwiZ3JhcGhRTFNjaGVtYUZpZWxkcyIsImV4aXN0aW5nRmllbGRzIiwicGFyc2VTY2hlbWFGaWVsZHMiLCJyZWR1Y2VyR2VuZXJhdG9yIiwidHlwZSIsImZpZWxkIiwibmFtZSIsIl9fb3AiLCJyZW1vdmUiLCJmaW5kIiwicmVtb3ZlRmllbGQiLCJQYXJzZSIsIkVycm9yIiwiSU5WQUxJRF9LRVlfTkFNRSIsInRhcmdldENsYXNzIiwidGFyZ2V0Q2xhc3NOYW1lIiwiYWRkU3RyaW5ncyIsInJlZHVjZSIsImFkZE51bWJlcnMiLCJhZGRCb29sZWFucyIsImFkZEFycmF5cyIsImFkZE9iamVjdHMiLCJhZGREYXRlcyIsImFkZEZpbGVzIiwiYWRkR2VvUG9pbnQiLCJhZGRQb2x5Z29ucyIsImFkZEJ5dGVzIiwiYWRkUG9pbnRlcnMiLCJhZGRSZWxhdGlvbnMiLCJ0cmFuc2Zvcm1Ub0dyYXBoUUwiLCJPYmplY3QiLCJrZXlzIiwibWFwIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0dyYXBoUUwvdHJhbnNmb3JtZXJzL3NjaGVtYUZpZWxkcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5cbmNvbnN0IHRyYW5zZm9ybVRvUGFyc2UgPSAoZ3JhcGhRTFNjaGVtYUZpZWxkcywgZXhpc3RpbmdGaWVsZHMpID0+IHtcbiAgaWYgKCFncmFwaFFMU2NoZW1hRmllbGRzKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgbGV0IHBhcnNlU2NoZW1hRmllbGRzID0ge307XG5cbiAgY29uc3QgcmVkdWNlckdlbmVyYXRvciA9IHR5cGUgPT4gKHBhcnNlU2NoZW1hRmllbGRzLCBmaWVsZCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnUmVtb3ZlJykge1xuICAgICAgaWYgKGV4aXN0aW5nRmllbGRzW2ZpZWxkLm5hbWVdKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucGFyc2VTY2hlbWFGaWVsZHMsXG4gICAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgICBfX29wOiAnRGVsZXRlJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlU2NoZW1hRmllbGRzO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZSAmJlxuICAgICAgZ3JhcGhRTFNjaGVtYUZpZWxkcy5yZW1vdmUuZmluZChyZW1vdmVGaWVsZCA9PiByZW1vdmVGaWVsZC5uYW1lID09PSBmaWVsZC5uYW1lKVxuICAgICkge1xuICAgICAgcmV0dXJuIHBhcnNlU2NoZW1hRmllbGRzO1xuICAgIH1cbiAgICBpZiAocGFyc2VTY2hlbWFGaWVsZHNbZmllbGQubmFtZV0gfHwgKGV4aXN0aW5nRmllbGRzICYmIGV4aXN0aW5nRmllbGRzW2ZpZWxkLm5hbWVdKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLklOVkFMSURfS0VZX05BTUUsIGBEdXBsaWNhdGVkIGZpZWxkIG5hbWU6ICR7ZmllbGQubmFtZX1gKTtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT09ICdSZWxhdGlvbicgfHwgdHlwZSA9PT0gJ1BvaW50ZXInKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wYXJzZVNjaGVtYUZpZWxkcyxcbiAgICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB0YXJnZXRDbGFzczogZmllbGQudGFyZ2V0Q2xhc3NOYW1lLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhcnNlU2NoZW1hRmllbGRzLFxuICAgICAgW2ZpZWxkLm5hbWVdOiB7XG4gICAgICAgIHR5cGUsXG4gICAgICB9LFxuICAgIH07XG4gIH07XG5cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkU3RyaW5ncykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRTdHJpbmdzLnJlZHVjZShcbiAgICAgIHJlZHVjZXJHZW5lcmF0b3IoJ1N0cmluZycpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZE51bWJlcnMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkTnVtYmVycy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdOdW1iZXInKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCb29sZWFucykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRCb29sZWFucy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdCb29sZWFuJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkQXJyYXlzKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZEFycmF5cy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdBcnJheScpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZE9iamVjdHMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkT2JqZWN0cy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdPYmplY3QnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGREYXRlcykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGREYXRlcy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdEYXRlJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkRmlsZXMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkRmlsZXMucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignRmlsZScpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChncmFwaFFMU2NoZW1hRmllbGRzLmFkZEdlb1BvaW50KSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBbZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRHZW9Qb2ludF0ucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignR2VvUG9pbnQnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRQb2x5Z29ucykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRQb2x5Z29ucy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdQb2x5Z29uJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkQnl0ZXMpIHtcbiAgICBwYXJzZVNjaGVtYUZpZWxkcyA9IGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkQnl0ZXMucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignQnl0ZXMnKSxcbiAgICAgIHBhcnNlU2NoZW1hRmllbGRzXG4gICAgKTtcbiAgfVxuICBpZiAoZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRQb2ludGVycykge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5hZGRQb2ludGVycy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdQb2ludGVyJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cbiAgaWYgKGdyYXBoUUxTY2hlbWFGaWVsZHMuYWRkUmVsYXRpb25zKSB7XG4gICAgcGFyc2VTY2hlbWFGaWVsZHMgPSBncmFwaFFMU2NoZW1hRmllbGRzLmFkZFJlbGF0aW9ucy5yZWR1Y2UoXG4gICAgICByZWR1Y2VyR2VuZXJhdG9yKCdSZWxhdGlvbicpLFxuICAgICAgcGFyc2VTY2hlbWFGaWVsZHNcbiAgICApO1xuICB9XG4gIGlmIChleGlzdGluZ0ZpZWxkcyAmJiBncmFwaFFMU2NoZW1hRmllbGRzLnJlbW92ZSkge1xuICAgIHBhcnNlU2NoZW1hRmllbGRzID0gZ3JhcGhRTFNjaGVtYUZpZWxkcy5yZW1vdmUucmVkdWNlKFxuICAgICAgcmVkdWNlckdlbmVyYXRvcignUmVtb3ZlJyksXG4gICAgICBwYXJzZVNjaGVtYUZpZWxkc1xuICAgICk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VTY2hlbWFGaWVsZHM7XG59O1xuXG5jb25zdCB0cmFuc2Zvcm1Ub0dyYXBoUUwgPSBwYXJzZVNjaGVtYUZpZWxkcyA9PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhwYXJzZVNjaGVtYUZpZWxkcykubWFwKG5hbWUgPT4gKHtcbiAgICBuYW1lLFxuICAgIHR5cGU6IHBhcnNlU2NoZW1hRmllbGRzW25hbWVdLnR5cGUsXG4gICAgdGFyZ2V0Q2xhc3NOYW1lOiBwYXJzZVNjaGVtYUZpZWxkc1tuYW1lXS50YXJnZXRDbGFzcyxcbiAgfSkpO1xufTtcblxuZXhwb3J0IHsgdHJhbnNmb3JtVG9QYXJzZSwgdHJhbnNmb3JtVG9HcmFwaFFMIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQStCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUUvQixNQUFNQSxnQkFBZ0IsR0FBRyxDQUFDQyxtQkFBbUIsRUFBRUMsY0FBYyxLQUFLO0VBQ2hFLElBQUksQ0FBQ0QsbUJBQW1CLEVBQUU7SUFDeEIsT0FBTyxDQUFDLENBQUM7RUFDWDtFQUVBLElBQUlFLGlCQUFpQixHQUFHLENBQUMsQ0FBQztFQUUxQixNQUFNQyxnQkFBZ0IsR0FBR0MsSUFBSSxJQUFJLENBQUNGLGlCQUFpQixFQUFFRyxLQUFLLEtBQUs7SUFDN0QsSUFBSUQsSUFBSSxLQUFLLFFBQVEsRUFBRTtNQUNyQixJQUFJSCxjQUFjLENBQUNJLEtBQUssQ0FBQ0MsSUFBSSxDQUFDLEVBQUU7UUFDOUIsdUNBQ0tKLGlCQUFpQjtVQUNwQixDQUFDRyxLQUFLLENBQUNDLElBQUksR0FBRztZQUNaQyxJQUFJLEVBQUU7VUFDUjtRQUFDO01BRUwsQ0FBQyxNQUFNO1FBQ0wsT0FBT0wsaUJBQWlCO01BQzFCO0lBQ0Y7SUFDQSxJQUNFRixtQkFBbUIsQ0FBQ1EsTUFBTSxJQUMxQlIsbUJBQW1CLENBQUNRLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyxXQUFXLElBQUlBLFdBQVcsQ0FBQ0osSUFBSSxLQUFLRCxLQUFLLENBQUNDLElBQUksQ0FBQyxFQUMvRTtNQUNBLE9BQU9KLGlCQUFpQjtJQUMxQjtJQUNBLElBQUlBLGlCQUFpQixDQUFDRyxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFLTCxjQUFjLElBQUlBLGNBQWMsQ0FBQ0ksS0FBSyxDQUFDQyxJQUFJLENBQUUsRUFBRTtNQUNuRixNQUFNLElBQUlLLGFBQUssQ0FBQ0MsS0FBSyxDQUFDRCxhQUFLLENBQUNDLEtBQUssQ0FBQ0MsZ0JBQWdCLEVBQUcsMEJBQXlCUixLQUFLLENBQUNDLElBQUssRUFBQyxDQUFDO0lBQzdGO0lBQ0EsSUFBSUYsSUFBSSxLQUFLLFVBQVUsSUFBSUEsSUFBSSxLQUFLLFNBQVMsRUFBRTtNQUM3Qyx1Q0FDS0YsaUJBQWlCO1FBQ3BCLENBQUNHLEtBQUssQ0FBQ0MsSUFBSSxHQUFHO1VBQ1pGLElBQUk7VUFDSlUsV0FBVyxFQUFFVCxLQUFLLENBQUNVO1FBQ3JCO01BQUM7SUFFTDtJQUNBLHVDQUNLYixpQkFBaUI7TUFDcEIsQ0FBQ0csS0FBSyxDQUFDQyxJQUFJLEdBQUc7UUFDWkY7TUFDRjtJQUFDO0VBRUwsQ0FBQztFQUVELElBQUlKLG1CQUFtQixDQUFDZ0IsVUFBVSxFQUFFO0lBQ2xDZCxpQkFBaUIsR0FBR0YsbUJBQW1CLENBQUNnQixVQUFVLENBQUNDLE1BQU0sQ0FDdkRkLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUMxQkQsaUJBQWlCLENBQ2xCO0VBQ0g7RUFDQSxJQUFJRixtQkFBbUIsQ0FBQ2tCLFVBQVUsRUFBRTtJQUNsQ2hCLGlCQUFpQixHQUFHRixtQkFBbUIsQ0FBQ2tCLFVBQVUsQ0FBQ0QsTUFBTSxDQUN2RGQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQzFCRCxpQkFBaUIsQ0FDbEI7RUFDSDtFQUNBLElBQUlGLG1CQUFtQixDQUFDbUIsV0FBVyxFQUFFO0lBQ25DakIsaUJBQWlCLEdBQUdGLG1CQUFtQixDQUFDbUIsV0FBVyxDQUFDRixNQUFNLENBQ3hEZCxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFDM0JELGlCQUFpQixDQUNsQjtFQUNIO0VBQ0EsSUFBSUYsbUJBQW1CLENBQUNvQixTQUFTLEVBQUU7SUFDakNsQixpQkFBaUIsR0FBR0YsbUJBQW1CLENBQUNvQixTQUFTLENBQUNILE1BQU0sQ0FDdERkLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUN6QkQsaUJBQWlCLENBQ2xCO0VBQ0g7RUFDQSxJQUFJRixtQkFBbUIsQ0FBQ3FCLFVBQVUsRUFBRTtJQUNsQ25CLGlCQUFpQixHQUFHRixtQkFBbUIsQ0FBQ3FCLFVBQVUsQ0FBQ0osTUFBTSxDQUN2RGQsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEVBQzFCRCxpQkFBaUIsQ0FDbEI7RUFDSDtFQUNBLElBQUlGLG1CQUFtQixDQUFDc0IsUUFBUSxFQUFFO0lBQ2hDcEIsaUJBQWlCLEdBQUdGLG1CQUFtQixDQUFDc0IsUUFBUSxDQUFDTCxNQUFNLENBQ3JEZCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFDeEJELGlCQUFpQixDQUNsQjtFQUNIO0VBQ0EsSUFBSUYsbUJBQW1CLENBQUN1QixRQUFRLEVBQUU7SUFDaENyQixpQkFBaUIsR0FBR0YsbUJBQW1CLENBQUN1QixRQUFRLENBQUNOLE1BQU0sQ0FDckRkLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxFQUN4QkQsaUJBQWlCLENBQ2xCO0VBQ0g7RUFDQSxJQUFJRixtQkFBbUIsQ0FBQ3dCLFdBQVcsRUFBRTtJQUNuQ3RCLGlCQUFpQixHQUFHLENBQUNGLG1CQUFtQixDQUFDd0IsV0FBVyxDQUFDLENBQUNQLE1BQU0sQ0FDMURkLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxFQUM1QkQsaUJBQWlCLENBQ2xCO0VBQ0g7RUFDQSxJQUFJRixtQkFBbUIsQ0FBQ3lCLFdBQVcsRUFBRTtJQUNuQ3ZCLGlCQUFpQixHQUFHRixtQkFBbUIsQ0FBQ3lCLFdBQVcsQ0FBQ1IsTUFBTSxDQUN4RGQsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQzNCRCxpQkFBaUIsQ0FDbEI7RUFDSDtFQUNBLElBQUlGLG1CQUFtQixDQUFDMEIsUUFBUSxFQUFFO0lBQ2hDeEIsaUJBQWlCLEdBQUdGLG1CQUFtQixDQUFDMEIsUUFBUSxDQUFDVCxNQUFNLENBQ3JEZCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFDekJELGlCQUFpQixDQUNsQjtFQUNIO0VBQ0EsSUFBSUYsbUJBQW1CLENBQUMyQixXQUFXLEVBQUU7SUFDbkN6QixpQkFBaUIsR0FBR0YsbUJBQW1CLENBQUMyQixXQUFXLENBQUNWLE1BQU0sQ0FDeERkLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUMzQkQsaUJBQWlCLENBQ2xCO0VBQ0g7RUFDQSxJQUFJRixtQkFBbUIsQ0FBQzRCLFlBQVksRUFBRTtJQUNwQzFCLGlCQUFpQixHQUFHRixtQkFBbUIsQ0FBQzRCLFlBQVksQ0FBQ1gsTUFBTSxDQUN6RGQsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQzVCRCxpQkFBaUIsQ0FDbEI7RUFDSDtFQUNBLElBQUlELGNBQWMsSUFBSUQsbUJBQW1CLENBQUNRLE1BQU0sRUFBRTtJQUNoRE4saUJBQWlCLEdBQUdGLG1CQUFtQixDQUFDUSxNQUFNLENBQUNTLE1BQU0sQ0FDbkRkLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUMxQkQsaUJBQWlCLENBQ2xCO0VBQ0g7RUFFQSxPQUFPQSxpQkFBaUI7QUFDMUIsQ0FBQztBQUFDO0FBRUYsTUFBTTJCLGtCQUFrQixHQUFHM0IsaUJBQWlCLElBQUk7RUFDOUMsT0FBTzRCLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDN0IsaUJBQWlCLENBQUMsQ0FBQzhCLEdBQUcsQ0FBQzFCLElBQUksS0FBSztJQUNqREEsSUFBSTtJQUNKRixJQUFJLEVBQUVGLGlCQUFpQixDQUFDSSxJQUFJLENBQUMsQ0FBQ0YsSUFBSTtJQUNsQ1csZUFBZSxFQUFFYixpQkFBaUIsQ0FBQ0ksSUFBSSxDQUFDLENBQUNRO0VBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUFDIn0=
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.KeyPromiseQueue = void 0;
7
-
8
7
  // KeyPromiseQueue is a simple promise queue
9
8
  // used to queue operations per key basis.
10
9
  // Once the tail promise in the key-queue fulfills,
@@ -13,7 +12,6 @@ class KeyPromiseQueue {
13
12
  constructor() {
14
13
  this.queue = {};
15
14
  }
16
-
17
15
  enqueue(key, operation) {
18
16
  const tuple = this.beforeOp(key);
19
17
  const toAwait = tuple[1];
@@ -25,35 +23,26 @@ class KeyPromiseQueue {
25
23
  tuple[1] = wrappedOperation;
26
24
  return wrappedOperation;
27
25
  }
28
-
29
26
  beforeOp(key) {
30
27
  let tuple = this.queue[key];
31
-
32
28
  if (!tuple) {
33
29
  tuple = [0, Promise.resolve()];
34
30
  this.queue[key] = tuple;
35
31
  }
36
-
37
32
  tuple[0]++;
38
33
  return tuple;
39
34
  }
40
-
41
35
  afterOp(key) {
42
36
  const tuple = this.queue[key];
43
-
44
37
  if (!tuple) {
45
38
  return;
46
39
  }
47
-
48
40
  tuple[0]--;
49
-
50
41
  if (tuple[0] <= 0) {
51
42
  delete this.queue[key];
52
43
  return;
53
44
  }
54
45
  }
55
-
56
46
  }
57
-
58
47
  exports.KeyPromiseQueue = KeyPromiseQueue;
59
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9LZXlQcm9taXNlUXVldWUuanMiXSwibmFtZXMiOlsiS2V5UHJvbWlzZVF1ZXVlIiwiY29uc3RydWN0b3IiLCJxdWV1ZSIsImVucXVldWUiLCJrZXkiLCJvcGVyYXRpb24iLCJ0dXBsZSIsImJlZm9yZU9wIiwidG9Bd2FpdCIsIm5leHRPcGVyYXRpb24iLCJ0aGVuIiwid3JhcHBlZE9wZXJhdGlvbiIsInJlc3VsdCIsImFmdGVyT3AiLCJQcm9taXNlIiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsZUFBTixDQUFzQjtBQUMzQkMsRUFBQUEsV0FBVyxHQUFHO0FBQ1osU0FBS0MsS0FBTCxHQUFhLEVBQWI7QUFDRDs7QUFFREMsRUFBQUEsT0FBTyxDQUFDQyxHQUFELEVBQU1DLFNBQU4sRUFBaUI7QUFDdEIsVUFBTUMsS0FBSyxHQUFHLEtBQUtDLFFBQUwsQ0FBY0gsR0FBZCxDQUFkO0FBQ0EsVUFBTUksT0FBTyxHQUFHRixLQUFLLENBQUMsQ0FBRCxDQUFyQjtBQUNBLFVBQU1HLGFBQWEsR0FBR0QsT0FBTyxDQUFDRSxJQUFSLENBQWFMLFNBQWIsQ0FBdEI7QUFDQSxVQUFNTSxnQkFBZ0IsR0FBR0YsYUFBYSxDQUFDQyxJQUFkLENBQW1CRSxNQUFNLElBQUk7QUFDcEQsV0FBS0MsT0FBTCxDQUFhVCxHQUFiO0FBQ0EsYUFBT1EsTUFBUDtBQUNELEtBSHdCLENBQXpCO0FBSUFOLElBQUFBLEtBQUssQ0FBQyxDQUFELENBQUwsR0FBV0ssZ0JBQVg7QUFDQSxXQUFPQSxnQkFBUDtBQUNEOztBQUVESixFQUFBQSxRQUFRLENBQUNILEdBQUQsRUFBTTtBQUNaLFFBQUlFLEtBQUssR0FBRyxLQUFLSixLQUFMLENBQVdFLEdBQVgsQ0FBWjs7QUFDQSxRQUFJLENBQUNFLEtBQUwsRUFBWTtBQUNWQSxNQUFBQSxLQUFLLEdBQUcsQ0FBQyxDQUFELEVBQUlRLE9BQU8sQ0FBQ0MsT0FBUixFQUFKLENBQVI7QUFDQSxXQUFLYixLQUFMLENBQVdFLEdBQVgsSUFBa0JFLEtBQWxCO0FBQ0Q7O0FBQ0RBLElBQUFBLEtBQUssQ0FBQyxDQUFELENBQUw7QUFDQSxXQUFPQSxLQUFQO0FBQ0Q7O0FBRURPLEVBQUFBLE9BQU8sQ0FBQ1QsR0FBRCxFQUFNO0FBQ1gsVUFBTUUsS0FBSyxHQUFHLEtBQUtKLEtBQUwsQ0FBV0UsR0FBWCxDQUFkOztBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1Y7QUFDRDs7QUFDREEsSUFBQUEsS0FBSyxDQUFDLENBQUQsQ0FBTDs7QUFDQSxRQUFJQSxLQUFLLENBQUMsQ0FBRCxDQUFMLElBQVksQ0FBaEIsRUFBbUI7QUFDakIsYUFBTyxLQUFLSixLQUFMLENBQVdFLEdBQVgsQ0FBUDtBQUNBO0FBQ0Q7QUFDRjs7QUFyQzBCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gS2V5UHJvbWlzZVF1ZXVlIGlzIGEgc2ltcGxlIHByb21pc2UgcXVldWVcbi8vIHVzZWQgdG8gcXVldWUgb3BlcmF0aW9ucyBwZXIga2V5IGJhc2lzLlxuLy8gT25jZSB0aGUgdGFpbCBwcm9taXNlIGluIHRoZSBrZXktcXVldWUgZnVsZmlsbHMsXG4vLyB0aGUgY2hhaW4gb24gdGhhdCBrZXkgd2lsbCBiZSBjbGVhcmVkLlxuZXhwb3J0IGNsYXNzIEtleVByb21pc2VRdWV1ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucXVldWUgPSB7fTtcbiAgfVxuXG4gIGVucXVldWUoa2V5LCBvcGVyYXRpb24pIHtcbiAgICBjb25zdCB0dXBsZSA9IHRoaXMuYmVmb3JlT3Aoa2V5KTtcbiAgICBjb25zdCB0b0F3YWl0ID0gdHVwbGVbMV07XG4gICAgY29uc3QgbmV4dE9wZXJhdGlvbiA9IHRvQXdhaXQudGhlbihvcGVyYXRpb24pO1xuICAgIGNvbnN0IHdyYXBwZWRPcGVyYXRpb24gPSBuZXh0T3BlcmF0aW9uLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuYWZ0ZXJPcChrZXkpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICB0dXBsZVsxXSA9IHdyYXBwZWRPcGVyYXRpb247XG4gICAgcmV0dXJuIHdyYXBwZWRPcGVyYXRpb247XG4gIH1cblxuICBiZWZvcmVPcChrZXkpIHtcbiAgICBsZXQgdHVwbGUgPSB0aGlzLnF1ZXVlW2tleV07XG4gICAgaWYgKCF0dXBsZSkge1xuICAgICAgdHVwbGUgPSBbMCwgUHJvbWlzZS5yZXNvbHZlKCldO1xuICAgICAgdGhpcy5xdWV1ZVtrZXldID0gdHVwbGU7XG4gICAgfVxuICAgIHR1cGxlWzBdKys7XG4gICAgcmV0dXJuIHR1cGxlO1xuICB9XG5cbiAgYWZ0ZXJPcChrZXkpIHtcbiAgICBjb25zdCB0dXBsZSA9IHRoaXMucXVldWVba2V5XTtcbiAgICBpZiAoIXR1cGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHR1cGxlWzBdLS07XG4gICAgaWYgKHR1cGxlWzBdIDw9IDApIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnF1ZXVlW2tleV07XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJLZXlQcm9taXNlUXVldWUiLCJjb25zdHJ1Y3RvciIsInF1ZXVlIiwiZW5xdWV1ZSIsImtleSIsIm9wZXJhdGlvbiIsInR1cGxlIiwiYmVmb3JlT3AiLCJ0b0F3YWl0IiwibmV4dE9wZXJhdGlvbiIsInRoZW4iLCJ3cmFwcGVkT3BlcmF0aW9uIiwicmVzdWx0IiwiYWZ0ZXJPcCIsIlByb21pc2UiLCJyZXNvbHZlIl0sInNvdXJjZXMiOlsiLi4vc3JjL0tleVByb21pc2VRdWV1ZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBLZXlQcm9taXNlUXVldWUgaXMgYSBzaW1wbGUgcHJvbWlzZSBxdWV1ZVxuLy8gdXNlZCB0byBxdWV1ZSBvcGVyYXRpb25zIHBlciBrZXkgYmFzaXMuXG4vLyBPbmNlIHRoZSB0YWlsIHByb21pc2UgaW4gdGhlIGtleS1xdWV1ZSBmdWxmaWxscyxcbi8vIHRoZSBjaGFpbiBvbiB0aGF0IGtleSB3aWxsIGJlIGNsZWFyZWQuXG5leHBvcnQgY2xhc3MgS2V5UHJvbWlzZVF1ZXVlIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5xdWV1ZSA9IHt9O1xuICB9XG5cbiAgZW5xdWV1ZShrZXksIG9wZXJhdGlvbikge1xuICAgIGNvbnN0IHR1cGxlID0gdGhpcy5iZWZvcmVPcChrZXkpO1xuICAgIGNvbnN0IHRvQXdhaXQgPSB0dXBsZVsxXTtcbiAgICBjb25zdCBuZXh0T3BlcmF0aW9uID0gdG9Bd2FpdC50aGVuKG9wZXJhdGlvbik7XG4gICAgY29uc3Qgd3JhcHBlZE9wZXJhdGlvbiA9IG5leHRPcGVyYXRpb24udGhlbihyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5hZnRlck9wKGtleSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICAgIHR1cGxlWzFdID0gd3JhcHBlZE9wZXJhdGlvbjtcbiAgICByZXR1cm4gd3JhcHBlZE9wZXJhdGlvbjtcbiAgfVxuXG4gIGJlZm9yZU9wKGtleSkge1xuICAgIGxldCB0dXBsZSA9IHRoaXMucXVldWVba2V5XTtcbiAgICBpZiAoIXR1cGxlKSB7XG4gICAgICB0dXBsZSA9IFswLCBQcm9taXNlLnJlc29sdmUoKV07XG4gICAgICB0aGlzLnF1ZXVlW2tleV0gPSB0dXBsZTtcbiAgICB9XG4gICAgdHVwbGVbMF0rKztcbiAgICByZXR1cm4gdHVwbGU7XG4gIH1cblxuICBhZnRlck9wKGtleSkge1xuICAgIGNvbnN0IHR1cGxlID0gdGhpcy5xdWV1ZVtrZXldO1xuICAgIGlmICghdHVwbGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHVwbGVbMF0tLTtcbiAgICBpZiAodHVwbGVbMF0gPD0gMCkge1xuICAgICAgZGVsZXRlIHRoaXMucXVldWVba2V5XTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNQSxlQUFlLENBQUM7RUFDM0JDLFdBQVcsR0FBRztJQUNaLElBQUksQ0FBQ0MsS0FBSyxHQUFHLENBQUMsQ0FBQztFQUNqQjtFQUVBQyxPQUFPLENBQUNDLEdBQUcsRUFBRUMsU0FBUyxFQUFFO0lBQ3RCLE1BQU1DLEtBQUssR0FBRyxJQUFJLENBQUNDLFFBQVEsQ0FBQ0gsR0FBRyxDQUFDO0lBQ2hDLE1BQU1JLE9BQU8sR0FBR0YsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QixNQUFNRyxhQUFhLEdBQUdELE9BQU8sQ0FBQ0UsSUFBSSxDQUFDTCxTQUFTLENBQUM7SUFDN0MsTUFBTU0sZ0JBQWdCLEdBQUdGLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDRSxNQUFNLElBQUk7TUFDcEQsSUFBSSxDQUFDQyxPQUFPLENBQUNULEdBQUcsQ0FBQztNQUNqQixPQUFPUSxNQUFNO0lBQ2YsQ0FBQyxDQUFDO0lBQ0ZOLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBR0ssZ0JBQWdCO0lBQzNCLE9BQU9BLGdCQUFnQjtFQUN6QjtFQUVBSixRQUFRLENBQUNILEdBQUcsRUFBRTtJQUNaLElBQUlFLEtBQUssR0FBRyxJQUFJLENBQUNKLEtBQUssQ0FBQ0UsR0FBRyxDQUFDO0lBQzNCLElBQUksQ0FBQ0UsS0FBSyxFQUFFO01BQ1ZBLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRVEsT0FBTyxDQUFDQyxPQUFPLEVBQUUsQ0FBQztNQUM5QixJQUFJLENBQUNiLEtBQUssQ0FBQ0UsR0FBRyxDQUFDLEdBQUdFLEtBQUs7SUFDekI7SUFDQUEsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ1YsT0FBT0EsS0FBSztFQUNkO0VBRUFPLE9BQU8sQ0FBQ1QsR0FBRyxFQUFFO0lBQ1gsTUFBTUUsS0FBSyxHQUFHLElBQUksQ0FBQ0osS0FBSyxDQUFDRSxHQUFHLENBQUM7SUFDN0IsSUFBSSxDQUFDRSxLQUFLLEVBQUU7TUFDVjtJQUNGO0lBQ0FBLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNWLElBQUlBLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7TUFDakIsT0FBTyxJQUFJLENBQUNKLEtBQUssQ0FBQ0UsR0FBRyxDQUFDO01BQ3RCO0lBQ0Y7RUFDRjtBQUNGO0FBQUMifQ==