@webda/core 1.2.1 → 1.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/lib/application.d.ts +3 -0
  2. package/lib/application.js +26 -22
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +185 -2
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +62 -6
  7. package/lib/core.js +127 -86
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +151 -6
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +4 -0
  12. package/lib/index.js +4 -0
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +42 -3
  15. package/lib/models/aclmodel.js +58 -3
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +46 -0
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +58 -10
  20. package/lib/models/coremodel.js +39 -32
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +68 -6
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/ident.d.ts +8 -2
  25. package/lib/models/ident.js.map +1 -1
  26. package/lib/models/ident.spec.js +16 -0
  27. package/lib/models/ident.spec.js.map +1 -1
  28. package/lib/models/ownermodel.d.ts +1 -1
  29. package/lib/models/ownermodel.js.map +1 -1
  30. package/lib/models/ownermodel.spec.js +22 -19
  31. package/lib/models/ownermodel.spec.js.map +1 -1
  32. package/lib/models/user.d.ts +2 -0
  33. package/lib/models/user.js +4 -2
  34. package/lib/models/user.js.map +1 -1
  35. package/lib/models/user.spec.js +9 -2
  36. package/lib/models/user.spec.js.map +1 -1
  37. package/lib/queues/filequeue.d.ts +63 -0
  38. package/lib/queues/filequeue.js +161 -0
  39. package/lib/queues/filequeue.js.map +1 -0
  40. package/lib/queues/filequeue.spec.d.ts +1 -0
  41. package/lib/queues/filequeue.spec.js +90 -0
  42. package/lib/queues/filequeue.spec.js.map +1 -0
  43. package/lib/queues/memoryqueue.d.ts +18 -4
  44. package/lib/queues/memoryqueue.js +20 -13
  45. package/lib/queues/memoryqueue.js.map +1 -1
  46. package/lib/queues/memoryqueue.spec.js +142 -39
  47. package/lib/queues/memoryqueue.spec.js.map +1 -1
  48. package/lib/queues/pubsubservice.d.ts +27 -0
  49. package/lib/queues/pubsubservice.js +21 -0
  50. package/lib/queues/pubsubservice.js.map +1 -0
  51. package/lib/queues/queue.spec.js +16 -7
  52. package/lib/queues/queue.spec.js.map +1 -1
  53. package/lib/queues/queueservice.d.ts +108 -13
  54. package/lib/queues/queueservice.js +100 -36
  55. package/lib/queues/queueservice.js.map +1 -1
  56. package/lib/router.js +4 -6
  57. package/lib/router.js.map +1 -1
  58. package/lib/router.spec.js +27 -2
  59. package/lib/router.spec.js.map +1 -1
  60. package/lib/services/asyncevents.d.ts +110 -5
  61. package/lib/services/asyncevents.js +134 -39
  62. package/lib/services/asyncevents.js.map +1 -1
  63. package/lib/services/asyncevents.spec.js +58 -4
  64. package/lib/services/asyncevents.spec.js.map +1 -1
  65. package/lib/services/authentication.d.ts +57 -5
  66. package/lib/services/authentication.js +93 -84
  67. package/lib/services/authentication.js.map +1 -1
  68. package/lib/services/authentication.spec.js +118 -82
  69. package/lib/services/authentication.spec.js.map +1 -1
  70. package/lib/services/binary.d.ts +175 -48
  71. package/lib/services/binary.js +205 -170
  72. package/lib/services/binary.js.map +1 -1
  73. package/lib/services/binary.spec.d.ts +22 -3
  74. package/lib/services/binary.spec.js +327 -22
  75. package/lib/services/binary.spec.js.map +1 -1
  76. package/lib/services/configuration.d.ts +94 -13
  77. package/lib/services/configuration.js +98 -28
  78. package/lib/services/configuration.js.map +1 -1
  79. package/lib/services/configuration.spec.js +40 -1
  80. package/lib/services/configuration.spec.js.map +1 -1
  81. package/lib/services/cron.d.ts +4 -4
  82. package/lib/services/cron.js +37 -53
  83. package/lib/services/cron.js.map +1 -1
  84. package/lib/services/cron.spec.d.ts +1 -0
  85. package/lib/services/cron.spec.js +76 -0
  86. package/lib/services/cron.spec.js.map +1 -0
  87. package/lib/services/debugmailer.spec.js +18 -4
  88. package/lib/services/debugmailer.spec.js.map +1 -1
  89. package/lib/services/echo.js +22 -13
  90. package/lib/services/echo.js.map +1 -1
  91. package/lib/services/echo.spec.d.ts +1 -0
  92. package/lib/services/echo.spec.js +52 -0
  93. package/lib/services/echo.spec.js.map +1 -0
  94. package/lib/services/filebinary.d.ts +16 -9
  95. package/lib/services/filebinary.js +58 -73
  96. package/lib/services/filebinary.js.map +1 -1
  97. package/lib/services/filebinary.spec.d.ts +8 -1
  98. package/lib/services/filebinary.spec.js +133 -7
  99. package/lib/services/filebinary.spec.js.map +1 -1
  100. package/lib/services/fileconfiguration.d.ts +9 -3
  101. package/lib/services/fileconfiguration.js +13 -6
  102. package/lib/services/fileconfiguration.js.map +1 -1
  103. package/lib/services/fileconfiguration.spec.js +100 -5
  104. package/lib/services/fileconfiguration.spec.js.map +1 -1
  105. package/lib/services/kubernetesconfiguration.d.ts +8 -2
  106. package/lib/services/kubernetesconfiguration.js +16 -5
  107. package/lib/services/kubernetesconfiguration.js.map +1 -1
  108. package/lib/services/kubernetesconfiguration.spec.js +53 -16
  109. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  110. package/lib/services/mailer.d.ts +11 -2
  111. package/lib/services/mailer.js +28 -34
  112. package/lib/services/mailer.js.map +1 -1
  113. package/lib/services/mailer.spec.js +69 -23
  114. package/lib/services/mailer.spec.js.map +1 -1
  115. package/lib/services/oauth.d.ts +5 -2
  116. package/lib/services/oauth.js +22 -8
  117. package/lib/services/oauth.js.map +1 -1
  118. package/lib/services/oauth.spec.js +33 -3
  119. package/lib/services/oauth.spec.js.map +1 -1
  120. package/lib/services/resource.spec.js +39 -2
  121. package/lib/services/resource.spec.js.map +1 -1
  122. package/lib/services/service.d.ts +16 -0
  123. package/lib/services/service.js +47 -6
  124. package/lib/services/service.js.map +1 -1
  125. package/lib/services/service.spec.d.ts +1 -0
  126. package/lib/services/service.spec.js +119 -0
  127. package/lib/services/service.spec.js.map +1 -0
  128. package/lib/stores/aggregator.d.ts +43 -0
  129. package/lib/stores/aggregator.js +106 -0
  130. package/lib/stores/aggregator.js.map +1 -0
  131. package/lib/stores/file.d.ts +49 -11
  132. package/lib/stores/file.js +84 -81
  133. package/lib/stores/file.js.map +1 -1
  134. package/lib/stores/file.spec.d.ts +6 -1
  135. package/lib/stores/file.spec.js +134 -9
  136. package/lib/stores/file.spec.js.map +1 -1
  137. package/lib/stores/mapper.d.ts +151 -0
  138. package/lib/stores/mapper.js +294 -0
  139. package/lib/stores/mapper.js.map +1 -0
  140. package/lib/stores/mapper.spec.d.ts +1 -0
  141. package/lib/stores/mapper.spec.js +55 -0
  142. package/lib/stores/mapper.spec.js.map +1 -0
  143. package/lib/stores/memory.d.ts +52 -7
  144. package/lib/stores/memory.js +71 -33
  145. package/lib/stores/memory.js.map +1 -1
  146. package/lib/stores/memory.spec.d.ts +6 -1
  147. package/lib/stores/memory.spec.js +65 -4
  148. package/lib/stores/memory.spec.js.map +1 -1
  149. package/lib/stores/store.d.ts +263 -126
  150. package/lib/stores/store.js +285 -493
  151. package/lib/stores/store.js.map +1 -1
  152. package/lib/stores/store.spec.d.ts +20 -0
  153. package/lib/stores/store.spec.js +242 -18
  154. package/lib/stores/store.spec.js.map +1 -1
  155. package/lib/test.d.ts +1 -7
  156. package/lib/test.js +3 -12
  157. package/lib/test.js.map +1 -1
  158. package/lib/utils/abstractdeployer.spec.d.ts +1 -0
  159. package/lib/utils/abstractdeployer.spec.js +23 -0
  160. package/lib/utils/abstractdeployer.spec.js.map +1 -0
  161. package/lib/utils/context.d.ts +25 -2
  162. package/lib/utils/context.js +33 -12
  163. package/lib/utils/context.js.map +1 -1
  164. package/lib/utils/context.spec.js +81 -11
  165. package/lib/utils/context.spec.js.map +1 -1
  166. package/lib/utils/cookie.d.ts +12 -0
  167. package/lib/utils/cookie.js +13 -1
  168. package/lib/utils/cookie.js.map +1 -1
  169. package/lib/utils/cookie.spec.js +42 -11
  170. package/lib/utils/cookie.spec.js.map +1 -1
  171. package/lib/utils/logger.d.ts +23 -4
  172. package/lib/utils/logger.js +29 -6
  173. package/lib/utils/logger.js.map +1 -1
  174. package/lib/utils/logger.spec.js +8 -0
  175. package/lib/utils/logger.spec.js.map +1 -1
  176. package/lib/utils/serializers.d.ts +5 -5
  177. package/lib/utils/serializers.js +10 -10
  178. package/lib/utils/serializers.js.map +1 -1
  179. package/lib/utils/serializers.spec.js +41 -16
  180. package/lib/utils/serializers.spec.js.map +1 -1
  181. package/lib/utils/waiter.d.ts +59 -1
  182. package/lib/utils/waiter.js +86 -3
  183. package/lib/utils/waiter.js.map +1 -1
  184. package/lib/utils/waiter.spec.js +48 -4
  185. package/lib/utils/waiter.spec.js.map +1 -1
  186. package/package.json +16 -11
  187. package/test/badapp/package.json +4 -0
  188. package/test/badapp/webda.config.json +1 -0
  189. package/test/cachedapp/webda.config.json +7 -0
  190. package/test/config-file-no-reload.json +70 -0
  191. package/test/config-file-reload.json +7 -1
  192. package/test/config-kube-reload.json +7 -1
  193. package/test/config.json +45 -21
  194. package/test/config.old-default.json +0 -16
  195. package/test/config.old.json +0 -16
  196. package/test/deployments/invalid.json +1 -0
  197. package/test/moddas/fakeservice.js +5 -0
  198. package/test/models/ident.js +10 -14
  199. package/test/models/task.js +2 -4
