@archlast/server 0.1.8 → 0.1.9

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 (347) hide show
  1. package/README.md +104 -100
  2. package/dist/admin/auth.d.ts +24 -5
  3. package/dist/admin/auth.js +49 -25
  4. package/dist/admin/schema.d.ts +122 -32
  5. package/dist/admin/schema.js +131 -95
  6. package/dist/admin/seed.d.ts +1 -1
  7. package/dist/admin/seed.js +79 -47
  8. package/dist/auth/api-key-resolver.d.ts +1 -1
  9. package/dist/auth/api-key-resolver.js +7 -3
  10. package/dist/auth/archlast-auth-adapter.d.ts +2 -5
  11. package/dist/auth/archlast-auth-adapter.js +1 -1
  12. package/dist/auth/better-auth-adapter.d.ts.map +1 -1
  13. package/dist/auth/better-auth-adapter.js +41 -26
  14. package/dist/auth/better-auth-adapter.js.map +1 -1
  15. package/dist/auth/better-auth-admin.d.ts.map +1 -1
  16. package/dist/auth/better-auth-admin.js +1 -1
  17. package/dist/auth/better-auth-admin.js.map +1 -1
  18. package/dist/auth/better-auth-api-key-resolver.js +1 -1
  19. package/dist/auth/better-auth-api-key-resolver.js.map +1 -1
  20. package/dist/auth/better-auth-instance.d.ts +249 -301
  21. package/dist/auth/better-auth-instance.d.ts.map +1 -1
  22. package/dist/auth/better-auth-instance.js +11 -0
  23. package/dist/auth/better-auth-instance.js.map +1 -1
  24. package/dist/auth/better-auth-seed.d.ts +5 -2
  25. package/dist/auth/better-auth-seed.js +31 -22
  26. package/dist/auth/better-auth-session-adapter.d.ts.map +1 -1
  27. package/dist/auth/better-auth-session-adapter.js +14 -10
  28. package/dist/auth/better-auth-session-adapter.js.map +1 -1
  29. package/dist/auth/errors.d.ts.map +1 -1
  30. package/dist/auth/errors.js +11 -11
  31. package/dist/auth/errors.js.map +1 -1
  32. package/dist/auth/oauth-proxy.d.ts +5 -2
  33. package/dist/auth/oauth-proxy.js +23 -27
  34. package/dist/auth/resolver.d.ts.map +1 -1
  35. package/dist/auth/resolver.js.map +1 -1
  36. package/dist/auth/role-helpers.d.ts +1 -1
  37. package/dist/auth/role-helpers.d.ts.map +1 -1
  38. package/dist/auth/role-helpers.js.map +1 -1
  39. package/dist/auth/session-manager.d.ts +2 -5
  40. package/dist/auth/session-manager.js +16 -6
  41. package/dist/auth/system/better-auth-schema.d.ts.map +1 -1
  42. package/dist/auth/system/better-auth-schema.js +6 -23
  43. package/dist/auth/system/better-auth-schema.js.map +1 -1
  44. package/dist/cache/circuit-breaker.d.ts +81 -0
  45. package/dist/cache/circuit-breaker.d.ts.map +1 -0
  46. package/dist/cache/circuit-breaker.js +170 -0
  47. package/dist/cache/circuit-breaker.js.map +1 -0
  48. package/dist/cache/client.d.ts +6 -3
  49. package/dist/cache/client.d.ts.map +1 -1
  50. package/dist/cache/client.js +12 -53
  51. package/dist/cache/client.js.map +1 -1
  52. package/dist/cache/index.d.ts +2 -0
  53. package/dist/cache/index.d.ts.map +1 -1
  54. package/dist/cache/index.js +5 -1
  55. package/dist/cache/index.js.map +1 -1
  56. package/dist/cache/invalidation-queue.d.ts +63 -0
  57. package/dist/cache/invalidation-queue.d.ts.map +1 -0
  58. package/dist/cache/invalidation-queue.js +196 -0
  59. package/dist/cache/invalidation-queue.js.map +1 -0
  60. package/dist/cache/layers.d.ts +14 -4
  61. package/dist/cache/layers.d.ts.map +1 -1
  62. package/dist/cache/layers.js +66 -72
  63. package/dist/cache/layers.js.map +1 -1
  64. package/dist/cache/manager.d.ts.map +1 -1
  65. package/dist/cache/manager.js +6 -41
  66. package/dist/cache/manager.js.map +1 -1
  67. package/dist/cache/protocol.d.ts +4 -39
  68. package/dist/cache/protocol.d.ts.map +1 -1
  69. package/dist/cache/protocol.js.map +1 -1
  70. package/dist/cache/redis-adapter.d.ts +103 -0
  71. package/dist/cache/redis-adapter.d.ts.map +1 -0
  72. package/dist/cache/redis-adapter.js +424 -0
  73. package/dist/cache/redis-adapter.js.map +1 -0
  74. package/dist/cache/run-sidecar.js +10 -1
  75. package/dist/cache/run-sidecar.js.map +1 -1
  76. package/dist/cache/sidecar-server.d.ts +51 -1
  77. package/dist/cache/sidecar-server.d.ts.map +1 -1
  78. package/dist/cache/sidecar-server.js +368 -22
  79. package/dist/cache/sidecar-server.js.map +1 -1
  80. package/dist/cache/store.d.ts +43 -0
  81. package/dist/cache/store.d.ts.map +1 -1
  82. package/dist/cache/store.js +69 -76
  83. package/dist/cache/store.js.map +1 -1
  84. package/dist/cache/strategies.d.ts +2 -9
  85. package/dist/cache/strategies.d.ts.map +1 -1
  86. package/dist/cache/types.d.ts +130 -0
  87. package/dist/cache/types.d.ts.map +1 -0
  88. package/dist/cache/types.js +60 -0
  89. package/dist/cache/types.js.map +1 -0
  90. package/dist/config/bullmq.d.ts +16 -0
  91. package/dist/config/bullmq.d.ts.map +1 -0
  92. package/dist/config/bullmq.js +103 -0
  93. package/dist/config/bullmq.js.map +1 -0
  94. package/dist/config/index.d.ts +1 -0
  95. package/dist/config/index.d.ts.map +1 -1
  96. package/dist/config/index.js +1 -0
  97. package/dist/config/index.js.map +1 -1
  98. package/dist/config/schema.d.ts +80 -6
  99. package/dist/config/schema.d.ts.map +1 -1
  100. package/dist/config/schema.js +71 -6
  101. package/dist/config/schema.js.map +1 -1
  102. package/dist/config/service.d.ts +54 -4
  103. package/dist/config/service.d.ts.map +1 -1
  104. package/dist/config/service.js +56 -2
  105. package/dist/config/service.js.map +1 -1
  106. package/dist/controllers/admin/admin-tokens.controller.d.ts +131 -115
  107. package/dist/controllers/admin/admin-tokens.controller.js +117 -98
  108. package/dist/controllers/admin/api-keys.controller.d.ts +1 -1
  109. package/dist/controllers/admin/api-keys.controller.d.ts.map +1 -1
  110. package/dist/controllers/admin/api-keys.controller.js.map +1 -1
  111. package/dist/controllers/admin/app-users.controller.d.ts +274 -243
  112. package/dist/controllers/admin/app-users.controller.js +301 -257
  113. package/dist/controllers/admin/auth.controller.d.ts +260 -236
  114. package/dist/controllers/admin/auth.controller.js +197 -174
  115. package/dist/controllers/admin/backup.controller.d.ts.map +1 -1
  116. package/dist/controllers/admin/backup.controller.js.map +1 -1
  117. package/dist/controllers/admin/settings.controller.d.ts +1 -1
  118. package/dist/controllers/admin/storage-stats.controller.d.ts +63 -0
  119. package/dist/controllers/admin/storage-stats.controller.d.ts.map +1 -0
  120. package/dist/controllers/admin/storage-stats.controller.js +33 -0
  121. package/dist/controllers/admin/storage-stats.controller.js.map +1 -0
  122. package/dist/controllers/admin/tenants.controller.d.ts.map +1 -1
  123. package/dist/controllers/admin/tenants.controller.js.map +1 -1
  124. package/dist/controllers/admin/users.controller.d.ts +1 -1
  125. package/dist/controllers/admin/users.controller.d.ts.map +1 -1
  126. package/dist/controllers/admin/users.controller.js.map +1 -1
  127. package/dist/controllers/auth.controller.d.ts +289 -271
  128. package/dist/controllers/auth.controller.js +275 -226
  129. package/dist/controllers/crud-generator.controller.d.ts.map +1 -1
  130. package/dist/controllers/crud-generator.controller.js +127 -125
  131. package/dist/controllers/crud-generator.controller.js.map +1 -1
  132. package/dist/controllers/index.d.ts +1 -1
  133. package/dist/controllers/index.d.ts.map +1 -1
  134. package/dist/controllers/index.js.map +1 -1
  135. package/dist/controllers/introspection.controller.d.ts +642 -0
  136. package/dist/controllers/introspection.controller.d.ts.map +1 -1
  137. package/dist/controllers/introspection.controller.js +611 -0
  138. package/dist/controllers/introspection.controller.js.map +1 -1
  139. package/dist/controllers/invite.controller.d.ts +190 -170
  140. package/dist/controllers/invite.controller.js +183 -164
  141. package/dist/controllers/mfa.controller.d.ts +205 -183
  142. package/dist/controllers/mfa.controller.js +131 -111
  143. package/dist/controllers/otp.controller.d.ts +194 -171
  144. package/dist/controllers/otp.controller.js +192 -175
  145. package/dist/controllers/storage.controller.d.ts.map +1 -1
  146. package/dist/controllers/storage.controller.js.map +1 -1
  147. package/dist/controllers/system.controller.d.ts +5 -3
  148. package/dist/controllers/system.controller.d.ts.map +1 -1
  149. package/dist/controllers/system.controller.js +4 -2
  150. package/dist/controllers/system.controller.js.map +1 -1
  151. package/dist/controllers/tenant.controller.d.ts +258 -227
  152. package/dist/controllers/tenant.controller.js +224 -200
  153. package/dist/db/cachedclient.d.ts +6 -11
  154. package/dist/db/cachedclient.d.ts.map +1 -1
  155. package/dist/db/cachedclient.js +79 -43
  156. package/dist/db/cachedclient.js.map +1 -1
  157. package/dist/db/distributed-client.d.ts +79 -24
  158. package/dist/db/distributed-client.js +23 -24
  159. package/dist/db/factory.d.ts +3 -8
  160. package/dist/db/factory.d.ts.map +1 -1
  161. package/dist/db/factory.js +3 -22
  162. package/dist/db/factory.js.map +1 -1
  163. package/dist/db/socket-client.d.ts +7 -0
  164. package/dist/db/socket-client.d.ts.map +1 -1
  165. package/dist/db/socket-client.js +140 -11
  166. package/dist/db/socket-client.js.map +1 -1
  167. package/dist/deployment/handler.d.ts +10 -2
  168. package/dist/deployment/handler.d.ts.map +1 -1
  169. package/dist/deployment/handler.js +70 -15
  170. package/dist/deployment/handler.js.map +1 -1
  171. package/dist/deployment/persistence.d.ts.map +1 -1
  172. package/dist/deployment/persistence.js +6 -1
  173. package/dist/deployment/persistence.js.map +1 -1
  174. package/dist/docker/compose.d.ts.map +1 -1
  175. package/dist/docker/compose.js +76 -0
  176. package/dist/docker/compose.js.map +1 -1
  177. package/dist/engine/runner.d.ts.map +1 -1
  178. package/dist/engine/runner.js +0 -43
  179. package/dist/engine/runner.js.map +1 -1
  180. package/dist/functions/built-in/auth-apikey.d.ts.map +1 -1
  181. package/dist/functions/built-in/auth-apikey.js.map +1 -1
  182. package/dist/functions/built-in/system-cache.d.ts.map +1 -1
  183. package/dist/functions/built-in/system-cache.js +6 -31
  184. package/dist/functions/built-in/system-cache.js.map +1 -1
  185. package/dist/functions/built-in/system-data.d.ts.map +1 -1
  186. package/dist/functions/built-in/system-data.js +4 -2
  187. package/dist/functions/built-in/system-data.js.map +1 -1
  188. package/dist/functions/definition.d.ts.map +1 -1
  189. package/dist/functions/definition.js +6 -2
  190. package/dist/functions/definition.js.map +1 -1
  191. package/dist/http/routes/metrics.d.ts +42 -0
  192. package/dist/http/routes/metrics.d.ts.map +1 -0
  193. package/dist/http/routes/metrics.js +29 -0
  194. package/dist/http/routes/metrics.js.map +1 -0
  195. package/dist/http/server.d.ts +1 -0
  196. package/dist/http/server.d.ts.map +1 -1
  197. package/dist/http/server.js +41 -3
  198. package/dist/http/server.js.map +1 -1
  199. package/dist/ipc/socket-bridge.d.ts +1 -0
  200. package/dist/ipc/socket-bridge.d.ts.map +1 -1
  201. package/dist/ipc/socket-bridge.js +5 -1
  202. package/dist/ipc/socket-bridge.js.map +1 -1
  203. package/dist/jobs/bullmq-adapter.d.ts +154 -0
  204. package/dist/jobs/bullmq-adapter.d.ts.map +1 -0
  205. package/dist/jobs/bullmq-adapter.js +688 -0
  206. package/dist/jobs/bullmq-adapter.js.map +1 -0
  207. package/dist/jobs/bullmq-circuit-breaker.d.ts +133 -0
  208. package/dist/jobs/bullmq-circuit-breaker.d.ts.map +1 -0
  209. package/dist/jobs/bullmq-circuit-breaker.js +323 -0
  210. package/dist/jobs/bullmq-circuit-breaker.js.map +1 -0
  211. package/dist/jobs/bullmq-dlq-manager.d.ts +155 -0
  212. package/dist/jobs/bullmq-dlq-manager.d.ts.map +1 -0
  213. package/dist/jobs/bullmq-dlq-manager.js +325 -0
  214. package/dist/jobs/bullmq-dlq-manager.js.map +1 -0
  215. package/dist/jobs/bullmq-metrics.d.ts +104 -0
  216. package/dist/jobs/bullmq-metrics.d.ts.map +1 -0
  217. package/dist/jobs/bullmq-metrics.js +323 -0
  218. package/dist/jobs/bullmq-metrics.js.map +1 -0
  219. package/dist/jobs/bullmq-priority-service.d.ts +173 -0
  220. package/dist/jobs/bullmq-priority-service.d.ts.map +1 -0
  221. package/dist/jobs/bullmq-priority-service.js +390 -0
  222. package/dist/jobs/bullmq-priority-service.js.map +1 -0
  223. package/dist/jobs/bullmq-scheduler.d.ts +111 -0
  224. package/dist/jobs/bullmq-scheduler.d.ts.map +1 -0
  225. package/dist/jobs/bullmq-scheduler.js +300 -0
  226. package/dist/jobs/bullmq-scheduler.js.map +1 -0
  227. package/dist/jobs/bullmq-worker.d.ts +155 -0
  228. package/dist/jobs/bullmq-worker.d.ts.map +1 -0
  229. package/dist/jobs/bullmq-worker.js +651 -0
  230. package/dist/jobs/bullmq-worker.js.map +1 -0
  231. package/dist/jobs/circuit-breaker.d.ts +120 -0
  232. package/dist/jobs/circuit-breaker.d.ts.map +1 -0
  233. package/dist/jobs/circuit-breaker.js +262 -0
  234. package/dist/jobs/circuit-breaker.js.map +1 -0
  235. package/dist/jobs/index.d.ts +1 -1
  236. package/dist/jobs/index.d.ts.map +1 -1
  237. package/dist/jobs/index.js.map +1 -1
  238. package/dist/jobs/queue.d.ts +120 -1
  239. package/dist/jobs/queue.d.ts.map +1 -1
  240. package/dist/jobs/queue.js +487 -9
  241. package/dist/jobs/queue.js.map +1 -1
  242. package/dist/jobs/redis-connection.d.ts +50 -0
  243. package/dist/jobs/redis-connection.d.ts.map +1 -0
  244. package/dist/jobs/redis-connection.js +123 -0
  245. package/dist/jobs/redis-connection.js.map +1 -0
  246. package/dist/jobs/run-scheduler.js +163 -10
  247. package/dist/jobs/run-scheduler.js.map +1 -1
  248. package/dist/jobs/run-worker.js +101 -9
  249. package/dist/jobs/run-worker.js.map +1 -1
  250. package/dist/jobs/worker-thread.d.ts +6 -0
  251. package/dist/jobs/worker-thread.d.ts.map +1 -1
  252. package/dist/jobs/worker-thread.js +37 -8
  253. package/dist/jobs/worker-thread.js.map +1 -1
  254. package/dist/jobs/worker.d.ts +33 -0
  255. package/dist/jobs/worker.d.ts.map +1 -1
  256. package/dist/jobs/worker.js +358 -115
  257. package/dist/jobs/worker.js.map +1 -1
  258. package/dist/linq/async-enumerable.d.ts.map +1 -1
  259. package/dist/linq/async-enumerable.js.map +1 -1
  260. package/dist/linq/enumerable.d.ts.map +1 -1
  261. package/dist/linq/enumerable.js +10 -10
  262. package/dist/linq/enumerable.js.map +1 -1
  263. package/dist/metrics/collector.d.ts +26 -0
  264. package/dist/metrics/collector.d.ts.map +1 -0
  265. package/dist/metrics/collector.js +103 -0
  266. package/dist/metrics/collector.js.map +1 -0
  267. package/dist/polling/updates.controller.d.ts +57 -0
  268. package/dist/polling/updates.controller.d.ts.map +1 -0
  269. package/dist/polling/updates.controller.js +70 -0
  270. package/dist/polling/updates.controller.js.map +1 -0
  271. package/dist/repository/db-set.d.ts.map +1 -1
  272. package/dist/repository/db-set.js +12 -8
  273. package/dist/repository/db-set.js.map +1 -1
  274. package/dist/repository/ef-core.d.ts.map +1 -1
  275. package/dist/repository/ef-core.js +6 -6
  276. package/dist/repository/ef-core.js.map +1 -1
  277. package/dist/repository/factory.d.ts +1 -1
  278. package/dist/repository/factory.d.ts.map +1 -1
  279. package/dist/repository/factory.js.map +1 -1
  280. package/dist/repository/interfaces.d.ts.map +1 -1
  281. package/dist/repository/interfaces.js.map +1 -1
  282. package/dist/repository/queryable.d.ts.map +1 -1
  283. package/dist/repository/queryable.js.map +1 -1
  284. package/dist/rpc/adapter.d.ts.map +1 -1
  285. package/dist/rpc/adapter.js.map +1 -1
  286. package/dist/rpc/router.d.ts +2 -2
  287. package/dist/rpc/router.d.ts.map +1 -1
  288. package/dist/rpc/router.js +1 -1
  289. package/dist/rpc/router.js.map +1 -1
  290. package/dist/schema/relationship-types.d.ts +7 -2
  291. package/dist/schema/relationship-types.js +1 -1
  292. package/dist/schema/types.d.ts.map +1 -1
  293. package/dist/services/admin/app-users.service.d.ts +1 -1
  294. package/dist/services/admin/app-users.service.js +31 -38
  295. package/dist/services/admin/auth.service.d.ts +1 -1
  296. package/dist/services/admin/auth.service.js +11 -5
  297. package/dist/services/admin/backup/BackupOrchestrator.d.ts.map +1 -1
  298. package/dist/services/admin/backup/BackupOrchestrator.js +4 -7
  299. package/dist/services/admin/backup/BackupOrchestrator.js.map +1 -1
  300. package/dist/services/admin/backup/SqliteGenerator.js +8 -8
  301. package/dist/services/admin/backup/StorageStreamer.d.ts +3 -3
  302. package/dist/services/admin/backup/StorageStreamer.d.ts.map +1 -1
  303. package/dist/services/admin/backup/StorageStreamer.js +16 -55
  304. package/dist/services/admin/backup/StorageStreamer.js.map +1 -1
  305. package/dist/services/admin/backup/ZipComposer.d.ts +2 -0
  306. package/dist/services/admin/backup/ZipComposer.d.ts.map +1 -1
  307. package/dist/services/admin/backup/ZipComposer.js +23 -0
  308. package/dist/services/admin/backup/ZipComposer.js.map +1 -1
  309. package/dist/services/admin/backup.service.d.ts.map +1 -1
  310. package/dist/services/admin/backup.service.js.map +1 -1
  311. package/dist/services/admin/data.service.d.ts.map +1 -1
  312. package/dist/services/admin/data.service.js +287 -286
  313. package/dist/services/admin/data.service.js.map +1 -1
  314. package/dist/services/admin/tenants.service.d.ts.map +1 -1
  315. package/dist/services/admin/tenants.service.js.map +1 -1
  316. package/dist/services/auth.service.d.ts +2 -3
  317. package/dist/services/auth.service.js +16 -16
  318. package/dist/services/invite.service.d.ts +1 -1
  319. package/dist/services/invite.service.js +17 -15
  320. package/dist/services/storage.service.d.ts.map +1 -1
  321. package/dist/services/storage.service.js +35 -4
  322. package/dist/services/storage.service.js.map +1 -1
  323. package/dist/services/system.service.d.ts.map +1 -1
  324. package/dist/services/system.service.js +1 -1
  325. package/dist/services/system.service.js.map +1 -1
  326. package/dist/services/tenant.service.d.ts +1 -1
  327. package/dist/services/tenant.service.js +43 -31
  328. package/dist/sse/subscriptions.controller.d.ts +57 -0
  329. package/dist/sse/subscriptions.controller.d.ts.map +1 -0
  330. package/dist/sse/subscriptions.controller.js +127 -0
  331. package/dist/sse/subscriptions.controller.js.map +1 -0
  332. package/dist/startup/bootstrap.d.ts +13 -2
  333. package/dist/startup/bootstrap.d.ts.map +1 -1
  334. package/dist/startup/bootstrap.js +85 -13
  335. package/dist/startup/bootstrap.js.map +1 -1
  336. package/dist/storage/s3-backend.d.ts.map +1 -1
  337. package/dist/storage/s3-backend.js +3 -3
  338. package/dist/storage/s3-backend.js.map +1 -1
  339. package/dist/websocket/server.d.ts.map +1 -1
  340. package/dist/websocket/server.js +14 -3
  341. package/dist/websocket/server.js.map +1 -1
  342. package/docker/README.md +309 -11
  343. package/package.json +214 -210
  344. package/templates/.env.example +115 -55
  345. package/templates/archlast.config.js +51 -37
  346. package/templates/docker-compose.prod.yml +32 -15
  347. package/templates/docker-compose.yml +117 -33