package/lib/core.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  import * as events from "events";
3
3
  import { JSONSchema6 } from "json-schema";
4
4
  import { OpenAPIV3 } from "openapi-types";
5
+ import * as vm from "vm";
5
6
  import { Application } from "./application";
6
7
  import { Context, HttpContext, Logger, Service } from "./index";
7
8
  import { CoreModel, CoreModelDefinition } from "./models/coremodel";
@@ -167,6 +168,25 @@ export interface Configuration {
167
168
  * Global parameters
168
169
  */
169
170
  parameters?: {
171
+ /**
172
+ * Allowed origin for referer that match
173
+ * any of this regexp
174
+ *
175
+ * {@link OriginFilter}
176
+ */
177
+ csrfOrigins?: string[];
178
+ /**
179
+ * Allow you to authorize one or several websites
180
+ * If you use "*" then the API is open to direct call and any origins
181
+ *
182
+ * {@link WebsiteOriginFilter}
183
+ */
184
+ website?: string | string[] | {
185
+ url: string;
186
+ };
187
+ /**
188
+ * Cookie configuration for session
189
+ */
170
190
  cookie?: {
171
191
  sameSite: "None" | "Strict" | "Lax";
172
192
  domain: string;
@@ -176,6 +196,18 @@ export interface Configuration {
176
196
  maxAge: number;
177
197
  path: string;
178
198
  };
199
+ /**
200
+ * Read from the configuration service before init
201
+ */
202
+ configurationService?: string;
203
+ /**
204
+ * Application salt
205
+ */
206
+ salt?: string;
207
+ /**
208
+ * Define the api url
209
+ */
210
+ apiUrl?: string;
179
211
  [key: string]: any;
180
212
  };
181
213
  /**
@@ -188,7 +220,7 @@ export interface Configuration {
188
220
  *
189
221
  * If one of the filter replies with "true" then the request will go through
190
222
  */
191
- export interface RequestFilter<T extends Context> {
223
+ export interface RequestFilter<T extends Context = Context> {
192
224
  /**
193
225
  * Return true if the request should be allowed
194
226
  *
@@ -202,7 +234,7 @@ export interface RequestFilter<T extends Context> {
202
234
  * @category CoreFeatures
203
235
  */
204
236
  export declare class OriginFilter implements RequestFilter<Context> {
205
- origins: string[];
237
+ regexs: RegExp[];
206
238
  constructor(origins: string[]);
207
239
  /**
208
240
  *
@@ -283,6 +315,19 @@ export declare class Core extends events.EventEmitter {
283
315
  * @params {Object} config - The configuration Object, if undefined will load the configuration file
284
316
  */
285
317
  constructor(application: Application);
318
+ /**
319
+ * Get absolute url with subpath
320
+ * @param subpath
321
+ */
322
+ getApiUrl(subpath?: string): string;
323
+ /**
324
+ * Return application path with subpath
325
+ *
326
+ * Helper that redirect to this.application.getAppPath
327
+ *
328
+ * @param subpath
329
+ * @returns
330
+ */
286
331
  getAppPath(subpath?: string): string;
287
332
  /**
288
333
  * Reinit the @Route
@@ -323,7 +368,7 @@ export declare class Core extends events.EventEmitter {
323
368
  * @param {Object} executor The executor to expose as executor
324
369
  * @param {String} code to execute
325
370
  */
326
- sandbox(executor: any, code: any): any;
371
+ sandbox(code: any, context?: vm.Context): any;
327
372
  /**
328
373
  * Validate the object with schema
329
374
  *
@@ -464,7 +509,18 @@ export declare class Core extends events.EventEmitter {
464
509
  * @returns
465
510
  */
466
511
  reinit(updates: any): Promise<void>;
467
- protected getServiceParams(service: string): any;
512
+ /**
513
+ * Get a full resolved service parameter
514
+ *
515
+ * @param service
516
+ * @param configuration
517
+ * @returns
518
+ */
519
+ getServiceParams(service: string, configuration?: {
520
+ parameters?: any;
521
+ services: any;
522
+ }): any;
523
+ protected createService(services: any, service: string): void;
468
524
  /**
469
525
  * @hidden
470
526
  *
@@ -480,7 +536,7 @@ export declare class Core extends events.EventEmitter {
480
536
  */
481
537
  protected autoConnectServices(): void;
482
538
  protected jsonFilter(key: string, value: any): any;
483
- protected initStatics(): void;
539
+ initStatics(): void;
484
540
  /**
485
541
  * Init Routes declare by @Route annotation
486
542
  */
@@ -505,7 +561,7 @@ export declare class Core extends events.EventEmitter {
505
561
  /**
506
562
  * Emit the event with data and wait for Promise to finish if listener returned a Promise
507
563
  */
508
- emitSync(event: any, ...data: any[]): Promise<any[]>;
564
+ emitSync<T = any>(eventType: string, event?: T, ...data: any[]): Promise<any[]>;
509
565
  /**
510
566
  * Logs
511
567
  * @param level
package/lib/core.js CHANGED
@@ -46,7 +46,15 @@ exports.WebdaError = WebdaError;
46
46
  */
47
47
  class OriginFilter {
48
48
  constructor(origins) {
49
- this.origins = origins;
49
+ this.regexs = origins.map(origin => {
50
+ if (!origin.endsWith("$")) {
51
+ origin += "$";
52
+ }
53
+ if (!origin.startsWith("^")) {
54
+ origin = "^" + origin;
55
+ }
56
+ return new RegExp(origin);
57
+ });
50
58
  }
51
59
  /**
52
60
  *
@@ -56,15 +64,7 @@ class OriginFilter {
56
64
  checkRequest(context) {
57
65
  return __awaiter(this, void 0, void 0, function* () {
58
66
  let httpContext = context.getHttpContext();
59
- for (let i in this.origins) {
60
- let origin = this.origins[i];
61
- if (!origin.endsWith("$")) {
62
- origin += "$";
63
- }
64
- if (!origin.startsWith("^")) {
65
- origin = "^" + origin;
66
- }
67
- let regexp = new RegExp(origin);
67
+ for (let regexp of this.regexs) {
68
68
  if (httpContext.origin.match(regexp)) {
69
69
  return true;
70
70
  }
@@ -145,6 +145,8 @@ class Core extends events.EventEmitter {
145
145
  * @params {Object} config - The configuration Object, if undefined will load the configuration file
146
146
  */
147
147
  constructor(application) {
148
+ var _a, _b, _c, _d;
149
+ var _e, _f, _g, _h;
148
150
  /** @ignore */
149
151
  super();
150
152
  /**
@@ -174,9 +176,10 @@ class Core extends events.EventEmitter {
174
176
  // Set the global context
175
177
  index_1.Context.setGlobalContext(new (this.getModel(this.parameter("contextModel") || "WebdaCore/Context"))(this));
176
178
  // Init default values for configuration
177
- this.configuration.parameters = this.configuration.parameters || {};
178
- this.configuration.services = this.configuration.services || {};
179
- this.configuration.module = this.configuration.module || {};
179
+ (_a = (_e = this.configuration).parameters) !== null && _a !== void 0 ? _a : (_e.parameters = {});
180
+ (_b = (_f = this.configuration.parameters).apiUrl) !== null && _b !== void 0 ? _b : (_f.apiUrl = "http://localhost:18080");
181
+ (_c = (_g = this.configuration).services) !== null && _c !== void 0 ? _c : (_g.services = {});
182
+ (_d = (_h = this.configuration).module) !== null && _d !== void 0 ? _d : (_h.module = {});
180
183
  // Add CSRF origins filtering
181
184
  if (this.configuration.parameters.csrfOrigins) {
182
185
  this.registerRequestFilter(new OriginFilter(this.configuration.parameters.csrfOrigins));
@@ -185,8 +188,25 @@ class Core extends events.EventEmitter {
185
188
  if (this.configuration.parameters.website) {
186
189
  this.registerRequestFilter(new WebsiteOriginFilter(this.configuration.parameters.website));
187
190
  }
188
- this.initStatics();
189
191
  }
192
+ /**
193
+ * Get absolute url with subpath
194
+ * @param subpath
195
+ */
196
+ getApiUrl(subpath = "") {
197
+ if (subpath.length > 0 && !subpath.startsWith("/")) {
198
+ subpath = "/" + subpath;
199
+ }
200
+ return this.configuration.parameters.apiUrl + subpath;
201
+ }
202
+ /**
203
+ * Return application path with subpath
204
+ *
205
+ * Helper that redirect to this.application.getAppPath
206
+ *
207
+ * @param subpath
208
+ * @returns
209
+ */
190
210
  getAppPath(subpath = "") {
191
211
  return this.application.getAppPath(subpath);
192
212
  }
@@ -256,10 +276,37 @@ class Core extends events.EventEmitter {
256
276
  * It will resolve Services init method and autolink
257
277
  */
258
278
  init() {
279
+ var _a, _b;
280
+ var _c, _d;
259
281
  return __awaiter(this, void 0, void 0, function* () {
260
282
  if (this._init) {
261
283
  return this._init;
262
284
  }
285
+ if (this.configuration.parameters.configurationService) {
286
+ try {
287
+ this.log("INFO", "Create and init ConfigurationService", this.configuration.parameters.configurationService);
288
+ // Create the configuration service
289
+ this.createService(this.configuration.services, this.configuration.parameters.configurationService);
290
+ let cfg = yield this.getService(this.configuration.parameters.configurationService).initConfiguration();
291
+ if (cfg.webda) {
292
+ (_a = (_c = cfg.webda).parameters) !== null && _a !== void 0 ? _a : (_c.parameters = {});
293
+ (_b = (_d = cfg.webda).services) !== null && _b !== void 0 ? _b : (_d.services = {});
294
+ this.configuration.parameters = Object.assign(Object.assign({}, this.configuration.parameters), cfg.webda.parameters);
295
+ for (let i in this.configuration.services) {
296
+ this.configuration.services[i] = Object.assign(Object.assign({}, deepmerge.all([
297
+ this.configuration.services[i],
298
+ (cfg.webda.services[i] || {})
299
+ ])), { type: this.configuration.services[i].type });
300
+ }
301
+ }
302
+ yield this.getService(this.configuration.parameters.configurationService).init();
303
+ }
304
+ catch (err) {
305
+ this.log("ERROR", "Cannot use ConfigurationService", this.configuration.parameters.configurationService, err);
306
+ this.services = {};
307
+ }
308
+ }
309
+ this.initStatics();
263
310
  this.reinitResolvedRoutes();
264
311
  this.log("TRACE", "Create Webda init promise");
265
312
  this._init = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
@@ -274,7 +321,7 @@ class Core extends events.EventEmitter {
274
321
  }
275
322
  }
276
323
  yield Promise.all(inits);
277
- this.emit("Webda.Init.Services", this.services);
324
+ this.emitSync("Webda.Init.Services", this.services);
278
325
  resolve();
279
326
  }));
280
327
  return this._init;
@@ -288,24 +335,17 @@ class Core extends events.EventEmitter {
288
335
  * @param {Object} executor The executor to expose as executor
289
336
  * @param {String} code to execute
290
337
  */
291
- sandbox(executor, code) {
292
- var sandbox = {
293
- // Should be custom console
294
- console: console,
295
- webda: executor._webda,
296
- executor: executor,
297
- module: {},
298
- require: function (mod) {
299
- // We need to add more control here
300
- if (mod === "net") {
301
- throw Error("not allowed");
302
- }
303
- // if the module is okay to load, load it:
304
- return require.apply(this, arguments);
338
+ sandbox(code, context) {
339
+ context !== null && context !== void 0 ? context : (context = {
340
+ require: () => {
341
+ throw Error("not allowed");
305
342
  }
343
+ });
344
+ context.module = {
345
+ exports: {}
306
346
  };
307
- vm.runInNewContext(code, sandbox);
308
- return sandbox.module.exports(executor);
347
+ vm.runInNewContext(code, context);
348
+ return context.module.exports();
309
349
  }
310
350
  /**
311
351
  * Validate the object with schema
@@ -399,9 +439,7 @@ class Core extends events.EventEmitter {
399
439
  */
400
440
  getService(name = "") {
401
441
  name = name.toLowerCase();
402
- if (this.services !== undefined) {
403
- return this.services[name];
404
- }
442
+ return this.services[name];
405
443
  }
406
444
  /**
407
445
  * Return a map of defined services
@@ -489,9 +527,6 @@ class Core extends events.EventEmitter {
489
527
  return false;
490
528
  }
491
529
  var executor = this.getService(route.executor);
492
- if (executor === undefined) {
493
- return false;
494
- }
495
530
  ctx.setRoute(Object.assign(Object.assign({}, this.configuration), route));
496
531
  ctx.setExecutor(executor);
497
532
  return true;
@@ -551,7 +586,7 @@ class Core extends events.EventEmitter {
551
586
  }
552
587
  if (JSON.stringify(Object.keys(configuration)) !== JSON.stringify(Object.keys(this.configuration.services))) {
553
588
  this.log("ERROR", "Configuration update cannot modify services");
554
- return this._initPromise;
589
+ throw new WebdaError("REINIT_SERVICE_INJECTION", "Configuration is not designed to add dynamically services");
555
590
  }
556
591
  this.configuration.services = configuration;
557
592
  let inits = [];
@@ -561,23 +596,57 @@ class Core extends events.EventEmitter {
561
596
  yield Promise.all(inits);
562
597
  });
563
598
  }
564
- getServiceParams(service) {
565
- var params = Object.assign(Object.assign({}, this.configuration.parameters), this.configuration.services[service]);
599
+ /**
600
+ * Get a full resolved service parameter
601
+ *
602
+ * @param service
603
+ * @param configuration
604
+ * @returns
605
+ */
606
+ getServiceParams(service, configuration = { parameters: {}, services: {} }) {
607
+ var _a, _b, _c;
608
+ var _d;
609
+ (_a = configuration.parameters) !== null && _a !== void 0 ? _a : (configuration.parameters = {});
610
+ (_b = configuration.services) !== null && _b !== void 0 ? _b : (configuration.services = {});
611
+ (_c = (_d = configuration.services)[service]) !== null && _c !== void 0 ? _c : (_d[service] = {});
612
+ const params = deepmerge.all([this.configuration.parameters || {},
613
+ configuration.parameters || {},
614
+ this.configuration.services[service] || {},
615
+ configuration.services[service] || {}
616
+ ]);
566
617
  delete params.require;
567
618
  return params;
568
619
  }
620
+ createService(services, service) {
621
+ var type = services[service].type;
622
+ if (type === undefined) {
623
+ type = service;
624
+ }
625
+ var serviceConstructor = undefined;
626
+ try {
627
+ serviceConstructor = this.application.getService(type);
628
+ }
629
+ catch (ex) {
630
+ this.log("ERROR", `Create service ${service}(${type}) failed ${ex.message}`);
631
+ this.log("TRACE", ex.stack);
632
+ return;
633
+ }
634
+ try {
635
+ this.log("TRACE", "Constructing service", service);
636
+ this.services[service.toLowerCase()] = new serviceConstructor(this, service, this.getServiceParams(service));
637
+ }
638
+ catch (err) {
639
+ this.log("ERROR", "Cannot create service", service, err);
640
+ // @ts-ignore
641
+ this.failedServices[service.toLowerCase()] = { _createException: err };
642
+ }
643
+ }
569
644
  /**
570
645
  * @hidden
571
646
  *
572
647
  */
573
648
  createServices(excludes = []) {
574
649
  var services = this.configuration.services;
575
- if (this.services === undefined) {
576
- this.services = {};
577
- }
578
- if (services === undefined) {
579
- services = {};
580
- }
581
650
  for (let i in beans) {
582
651
  if (!beans[i].bean) {
583
652
  this.log("DEBUG", "Implicit @Bean due to a @Route", beans[i].constructor.name);
@@ -591,34 +660,12 @@ class Core extends events.EventEmitter {
591
660
  // Register the type
592
661
  this.application.addService(`Beans/${name}`, beans[i].constructor);
593
662
  }
594
- let service;
595
663
  // Construct services
596
- for (service in services) {
664
+ for (let service in services) {
597
665
  if (excludes.indexOf(service.toLowerCase()) >= 0) {
598
666
  continue;
599
667
  }
600
- var type = services[service].type;
601
- if (type === undefined) {
602
- type = service;
603
- }
604
- var serviceConstructor = undefined;
605
- try {
606
- serviceConstructor = this.application.getService(type);
607
- }
608
- catch (ex) {
609
- this.log("ERROR", `Create service ${service}(${type}) failed ${ex.message}`);
610
- this.log("TRACE", ex.stack);
611
- continue;
612
- }
613
- try {
614
- this.log("TRACE", "Constructing service", service);
615
- this.services[service.toLowerCase()] = new serviceConstructor(this, service, this.getServiceParams(service));
616
- }
617
- catch (err) {
618
- this.log("ERROR", "Cannot create service", service, err);
619
- // @ts-ignore
620
- this.failedServices[service.toLowerCase()] = { _createException: err };
621
- }
668
+ this.createService(services, service);
622
669
  }
623
670
  this.autoConnectServices();
624
671
  this.emit("Webda.Create.Services", this.services);
@@ -660,7 +707,7 @@ class Core extends events.EventEmitter {
660
707
  }
661
708
  initStatics() {
662
709
  if (this.configuration.services !== undefined) {
663
- this.createServices();
710
+ this.createServices(Object.keys(this.services));
664
711
  }
665
712
  this.router.remapRoutes();
666
713
  this._initiated = true;
@@ -705,7 +752,7 @@ class Core extends events.EventEmitter {
705
752
  if (!noInit) {
706
753
  yield res.init();
707
754
  }
708
- this.emit("Webda.NewContext", res);
755
+ this.emitSync("Webda.NewContext", res);
709
756
  return res;
710
757
  });
711
758
  }
@@ -722,12 +769,12 @@ class Core extends events.EventEmitter {
722
769
  /**
723
770
  * Emit the event with data and wait for Promise to finish if listener returned a Promise
724
771
  */
725
- emitSync(event, ...data) {
772
+ emitSync(eventType, event, ...data) {
726
773
  var result;
727
774
  var promises = [];
728
- var listeners = this.listeners(event);
729
- for (var i in listeners) {
730
- result = listeners[i](...data);
775
+ var listeners = this.listeners(eventType);
776
+ for (let listener of listeners) {
777
+ result = listener(event, ...data);
731
778
  if (result instanceof Promise) {
732
779
  promises.push(result);
733
780
  }
@@ -755,16 +802,12 @@ class Core extends events.EventEmitter {
755
802
  */
756
803
  checkRequest(ctx) {
757
804
  return __awaiter(this, void 0, void 0, function* () {
758
- for (let i in this._requestFilters) {
759
- if (yield this._requestFilters[i].checkRequest(ctx)) {
760
- return true;
761
- }
762
- }
763
- return false;
805
+ return (yield Promise.all(this._requestFilters.map(filter => filter.checkRequest(ctx)))).reduce((prev, cur) => prev || cur);
764
806
  });
765
807
  }
766
808
  exportOpenAPI(skipHidden = true) {
767
809
  var _a;
810
+ var _b;
768
811
  let packageInfo = this.application.getPackageDescription();
769
812
  let contact = packageInfo.author;
770
813
  if (typeof packageInfo.author === "string") {
@@ -804,9 +847,6 @@ class Core extends events.EventEmitter {
804
847
  let desc = {
805
848
  type: "object"
806
849
  };
807
- if (model instanceof index_1.Context) {
808
- continue;
809
- }
810
850
  let modelDescription = this.getModel(i);
811
851
  // Only export CoreModel info
812
852
  if (!this.application.extends(modelDescription, coremodel_1.CoreModel)) {
@@ -815,11 +855,12 @@ class Core extends events.EventEmitter {
815
855
  let schema = this.application.getSchemaResolver().fromPrototype(modelDescription);
816
856
  if (schema) {
817
857
  for (let j in schema.definitions) {
818
- openapi.definitions[j] = (_a = openapi.definitions[j]) !== null && _a !== void 0 ? _a : schema.definitions[j];
858
+ (_a = (_b = openapi.definitions)[j]) !== null && _a !== void 0 ? _a : (_b[j] = schema.definitions[j]);
819
859
  }
820
860
  delete schema.definitions;
821
861
  desc = schema;
822
862
  }
863
+ // @ts-ignore
823
864
  openapi.definitions[model.name.split("/").pop()] = desc;
824
865
  }
825
866
  this.router.completeOpenAPI(openapi, skipHidden);
package/lib/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6BAAsB;AACtB,uCAAuC;AACvC,iCAAiC;AAEjC,qCAAqC;AAErC,yBAAyB;AAEzB,mCAA6F;AAC7F,kDAAoE;AACpE,qCAA6C;AAI7C;;GAEG;AACH,MAAa,UAAW,SAAQ,KAAK;IAGnC;;;;OAIG;IACH,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAnBD,gCAmBC;AAyMD;;;;GAIG;AACH,MAAa,YAAY;IAEvB,YAAY,OAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACzB,MAAM,IAAI,GAAG,CAAC;aACf;YACD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;gBAC3B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;aACvB;YACD,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC;IACD;;;;OAIG;IACG,YAAY,CAAC,OAAgB;;YACjC,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3C,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC9B,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBACpC,OAAO,IAAI,CAAC;iBACb;gBACD,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAClC,OAAO,IAAI,CAAC;iBACb;aACF;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;CACF;AA9BD,oCA8BC;AAED;;GAEG;AACH,MAAa,mBAAmB;IAE9B,YAAY,OAAY;QADxB,aAAQ,GAAa,EAAE,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;gBAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACjC;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B;SACF;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;SAC9B;IACH,CAAC;IACK,YAAY,CAAC,OAAgB;;YACjC,IAAI,WAAW,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3C,IACE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAC/B;gBACA,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;CACF;AAxBD,kDAwBC;AAED,MAAM,KAAK,GAAG,EAAE,CAAC;AAEjB,0CAA0C;AAC1C,SAAgB,IAAI,CAAC,WAAqB;IACxC,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,mCAAQ,KAAK,CAAC,IAAI,CAAC,KAAE,IAAI,EAAE,IAAI,GAAE,CAAC;AAC/C,CAAC;AAJD,oBAIC;AAED,kCAAkC;AAClC,SAAgB,KAAK,CACnB,KAAa,EACb,UAA6B,CAAC,KAAK,CAAC,EACpC,YAAqB,KAAK,EAC1B,UAAe,EAAE;IAEjB,OAAO,UAAU,MAAW,EAAE,QAAgB,EAAE,UAA8B;QAC5E,IAAI,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvD,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI;YACvC,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;QACF,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1D,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACxE,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,QAAQ;YACR,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AApBD,sBAoBC;AAED;;;;;GAKG;AACH,MAAa,IAAK,SAAQ,MAAM,CAAC,YAAY;IAkD3C;;OAEG;IACH,YAAY,WAAwB;;;QAClC,cAAc;QACd,KAAK,EAAE,CAAC;QAtDV;;;WAGG;QACO,aAAQ,GAA+B,EAAE,CAAC;QAE1C,WAAM,GAAW,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;QAClC,eAAU,GAAY,KAAK,CAAC;QAC5B,mBAAc,GAA2B,EAAE,CAAC;QAgCtD;;;;;WAKG;QACO,oBAAe,GAA6B,EAAE,CAAC;QASvD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,cAAM,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACtC,qBAAqB;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,aAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,qCAAqC;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;QAChE,yBAAyB;QACzB,eAAO,CAAC,gBAAgB,CAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpH,wCAAwC;QACxC,YAAA,IAAI,CAAC,aAAa,EAAC,UAAU,uCAAV,UAAU,GAAK,EAAE,EAAC;QACrC,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAC,MAAM,uCAAN,MAAM,GAAK,wBAAwB,EAAC;QAClE,YAAA,IAAI,CAAC,aAAa,EAAC,QAAQ,uCAAR,QAAQ,GAAK,EAAE,EAAC;QACnC,YAAA,IAAI,CAAC,aAAa,EAAC,MAAM,uCAAN,MAAM,GAAK,EAAE,EAAC;QACjC,6BAA6B;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE;YAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;SACzF;QACD,6BAA6B;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE;YACzC,IAAI,CAAC,qBAAqB,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;SAC5F;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,UAAkB,EAAE;QAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAClD,OAAO,GAAG,GAAG,GAAG,OAAO,CAAC;SACzB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC;IACxD,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,UAAkB,EAAE;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;YACnB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;gBACnB,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;oBAC7B,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wBAC7B,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACnB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBACrC,CAAC,CAAC,CAAC;iBACJ;aACF;SACF;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACa,WAAW,CAAC,OAAe;;YACzC,IAAI;gBACF,sCAAsC;gBACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC9C,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;aACrC;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC;gBAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC;gBACvD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;aAC9B;QACH,CAAC;KAAA;IACD;;;;OAIG;IACG,IAAI;;;;YACR,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBACtD,IAAI;oBACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,sCAAsC,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;oBAC7G,mCAAmC;oBACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;oBACpG,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAC7B,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,CACnD,CAAC,iBAAiB,EAAE,CAAC;oBACtB,IAAI,GAAG,CAAC,KAAK,EAAE;wBACb,YAAA,GAAG,CAAC,KAAK,EAAC,UAAU,uCAAV,UAAU,GAAK,EAAE,EAAC;wBAC5B,YAAA,GAAG,CAAC,KAAK,EAAC,QAAQ,uCAAR,QAAQ,GAAK,EAAE,EAAC;wBAC1B,IAAI,CAAC,aAAa,CAAC,UAAU,mCAAQ,IAAI,CAAC,aAAa,CAAC,UAAU,GAAK,GAAG,CAAC,KAAK,CAAC,UAAU,CAAE,CAAC;wBAC9F,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;4BACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,mCACzB,SAAS,CAAC,GAAG,CAAC;gCACf,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;gCAC9B,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;6BAC9B,CAAC,KACF,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAC1C,CAAC;yBACH;qBACF;oBACD,MAAM,IAAI,CAAC,UAAU,CACnB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,CACnD,CAAC,IAAI,EAAE,CAAC;iBACV;gBAAC,OAAO,GAAG,EAAE;oBACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAiC,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;oBAC9G,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;iBACpB;aACF;YACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAM,OAAO,EAAC,EAAE;gBACvC,gBAAgB;gBAChB,IAAI,OAAO,CAAC;gBACZ,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,KAAK,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAC7B,IACE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS;wBACzC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,gBAAgB;wBACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,EACjC;wBACA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;qBACvC;iBACF;gBACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAA,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC;;KACnB;IAED,qBAAqB,CAAC,MAA8B;QAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,OAAoB;QAChC,OAAO,aAAP,OAAO,cAAP,OAAO,IAAP,OAAO,GAAK;YACV,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;YAC7B,CAAC;SACF,EAAC;QACF,OAAO,CAAC,MAAM,GAAG;YACf,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,WAAmD,EAAE,MAAW;QAC7E,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;YACpG,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,IAAI,CAAC;aACb;YACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAC/B;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,EAAE;YACjE,OAAO,CAAC,OAAO,CAAC,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAuB;QAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACjD,KAAK,IAAI,CAAC,IAAI,WAAW,EAAE;gBACzB,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE;oBACxC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBAClC,MAAM;iBACP;aACF;SACF;QACD,OAAO,IAAI,cAAM,CAAC,IAAI,CAAC,YAAY,EAAU,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,GAAW,EAAE,IAAe;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,UAAU,CAAoB,OAAe,EAAE;QAC7C,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1B,OAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,0BAA0B,CAAC,IAAI,GAAG,SAAS;QACzC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,IAAI,OAAO,YAAY,IAAI,EAAE;gBACpC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;aACrB;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,0BAA0B,CAAC,aAAK,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAyD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAG,CAAC;IACzF,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,IAAY,EAAE,KAAK;QAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,IAAI;QACX,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACI,SAAS;QACd,wEAAwE;QACxE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC;IACrD,CAAC;IAED;;;;OAIG;IACI,OAAO;QACZ,wEAAwE;QACxE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,GAAY;QACxC,IAAI,IAAI,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;QAChC,gBAAgB;QAChB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACtF,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,KAAK,CAAC;SACd;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/C,GAAG,CAAC,QAAQ,iCAAM,IAAI,CAAC,aAAa,GAAK,KAAK,EAAG,CAAC;QAClD,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,OAAgB;QAClC,wCAAwC;IAC1C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAgB;QAC3B,wCAAwC;IAC1C,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACa,aAAa,CAAC,OAAe;;YAC3C,IAAI;gBACF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aACxE;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC;gBACjE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;aAC9B;QACH,CAAC;KAAA;IAED;;;;OAIG;IACU,MAAM,CAAC,OAAY;;YAC9B,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5E,KAAK,IAAI,OAAO,IAAI,OAAO,EAAE;gBAC3B,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;aAC1D;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE;gBAC3G,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,6CAA6C,CAAC,CAAC;gBACjE,MAAM,IAAI,UAAU,CAAC,0BAA0B,EAAE,2DAA2D,CAAC,CAAC;aAC/G;YACD,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,aAAa,CAAC;YAC5C,IAAI,KAAK,GAAoB,EAAE,CAAC;YAChC,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;aACzC;YACD,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;KAAA;IAED;;;;;;OAMG;IACI,gBAAgB,CACrB,OAAe,EACf,gBAAqD,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;;;QAErF,MAAA,aAAa,CAAC,UAAU,oCAAxB,aAAa,CAAC,UAAU,GAAK,EAAE,EAAC;QAChC,MAAA,aAAa,CAAC,QAAQ,oCAAtB,aAAa,CAAC,QAAQ,GAAK,EAAE,EAAC;QAC9B,YAAA,aAAa,CAAC,QAAQ,EAAC,OAAO,wCAAP,OAAO,IAAM,EAAE,EAAC;QACvC,MAAM,MAAM,GAAS,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,EAAE;YACrE,aAAa,CAAC,UAAU,IAAI,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;YAC1C,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE;SACtC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,aAAa,CAAC,QAAa,EAAE,OAAe;QACpD,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,IAAI,GAAG,OAAO,CAAC;SAChB;QACD,IAAI,kBAAkB,GAAG,SAAS,CAAC;QACnC,IAAI;YACF,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACxD;QAAC,OAAO,EAAE,EAAE;YACX,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,OAAO,IAAI,IAAI,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO;SACR;QAED,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9G;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACzD,aAAa;YACb,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC;SACxE;IACH,CAAC;IAED;;;OAGG;IACO,cAAc,CAAC,WAAqB,EAAE;QAC9C,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC3C,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,gCAAgC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAChF;YACD,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;aACrB;YACD,qBAAqB;YACrB,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;YACtC,oBAAoB;YACpB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;SACpE;QAED,qBAAqB;QACrB,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;YAC5B,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;gBAChD,SAAS;aACV;YACD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACO,WAAW,CAAC,GAAG;QACvB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE;YAC1C,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACpC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACO,mBAAmB;QAC3B,KAAK,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzC,WAAW,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvB,IAAI,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAClE,IAAI,aAAa,EAAE;oBACjB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrF,WAAW,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;iBACpC;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAES,UAAU,CAAC,GAAW,EAAE,KAAU;QAC1C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,SAAS,EAAE;YAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAE1B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,WAAoB;QACjC,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;QAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;YACzD,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE;gBACnC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC1D,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvC,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAClB,OAAO;qBACR;oBACD,KAAK,CAAC,IAAI,GAAG;wBACX,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;wBAC/C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,KAAK;wBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB;qBACjE,CAAC;oBACF,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACxB,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAED;;;;;;;OAOG;IACU,UAAU,CACrB,WAAwB,EACxB,MAAM,GAAG,SAAS,EAClB,SAAkB,KAAK;;YAEvB,IAAI,GAAG,GAAqB,CAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CACtG,CAAC;YACF,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;aAClB;YACD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;YACvC,OAAU,GAAG,CAAC;QAChB,CAAC;KAAA;IAED;;;;;;OAMG;IACI,YAAY,CAAC,MAAM;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACI,QAAQ,CAAU,SAAiB,EAAE,KAAS,EAAE,GAAG,IAAI;QAC5D,IAAI,MAAM,CAAC;QACX,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,KAAK,IAAI,QAAQ,IAAI,SAAS,EAAE;YAC9B,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;YAClC,IAAI,MAAM,YAAY,OAAO,EAAE;gBAC7B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvB;SACF;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAC,KAAqB,EAAE,GAAG,IAAI;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACa,YAAY,CAAC,GAAY;;YACvC,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAC7F,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAC3B,CAAC;QACJ,CAAC;KAAA;IAED,aAAa,CAAC,aAAsB,IAAI;;;QACtC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;QAC3D,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC;QACjC,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE;YAC1C,OAAO,GAAG;gBACR,IAAI,EAAE,WAAW,CAAC,MAAM;aACzB,CAAC;SACH;QACD,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAClC,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE;YAC3C,OAAO,GAAG;gBACR,IAAI,EAAE,WAAW,CAAC,OAAO;aAC1B,CAAC;SACH;QACD,IAAI,OAAO,GAAG,SAAS,CACrB;YACE,OAAO,EAAE,KAAK;YACd,IAAI,EAAE;gBACJ,WAAW,EAAE,WAAW,CAAC,WAAW;gBACpC,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO;gBACvC,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,yBAAyB;gBACrD,cAAc,EAAE,WAAW,CAAC,cAAc;gBAC1C,OAAO;gBACP,OAAO;aACR;YACD,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE;gBACX,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,EAAE;SACT,EACD,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,OAAO,IAAI,EAAE,CAClD,CAAC;QACF,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,IAAI,MAAM,EAAE;YACpB,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,GAAgB;gBACtB,IAAI,EAAE,QAAQ;aACf,CAAC;YACF,IAAI,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxC,6BAA6B;YAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,qBAAS,CAAC,EAAE;gBAC1D,SAAS;aACV;YACD,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;YAClF,IAAI,MAAM,EAAE;gBACV,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE;oBAChC,YAAA,OAAO,CAAC,WAAW,EAAC,CAAC,wCAAD,CAAC,IAAM,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC;iBAClD;gBACD,OAAO,MAAM,CAAC,WAAW,CAAC;gBAC1B,IAAI,GAAG,MAAM,CAAC;aACf;YACD,aAAa;YACb,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;SACzD;QACD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACtF,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;aACvB,IAAI,EAAE;aACN,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AApzBD,oBAozBC"}