@@ -0,0 +1,651 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BullMQWorkerManager = exports.JobTimeoutError = void 0;
4
+ exports.initWorker = initWorker;
5
+ exports.registerHandler = registerHandler;
6
+ exports.removeHandler = removeHandler;
7
+ exports.getHandlers = getHandlers;
8
+ exports.setEngineDispatcher = setEngineDispatcher;
9
+ exports.getActiveJobsCount = getActiveJobsCount;
10
+ exports.getActiveJobIds = getActiveJobIds;
11
+ exports.stopWorker = stopWorker;
12
+ exports.start = start;
13
+ exports.getCircuitBreaker = getCircuitBreaker;
14
+ exports.isCircuitBreakerEnabled = isCircuitBreakerEnabled;
15
+ exports.isStopped = isStopped;
16
+ const bullmq_1 = require("bullmq");
17
+ const logger_js_1 = require("../logging/logger.js");
18
+ const worker_thread_js_1 = require("./worker-thread.js");
19
+ const collector_js_1 = require("../metrics/collector.js");
20
+ const circuit_breaker_js_1 = require("./circuit-breaker.js");
21
+ const redis_connection_js_1 = require("./redis-connection.js");
22
+ /**
23
+ * Error thrown when a job exceeds its timeout duration
24
+ */
25
+ class JobTimeoutError extends Error {
26
+ constructor(jobName, timeoutMs) {
27
+ super(`Job '${jobName}' timed out after ${timeoutMs}ms`);
28
+ this.name = "JobTimeoutError";
29
+ }
30
+ }
31
+ exports.JobTimeoutError = JobTimeoutError;
32
+ // Module-level state to match current worker.ts exports
33
+ const handlers = {};
34
+ let engineDispatcher = null;
35
+ let circuitBreaker = null;
36
+ let threadPool = null;
37
+ let workerInstance = null;
38
+ let jobQueue = null;
39
+ let ipc = null;
40
+ /** Worker configuration */
41
+ const DEFAULT_CONCURRENCY = Number(process.env.JOB_WORKER_CONCURRENCY ?? 5);
42
+ const DEFAULT_LOCK_DURATION = Number(process.env.JOB_LOCK_DURATION ?? 30000);
43
+ const THREAD_POOL_SIZE = Number(process.env.JOB_WORKER_THREADS ?? 1);
44
+ const TIMEOUT_ENFORCEMENT_ENABLED = process.env.JOB_TIMEOUT_ENFORCEMENT !== "false";
45
+ const GRACE_PERIOD_MS = Number(process.env.JOB_WORKER_GRACE_PERIOD ?? 30000);
46
+ const CIRCUIT_BREAKER_ENABLED = process.env.JOB_CIRCUIT_BREAKER_ENABLED === "true";
47
+ const CIRCUIT_BREAKER_CONFIG = {
48
+ failureThreshold: Number(process.env.JOB_CIRCUIT_BREAKER_FAILURE_THRESHOLD ?? 5),
49
+ successThreshold: Number(process.env.JOB_CIRCUIT_BREAKER_SUCCESS_THRESHOLD ?? 2),
50
+ resetTimeoutMs: Number(process.env.JOB_CIRCUIT_BREAKER_RESET_TIMEOUT_MS ?? 30000),
51
+ halfOpenMaxCalls: Number(process.env.JOB_CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS ?? 3),
52
+ };
53
+ /**
54
+ * BullMQ-based worker manager that processes jobs from Redis queues
55
+ */
56
+ class BullMQWorkerManager {
57
+ worker = null;
58
+ activeJobIds = new Set();
59
+ shuttingDown = false;
60
+ jobQueue;
61
+ ipc = null;
62
+ queueName;
63
+ concurrency;
64
+ lockDuration;
65
+ threadPool = null;
66
+ engineDispatcher = null;
67
+ circuitBreaker = null;
68
+ constructor(queueName, jobQueue, options = {}) {
69
+ this.queueName = queueName;
70
+ this.jobQueue = jobQueue;
71
+ this.concurrency = options.concurrency ?? DEFAULT_CONCURRENCY;
72
+ this.lockDuration = options.lockDuration ?? DEFAULT_LOCK_DURATION;
73
+ this.threadPool = options.threadPool ?? null;
74
+ this.engineDispatcher = options.engineDispatcher ?? null;
75
+ this.circuitBreaker = options.circuitBreaker ?? null;
76
+ }
77
+ /**
78
+ * Set the IPC client for revalidation notifications
79
+ */
80
+ setIpcClient(ipcClient) {
81
+ this.ipc = ipcClient;
82
+ }
83
+ /**
84
+ * Initialize and start the BullMQ worker
85
+ */
86
+ async initialize() {
87
+ const connection = (0, redis_connection_js_1.createBullMQRedisConnection)();
88
+ this.worker = new bullmq_1.Worker(this.queueName, async (bullJob) => {
89
+ await this.processBullMQJob(bullJob);
90
+ }, {
91
+ connection,
92
+ concurrency: this.concurrency,
93
+ lockDuration: this.lockDuration,
94
+ stalledInterval: 30000,
95
+ maxStalledCount: 3,
96
+ });
97
+ // Set up event handlers
98
+ this.worker.on("completed", (job) => {
99
+ if (job) {
100
+ logger_js_1.logger.log({
101
+ timestamp: Date.now(),
102
+ level: "info",
103
+ kind: "system",
104
+ message: `[BullMQWorker] Job completed: ${job.id}`,
105
+ context: { jobId: job.id, name: job.name },
106
+ });
107
+ }
108
+ });
109
+ this.worker.on("failed", (job, err) => {
110
+ if (job) {
111
+ logger_js_1.logger.log({
112
+ timestamp: Date.now(),
113
+ level: "error",
114
+ kind: "system",
115
+ message: `[BullMQWorker] Job failed: ${job.id}`,
116
+ context: { jobId: job.id, name: job.name, error: err.message },
117
+ });
118
+ }
119
+ });
120
+ this.worker.on("stalled", (jobId) => {
121
+ logger_js_1.logger.log({
122
+ timestamp: Date.now(),
123
+ level: "warn",
124
+ kind: "system",
125
+ message: `[BullMQWorker] Job stalled: ${jobId}`,
126
+ context: { jobId },
127
+ });
128
+ });
129
+ this.worker.on("progress", (job, progress) => {
130
+ logger_js_1.logger.log({
131
+ timestamp: Date.now(),
132
+ level: "debug",
133
+ kind: "system",
134
+ message: `[BullMQWorker] Job progress: ${job.id} - ${JSON.stringify(progress)}`,
135
+ context: { jobId: job.id, progress },
136
+ });
137
+ });
138
+ this.worker.on("error", (err) => {
139
+ logger_js_1.logger.log({
140
+ timestamp: Date.now(),
141
+ level: "error",
142
+ kind: "system",
143
+ message: `[BullMQWorker] Worker error`,
144
+ context: { error: err.message },
145
+ });
146
+ });
147
+ logger_js_1.logger.log({
148
+ timestamp: Date.now(),
149
+ level: "info",
150
+ kind: "system",
151
+ message: `[BullMQWorker] Worker initialized for queue: ${this.queueName}`,
152
+ context: { concurrency: this.concurrency, lockDuration: this.lockDuration },
153
+ });
154
+ }
155
+ /**
156
+ * Process a BullMQ job
157
+ */
158
+ async processBullMQJob(bullJob) {
159
+ const jobData = this.toJobRecord(bullJob);
160
+ const jobId = jobData._id;
161
+ // Track active job
162
+ this.activeJobIds.add(jobId);
163
+ const start = Date.now();
164
+ try {
165
+ // Execute job with circuit breaker protection
166
+ await this.executeJobWithCircuitBreaker(jobData, bullJob);
167
+ // Record success metrics
168
+ const duration = (Date.now() - start) / 1000;
169
+ collector_js_1.jobMetrics.jobDuration.observe({ job_name: jobData.name }, duration);
170
+ }
171
+ catch (error) {
172
+ // Record failure metrics
173
+ if (error instanceof circuit_breaker_js_1.CircuitBreakerOpenError) {
174
+ collector_js_1.jobMetrics.jobsFailed.inc({
175
+ job_name: jobData.name,
176
+ error_category: "circuit_breaker",
177
+ });
178
+ }
179
+ else {
180
+ collector_js_1.jobMetrics.jobsFailed.inc({
181
+ job_name: jobData.name,
182
+ error_category: this.categorizeError(error),
183
+ });
184
+ }
185
+ throw error;
186
+ }
187
+ finally {
188
+ // Remove from active tracking
189
+ this.activeJobIds.delete(jobId);
190
+ }
191
+ }
192
+ /**
193
+ * Normalize BullMQ Job payloads into the legacy JobRecord shape.
194
+ * Supports both wrapped payloads ({ name, payload, ... }) and raw payloads.
195
+ */
196
+ toJobRecord(bullJob) {
197
+ const data = (bullJob.data ?? {});
198
+ const now = Date.now();
199
+ const id = String(bullJob.id ?? "");
200
+ const payload = Object.prototype.hasOwnProperty.call(data, "payload")
201
+ ? data.payload
202
+ : bullJob.data;
203
+ const nameFromData = typeof data.name === "string" ? data.name : undefined;
204
+ const attemptsFromData = typeof data.attempts === "number" ? data.attempts : undefined;
205
+ const maxAttemptsFromData = typeof data.maxAttempts === "number" ? data.maxAttempts : undefined;
206
+ const createdAtFromData = typeof data.createdAt === "number" ? data.createdAt : undefined;
207
+ const timeoutMsFromData = typeof data.timeoutMs === "number" ? data.timeoutMs : undefined;
208
+ const priorityFromData = typeof data.originalPriority === "number"
209
+ ? data.originalPriority
210
+ : typeof data.priority === "number"
211
+ ? data.priority
212
+ : undefined;
213
+ const dependsOn = Array.isArray(data.dependsOn)
214
+ ? data.dependsOn.filter((v) => typeof v === "string")
215
+ : undefined;
216
+ return {
217
+ _id: id,
218
+ id,
219
+ name: nameFromData ?? bullJob.name,
220
+ payload,
221
+ status: "active",
222
+ attempts: attemptsFromData ?? bullJob.attemptsMade,
223
+ maxAttempts: maxAttemptsFromData ?? bullJob.opts.attempts ?? 1,
224
+ runAfter: bullJob.timestamp,
225
+ createdAt: createdAtFromData ?? bullJob.timestamp ?? now,
226
+ updatedAt: now,
227
+ lastError: null,
228
+ priority: priorityFromData,
229
+ timeoutMs: timeoutMsFromData,
230
+ dependsOn,
231
+ };
232
+ }
233
+ /**
234
+ * Execute job with circuit breaker protection
235
+ */
236
+ async executeJobWithCircuitBreaker(job, bullJob) {
237
+ const executeJobInternal = async () => {
238
+ const handler = handlers[job.name];
239
+ if (handler) {
240
+ // Use registered handler
241
+ await this.executeWithHandler(job, handler);
242
+ }
243
+ else if (this.threadPool) {
244
+ // Try thread pool
245
+ await this.executeWithThreadPool(job);
246
+ }
247
+ else if (this.engineDispatcher) {
248
+ // Try engine dispatcher
249
+ await this.executeWithEngineDispatcher(job);
250
+ }
251
+ else {
252
+ // No handler available
253
+ const error = new Error(`No handler for job '${job.name}'`);
254
+ await this.jobQueue.fail(job, error);
255
+ throw error;
256
+ }
257
+ };
258
+ // Execute with circuit breaker if enabled
259
+ if (CIRCUIT_BREAKER_ENABLED && this.circuitBreaker) {
260
+ return await this.circuitBreaker.execute(job.name, executeJobInternal);
261
+ }
262
+ else {
263
+ return await executeJobInternal();
264
+ }
265
+ }
266
+ /**
267
+ * Execute job with registered handler
268
+ */
269
+ async executeWithHandler(job, handler) {
270
+ const start = Date.now();
271
+ try {
272
+ const result = await this.executeWithTimeout(job, () => handler(job.payload));
273
+ await this.jobQueue.complete(job._id, job.name);
274
+ // Handle revalidation if result has affected queries/keys
275
+ if (result && typeof result === "object") {
276
+ const queriesRaw = result.affectedQueries;
277
+ const keysRaw = result.affectedKeys;
278
+ const queriesSet = queriesRaw instanceof Set
279
+ ? queriesRaw
280
+ : Array.isArray(queriesRaw)
281
+ ? new Set(queriesRaw)
282
+ : undefined;
283
+ const keysSet = keysRaw instanceof Set
284
+ ? keysRaw
285
+ : Array.isArray(keysRaw)
286
+ ? new Set(keysRaw)
287
+ : undefined;
288
+ if (queriesSet || keysSet) {
289
+ await this.notifyRevalidation({ queries: queriesSet, keys: keysSet });
290
+ }
291
+ }
292
+ // Record duration
293
+ const duration = (Date.now() - start) / 1000;
294
+ collector_js_1.jobMetrics.jobDuration.observe({ job_name: job.name }, duration);
295
+ }
296
+ catch (err) {
297
+ await this.jobQueue.fail(job, err);
298
+ throw err;
299
+ }
300
+ }
301
+ /**
302
+ * Execute job with thread pool
303
+ */
304
+ async executeWithThreadPool(job) {
305
+ if (!this.threadPool) {
306
+ throw new Error("Thread pool not available");
307
+ }
308
+ const payload = (job.payload ?? {});
309
+ try {
310
+ const res = await this.executeWithTimeout(job, () => this.threadPool.run(job._id, job.name, payload));
311
+ if (!res.ok) {
312
+ const error = new Error(res.error);
313
+ await this.jobQueue.fail(job, error);
314
+ throw error;
315
+ }
316
+ await this.jobQueue.complete(job._id, job.name);
317
+ const queriesSet = res.affectedQueries ? new Set(res.affectedQueries) : undefined;
318
+ const keysSet = res.affectedKeys ? new Set(res.affectedKeys) : undefined;
319
+ if (queriesSet || keysSet) {
320
+ await this.notifyRevalidation({ queries: queriesSet, keys: keysSet });
321
+ }
322
+ }
323
+ catch (err) {
324
+ await this.jobQueue.fail(job, err);
325
+ throw err;
326
+ }
327
+ }
328
+ /**
329
+ * Execute job with engine dispatcher
330
+ */
331
+ async executeWithEngineDispatcher(job) {
332
+ if (!this.engineDispatcher) {
333
+ throw new Error("Engine dispatcher not available");
334
+ }
335
+ const payload = (job.payload ?? {});
336
+ const auth = { userId: payload.__authUserId ?? null };
337
+ logger_js_1.logger.log({
338
+ timestamp: Date.now(),
339
+ level: "info",
340
+ kind: "system",
341
+ message: `[BullMQWorker] Executing job via engineDispatcher`,
342
+ context: { jobName: job.name, jobId: job._id },
343
+ });
344
+ try {
345
+ const result = await this.executeWithTimeout(job, () => this.engineDispatcher.runFunction(job.name, payload, auth));
346
+ logger_js_1.logger.log({
347
+ timestamp: Date.now(),
348
+ level: "info",
349
+ kind: "system",
350
+ message: `[BullMQWorker] Job completed via engineDispatcher`,
351
+ context: {
352
+ jobName: job.name,
353
+ jobId: job._id,
354
+ hasResult: !!result,
355
+ affectedKeysSize: result?.affectedKeys?.size ?? 0,
356
+ affectedQueriesSize: result?.affectedQueries?.size ?? 0,
357
+ },
358
+ });
359
+ await this.notifyRevalidation({
360
+ queries: result?.affectedQueries instanceof Set && result.affectedQueries.size > 0
361
+ ? result.affectedQueries
362
+ : undefined,
363
+ keys: result?.affectedKeys instanceof Set && result.affectedKeys.size > 0
364
+ ? result.affectedKeys
365
+ : undefined,
366
+ });
367
+ await this.jobQueue.complete(job._id, job.name);
368
+ }
369
+ catch (err) {
370
+ await this.jobQueue.fail(job, err);
371
+ throw err;
372
+ }
373
+ }
374
+ /**
375
+ * Execute a function with timeout enforcement
376
+ */
377
+ async executeWithTimeout(job, fn) {
378
+ if (!TIMEOUT_ENFORCEMENT_ENABLED) {
379
+ return await fn();
380
+ }
381
+ const timeoutMs = job.timeoutMs ?? 300000; // Default 5 minutes
382
+ const validatedTimeoutMs = Math.max(10000, Math.min(3600000, timeoutMs));
383
+ const controller = new AbortController();
384
+ const timeoutId = setTimeout(() => controller.abort(), validatedTimeoutMs);
385
+ try {
386
+ const result = await Promise.race([
387
+ fn(),
388
+ new Promise((_, reject) => {
389
+ controller.signal.addEventListener("abort", () => {
390
+ reject(new JobTimeoutError(job.name, validatedTimeoutMs));
391
+ });
392
+ }),
393
+ ]);
394
+ return result;
395
+ }
396
+ catch (error) {
397
+ if (error instanceof JobTimeoutError) {
398
+ collector_js_1.jobMetrics.jobsTimedOut.inc({ job_name: job.name });
399
+ }
400
+ throw error;
401
+ }
402
+ finally {
403
+ clearTimeout(timeoutId);
404
+ }
405
+ }
406
+ /**
407
+ * Send revalidation notification via IPC
408
+ */
409
+ async notifyRevalidation(data) {
410
+ const queries = data.queries ? Array.from(data.queries) : [];
411
+ const keys = data.keys ? Array.from(data.keys) : [];
412
+ if (queries.length === 0 && keys.length === 0) {
413
+ return;
414
+ }
415
+ // Send REACTIVE_TRIGGER via IPC to broadcast to main server
416
+ if (this.ipc && this.ipc.isConnected()) {
417
+ try {
418
+ await this.ipc.request("REACTIVE_TRIGGER", { keys });
419
+ }
420
+ catch (err) {
421
+ logger_js_1.logger.log({
422
+ timestamp: Date.now(),
423
+ level: "error",
424
+ kind: "system",
425
+ message: "[BullMQWorker] Failed to send reactivity trigger:",
426
+ context: { err },
427
+ });
428
+ }
429
+ }
430
+ }
431
+ /**
432
+ * Categorize error for metrics
433
+ */
434
+ categorizeError(error) {
435
+ if (error instanceof circuit_breaker_js_1.CircuitBreakerOpenError) {
436
+ return "circuit_breaker";
437
+ }
438
+ if (error instanceof JobTimeoutError) {
439
+ return "timeout";
440
+ }
441
+ if (error instanceof Error) {
442
+ const msg = error.message.toLowerCase();
443
+ if (msg.includes("timeout") || msg.includes("timed out")) {
444
+ return "timeout";
445
+ }
446
+ if (msg.includes("validation") || msg.includes("invalid")) {
447
+ return "validation";
448
+ }
449
+ if (msg.includes("dependency") || msg.includes("depends on")) {
450
+ return "dependency";
451
+ }
452
+ }
453
+ return "unknown";
454
+ }
455
+ /**
456
+ * Get the number of active jobs being processed
457
+ */
458
+ getActiveJobsCount() {
459
+ return this.activeJobIds.size;
460
+ }
461
+ /**
462
+ * Get the IDs of all active jobs being processed
463
+ */
464
+ getActiveJobIds() {
465
+ return Array.from(this.activeJobIds);
466
+ }
467
+ /**
468
+ * Graceful shutdown
469
+ */
470
+ async stop(gracePeriodMs = GRACE_PERIOD_MS) {
471
+ if (this.shuttingDown) {
472
+ return;
473
+ }
474
+ this.shuttingDown = true;
475
+ logger_js_1.logger.log({
476
+ timestamp: Date.now(),
477
+ level: "info",
478
+ kind: "system",
479
+ message: "[BullMQWorker] Shutdown initiated",
480
+ });
481
+ // Stop the BullMQ worker (stop accepting new jobs)
482
+ if (this.worker) {
483
+ await this.worker.close();
484
+ }
485
+ // Wait for active jobs to complete
486
+ const deadline = Date.now() + gracePeriodMs;
487
+ while (this.activeJobIds.size > 0 && Date.now() < deadline) {
488
+ logger_js_1.logger.log({
489
+ timestamp: Date.now(),
490
+ level: "info",
491
+ kind: "system",
492
+ message: `[BullMQWorker] Waiting for ${this.activeJobIds.size} active jobs`,
493
+ });
494
+ await new Promise((resolve) => setTimeout(resolve, 100));
495
+ }
496
+ // Wait for worker responses (5 second grace)
497
+ const responseDeadline = Date.now() + 5000;
498
+ while (this.threadPool?.hasPendingResponses() && Date.now() < responseDeadline) {
499
+ logger_js_1.logger.log({
500
+ timestamp: Date.now(),
501
+ level: "info",
502
+ kind: "system",
503
+ message: "[BullMQWorker] Waiting for worker responses",
504
+ });
505
+ await new Promise((resolve) => setTimeout(resolve, 100));
506
+ }
507
+ // Terminate thread pool
508
+ this.threadPool?.dispose();
509
+ logger_js_1.logger.log({
510
+ timestamp: Date.now(),
511
+ level: "info",
512
+ kind: "system",
513
+ message: "[BullMQWorker] Shutdown complete",
514
+ });
515
+ }
516
+ /**
517
+ * Check if worker is stopped
518
+ */
519
+ isStopped() {
520
+ return this.shuttingDown;
521
+ }
522
+ }
523
+ exports.BullMQWorkerManager = BullMQWorkerManager;
524
+ // ============================================================================
525
+ // Module-level functions to match current worker.ts exports
526
+ // ============================================================================
527
+ /**
528
+ * Initialize the worker with a job queue.
529
+ * Must be called before start().
530
+ */
531
+ function initWorker(queue, ipcClient) {
532
+ jobQueue = queue;
533
+ ipc = ipcClient ?? null;
534
+ // Initialize worker pool (must be done after WorkerPool class is loaded)
535
+ if (THREAD_POOL_SIZE > 0 && !threadPool) {
536
+ threadPool = new worker_thread_js_1.WorkerPool(THREAD_POOL_SIZE);
537
+ logger_js_1.logger.log({
538
+ timestamp: Date.now(),
539
+ level: "info",
540
+ kind: "system",
541
+ message: "[BullMQWorker] Worker pool initialized",
542
+ context: { poolSize: THREAD_POOL_SIZE },
543
+ });
544
+ }
545
+ // Initialize circuit breaker if enabled
546
+ if (CIRCUIT_BREAKER_ENABLED && !circuitBreaker) {
547
+ circuitBreaker = new circuit_breaker_js_1.CircuitBreaker(CIRCUIT_BREAKER_CONFIG);
548
+ logger_js_1.logger.log({
549
+ timestamp: Date.now(),
550
+ level: "info",
551
+ kind: "system",
552
+ message: "[BullMQWorker] Circuit breaker enabled",
553
+ context: { config: CIRCUIT_BREAKER_CONFIG },
554
+ });
555
+ }
556
+ }
557
+ /**
558
+ * Register a job handler
559
+ */
560
+ function registerHandler(name, handler) {
561
+ handlers[name] = handler;
562
+ }
563
+ /**
564
+ * Remove a job handler
565
+ */
566
+ function removeHandler(name) {
567
+ delete handlers[name];
568
+ }
569
+ /**
570
+ * Get all registered handlers
571
+ */
572
+ function getHandlers() {
573
+ return handlers;
574
+ }
575
+ /**
576
+ * Set the engine dispatcher for fallback job execution
577
+ */
578
+ function setEngineDispatcher(dispatcher) {
579
+ engineDispatcher = dispatcher;
580
+ }
581
+ /**
582
+ * Get the number of active jobs being processed
583
+ */
584
+ function getActiveJobsCount() {
585
+ return workerInstance?.getActiveJobsCount() ?? 0;
586
+ }
587
+ /**
588
+ * Get the IDs of all active jobs being processed
589
+ */
590
+ function getActiveJobIds() {
591
+ return workerInstance?.getActiveJobIds() ?? [];
592
+ }
593
+ /**
594
+ * Stop the worker from claiming new jobs
595
+ * Used for graceful shutdown initiation
596
+ */
597
+ async function stopWorker() {
598
+ if (workerInstance) {
599
+ await workerInstance.stop();
600
+ }
601
+ }
602
+ /**
603
+ * Start the worker
604
+ */
605
+ async function start() {
606
+ if (!jobQueue) {
607
+ throw new Error("Worker not initialized - call initWorker() first");
608
+ }
609
+ logger_js_1.logger.log({
610
+ timestamp: Date.now(),
611
+ level: "info",
612
+ kind: "system",
613
+ message: "BullMQ worker starting",
614
+ context: { concurrency: DEFAULT_CONCURRENCY, threads: THREAD_POOL_SIZE },
615
+ });
616
+ // Create and initialize the BullMQ worker
617
+ workerInstance = new BullMQWorkerManager("archlast-jobs", jobQueue, {
618
+ concurrency: DEFAULT_CONCURRENCY,
619
+ lockDuration: DEFAULT_LOCK_DURATION,
620
+ threadPool: threadPool ?? undefined,
621
+ engineDispatcher: engineDispatcher ?? undefined,
622
+ circuitBreaker: circuitBreaker ?? undefined,
623
+ });
624
+ workerInstance.setIpcClient(ipc);
625
+ await workerInstance.initialize();
626
+ // Handle signals for graceful shutdown
627
+ const signals = ["SIGINT", "SIGTERM"];
628
+ signals.forEach((sig) => process.on(sig, () => {
629
+ void stopWorker().then(() => process.exit(0));
630
+ }));
631
+ }
632
+ /**
633
+ * Get circuit breaker instance (for monitoring/management)
634
+ * Returns null if circuit breaker is disabled
635
+ */
636
+ function getCircuitBreaker() {
637
+ return circuitBreaker;
638
+ }
639
+ /**
640
+ * Check if circuit breaker is enabled
641
+ */
642
+ function isCircuitBreakerEnabled() {
643
+ return CIRCUIT_BREAKER_ENABLED;
644
+ }
645
+ /**
646
+ * Check if worker is stopped
647
+ */
648
+ function isStopped() {
649
+ return workerInstance?.isStopped() ?? false;
650
+ }
651
+ //# sourceMappingURL=bullmq-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bullmq-worker.js","sourceRoot":"","sources":["../../src/jobs/bullmq-worker.ts"],"names":[],"mappings":";;;AAkmBA,gCA2BC;AAKD,0CAEC;AAKD,sCAEC;AAKD,kCAEC;AAKD,kDAEC;AAKD,gDAEC;AAKD,0CAEC;AAMD,gCAIC;AAKD,sBAgCC;AAMD,8CAEC;AAKD,0DAEC;AAKD,8BAEC;AA5uBD,mCAAkD;AAElD,oDAA8C;AAC9C,yDAAgD;AAEhD,0DAAqD;AACrD,6DAI8B;AAC9B,+DAAoE;AAEpE;;GAEG;AACH,MAAa,eAAgB,SAAQ,KAAK;IACtC,YAAY,OAAe,EAAE,SAAiB;QAC1C,KAAK,CAAC,QAAQ,OAAO,qBAAqB,SAAS,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAClC,CAAC;CACJ;AALD,0CAKC;AAmBD,wDAAwD;AACxD,MAAM,QAAQ,GAAoC,EAAE,CAAC;AACrD,IAAI,gBAAgB,GAAqC,IAAI,CAAC;AAC9D,IAAI,cAAc,GAA0B,IAAI,CAAC;AACjD,IAAI,UAAU,GAAsB,IAAI,CAAC;AACzC,IAAI,cAAc,GAA+B,IAAI,CAAC;AACtD,IAAI,QAAQ,GAAoB,IAAI,CAAC;AACrC,IAAI,GAAG,GAAqB,IAAI,CAAC;AAEjC,2BAA2B;AAC3B,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,CAAC,CAAC;AAC5E,MAAM,qBAAqB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;AAC7E,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC;AACrE,MAAM,2BAA2B,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,KAAK,OAAO,CAAC;AACpF,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,KAAK,CAAC,CAAC;AAC7E,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,KAAK,MAAM,CAAC;AACnF,MAAM,sBAAsB,GAAyB;IACjD,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,CAAC;IAChF,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,CAAC;IAChF,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAoC,IAAI,KAAK,CAAC;IACjF,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,IAAI,CAAC,CAAC;CACrF,CAAC;AAEF;;GAEG;AACH,MAAa,mBAAmB;IACpB,MAAM,GAAkB,IAAI,CAAC;IAC7B,YAAY,GAAgB,IAAI,GAAG,EAAE,CAAC;IACtC,YAAY,GAAG,KAAK,CAAC;IACrB,QAAQ,CAAW;IACnB,GAAG,GAAqB,IAAI,CAAC;IAC7B,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,UAAU,GAAsB,IAAI,CAAC;IACrC,gBAAgB,GAAqC,IAAI,CAAC;IAC1D,cAAc,GAA0B,IAAI,CAAC;IAErD,YAAY,SAAiB,EAAE,QAAkB,EAAE,UAA+B,EAAE;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;QAC9D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,qBAAqB,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAA2B;QACpC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACZ,MAAM,UAAU,GAAG,IAAA,iDAA2B,GAAE,CAAC;QAEjD,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CACpB,IAAI,CAAC,SAAS,EACd,KAAK,EAAE,OAAkB,EAAE,EAAE;YACzB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC,EACD;YACI,UAAU;YACV,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,KAAK;YACtB,eAAe,EAAE,CAAC;SACrB,CACJ,CAAC;QAEF,wBAAwB;QACxB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,GAA0B,EAAE,EAAE;YACvD,IAAI,GAAG,EAAE,CAAC;gBACN,kBAAM,CAAC,GAAG,CAAC;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,KAAK,EAAE,MAAM;oBACb,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,iCAAiC,GAAG,CAAC,EAAE,EAAE;oBAClD,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;iBAC7C,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,GAA0B,EAAE,GAAU,EAAE,EAAE;YAChE,IAAI,GAAG,EAAE,CAAC;gBACN,kBAAM,CAAC,GAAG,CAAC;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,8BAA8B,GAAG,CAAC,EAAE,EAAE;oBAC/C,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE;iBACjE,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,kBAAM,CAAC,GAAG,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,+BAA+B,KAAK,EAAE;gBAC/C,OAAO,EAAE,EAAE,KAAK,EAAE;aACrB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAc,EAAE,QAAiB,EAAE,EAAE;YAC7D,kBAAM,CAAC,GAAG,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gCAAgC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBAC/E,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE;aACvC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YACnC,kBAAM,CAAC,GAAG,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,6BAA6B;gBACtC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE;aAClC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,kBAAM,CAAC,GAAG,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,gDAAgD,IAAI,CAAC,SAAS,EAAE;YACzE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;SAC9E,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,OAAkB;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;QAE1B,mBAAmB;QACnB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC;YACD,8CAA8C;YAC9C,MAAM,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE1D,yBAAyB;YACzB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;YAC7C,yBAAU,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,yBAAyB;YACzB,IAAI,KAAK,YAAY,4CAAuB,EAAE,CAAC;gBAC3C,yBAAU,CAAC,UAAU,CAAC,GAAG,CAAC;oBACtB,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,cAAc,EAAE,iBAAiB;iBACpC,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,yBAAU,CAAC,UAAU,CAAC,GAAG,CAAC;oBACtB,QAAQ,EAAE,OAAO,CAAC,IAAI;oBACtB,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;iBAC9C,CAAC,CAAC;YACP,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,8BAA8B;YAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,OAAkB;QAClC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;YACjE,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QAEnB,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,MAAM,gBAAgB,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,mBAAmB,GACrB,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,gBAAgB,GAClB,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;YACrC,CAAC,CAAC,IAAI,CAAC,gBAAgB;YACvB,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ;gBACjC,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACf,CAAC,CAAC,SAAS,CAAC;QAEtB,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3C,CAAC,CAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAc;YAChF,CAAC,CAAC,SAAS,CAAC;QAEhB,OAAO;YACH,GAAG,EAAE,EAAE;YACP,EAAE;YACF,IAAI,EAAE,YAAY,IAAI,OAAO,CAAC,IAAI;YAClC,OAAO;YACP,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,gBAAgB,IAAI,OAAO,CAAC,YAAY;YAClD,WAAW,EAAE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;YAC9D,QAAQ,EAAE,OAAO,CAAC,SAAS;YAC3B,SAAS,EAAE,iBAAiB,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG;YACxD,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE,iBAAiB;YAC5B,SAAS;SACZ,CAAC;IACN,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,4BAA4B,CAAC,GAAc,EAAE,OAAkB;QACzE,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;YACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,OAAO,EAAE,CAAC;gBACV,yBAAyB;gBACzB,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzB,kBAAkB;gBAClB,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC;iBAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC/B,wBAAwB;gBACxB,MAAM,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACJ,uBAAuB;gBACvB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC5D,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrC,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;QAEF,0CAA0C;QAC1C,IAAI,uBAAuB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACJ,OAAO,MAAM,kBAAkB,EAAE,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,GAAc,EAAE,OAAwB;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAEhD,0DAA0D;YAC1D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACvC,MAAM,UAAU,GAAI,MAAc,CAAC,eAAe,CAAC;gBACnD,MAAM,OAAO,GAAI,MAAc,CAAC,YAAY,CAAC;gBAE7C,MAAM,UAAU,GACZ,UAAU,YAAY,GAAG;oBACrB,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;wBACzB,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC;wBACrB,CAAC,CAAC,SAAS,CAAC;gBAEtB,MAAM,OAAO,GACT,OAAO,YAAY,GAAG;oBAClB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;wBACtB,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC;wBAClB,CAAC,CAAC,SAAS,CAAC;gBAEtB,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACL,CAAC;YAED,kBAAkB;YAClB,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;YAC7C,yBAAU,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,GAAc;QAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAQ,CAAC;QAE3C,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,CAChD,IAAI,CAAC,UAAW,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CACnD,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrC,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YAEhD,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzE,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,2BAA2B,CAAC,GAAc;QACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAQ,CAAC;QAC3C,MAAM,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,IAAI,IAAI,EAAS,CAAC;QAE7D,kBAAM,CAAC,GAAG,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mDAAmD;YAC5D,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,CACnD,IAAI,CAAC,gBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAC9D,CAAC;YAEF,kBAAM,CAAC,GAAG,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mDAAmD;gBAC5D,OAAO,EAAE;oBACL,OAAO,EAAE,GAAG,CAAC,IAAI;oBACjB,KAAK,EAAE,GAAG,CAAC,GAAG;oBACd,SAAS,EAAE,CAAC,CAAC,MAAM;oBACnB,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,IAAI,CAAC;oBACjD,mBAAmB,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,IAAI,CAAC;iBAC1D;aACJ,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,kBAAkB,CAAC;gBAC1B,OAAO,EACH,MAAM,EAAE,eAAe,YAAY,GAAG,IAAI,MAAM,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC;oBACrE,CAAC,CAAC,MAAM,CAAC,eAAe;oBACxB,CAAC,CAAC,SAAS;gBACnB,IAAI,EACA,MAAM,EAAE,YAAY,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC;oBAC/D,CAAC,CAAC,MAAM,CAAC,YAAY;oBACrB,CAAC,CAAC,SAAS;aACtB,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAI,GAAc,EAAE,EAAoB;QACpE,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAC/B,OAAO,MAAM,EAAE,EAAE,CAAC;QACtB,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,oBAAoB;QAC/D,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAEzE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAE3E,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAC9B,EAAE,EAAE;gBACJ,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAC7B,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;wBAC7C,MAAM,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;oBAC9D,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;aACL,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACnC,yBAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;gBAAS,CAAC;YACP,YAAY,CAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,IAGhC;QACG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEpD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO;QACX,CAAC;QAED,4DAA4D;QAC5D,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,kBAAM,CAAC,GAAG,CAAC;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,mDAAmD;oBAC5D,OAAO,EAAE,EAAE,GAAG,EAAE;iBACnB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,KAAc;QAClC,IAAI,KAAK,YAAY,4CAAuB,EAAE,CAAC;YAC3C,OAAO,iBAAiB,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBACvD,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,OAAO,YAAY,CAAC;YACxB,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC3D,OAAO,YAAY,CAAC;YACxB,CAAC;QACL,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,kBAAkB;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,eAAe;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,gBAAwB,eAAe;QAC9C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,kBAAM,CAAC,GAAG,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mCAAmC;SAC/C,CAAC,CAAC;QAEH,mDAAmD;QACnD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;QAC5C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YACzD,kBAAM,CAAC,GAAG,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,8BAA8B,IAAI,CAAC,YAAY,CAAC,IAAI,cAAc;aAC9E,CAAC,CAAC;YACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,6CAA6C;QAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3C,OAAO,IAAI,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;YAC7E,kBAAM,CAAC,GAAG,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,6CAA6C;aACzD,CAAC,CAAC;YACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAE3B,kBAAM,CAAC,GAAG,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,kCAAkC;SAC9C,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,SAAS;QACL,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;CACJ;AAthBD,kDAshBC;AAED,+EAA+E;AAC/E,4DAA4D;AAC5D,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,UAAU,CAAC,KAAe,EAAE,SAAqB;IAC7D,QAAQ,GAAG,KAAK,CAAC;IACjB,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC;IAExB,yEAAyE;IACzE,IAAI,gBAAgB,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,UAAU,GAAG,IAAI,6BAAU,CAAC,gBAAgB,CAAC,CAAC;QAC9C,kBAAM,CAAC,GAAG,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE;SAC1C,CAAC,CAAC;IACP,CAAC;IAED,wCAAwC;IACxC,IAAI,uBAAuB,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,cAAc,GAAG,IAAI,mCAAc,CAAC,sBAAsB,CAAC,CAAC;QAC5D,kBAAM,CAAC,GAAG,CAAC;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,wCAAwC;YACjD,OAAO,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE;SAC9C,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAgB,IAAY,EAAE,OAA4B;IACrF,QAAQ,CAAC,IAAI,CAAC,GAAG,OAA0B,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,IAAY;IACtC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACvB,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,UAAqC;IACrE,gBAAgB,GAAG,UAAU,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB;IAC9B,OAAO,cAAc,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe;IAC3B,OAAO,cAAc,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,UAAU;IAC5B,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,KAAK;IACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACxE,CAAC;IAED,kBAAM,CAAC,GAAG,CAAC;QACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,wBAAwB;QACjC,OAAO,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,OAAO,EAAE,gBAAgB,EAAE;KAC3E,CAAC,CAAC;IAEH,0CAA0C;IAC1C,cAAc,GAAG,IAAI,mBAAmB,CAAC,eAAe,EAAE,QAAQ,EAAE;QAChE,WAAW,EAAE,mBAAmB;QAChC,YAAY,EAAE,qBAAqB;QACnC,UAAU,EAAE,UAAU,IAAI,SAAS;QACnC,gBAAgB,EAAE,gBAAgB,IAAI,SAAS;QAC/C,cAAc,EAAE,cAAc,IAAI,SAAS;KAC9C,CAAC,CAAC;IAEH,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IAElC,uCAAuC;IACvC,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;IAC/C,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACpB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;QACjB,KAAK,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CACL,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB;IAC7B,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB;IACnC,OAAO,uBAAuB,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACrB,OAAO,cAAc,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC;AAChD,CAAC"}