@effect/cluster 0.50.6 → 0.51.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 (223) hide show
  1. package/RunnerStorage/package.json +6 -0
  2. package/SqlRunnerStorage/package.json +6 -0
  3. package/dist/cjs/ClusterError.js +2 -24
  4. package/dist/cjs/ClusterError.js.map +1 -1
  5. package/dist/cjs/ClusterMetrics.js +13 -15
  6. package/dist/cjs/ClusterMetrics.js.map +1 -1
  7. package/dist/cjs/ClusterWorkflowEngine.js +41 -81
  8. package/dist/cjs/ClusterWorkflowEngine.js.map +1 -1
  9. package/dist/cjs/Entity.js.map +1 -1
  10. package/dist/cjs/EntityAddress.js +9 -1
  11. package/dist/cjs/EntityAddress.js.map +1 -1
  12. package/dist/cjs/EntityId.js +7 -1
  13. package/dist/cjs/EntityId.js.map +1 -1
  14. package/dist/cjs/EntityProxy.js +1 -1
  15. package/dist/cjs/EntityProxy.js.map +1 -1
  16. package/dist/cjs/HttpRunner.js +69 -43
  17. package/dist/cjs/HttpRunner.js.map +1 -1
  18. package/dist/cjs/MessageStorage.js +64 -16
  19. package/dist/cjs/MessageStorage.js.map +1 -1
  20. package/dist/cjs/Runner.js +3 -3
  21. package/dist/cjs/Runner.js.map +1 -1
  22. package/dist/cjs/RunnerAddress.js +7 -0
  23. package/dist/cjs/RunnerAddress.js.map +1 -1
  24. package/dist/cjs/RunnerHealth.js +91 -32
  25. package/dist/cjs/RunnerHealth.js.map +1 -1
  26. package/dist/cjs/RunnerServer.js +38 -24
  27. package/dist/cjs/RunnerServer.js.map +1 -1
  28. package/dist/cjs/RunnerStorage.js +100 -0
  29. package/dist/cjs/RunnerStorage.js.map +1 -0
  30. package/dist/cjs/Runners.js +18 -22
  31. package/dist/cjs/Runners.js.map +1 -1
  32. package/dist/cjs/ShardId.js +17 -7
  33. package/dist/cjs/ShardId.js.map +1 -1
  34. package/dist/cjs/Sharding.js +435 -318
  35. package/dist/cjs/Sharding.js.map +1 -1
  36. package/dist/cjs/ShardingConfig.js +10 -14
  37. package/dist/cjs/ShardingConfig.js.map +1 -1
  38. package/dist/cjs/Snowflake.js +1 -1
  39. package/dist/cjs/SocketRunner.js +1 -1
  40. package/dist/cjs/SocketRunner.js.map +1 -1
  41. package/dist/cjs/SqlMessageStorage.js +22 -28
  42. package/dist/cjs/SqlMessageStorage.js.map +1 -1
  43. package/dist/cjs/SqlRunnerStorage.js +378 -0
  44. package/dist/cjs/SqlRunnerStorage.js.map +1 -0
  45. package/dist/cjs/index.js +5 -15
  46. package/dist/cjs/internal/entityManager.js +40 -9
  47. package/dist/cjs/internal/entityManager.js.map +1 -1
  48. package/dist/dts/ClusterError.d.ts +0 -22
  49. package/dist/dts/ClusterError.d.ts.map +1 -1
  50. package/dist/dts/ClusterMetrics.d.ts +4 -14
  51. package/dist/dts/ClusterMetrics.d.ts.map +1 -1
  52. package/dist/dts/ClusterWorkflowEngine.d.ts.map +1 -1
  53. package/dist/dts/Entity.d.ts +2 -2
  54. package/dist/dts/Entity.d.ts.map +1 -1
  55. package/dist/dts/EntityAddress.d.ts +11 -0
  56. package/dist/dts/EntityAddress.d.ts.map +1 -1
  57. package/dist/dts/EntityId.d.ts +5 -0
  58. package/dist/dts/EntityId.d.ts.map +1 -1
  59. package/dist/dts/EntityProxy.d.ts +5 -6
  60. package/dist/dts/EntityProxy.d.ts.map +1 -1
  61. package/dist/dts/HttpRunner.d.ts +48 -25
  62. package/dist/dts/HttpRunner.d.ts.map +1 -1
  63. package/dist/dts/MessageStorage.d.ts +13 -5
  64. package/dist/dts/MessageStorage.d.ts.map +1 -1
  65. package/dist/dts/Runner.d.ts +4 -4
  66. package/dist/dts/Runner.d.ts.map +1 -1
  67. package/dist/dts/RunnerAddress.d.ts +5 -0
  68. package/dist/dts/RunnerAddress.d.ts.map +1 -1
  69. package/dist/dts/RunnerHealth.d.ts +24 -16
  70. package/dist/dts/RunnerHealth.d.ts.map +1 -1
  71. package/dist/dts/RunnerServer.d.ts +5 -4
  72. package/dist/dts/RunnerServer.d.ts.map +1 -1
  73. package/dist/dts/{ShardStorage.d.ts → RunnerStorage.d.ts} +41 -54
  74. package/dist/dts/RunnerStorage.d.ts.map +1 -0
  75. package/dist/dts/Runners.d.ts +15 -11
  76. package/dist/dts/Runners.d.ts.map +1 -1
  77. package/dist/dts/ShardId.d.ts +1 -1
  78. package/dist/dts/ShardId.d.ts.map +1 -1
  79. package/dist/dts/Sharding.d.ts +20 -10
  80. package/dist/dts/Sharding.d.ts.map +1 -1
  81. package/dist/dts/ShardingConfig.d.ts +40 -14
  82. package/dist/dts/ShardingConfig.d.ts.map +1 -1
  83. package/dist/dts/SocketRunner.d.ts +4 -3
  84. package/dist/dts/SocketRunner.d.ts.map +1 -1
  85. package/dist/dts/SqlMessageStorage.d.ts +2 -3
  86. package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
  87. package/dist/dts/SqlRunnerStorage.d.ts +40 -0
  88. package/dist/dts/SqlRunnerStorage.d.ts.map +1 -0
  89. package/dist/dts/index.d.ts +4 -24
  90. package/dist/dts/index.d.ts.map +1 -1
  91. package/dist/esm/ClusterError.js +0 -21
  92. package/dist/esm/ClusterError.js.map +1 -1
  93. package/dist/esm/ClusterMetrics.js +12 -14
  94. package/dist/esm/ClusterMetrics.js.map +1 -1
  95. package/dist/esm/ClusterWorkflowEngine.js +41 -81
  96. package/dist/esm/ClusterWorkflowEngine.js.map +1 -1
  97. package/dist/esm/Entity.js.map +1 -1
  98. package/dist/esm/EntityAddress.js +7 -0
  99. package/dist/esm/EntityAddress.js.map +1 -1
  100. package/dist/esm/EntityId.js +5 -0
  101. package/dist/esm/EntityId.js.map +1 -1
  102. package/dist/esm/EntityProxy.js +2 -2
  103. package/dist/esm/EntityProxy.js.map +1 -1
  104. package/dist/esm/HttpRunner.js +62 -39
  105. package/dist/esm/HttpRunner.js.map +1 -1
  106. package/dist/esm/MessageStorage.js +65 -17
  107. package/dist/esm/MessageStorage.js.map +1 -1
  108. package/dist/esm/Runner.js +3 -3
  109. package/dist/esm/Runner.js.map +1 -1
  110. package/dist/esm/RunnerAddress.js +7 -0
  111. package/dist/esm/RunnerAddress.js.map +1 -1
  112. package/dist/esm/RunnerHealth.js +88 -30
  113. package/dist/esm/RunnerHealth.js.map +1 -1
  114. package/dist/esm/RunnerServer.js +38 -24
  115. package/dist/esm/RunnerServer.js.map +1 -1
  116. package/dist/esm/RunnerStorage.js +90 -0
  117. package/dist/esm/RunnerStorage.js.map +1 -0
  118. package/dist/esm/Runners.js +19 -23
  119. package/dist/esm/Runners.js.map +1 -1
  120. package/dist/esm/ShardId.js +16 -6
  121. package/dist/esm/ShardId.js.map +1 -1
  122. package/dist/esm/Sharding.js +438 -321
  123. package/dist/esm/Sharding.js.map +1 -1
  124. package/dist/esm/ShardingConfig.js +10 -14
  125. package/dist/esm/ShardingConfig.js.map +1 -1
  126. package/dist/esm/Snowflake.js +1 -1
  127. package/dist/esm/SocketRunner.js +1 -1
  128. package/dist/esm/SocketRunner.js.map +1 -1
  129. package/dist/esm/SqlMessageStorage.js +22 -28
  130. package/dist/esm/SqlMessageStorage.js.map +1 -1
  131. package/dist/esm/SqlRunnerStorage.js +369 -0
  132. package/dist/esm/SqlRunnerStorage.js.map +1 -0
  133. package/dist/esm/index.js +4 -24
  134. package/dist/esm/index.js.map +1 -1
  135. package/dist/esm/internal/entityManager.js +40 -9
  136. package/dist/esm/internal/entityManager.js.map +1 -1
  137. package/package.json +20 -60
  138. package/src/ClusterError.ts +0 -24
  139. package/src/ClusterMetrics.ts +12 -16
  140. package/src/ClusterWorkflowEngine.ts +38 -78
  141. package/src/Entity.ts +2 -7
  142. package/src/EntityAddress.ts +10 -0
  143. package/src/EntityId.ts +6 -0
  144. package/src/EntityProxy.ts +10 -10
  145. package/src/HttpRunner.ts +132 -67
  146. package/src/MessageStorage.ts +89 -24
  147. package/src/Runner.ts +4 -4
  148. package/src/RunnerAddress.ts +8 -0
  149. package/src/RunnerHealth.ts +119 -56
  150. package/src/RunnerServer.ts +64 -47
  151. package/src/RunnerStorage.ts +218 -0
  152. package/src/Runners.ts +32 -45
  153. package/src/ShardId.ts +14 -3
  154. package/src/Sharding.ts +548 -413
  155. package/src/ShardingConfig.ts +39 -31
  156. package/src/Snowflake.ts +1 -1
  157. package/src/SocketRunner.ts +6 -4
  158. package/src/SqlMessageStorage.ts +28 -30
  159. package/src/SqlRunnerStorage.ts +541 -0
  160. package/src/index.ts +4 -29
  161. package/src/internal/entityManager.ts +44 -10
  162. package/HttpCommon/package.json +0 -6
  163. package/HttpShardManager/package.json +0 -6
  164. package/ShardManager/package.json +0 -6
  165. package/ShardStorage/package.json +0 -6
  166. package/SocketShardManager/package.json +0 -6
  167. package/SqlShardStorage/package.json +0 -6
  168. package/SynchronizedClock/package.json +0 -6
  169. package/dist/cjs/HttpCommon.js +0 -48
  170. package/dist/cjs/HttpCommon.js.map +0 -1
  171. package/dist/cjs/HttpShardManager.js +0 -139
  172. package/dist/cjs/HttpShardManager.js.map +0 -1
  173. package/dist/cjs/ShardManager.js +0 -549
  174. package/dist/cjs/ShardManager.js.map +0 -1
  175. package/dist/cjs/ShardStorage.js +0 -151
  176. package/dist/cjs/ShardStorage.js.map +0 -1
  177. package/dist/cjs/SocketShardManager.js +0 -32
  178. package/dist/cjs/SocketShardManager.js.map +0 -1
  179. package/dist/cjs/SqlShardStorage.js +0 -253
  180. package/dist/cjs/SqlShardStorage.js.map +0 -1
  181. package/dist/cjs/SynchronizedClock.js +0 -65
  182. package/dist/cjs/SynchronizedClock.js.map +0 -1
  183. package/dist/cjs/internal/shardManager.js +0 -353
  184. package/dist/cjs/internal/shardManager.js.map +0 -1
  185. package/dist/dts/HttpCommon.d.ts +0 -25
  186. package/dist/dts/HttpCommon.d.ts.map +0 -1
  187. package/dist/dts/HttpShardManager.d.ts +0 -119
  188. package/dist/dts/HttpShardManager.d.ts.map +0 -1
  189. package/dist/dts/ShardManager.d.ts +0 -459
  190. package/dist/dts/ShardManager.d.ts.map +0 -1
  191. package/dist/dts/ShardStorage.d.ts.map +0 -1
  192. package/dist/dts/SocketShardManager.d.ts +0 -17
  193. package/dist/dts/SocketShardManager.d.ts.map +0 -1
  194. package/dist/dts/SqlShardStorage.d.ts +0 -38
  195. package/dist/dts/SqlShardStorage.d.ts.map +0 -1
  196. package/dist/dts/SynchronizedClock.d.ts +0 -19
  197. package/dist/dts/SynchronizedClock.d.ts.map +0 -1
  198. package/dist/dts/internal/shardManager.d.ts +0 -2
  199. package/dist/dts/internal/shardManager.d.ts.map +0 -1
  200. package/dist/esm/HttpCommon.js +0 -38
  201. package/dist/esm/HttpCommon.js.map +0 -1
  202. package/dist/esm/HttpShardManager.js +0 -128
  203. package/dist/esm/HttpShardManager.js.map +0 -1
  204. package/dist/esm/ShardManager.js +0 -535
  205. package/dist/esm/ShardManager.js.map +0 -1
  206. package/dist/esm/ShardStorage.js +0 -141
  207. package/dist/esm/ShardStorage.js.map +0 -1
  208. package/dist/esm/SocketShardManager.js +0 -24
  209. package/dist/esm/SocketShardManager.js.map +0 -1
  210. package/dist/esm/SqlShardStorage.js +0 -244
  211. package/dist/esm/SqlShardStorage.js.map +0 -1
  212. package/dist/esm/SynchronizedClock.js +0 -57
  213. package/dist/esm/SynchronizedClock.js.map +0 -1
  214. package/dist/esm/internal/shardManager.js +0 -342
  215. package/dist/esm/internal/shardManager.js.map +0 -1
  216. package/src/HttpCommon.ts +0 -73
  217. package/src/HttpShardManager.ts +0 -273
  218. package/src/ShardManager.ts +0 -823
  219. package/src/ShardStorage.ts +0 -297
  220. package/src/SocketShardManager.ts +0 -48
  221. package/src/SqlShardStorage.ts +0 -329
  222. package/src/SynchronizedClock.ts +0 -82
  223. package/src/internal/shardManager.ts +0 -412
@@ -1,549 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.makeClientRpc = exports.makeClientLocal = exports.make = exports.layerServerHandlers = exports.layerServer = exports.layerConfigFromEnv = exports.layerConfig = exports.layerClientRpc = exports.layerClientLocal = exports.layer = exports.configFromEnv = exports.configConfig = exports.ShardingEventSchema = exports.ShardingEvent = exports.ShardManagerClient = exports.ShardManager = exports.Rpcs = exports.Config = void 0;
7
- var Rpc = _interopRequireWildcard(require("@effect/rpc/Rpc"));
8
- var RpcClient = _interopRequireWildcard(require("@effect/rpc/RpcClient"));
9
- var RpcGroup = _interopRequireWildcard(require("@effect/rpc/RpcGroup"));
10
- var RpcServer = _interopRequireWildcard(require("@effect/rpc/RpcServer"));
11
- var Arr = _interopRequireWildcard(require("effect/Array"));
12
- var Clock = _interopRequireWildcard(require("effect/Clock"));
13
- var Config_ = _interopRequireWildcard(require("effect/Config"));
14
- var ConfigProvider = _interopRequireWildcard(require("effect/ConfigProvider"));
15
- var Context = _interopRequireWildcard(require("effect/Context"));
16
- var Data = _interopRequireWildcard(require("effect/Data"));
17
- var Deferred = _interopRequireWildcard(require("effect/Deferred"));
18
- var Duration = _interopRequireWildcard(require("effect/Duration"));
19
- var Effect = _interopRequireWildcard(require("effect/Effect"));
20
- var Equal = _interopRequireWildcard(require("effect/Equal"));
21
- var FiberSet = _interopRequireWildcard(require("effect/FiberSet"));
22
- var _Function = require("effect/Function");
23
- var Iterable = _interopRequireWildcard(require("effect/Iterable"));
24
- var Layer = _interopRequireWildcard(require("effect/Layer"));
25
- var Mailbox = _interopRequireWildcard(require("effect/Mailbox"));
26
- var Metric = _interopRequireWildcard(require("effect/Metric"));
27
- var MetricLabel = _interopRequireWildcard(require("effect/MetricLabel"));
28
- var MutableHashMap = _interopRequireWildcard(require("effect/MutableHashMap"));
29
- var MutableHashSet = _interopRequireWildcard(require("effect/MutableHashSet"));
30
- var Option = _interopRequireWildcard(require("effect/Option"));
31
- var PubSub = _interopRequireWildcard(require("effect/PubSub"));
32
- var Queue = _interopRequireWildcard(require("effect/Queue"));
33
- var Schedule = _interopRequireWildcard(require("effect/Schedule"));
34
- var Schema = _interopRequireWildcard(require("effect/Schema"));
35
- var _ClusterError = require("./ClusterError.js");
36
- var ClusterMetrics = _interopRequireWildcard(require("./ClusterMetrics.js"));
37
- var _shardManager = require("./internal/shardManager.js");
38
- var MachineId = _interopRequireWildcard(require("./MachineId.js"));
39
- var _Runner = require("./Runner.js");
40
- var _RunnerAddress = require("./RunnerAddress.js");
41
- var _RunnerHealth = require("./RunnerHealth.js");
42
- var _Runners = require("./Runners.js");
43
- var _ShardId = require("./ShardId.js");
44
- var _ShardingConfig = require("./ShardingConfig.js");
45
- var _ShardStorage = require("./ShardStorage.js");
46
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
47
- /**
48
- * @since 1.0.0
49
- */
50
-
51
- /**
52
- * @since 1.0.0
53
- * @category models
54
- */
55
- class ShardManager extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager")() {}
56
- /**
57
- * @since 1.0.0
58
- * @category Config
59
- */
60
- exports.ShardManager = ShardManager;
61
- class Config extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager/Config")() {
62
- /**
63
- * @since 1.0.0
64
- */
65
- static defaults = {
66
- rebalanceDebounce: /*#__PURE__*/Duration.seconds(3),
67
- rebalanceInterval: /*#__PURE__*/Duration.seconds(20),
68
- rebalanceRetryInterval: /*#__PURE__*/Duration.seconds(10),
69
- rebalanceRate: 2 / 100,
70
- persistRetryCount: 100,
71
- persistRetryInterval: /*#__PURE__*/Duration.seconds(3),
72
- runnerHealthCheckInterval: /*#__PURE__*/Duration.minutes(1),
73
- runnerPingTimeout: /*#__PURE__*/Duration.seconds(3)
74
- };
75
- }
76
- /**
77
- * @since 1.0.0
78
- * @category Config
79
- */
80
- exports.Config = Config;
81
- const configConfig = exports.configConfig = /*#__PURE__*/Config_.all({
82
- rebalanceDebounce: /*#__PURE__*/Config_.duration("rebalanceDebounce").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceDebounce), /*#__PURE__*/Config_.withDescription("The duration to wait before rebalancing shards after a change.")),
83
- rebalanceInterval: /*#__PURE__*/Config_.duration("rebalanceInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceInterval), /*#__PURE__*/Config_.withDescription("The interval on which regular rebalancing of shards will occur.")),
84
- rebalanceRetryInterval: /*#__PURE__*/Config_.duration("rebalanceRetryInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceRetryInterval), /*#__PURE__*/Config_.withDescription("The interval on which rebalancing of shards which failed to be rebalanced will be retried.")),
85
- rebalanceRate: /*#__PURE__*/Config_.number("rebalanceRate").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.rebalanceRate), /*#__PURE__*/Config_.withDescription("The maximum ratio of shards to rebalance at once.")),
86
- persistRetryCount: /*#__PURE__*/Config_.integer("persistRetryCount").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.persistRetryCount), /*#__PURE__*/Config_.withDescription("The number of times persistence of runners will be retried if it fails.")),
87
- persistRetryInterval: /*#__PURE__*/Config_.duration("persistRetryInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.persistRetryInterval), /*#__PURE__*/Config_.withDescription("The interval on which persistence of runners will be retried if it fails.")),
88
- runnerHealthCheckInterval: /*#__PURE__*/Config_.duration("runnerHealthCheckInterval").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.runnerHealthCheckInterval), /*#__PURE__*/Config_.withDescription("The interval on which runner health will be checked.")),
89
- runnerPingTimeout: /*#__PURE__*/Config_.duration("runnerPingTimeout").pipe(/*#__PURE__*/Config_.withDefault(Config.defaults.runnerPingTimeout), /*#__PURE__*/Config_.withDescription("The length of time to wait for a runner to respond to a ping."))
90
- });
91
- /**
92
- * @since 1.0.0
93
- * @category Config
94
- */
95
- const configFromEnv = exports.configFromEnv = /*#__PURE__*/configConfig.pipe(/*#__PURE__*/Effect.withConfigProvider(/*#__PURE__*/ConfigProvider.fromEnv().pipe(ConfigProvider.constantCase)));
96
- /**
97
- * @since 1.0.0
98
- * @category Config
99
- */
100
- const layerConfig = config => Layer.succeed(Config, {
101
- ...Config.defaults,
102
- ...config
103
- });
104
- /**
105
- * @since 1.0.0
106
- * @category Config
107
- */
108
- exports.layerConfig = layerConfig;
109
- const layerConfigFromEnv = config => Layer.effect(Config, config ? Effect.map(configFromEnv, env => ({
110
- ...env,
111
- ...config
112
- })) : configFromEnv);
113
- /**
114
- * Represents a client which can be used to communicate with the
115
- * `ShardManager`.
116
- *
117
- * @since 1.0.0
118
- * @category Client
119
- */
120
- exports.layerConfigFromEnv = layerConfigFromEnv;
121
- class ShardManagerClient extends /*#__PURE__*/Context.Tag("@effect/cluster/ShardManager/ShardManagerClient")() {}
122
- /**
123
- * @since 1.0.0
124
- * @category models
125
- */
126
- exports.ShardManagerClient = ShardManagerClient;
127
- const ShardingEventSchema = exports.ShardingEventSchema = /*#__PURE__*/Schema.Union(/*#__PURE__*/Schema.TaggedStruct("StreamStarted", {}), /*#__PURE__*/Schema.TaggedStruct("ShardsAssigned", {
128
- address: _RunnerAddress.RunnerAddress,
129
- shards: /*#__PURE__*/Schema.Array(_ShardId.ShardId)
130
- }), /*#__PURE__*/Schema.TaggedStruct("ShardsUnassigned", {
131
- address: _RunnerAddress.RunnerAddress,
132
- shards: /*#__PURE__*/Schema.Array(_ShardId.ShardId)
133
- }), /*#__PURE__*/Schema.TaggedStruct("RunnerRegistered", {
134
- address: _RunnerAddress.RunnerAddress
135
- }), /*#__PURE__*/Schema.TaggedStruct("RunnerUnregistered", {
136
- address: _RunnerAddress.RunnerAddress
137
- }));
138
- /**
139
- * The messaging protocol for the `ShardManager`.
140
- *
141
- * @since 1.0.0
142
- * @category Rpcs
143
- */
144
- class Rpcs extends /*#__PURE__*/RpcGroup.make(/*#__PURE__*/Rpc.make("Register", {
145
- payload: {
146
- runner: _Runner.Runner
147
- },
148
- success: MachineId.MachineId
149
- }), /*#__PURE__*/Rpc.make("Unregister", {
150
- payload: {
151
- address: _RunnerAddress.RunnerAddress
152
- }
153
- }), /*#__PURE__*/Rpc.make("NotifyUnhealthyRunner", {
154
- payload: {
155
- address: _RunnerAddress.RunnerAddress
156
- }
157
- }), /*#__PURE__*/Rpc.make("GetAssignments", {
158
- success: /*#__PURE__*/Schema.Array(/*#__PURE__*/Schema.Tuple(_ShardId.ShardId, /*#__PURE__*/Schema.Option(_RunnerAddress.RunnerAddress)))
159
- }), /*#__PURE__*/Rpc.make("ShardingEvents", {
160
- payload: {
161
- address: /*#__PURE__*/Schema.Option(_RunnerAddress.RunnerAddress)
162
- },
163
- success: ShardingEventSchema,
164
- error: _ClusterError.RunnerNotRegistered,
165
- stream: true
166
- }), /*#__PURE__*/Rpc.make("GetTime", {
167
- success: Schema.Number
168
- })) {}
169
- /**
170
- * @since 1.0.0
171
- * @category models
172
- */
173
- exports.Rpcs = Rpcs;
174
- const ShardingEvent = exports.ShardingEvent = /*#__PURE__*/Data.taggedEnum();
175
- /**
176
- * @since 1.0.0
177
- * @category Client
178
- */
179
- const makeClientLocal = exports.makeClientLocal = /*#__PURE__*/Effect.gen(function* () {
180
- const config = yield* _ShardingConfig.ShardingConfig;
181
- const clock = yield* Effect.clock;
182
- const groups = new Set();
183
- const shards = MutableHashMap.empty();
184
- let machineId = 0;
185
- return ShardManagerClient.of({
186
- register: (_, groupsToAdd) => Effect.sync(() => {
187
- for (const group of groupsToAdd) {
188
- if (groups.has(group)) continue;
189
- groups.add(group);
190
- for (let n = 1; n <= config.shardsPerGroup; n++) {
191
- MutableHashMap.set(shards, (0, _ShardId.make)(group, n), config.runnerAddress);
192
- }
193
- }
194
- return MachineId.make(++machineId);
195
- }),
196
- unregister: () => Effect.void,
197
- notifyUnhealthyRunner: () => Effect.void,
198
- getAssignments: Effect.succeed(shards),
199
- shardingEvents: Effect.fnUntraced(function* (_address) {
200
- const mailbox = yield* Mailbox.make();
201
- yield* mailbox.offer(ShardingEvent.StreamStarted());
202
- return mailbox;
203
- }),
204
- getTime: clock.currentTimeMillis
205
- });
206
- });
207
- /**
208
- * @since 1.0.0
209
- * @category Client
210
- */
211
- const makeClientRpc = exports.makeClientRpc = /*#__PURE__*/Effect.gen(function* () {
212
- const config = yield* _ShardingConfig.ShardingConfig;
213
- const client = yield* RpcClient.make(Rpcs, {
214
- spanPrefix: "ShardManagerClient",
215
- disableTracing: true
216
- });
217
- return ShardManagerClient.of({
218
- register: (address, groups) => client.Register({
219
- runner: _Runner.Runner.make({
220
- address,
221
- version: config.serverVersion,
222
- groups
223
- })
224
- }).pipe(Effect.orDie),
225
- unregister: address => Effect.orDie(client.Unregister({
226
- address
227
- })),
228
- notifyUnhealthyRunner: address => Effect.orDie(client.NotifyUnhealthyRunner({
229
- address
230
- })),
231
- getAssignments: Effect.orDie(client.GetAssignments()),
232
- shardingEvents: address => Mailbox.make().pipe(Effect.tap(Effect.fnUntraced(function* (mailbox) {
233
- const events = yield* client.ShardingEvents({
234
- address
235
- }, {
236
- asMailbox: true
237
- });
238
- const take = Effect.orDie(events.takeAll);
239
- while (true) {
240
- mailbox.unsafeOfferAll((yield* take)[0]);
241
- }
242
- }, (effect, mb) => Mailbox.into(effect, mb), Effect.forkScoped))),
243
- getTime: Effect.orDie(client.GetTime())
244
- });
245
- });
246
- /**
247
- * @since 1.0.0
248
- * @category Client
249
- */
250
- const layerClientLocal = exports.layerClientLocal = /*#__PURE__*/Layer.effect(ShardManagerClient, makeClientLocal);
251
- /**
252
- * @since 1.0.0
253
- * @category Client
254
- */
255
- const layerClientRpc = exports.layerClientRpc = /*#__PURE__*/Layer.scoped(ShardManagerClient, makeClientRpc).pipe(/*#__PURE__*/Layer.provide(/*#__PURE__*/Layer.scoped(RpcClient.Protocol, /*#__PURE__*/Effect.gen(function* () {
256
- const config = yield* _ShardingConfig.ShardingConfig;
257
- const clientProtocol = yield* _Runners.RpcClientProtocol;
258
- return yield* clientProtocol(config.shardManagerAddress);
259
- }))));
260
- /**
261
- * @since 1.0.0
262
- * @category Constructors
263
- */
264
- const make = exports.make = /*#__PURE__*/Effect.gen(function* () {
265
- const storage = yield* _ShardStorage.ShardStorage;
266
- const runnersApi = yield* _Runners.Runners;
267
- const runnerHealthApi = yield* _RunnerHealth.RunnerHealth;
268
- const clock = yield* Effect.clock;
269
- const config = yield* Config;
270
- const shardingConfig = yield* _ShardingConfig.ShardingConfig;
271
- const state = yield* Effect.orDie(_shardManager.State.fromStorage(shardingConfig.shardsPerGroup));
272
- const scope = yield* Effect.scope;
273
- const events = yield* PubSub.unbounded();
274
- function updateRunnerMetrics() {
275
- ClusterMetrics.runners.unsafeUpdate(MutableHashMap.size(state.allRunners), []);
276
- }
277
- function updateShardMetrics() {
278
- const stats = state.shardStats;
279
- for (const [address, shardCount] of stats.perRunner) {
280
- ClusterMetrics.assignedShards.unsafeUpdate(shardCount, [MetricLabel.make("address", address)]);
281
- }
282
- ClusterMetrics.unassignedShards.unsafeUpdate(stats.unassigned, []);
283
- }
284
- updateShardMetrics();
285
- function withRetry(effect) {
286
- return effect.pipe(Effect.retry({
287
- schedule: Schedule.spaced(config.persistRetryCount),
288
- times: config.persistRetryCount
289
- }), Effect.ignore);
290
- }
291
- const persistRunners = Effect.unsafeMakeSemaphore(1).withPermits(1)(withRetry(Effect.suspend(() => storage.saveRunners(Iterable.map(state.allRunners, ([address, runner]) => [address, runner.runner])))));
292
- const persistAssignments = Effect.unsafeMakeSemaphore(1).withPermits(1)(withRetry(Effect.suspend(() => storage.saveAssignments(state.assignments))));
293
- const notifyUnhealthyRunner = Effect.fnUntraced(function* (address) {
294
- if (!MutableHashMap.has(state.allRunners, address)) return;
295
- if (!(yield* runnerHealthApi.isAlive(address))) {
296
- yield* Effect.logWarning(`Runner at address '${address.toString()}' is not alive`);
297
- yield* unregister(address);
298
- }
299
- });
300
- function updateShardsState(shards, address) {
301
- return Effect.suspend(() => {
302
- if (Option.isSome(address) && !MutableHashMap.has(state.allRunners, address.value)) {
303
- return Effect.fail(new _ClusterError.RunnerNotRegistered({
304
- address: address.value
305
- }));
306
- }
307
- state.addAssignments(shards, address);
308
- return Effect.void;
309
- });
310
- }
311
- const getAssignments = Effect.sync(() => state.assignments);
312
- let machineId = 0;
313
- const register = Effect.fnUntraced(function* (runner) {
314
- yield* Effect.logInfo(`Registering runner ${_Runner.Runner.pretty(runner)}`);
315
- const current = MutableHashMap.get(state.allRunners, runner.address).pipe(Option.filter(r => r.runner.version === runner.version));
316
- if (Option.isSome(current)) {
317
- return MachineId.make(++machineId);
318
- }
319
- state.addRunner(runner, clock.unsafeCurrentTimeMillis());
320
- updateRunnerMetrics();
321
- yield* PubSub.publish(events, ShardingEvent.RunnerRegistered({
322
- address: runner.address
323
- }));
324
- yield* Effect.forkIn(persistRunners, scope);
325
- yield* Effect.forkIn(rebalance, scope);
326
- return MachineId.make(++machineId);
327
- });
328
- const unregister = Effect.fnUntraced(function* (address) {
329
- if (!MutableHashMap.has(state.allRunners, address)) return;
330
- yield* Effect.logInfo("Unregistering runner at address:", address);
331
- const unassignments = Arr.empty();
332
- for (const [shard, runner] of state.assignments) {
333
- if (Option.isSome(runner) && Equal.equals(runner.value, address)) {
334
- unassignments.push(shard);
335
- }
336
- }
337
- state.addAssignments(unassignments, Option.none());
338
- state.removeRunner(address);
339
- updateRunnerMetrics();
340
- if (unassignments.length > 0) {
341
- yield* PubSub.publish(events, ShardingEvent.RunnerUnregistered({
342
- address
343
- }));
344
- }
345
- yield* Effect.forkIn(persistRunners, scope);
346
- yield* Effect.forkIn(rebalance, scope);
347
- });
348
- let rebalancing = false;
349
- let rebalanceDeferred;
350
- const rebalanceFibers = yield* FiberSet.make();
351
- const rebalance = Effect.withFiberRuntime(fiber => {
352
- if (!rebalancing) {
353
- rebalancing = true;
354
- return rebalanceLoop;
355
- }
356
- if (!rebalanceDeferred) {
357
- rebalanceDeferred = Deferred.unsafeMake(fiber.id());
358
- }
359
- return Deferred.await(rebalanceDeferred);
360
- });
361
- const rebalanceLoop = Effect.suspend(() => {
362
- const deferred = rebalanceDeferred;
363
- rebalanceDeferred = undefined;
364
- return runRebalance.pipe(deferred ? Effect.intoDeferred(deferred) : _Function.identity, Effect.onExit(() => {
365
- if (!rebalanceDeferred) {
366
- rebalancing = false;
367
- return Effect.void;
368
- }
369
- return Effect.forkIn(rebalanceLoop, scope);
370
- }));
371
- });
372
- const runRebalance = Effect.gen(function* () {
373
- yield* Effect.sleep(config.rebalanceDebounce);
374
- if (state.shards.size === 0) {
375
- yield* Effect.logDebug("No shards to rebalance");
376
- return;
377
- }
378
- // Determine which shards to assign and unassign
379
- const assignments = MutableHashMap.empty();
380
- const unassignments = MutableHashMap.empty();
381
- const changes = MutableHashSet.empty();
382
- for (const group of state.shards.keys()) {
383
- const [groupAssignments, groupUnassignments, groupChanges] = (0, _shardManager.decideAssignmentsForShards)(state, group);
384
- for (const [address, shards] of groupAssignments) {
385
- (0, _shardManager.addAllNested)(assignments, address, Array.from(shards, id => (0, _ShardId.make)(group, id)));
386
- }
387
- for (const [address, shards] of groupUnassignments) {
388
- (0, _shardManager.addAllNested)(unassignments, address, Array.from(shards, id => (0, _ShardId.make)(group, id)));
389
- }
390
- for (const address of groupChanges) {
391
- MutableHashSet.add(changes, address);
392
- }
393
- }
394
- yield* Effect.logDebug(`Rebalancing shards`);
395
- if (MutableHashSet.size(changes) === 0) return;
396
- yield* Metric.increment(ClusterMetrics.rebalances);
397
- // Ping runners first and remove unhealthy ones
398
- const failedRunners = MutableHashSet.empty();
399
- for (const address of changes) {
400
- yield* FiberSet.run(rebalanceFibers, runnersApi.ping(address).pipe(Effect.timeout(config.runnerPingTimeout), Effect.catchAll(() => {
401
- MutableHashSet.add(failedRunners, address);
402
- MutableHashMap.remove(assignments, address);
403
- MutableHashMap.remove(unassignments, address);
404
- return Effect.void;
405
- })));
406
- }
407
- yield* FiberSet.awaitEmpty(rebalanceFibers);
408
- const failedUnassignments = new Set();
409
- for (const [address, shards] of unassignments) {
410
- yield* FiberSet.run(rebalanceFibers, updateShardsState(shards, Option.none()).pipe(Effect.matchEffect({
411
- onFailure: () => {
412
- MutableHashSet.add(failedRunners, address);
413
- for (const shard of shards) {
414
- failedUnassignments.add(shard);
415
- }
416
- // Remove failed runners from the assignments
417
- MutableHashMap.remove(assignments, address);
418
- return Effect.void;
419
- },
420
- onSuccess: () => PubSub.publish(events, ShardingEvent.ShardsUnassigned({
421
- address,
422
- shards: Array.from(shards)
423
- }))
424
- })));
425
- }
426
- yield* FiberSet.awaitEmpty(rebalanceFibers);
427
- // Remove failed shard unassignments from the assignments
428
- MutableHashMap.forEach(assignments, (shards, address) => {
429
- for (const shard of failedUnassignments) {
430
- MutableHashSet.remove(shards, shard);
431
- }
432
- if (MutableHashSet.size(shards) === 0) {
433
- MutableHashMap.remove(assignments, address);
434
- }
435
- });
436
- // Perform the assignments
437
- for (const [address, shards] of assignments) {
438
- yield* FiberSet.run(rebalanceFibers, updateShardsState(shards, Option.some(address)).pipe(Effect.matchEffect({
439
- onFailure: () => {
440
- MutableHashSet.add(failedRunners, address);
441
- return Effect.void;
442
- },
443
- onSuccess: () => PubSub.publish(events, ShardingEvent.ShardsAssigned({
444
- address,
445
- shards: Array.from(shards)
446
- }))
447
- })));
448
- }
449
- yield* FiberSet.awaitEmpty(rebalanceFibers);
450
- updateShardMetrics();
451
- const wereFailures = MutableHashSet.size(failedRunners) > 0;
452
- if (wereFailures) {
453
- // Check if the failing runners are still reachable
454
- yield* Effect.forEach(failedRunners, notifyUnhealthyRunner, {
455
- discard: true
456
- }).pipe(Effect.forkIn(scope));
457
- yield* Effect.logWarning("Failed to rebalance runners: ", failedRunners);
458
- }
459
- if (wereFailures) {
460
- // Try rebalancing again later if there were any failures
461
- yield* Clock.sleep(config.rebalanceRetryInterval).pipe(Effect.zipRight(rebalance), Effect.forkIn(scope));
462
- }
463
- yield* persistAssignments;
464
- }).pipe(Effect.withSpan("ShardManager.rebalance", {
465
- captureStackTrace: false
466
- }));
467
- const checkRunnerHealth = Effect.suspend(() => Effect.forEach(MutableHashMap.keys(state.allRunners), notifyUnhealthyRunner, {
468
- concurrency: 10,
469
- discard: true
470
- }));
471
- yield* Effect.addFinalizer(() => persistAssignments.pipe(Effect.catchAllCause(cause => Effect.logWarning("Failed to persist assignments on shutdown", cause)), Effect.zipRight(persistRunners.pipe(Effect.catchAllCause(cause => Effect.logWarning("Failed to persist runners on shutdown", cause))))));
472
- yield* Effect.forkIn(persistRunners, scope);
473
- // Start a regular cluster rebalance at the configured interval
474
- yield* rebalance.pipe(Effect.andThen(Effect.sleep(config.rebalanceInterval)), Effect.forever, Effect.forkIn(scope));
475
- yield* checkRunnerHealth.pipe(Effect.andThen(Effect.sleep(config.runnerHealthCheckInterval)), Effect.forever, Effect.forkIn(scope));
476
- yield* Effect.gen(function* () {
477
- const queue = yield* PubSub.subscribe(events);
478
- while (true) {
479
- yield* Effect.logInfo("Shard manager event:", yield* Queue.take(queue));
480
- }
481
- }).pipe(Effect.forkIn(scope));
482
- yield* Effect.logInfo("Shard manager initialized");
483
- return ShardManager.of({
484
- getAssignments,
485
- shardingEvents: address => {
486
- if (Option.isNone(address)) {
487
- return PubSub.subscribe(events);
488
- }
489
- return Effect.tap(PubSub.subscribe(events), () => {
490
- const isRegistered = MutableHashMap.has(state.allRunners, address.value);
491
- if (isRegistered) {
492
- return runnerHealthApi.onConnection(address.value);
493
- }
494
- return Effect.fail(new _ClusterError.RunnerNotRegistered({
495
- address: address.value
496
- }));
497
- });
498
- },
499
- register,
500
- unregister,
501
- rebalance,
502
- notifyUnhealthyRunner,
503
- checkRunnerHealth
504
- });
505
- });
506
- /**
507
- * @since 1.0.0
508
- * @category layer
509
- */
510
- const layer = exports.layer = /*#__PURE__*/Layer.scoped(ShardManager, make);
511
- /**
512
- * @since 1.0.0
513
- * @category Server
514
- */
515
- const layerServerHandlers = exports.layerServerHandlers = /*#__PURE__*/Rpcs.toLayer(/*#__PURE__*/Effect.gen(function* () {
516
- const shardManager = yield* ShardManager;
517
- const clock = yield* Effect.clock;
518
- return {
519
- Register: ({
520
- runner
521
- }) => shardManager.register(runner),
522
- Unregister: ({
523
- address
524
- }) => shardManager.unregister(address),
525
- NotifyUnhealthyRunner: ({
526
- address
527
- }) => shardManager.notifyUnhealthyRunner(address),
528
- GetAssignments: () => Effect.map(shardManager.getAssignments, assignments => Array.from(assignments)),
529
- ShardingEvents: Effect.fnUntraced(function* ({
530
- address
531
- }) {
532
- const queue = yield* shardManager.shardingEvents(address);
533
- const mailbox = yield* Mailbox.make();
534
- yield* mailbox.offer(ShardingEvent.StreamStarted());
535
- yield* Queue.takeBetween(queue, 1, Number.MAX_SAFE_INTEGER).pipe(Effect.flatMap(events => mailbox.offerAll(events)), Effect.forever, Effect.forkScoped);
536
- return mailbox;
537
- }),
538
- GetTime: () => clock.currentTimeMillis
539
- };
540
- }));
541
- /**
542
- * @since 1.0.0
543
- * @category Server
544
- */
545
- const layerServer = exports.layerServer = /*#__PURE__*/RpcServer.layer(Rpcs, {
546
- spanPrefix: "ShardManager",
547
- disableTracing: true
548
- }).pipe(/*#__PURE__*/Layer.provide(layerServerHandlers));
549
- //# sourceMappingURL=ShardManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShardManager.js","names":["Rpc","_interopRequireWildcard","require","RpcClient","RpcGroup","RpcServer","Arr","Clock","Config_","ConfigProvider","Context","Data","Deferred","Duration","Effect","Equal","FiberSet","_Function","Iterable","Layer","Mailbox","Metric","MetricLabel","MutableHashMap","MutableHashSet","Option","PubSub","Queue","Schedule","Schema","_ClusterError","ClusterMetrics","_shardManager","MachineId","_Runner","_RunnerAddress","_RunnerHealth","_Runners","_ShardId","_ShardingConfig","_ShardStorage","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ShardManager","Tag","exports","Config","defaults","rebalanceDebounce","seconds","rebalanceInterval","rebalanceRetryInterval","rebalanceRate","persistRetryCount","persistRetryInterval","runnerHealthCheckInterval","minutes","runnerPingTimeout","configConfig","all","duration","pipe","withDefault","withDescription","number","integer","configFromEnv","withConfigProvider","fromEnv","constantCase","layerConfig","config","succeed","layerConfigFromEnv","effect","map","env","ShardManagerClient","ShardingEventSchema","Union","TaggedStruct","address","RunnerAddress","shards","Array","ShardId","Rpcs","make","payload","runner","Runner","success","Tuple","error","RunnerNotRegistered","stream","Number","ShardingEvent","taggedEnum","makeClientLocal","gen","ShardingConfig","clock","groups","Set","empty","machineId","of","register","_","groupsToAdd","sync","group","add","shardsPerGroup","makeShardId","runnerAddress","unregister","void","notifyUnhealthyRunner","getAssignments","shardingEvents","fnUntraced","_address","mailbox","offer","StreamStarted","getTime","currentTimeMillis","makeClientRpc","client","spanPrefix","disableTracing","Register","version","serverVersion","orDie","Unregister","NotifyUnhealthyRunner","GetAssignments","tap","events","ShardingEvents","asMailbox","take","takeAll","unsafeOfferAll","mb","into","forkScoped","GetTime","layerClientLocal","layerClientRpc","scoped","provide","Protocol","clientProtocol","RpcClientProtocol","shardManagerAddress","storage","ShardStorage","runnersApi","Runners","runnerHealthApi","RunnerHealth","shardingConfig","state","State","fromStorage","scope","unbounded","updateRunnerMetrics","runners","unsafeUpdate","size","allRunners","updateShardMetrics","stats","shardStats","shardCount","perRunner","assignedShards","unassignedShards","unassigned","withRetry","retry","schedule","spaced","times","ignore","persistRunners","unsafeMakeSemaphore","withPermits","suspend","saveRunners","persistAssignments","saveAssignments","assignments","isAlive","logWarning","toString","updateShardsState","isSome","value","fail","addAssignments","logInfo","pretty","current","filter","addRunner","unsafeCurrentTimeMillis","publish","RunnerRegistered","forkIn","rebalance","unassignments","shard","equals","push","none","removeRunner","length","RunnerUnregistered","rebalancing","rebalanceDeferred","rebalanceFibers","withFiberRuntime","fiber","rebalanceLoop","unsafeMake","id","await","deferred","undefined","runRebalance","intoDeferred","identity","onExit","sleep","logDebug","changes","keys","groupAssignments","groupUnassignments","groupChanges","decideAssignmentsForShards","addAllNested","from","increment","rebalances","failedRunners","run","ping","timeout","catchAll","remove","awaitEmpty","failedUnassignments","matchEffect","onFailure","onSuccess","ShardsUnassigned","forEach","some","ShardsAssigned","wereFailures","discard","zipRight","withSpan","captureStackTrace","checkRunnerHealth","concurrency","addFinalizer","catchAllCause","cause","andThen","forever","queue","subscribe","isNone","isRegistered","onConnection","layer","layerServerHandlers","toLayer","shardManager","takeBetween","MAX_SAFE_INTEGER","flatMap","offerAll","layerServer"],"sources":["../../src/ShardManager.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,SAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,GAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,OAAA,GAAAP,uBAAA,CAAAC,OAAA;AAEA,IAAAO,cAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,OAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,IAAA,GAAAV,uBAAA,CAAAC,OAAA;AACA,IAAAU,QAAA,GAAAX,uBAAA,CAAAC,OAAA;AACA,IAAAW,QAAA,GAAAZ,uBAAA,CAAAC,OAAA;AACA,IAAAY,MAAA,GAAAb,uBAAA,CAAAC,OAAA;AACA,IAAAa,KAAA,GAAAd,uBAAA,CAAAC,OAAA;AACA,IAAAc,QAAA,GAAAf,uBAAA,CAAAC,OAAA;AACA,IAAAe,SAAA,GAAAf,OAAA;AACA,IAAAgB,QAAA,GAAAjB,uBAAA,CAAAC,OAAA;AACA,IAAAiB,KAAA,GAAAlB,uBAAA,CAAAC,OAAA;AACA,IAAAkB,OAAA,GAAAnB,uBAAA,CAAAC,OAAA;AACA,IAAAmB,MAAA,GAAApB,uBAAA,CAAAC,OAAA;AACA,IAAAoB,WAAA,GAAArB,uBAAA,CAAAC,OAAA;AACA,IAAAqB,cAAA,GAAAtB,uBAAA,CAAAC,OAAA;AACA,IAAAsB,cAAA,GAAAvB,uBAAA,CAAAC,OAAA;AACA,IAAAuB,MAAA,GAAAxB,uBAAA,CAAAC,OAAA;AACA,IAAAwB,MAAA,GAAAzB,uBAAA,CAAAC,OAAA;AACA,IAAAyB,KAAA,GAAA1B,uBAAA,CAAAC,OAAA;AACA,IAAA0B,QAAA,GAAA3B,uBAAA,CAAAC,OAAA;AACA,IAAA2B,MAAA,GAAA5B,uBAAA,CAAAC,OAAA;AAEA,IAAA4B,aAAA,GAAA5B,OAAA;AACA,IAAA6B,cAAA,GAAA9B,uBAAA,CAAAC,OAAA;AACA,IAAA8B,aAAA,GAAA9B,OAAA;AACA,IAAA+B,SAAA,GAAAhC,uBAAA,CAAAC,OAAA;AACA,IAAAgC,OAAA,GAAAhC,OAAA;AACA,IAAAiC,cAAA,GAAAjC,OAAA;AACA,IAAAkC,aAAA,GAAAlC,OAAA;AACA,IAAAmC,QAAA,GAAAnC,OAAA;AACA,IAAAoC,QAAA,GAAApC,OAAA;AACA,IAAAqC,eAAA,GAAArC,OAAA;AACA,IAAAsC,aAAA,GAAAtC,OAAA;AAAgD,SAAAD,wBAAAwC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAA1C,uBAAA,YAAAA,CAAAwC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AA3ChD;;;;AA6CA;;;;AAIM,MAAOkB,YAAa,sBAAQlD,OAAO,CAACmD,GAAG,CAAC,8BAA8B,CAAC,EAiCzE;AAEJ;;;;AAAAC,OAAA,CAAAF,YAAA,GAAAA,YAAA;AAIM,MAAOG,MAAO,sBAAQrD,OAAO,CAACmD,GAAG,CAAC,qCAAqC,CAAC,EAoC1E;EACF;;;EAGA,OAAgBG,QAAQ,GAAmB;IACzCC,iBAAiB,eAAEpD,QAAQ,CAACqD,OAAO,CAAC,CAAC,CAAC;IACtCC,iBAAiB,eAAEtD,QAAQ,CAACqD,OAAO,CAAC,EAAE,CAAC;IACvCE,sBAAsB,eAAEvD,QAAQ,CAACqD,OAAO,CAAC,EAAE,CAAC;IAC5CG,aAAa,EAAE,CAAC,GAAG,GAAG;IACtBC,iBAAiB,EAAE,GAAG;IACtBC,oBAAoB,eAAE1D,QAAQ,CAACqD,OAAO,CAAC,CAAC,CAAC;IACzCM,yBAAyB,eAAE3D,QAAQ,CAAC4D,OAAO,CAAC,CAAC,CAAC;IAC9CC,iBAAiB,eAAE7D,QAAQ,CAACqD,OAAO,CAAC,CAAC;GACtC;;AAGH;;;;AAAAJ,OAAA,CAAAC,MAAA,GAAAA,MAAA;AAIO,MAAMY,YAAY,GAAAb,OAAA,CAAAa,YAAA,gBAAmCnE,OAAO,CAACoE,GAAG,CAAC;EACtEX,iBAAiB,eAAEzD,OAAO,CAACqE,QAAQ,CAAC,mBAAmB,CAAC,CAACC,IAAI,cAC3DtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACC,iBAAiB,CAAC,eACtDzD,OAAO,CAACwE,eAAe,CAAC,gEAAgE,CAAC,CAC1F;EACDb,iBAAiB,eAAE3D,OAAO,CAACqE,QAAQ,CAAC,mBAAmB,CAAC,CAACC,IAAI,cAC3DtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACG,iBAAiB,CAAC,eACtD3D,OAAO,CAACwE,eAAe,CAAC,iEAAiE,CAAC,CAC3F;EACDZ,sBAAsB,eAAE5D,OAAO,CAACqE,QAAQ,CAAC,wBAAwB,CAAC,CAACC,IAAI,cACrEtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACI,sBAAsB,CAAC,eAC3D5D,OAAO,CAACwE,eAAe,CACrB,4FAA4F,CAC7F,CACF;EACDX,aAAa,eAAE7D,OAAO,CAACyE,MAAM,CAAC,eAAe,CAAC,CAACH,IAAI,cACjDtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACK,aAAa,CAAC,eAClD7D,OAAO,CAACwE,eAAe,CAAC,mDAAmD,CAAC,CAC7E;EACDV,iBAAiB,eAAE9D,OAAO,CAAC0E,OAAO,CAAC,mBAAmB,CAAC,CAACJ,IAAI,cAC1DtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACM,iBAAiB,CAAC,eACtD9D,OAAO,CAACwE,eAAe,CAAC,yEAAyE,CAAC,CACnG;EACDT,oBAAoB,eAAE/D,OAAO,CAACqE,QAAQ,CAAC,sBAAsB,CAAC,CAACC,IAAI,cACjEtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACO,oBAAoB,CAAC,eACzD/D,OAAO,CAACwE,eAAe,CAAC,2EAA2E,CAAC,CACrG;EACDR,yBAAyB,eAAEhE,OAAO,CAACqE,QAAQ,CAAC,2BAA2B,CAAC,CAACC,IAAI,cAC3EtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACQ,yBAAyB,CAAC,eAC9DhE,OAAO,CAACwE,eAAe,CAAC,sDAAsD,CAAC,CAChF;EACDN,iBAAiB,eAAElE,OAAO,CAACqE,QAAQ,CAAC,mBAAmB,CAAC,CAACC,IAAI,cAC3DtE,OAAO,CAACuE,WAAW,CAAChB,MAAM,CAACC,QAAQ,CAACU,iBAAiB,CAAC,eACtDlE,OAAO,CAACwE,eAAe,CAAC,+DAA+D,CAAC;CAE3F,CAAC;AAEF;;;;AAIO,MAAMG,aAAa,GAAArB,OAAA,CAAAqB,aAAA,gBAA+CR,YAAY,CAACG,IAAI,cACxFhE,MAAM,CAACsE,kBAAkB,cACvB3E,cAAc,CAAC4E,OAAO,EAAE,CAACP,IAAI,CAC3BrE,cAAc,CAAC6E,YAAY,CAC5B,CACF,CACF;AAED;;;;AAIO,MAAMC,WAAW,GAAIC,MAA4C,IACtErE,KAAK,CAACsE,OAAO,CAAC1B,MAAM,EAAE;EACpB,GAAGA,MAAM,CAACC,QAAQ;EAClB,GAAGwB;CACJ,CAAC;AAEJ;;;;AAAA1B,OAAA,CAAAyB,WAAA,GAAAA,WAAA;AAIO,MAAMG,kBAAkB,GAAIF,MAA4C,IAC7ErE,KAAK,CAACwE,MAAM,CAAC5B,MAAM,EAAEyB,MAAM,GAAG1E,MAAM,CAAC8E,GAAG,CAACT,aAAa,EAAGU,GAAG,KAAM;EAAE,GAAGA,GAAG;EAAE,GAAGL;AAAM,CAAE,CAAC,CAAC,GAAGL,aAAa,CAAC;AAE5G;;;;;;;AAAArB,OAAA,CAAA4B,kBAAA,GAAAA,kBAAA;AAOM,MAAOI,kBACX,sBAAQpF,OAAO,CAACmD,GAAG,CAAC,iDAAiD,CAAC,EA6BlE;AAGN;;;;AAAAC,OAAA,CAAAgC,kBAAA,GAAAA,kBAAA;AAIO,MAAMC,mBAAmB,GAAAjC,OAAA,CAAAiC,mBAAA,gBAAGlE,MAAM,CAACmE,KAAK,cAC7CnE,MAAM,CAACoE,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,eACxCpE,MAAM,CAACoE,YAAY,CAAC,gBAAgB,EAAE;EACpCC,OAAO,EAAEC,4BAAa;EACtBC,MAAM,eAAEvE,MAAM,CAACwE,KAAK,CAACC,gBAAO;CAC7B,CAAC,eACFzE,MAAM,CAACoE,YAAY,CAAC,kBAAkB,EAAE;EACtCC,OAAO,EAAEC,4BAAa;EACtBC,MAAM,eAAEvE,MAAM,CAACwE,KAAK,CAACC,gBAAO;CAC7B,CAAC,eACFzE,MAAM,CAACoE,YAAY,CAAC,kBAAkB,EAAE;EACtCC,OAAO,EAAEC;CACV,CAAC,eACFtE,MAAM,CAACoE,YAAY,CAAC,oBAAoB,EAAE;EACxCC,OAAO,EAAEC;CACV,CAAC,CACyC;AAE7C;;;;;;AAMM,MAAOI,IAAK,sBAAQnG,QAAQ,CAACoG,IAAI,cACrCxG,GAAG,CAACwG,IAAI,CAAC,UAAU,EAAE;EACnBC,OAAO,EAAE;IAAEC,MAAM,EAAEC;EAAM,CAAE;EAC3BC,OAAO,EAAE3E,SAAS,CAACA;CACpB,CAAC,eACFjC,GAAG,CAACwG,IAAI,CAAC,YAAY,EAAE;EACrBC,OAAO,EAAE;IAAEP,OAAO,EAAEC;EAAa;CAClC,CAAC,eACFnG,GAAG,CAACwG,IAAI,CAAC,uBAAuB,EAAE;EAChCC,OAAO,EAAE;IAAEP,OAAO,EAAEC;EAAa;CAClC,CAAC,eACFnG,GAAG,CAACwG,IAAI,CAAC,gBAAgB,EAAE;EACzBI,OAAO,eAAE/E,MAAM,CAACwE,KAAK,cAACxE,MAAM,CAACgF,KAAK,CAACP,gBAAO,eAAEzE,MAAM,CAACJ,MAAM,CAAC0E,4BAAa,CAAC,CAAC;CAC1E,CAAC,eACFnG,GAAG,CAACwG,IAAI,CAAC,gBAAgB,EAAE;EACzBC,OAAO,EAAE;IAAEP,OAAO,eAAErE,MAAM,CAACJ,MAAM,CAAC0E,4BAAa;EAAC,CAAE;EAClDS,OAAO,EAAEb,mBAAmB;EAC5Be,KAAK,EAAEC,iCAAmB;EAC1BC,MAAM,EAAE;CACT,CAAC,eACFhH,GAAG,CAACwG,IAAI,CAAC,SAAS,EAAE;EAClBI,OAAO,EAAE/E,MAAM,CAACoF;CACjB,CAAC,CACH;AAoBD;;;;AAAAnD,OAAA,CAAAyC,IAAA,GAAAA,IAAA;AAIO,MAAMW,aAAa,GAAApD,OAAA,CAAAoD,aAAA,gBAAGvG,IAAI,CAACwG,UAAU,EAAiB;AAE7D;;;;AAIO,MAAMC,eAAe,GAAAtD,OAAA,CAAAsD,eAAA,gBAAGtG,MAAM,CAACuG,GAAG,CAAC,aAAS;EACjD,MAAM7B,MAAM,GAAG,OAAO8B,8BAAc;EACpC,MAAMC,KAAK,GAAG,OAAOzG,MAAM,CAACyG,KAAK;EAEjC,MAAMC,MAAM,GAAG,IAAIC,GAAG,EAAU;EAChC,MAAMrB,MAAM,GAAG7E,cAAc,CAACmG,KAAK,EAAyC;EAE5E,IAAIC,SAAS,GAAG,CAAC;EAEjB,OAAO7B,kBAAkB,CAAC8B,EAAE,CAAC;IAC3BC,QAAQ,EAAEA,CAACC,CAAC,EAAEC,WAAW,KACvBjH,MAAM,CAACkH,IAAI,CAAC,MAAK;MACf,KAAK,MAAMC,KAAK,IAAIF,WAAW,EAAE;QAC/B,IAAIP,MAAM,CAACpE,GAAG,CAAC6E,KAAK,CAAC,EAAE;QACvBT,MAAM,CAACU,GAAG,CAACD,KAAK,CAAC;QACjB,KAAK,IAAIpF,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI2C,MAAM,CAAC2C,cAAc,EAAEtF,CAAC,EAAE,EAAE;UAC/CtB,cAAc,CAAC+B,GAAG,CAAC8C,MAAM,EAAE,IAAAgC,aAAW,EAACH,KAAK,EAAEpF,CAAC,CAAC,EAAE2C,MAAM,CAAC6C,aAAa,CAAC;QACzE;MACF;MACA,OAAOpG,SAAS,CAACuE,IAAI,CAAC,EAAEmB,SAAS,CAAC;IACpC,CAAC,CAAC;IACJW,UAAU,EAAEA,CAAA,KAAMxH,MAAM,CAACyH,IAAI;IAC7BC,qBAAqB,EAAEA,CAAA,KAAM1H,MAAM,CAACyH,IAAI;IACxCE,cAAc,EAAE3H,MAAM,CAAC2E,OAAO,CAACW,MAAM,CAAC;IACtCsC,cAAc,EAAE5H,MAAM,CAAC6H,UAAU,CAAC,WAAUC,QAAQ;MAClD,MAAMC,OAAO,GAAG,OAAOzH,OAAO,CAACoF,IAAI,EAAiB;MACpD,OAAOqC,OAAO,CAACC,KAAK,CAAC5B,aAAa,CAAC6B,aAAa,EAAE,CAAC;MACnD,OAAOF,OAAO;IAChB,CAAC,CAAC;IACFG,OAAO,EAAEzB,KAAK,CAAC0B;GAChB,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIO,MAAMC,aAAa,GAAApF,OAAA,CAAAoF,aAAA,gBAItBpI,MAAM,CAACuG,GAAG,CAAC,aAAS;EACtB,MAAM7B,MAAM,GAAG,OAAO8B,8BAAc;EACpC,MAAM6B,MAAM,GAAG,OAAOhJ,SAAS,CAACqG,IAAI,CAACD,IAAI,EAAE;IACzC6C,UAAU,EAAE,oBAAoB;IAChCC,cAAc,EAAE;GACjB,CAAC;EAEF,OAAOvD,kBAAkB,CAAC8B,EAAE,CAAC;IAC3BC,QAAQ,EAAEA,CAAC3B,OAAO,EAAEsB,MAAM,KACxB2B,MAAM,CAACG,QAAQ,CAAC;MAAE5C,MAAM,EAAEC,cAAM,CAACH,IAAI,CAAC;QAAEN,OAAO;QAAEqD,OAAO,EAAE/D,MAAM,CAACgE,aAAa;QAAEhC;MAAM,CAAE;IAAC,CAAE,CAAC,CAAC1C,IAAI,CAC/FhE,MAAM,CAAC2I,KAAK,CACb;IACHnB,UAAU,EAAGpC,OAAO,IAAKpF,MAAM,CAAC2I,KAAK,CAACN,MAAM,CAACO,UAAU,CAAC;MAAExD;IAAO,CAAE,CAAC,CAAC;IACrEsC,qBAAqB,EAAGtC,OAAO,IAAKpF,MAAM,CAAC2I,KAAK,CAACN,MAAM,CAACQ,qBAAqB,CAAC;MAAEzD;IAAO,CAAE,CAAC,CAAC;IAC3FuC,cAAc,EAAE3H,MAAM,CAAC2I,KAAK,CAACN,MAAM,CAACS,cAAc,EAAE,CAAC;IACrDlB,cAAc,EAAGxC,OAAO,IACtB9E,OAAO,CAACoF,IAAI,EAAiB,CAAC1B,IAAI,CAChChE,MAAM,CAAC+I,GAAG,CAAC/I,MAAM,CAAC6H,UAAU,CAC1B,WAAUE,OAAO;MACf,MAAMiB,MAAM,GAAG,OAAOX,MAAM,CAACY,cAAc,CAAC;QAAE7D;MAAO,CAAE,EAAE;QAAE8D,SAAS,EAAE;MAAI,CAAE,CAAC;MAC7E,MAAMC,IAAI,GAAGnJ,MAAM,CAAC2I,KAAK,CAACK,MAAM,CAACI,OAAO,CAAC;MACzC,OAAO,IAAI,EAAE;QACXrB,OAAO,CAACsB,cAAc,CAAC,CAAC,OAAOF,IAAI,EAAE,CAAC,CAAC,CAAC;MAC1C;IACF,CAAC,EACD,CAACtE,MAAM,EAAEyE,EAAE,KAAKhJ,OAAO,CAACiJ,IAAI,CAAC1E,MAAM,EAAEyE,EAAE,CAAC,EACxCtJ,MAAM,CAACwJ,UAAU,CAClB,CAAC,CACH;IACHtB,OAAO,EAAElI,MAAM,CAAC2I,KAAK,CAACN,MAAM,CAACoB,OAAO,EAAE;GACvC,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIO,MAAMC,gBAAgB,GAAA1G,OAAA,CAAA0G,gBAAA,gBAIzBrJ,KAAK,CAACwE,MAAM,CAACG,kBAAkB,EAAEsB,eAAe,CAAC;AAErD;;;;AAIO,MAAMqD,cAAc,GAAA3G,OAAA,CAAA2G,cAAA,gBAIvBtJ,KAAK,CAACuJ,MAAM,CAAC5E,kBAAkB,EAAEoD,aAAa,CAAC,CAACpE,IAAI,cACtD3D,KAAK,CAACwJ,OAAO,cAACxJ,KAAK,CAACuJ,MAAM,CACxBvK,SAAS,CAACyK,QAAQ,eAClB9J,MAAM,CAACuG,GAAG,CAAC,aAAS;EAClB,MAAM7B,MAAM,GAAG,OAAO8B,8BAAc;EACpC,MAAMuD,cAAc,GAAG,OAAOC,0BAAiB;EAC/C,OAAO,OAAOD,cAAc,CAACrF,MAAM,CAACuF,mBAAmB,CAAC;AAC1D,CAAC,CAAC,CACH,CAAC,CACH;AAED;;;;AAIO,MAAMvE,IAAI,GAAA1C,OAAA,CAAA0C,IAAA,gBAAG1F,MAAM,CAACuG,GAAG,CAAC,aAAS;EACtC,MAAM2D,OAAO,GAAG,OAAOC,0BAAY;EACnC,MAAMC,UAAU,GAAG,OAAOC,gBAAO;EACjC,MAAMC,eAAe,GAAG,OAAOC,0BAAY;EAC3C,MAAM9D,KAAK,GAAG,OAAOzG,MAAM,CAACyG,KAAK;EACjC,MAAM/B,MAAM,GAAG,OAAOzB,MAAM;EAC5B,MAAMuH,cAAc,GAAG,OAAOhE,8BAAc;EAE5C,MAAMiE,KAAK,GAAG,OAAOzK,MAAM,CAAC2I,KAAK,CAAC+B,mBAAK,CAACC,WAAW,CAACH,cAAc,CAACnD,cAAc,CAAC,CAAC;EACnF,MAAMuD,KAAK,GAAG,OAAO5K,MAAM,CAAC4K,KAAK;EACjC,MAAM5B,MAAM,GAAG,OAAOpI,MAAM,CAACiK,SAAS,EAAiB;EAEvD,SAASC,mBAAmBA,CAAA;IAC1B7J,cAAc,CAAC8J,OAAO,CAACC,YAAY,CAACvK,cAAc,CAACwK,IAAI,CAACR,KAAK,CAACS,UAAU,CAAC,EAAE,EAAE,CAAC;EAChF;EAEA,SAASC,kBAAkBA,CAAA;IACzB,MAAMC,KAAK,GAAGX,KAAK,CAACY,UAAU;IAC9B,KAAK,MAAM,CAACjG,OAAO,EAAEkG,UAAU,CAAC,IAAIF,KAAK,CAACG,SAAS,EAAE;MACnDtK,cAAc,CAACuK,cAAc,CAACR,YAAY,CACxCM,UAAU,EACV,CAAC9K,WAAW,CAACkF,IAAI,CAAC,SAAS,EAAEN,OAAO,CAAC,CAAC,CACvC;IACH;IACAnE,cAAc,CAACwK,gBAAgB,CAACT,YAAY,CAACI,KAAK,CAACM,UAAU,EAAE,EAAE,CAAC;EACpE;EACAP,kBAAkB,EAAE;EAEpB,SAASQ,SAASA,CAAU9G,MAA8B;IACxD,OAAOA,MAAM,CAACb,IAAI,CAChBhE,MAAM,CAAC4L,KAAK,CAAC;MACXC,QAAQ,EAAE/K,QAAQ,CAACgL,MAAM,CAACpH,MAAM,CAAClB,iBAAiB,CAAC;MACnDuI,KAAK,EAAErH,MAAM,CAAClB;KACf,CAAC,EACFxD,MAAM,CAACgM,MAAM,CACd;EACH;EAEA,MAAMC,cAAc,GAAGjM,MAAM,CAACkM,mBAAmB,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC,CAACR,SAAS,CAC3E3L,MAAM,CAACoM,OAAO,CAAC,MACblC,OAAO,CAACmC,WAAW,CACjBjM,QAAQ,CAAC0E,GAAG,CAAC2F,KAAK,CAACS,UAAU,EAAE,CAAC,CAAC9F,OAAO,EAAEQ,MAAM,CAAC,KAAK,CAACR,OAAO,EAAEQ,MAAM,CAACA,MAAM,CAAC,CAAC,CAChF,CACF,CACF,CAAC;EAEF,MAAM0G,kBAAkB,GAAGtM,MAAM,CAACkM,mBAAmB,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,CAAC,CAACR,SAAS,CAC/E3L,MAAM,CAACoM,OAAO,CAAC,MAAMlC,OAAO,CAACqC,eAAe,CAAC9B,KAAK,CAAC+B,WAAW,CAAC,CAAC,CACjE,CAAC;EAEF,MAAM9E,qBAAqB,GAAG1H,MAAM,CAAC6H,UAAU,CAAC,WAAUzC,OAAsB;IAC9E,IAAI,CAAC3E,cAAc,CAAC6B,GAAG,CAACmI,KAAK,CAACS,UAAU,EAAE9F,OAAO,CAAC,EAAE;IAEpD,IAAI,EAAE,OAAOkF,eAAe,CAACmC,OAAO,CAACrH,OAAO,CAAC,CAAC,EAAE;MAC9C,OAAOpF,MAAM,CAAC0M,UAAU,CAAC,sBAAsBtH,OAAO,CAACuH,QAAQ,EAAE,gBAAgB,CAAC;MAClF,OAAOnF,UAAU,CAACpC,OAAO,CAAC;IAC5B;EACF,CAAC,CAAC;EAEF,SAASwH,iBAAiBA,CACxBtH,MAAyB,EACzBF,OAAqC;IAErC,OAAOpF,MAAM,CAACoM,OAAO,CAAC,MAAK;MACzB,IAAIzL,MAAM,CAACkM,MAAM,CAACzH,OAAO,CAAC,IAAI,CAAC3E,cAAc,CAAC6B,GAAG,CAACmI,KAAK,CAACS,UAAU,EAAE9F,OAAO,CAAC0H,KAAK,CAAC,EAAE;QAClF,OAAO9M,MAAM,CAAC+M,IAAI,CAAC,IAAI9G,iCAAmB,CAAC;UAAEb,OAAO,EAAEA,OAAO,CAAC0H;QAAK,CAAE,CAAC,CAAC;MACzE;MACArC,KAAK,CAACuC,cAAc,CAAC1H,MAAM,EAAEF,OAAO,CAAC;MACrC,OAAOpF,MAAM,CAACyH,IAAI;IACpB,CAAC,CAAC;EACJ;EAEA,MAAME,cAAc,GAAG3H,MAAM,CAACkH,IAAI,CAAC,MAAMuD,KAAK,CAAC+B,WAAW,CAAC;EAE3D,IAAI3F,SAAS,GAAG,CAAC;EACjB,MAAME,QAAQ,GAAG/G,MAAM,CAAC6H,UAAU,CAAC,WAAUjC,MAAc;IACzD,OAAO5F,MAAM,CAACiN,OAAO,CAAC,sBAAsBpH,cAAM,CAACqH,MAAM,CAACtH,MAAM,CAAC,EAAE,CAAC;IAEpE,MAAMuH,OAAO,GAAG1M,cAAc,CAAC8B,GAAG,CAACkI,KAAK,CAACS,UAAU,EAAEtF,MAAM,CAACR,OAAO,CAAC,CAACpB,IAAI,CACvErD,MAAM,CAACyM,MAAM,CAAEtL,CAAC,IAAKA,CAAC,CAAC8D,MAAM,CAAC6C,OAAO,KAAK7C,MAAM,CAAC6C,OAAO,CAAC,CAC1D;IACD,IAAI9H,MAAM,CAACkM,MAAM,CAACM,OAAO,CAAC,EAAE;MAC1B,OAAOhM,SAAS,CAACuE,IAAI,CAAC,EAAEmB,SAAS,CAAC;IACpC;IAEA4D,KAAK,CAAC4C,SAAS,CAACzH,MAAM,EAAEa,KAAK,CAAC6G,uBAAuB,EAAE,CAAC;IACxDxC,mBAAmB,EAAE;IACrB,OAAOlK,MAAM,CAAC2M,OAAO,CAACvE,MAAM,EAAE5C,aAAa,CAACoH,gBAAgB,CAAC;MAAEpI,OAAO,EAAEQ,MAAM,CAACR;IAAO,CAAE,CAAC,CAAC;IAC1F,OAAOpF,MAAM,CAACyN,MAAM,CAACxB,cAAc,EAAErB,KAAK,CAAC;IAC3C,OAAO5K,MAAM,CAACyN,MAAM,CAACC,SAAS,EAAE9C,KAAK,CAAC;IACtC,OAAOzJ,SAAS,CAACuE,IAAI,CAAC,EAAEmB,SAAS,CAAC;EACpC,CAAC,CAAC;EAEF,MAAMW,UAAU,GAAGxH,MAAM,CAAC6H,UAAU,CAAC,WAAUzC,OAAsB;IACnE,IAAI,CAAC3E,cAAc,CAAC6B,GAAG,CAACmI,KAAK,CAACS,UAAU,EAAE9F,OAAO,CAAC,EAAE;IAEpD,OAAOpF,MAAM,CAACiN,OAAO,CAAC,kCAAkC,EAAE7H,OAAO,CAAC;IAClE,MAAMuI,aAAa,GAAGnO,GAAG,CAACoH,KAAK,EAAW;IAC1C,KAAK,MAAM,CAACgH,KAAK,EAAEhI,MAAM,CAAC,IAAI6E,KAAK,CAAC+B,WAAW,EAAE;MAC/C,IAAI7L,MAAM,CAACkM,MAAM,CAACjH,MAAM,CAAC,IAAI3F,KAAK,CAAC4N,MAAM,CAACjI,MAAM,CAACkH,KAAK,EAAE1H,OAAO,CAAC,EAAE;QAChEuI,aAAa,CAACG,IAAI,CAACF,KAAK,CAAC;MAC3B;IACF;IACAnD,KAAK,CAACuC,cAAc,CAACW,aAAa,EAAEhN,MAAM,CAACoN,IAAI,EAAE,CAAC;IAClDtD,KAAK,CAACuD,YAAY,CAAC5I,OAAO,CAAC;IAC3B0F,mBAAmB,EAAE;IAErB,IAAI6C,aAAa,CAACM,MAAM,GAAG,CAAC,EAAE;MAC5B,OAAOrN,MAAM,CAAC2M,OAAO,CAACvE,MAAM,EAAE5C,aAAa,CAAC8H,kBAAkB,CAAC;QAAE9I;MAAO,CAAE,CAAC,CAAC;IAC9E;IAEA,OAAOpF,MAAM,CAACyN,MAAM,CAACxB,cAAc,EAAErB,KAAK,CAAC;IAC3C,OAAO5K,MAAM,CAACyN,MAAM,CAACC,SAAS,EAAE9C,KAAK,CAAC;EACxC,CAAC,CAAC;EAEF,IAAIuD,WAAW,GAAG,KAAK;EACvB,IAAIC,iBAAsD;EAC1D,MAAMC,eAAe,GAAG,OAAOnO,QAAQ,CAACwF,IAAI,EAAE;EAE9C,MAAMgI,SAAS,GAAG1N,MAAM,CAACsO,gBAAgB,CAAQC,KAAK,IAAI;IACxD,IAAI,CAACJ,WAAW,EAAE;MAChBA,WAAW,GAAG,IAAI;MAClB,OAAOK,aAAa;IACtB;IACA,IAAI,CAACJ,iBAAiB,EAAE;MACtBA,iBAAiB,GAAGtO,QAAQ,CAAC2O,UAAU,CAACF,KAAK,CAACG,EAAE,EAAE,CAAC;IACrD;IACA,OAAO5O,QAAQ,CAAC6O,KAAK,CAACP,iBAAiB,CAAC;EAC1C,CAAC,CAAC;EAEF,MAAMI,aAAa,GAAwBxO,MAAM,CAACoM,OAAO,CAAC,MAAK;IAC7D,MAAMwC,QAAQ,GAAGR,iBAAiB;IAClCA,iBAAiB,GAAGS,SAAS;IAC7B,OAAOC,YAAY,CAAC9K,IAAI,CACtB4K,QAAQ,GAAG5O,MAAM,CAAC+O,YAAY,CAACH,QAAQ,CAAC,GAAGI,kBAAQ,EACnDhP,MAAM,CAACiP,MAAM,CAAC,MAAK;MACjB,IAAI,CAACb,iBAAiB,EAAE;QACtBD,WAAW,GAAG,KAAK;QACnB,OAAOnO,MAAM,CAACyH,IAAI;MACpB;MACA,OAAOzH,MAAM,CAACyN,MAAM,CAACe,aAAa,EAAE5D,KAAK,CAAC;IAC5C,CAAC,CAAC,CACH;EACH,CAAC,CAAC;EAEF,MAAMkE,YAAY,GAAG9O,MAAM,CAACuG,GAAG,CAAC,aAAS;IACvC,OAAOvG,MAAM,CAACkP,KAAK,CAACxK,MAAM,CAACvB,iBAAiB,CAAC;IAE7C,IAAIsH,KAAK,CAACnF,MAAM,CAAC2F,IAAI,KAAK,CAAC,EAAE;MAC3B,OAAOjL,MAAM,CAACmP,QAAQ,CAAC,wBAAwB,CAAC;MAChD;IACF;IAEA;IACA,MAAM3C,WAAW,GAAG/L,cAAc,CAACmG,KAAK,EAAyD;IACjG,MAAM+G,aAAa,GAAGlN,cAAc,CAACmG,KAAK,EAAyD;IACnG,MAAMwI,OAAO,GAAG1O,cAAc,CAACkG,KAAK,EAAiB;IACrD,KAAK,MAAMO,KAAK,IAAIsD,KAAK,CAACnF,MAAM,CAAC+J,IAAI,EAAE,EAAE;MACvC,MAAM,CAACC,gBAAgB,EAAEC,kBAAkB,EAAEC,YAAY,CAAC,GAAG,IAAAC,wCAA0B,EAAChF,KAAK,EAAEtD,KAAK,CAAC;MACrG,KAAK,MAAM,CAAC/B,OAAO,EAAEE,MAAM,CAAC,IAAIgK,gBAAgB,EAAE;QAChD,IAAAI,0BAAY,EAAClD,WAAW,EAAEpH,OAAO,EAAEG,KAAK,CAACoK,IAAI,CAACrK,MAAM,EAAGoJ,EAAE,IAAK,IAAApH,aAAW,EAACH,KAAK,EAAEuH,EAAE,CAAC,CAAC,CAAC;MACxF;MACA,KAAK,MAAM,CAACtJ,OAAO,EAAEE,MAAM,CAAC,IAAIiK,kBAAkB,EAAE;QAClD,IAAAG,0BAAY,EAAC/B,aAAa,EAAEvI,OAAO,EAAEG,KAAK,CAACoK,IAAI,CAACrK,MAAM,EAAGoJ,EAAE,IAAK,IAAApH,aAAW,EAACH,KAAK,EAAEuH,EAAE,CAAC,CAAC,CAAC;MAC1F;MACA,KAAK,MAAMtJ,OAAO,IAAIoK,YAAY,EAAE;QAClC9O,cAAc,CAAC0G,GAAG,CAACgI,OAAO,EAAEhK,OAAO,CAAC;MACtC;IACF;IAEA,OAAOpF,MAAM,CAACmP,QAAQ,CAAC,oBAAoB,CAAC;IAE5C,IAAIzO,cAAc,CAACuK,IAAI,CAACmE,OAAO,CAAC,KAAK,CAAC,EAAE;IAExC,OAAO7O,MAAM,CAACqP,SAAS,CAAC3O,cAAc,CAAC4O,UAAU,CAAC;IAElD;IACA,MAAMC,aAAa,GAAGpP,cAAc,CAACkG,KAAK,EAAiB;IAC3D,KAAK,MAAMxB,OAAO,IAAIgK,OAAO,EAAE;MAC7B,OAAOlP,QAAQ,CAAC6P,GAAG,CACjB1B,eAAe,EACfjE,UAAU,CAAC4F,IAAI,CAAC5K,OAAO,CAAC,CAACpB,IAAI,CAC3BhE,MAAM,CAACiQ,OAAO,CAACvL,MAAM,CAACd,iBAAiB,CAAC,EACxC5D,MAAM,CAACkQ,QAAQ,CAAC,MAAK;QACnBxP,cAAc,CAAC0G,GAAG,CAAC0I,aAAa,EAAE1K,OAAO,CAAC;QAC1C3E,cAAc,CAAC0P,MAAM,CAAC3D,WAAW,EAAEpH,OAAO,CAAC;QAC3C3E,cAAc,CAAC0P,MAAM,CAACxC,aAAa,EAAEvI,OAAO,CAAC;QAC7C,OAAOpF,MAAM,CAACyH,IAAI;MACpB,CAAC,CAAC,CACH,CACF;IACH;IACA,OAAOvH,QAAQ,CAACkQ,UAAU,CAAC/B,eAAe,CAAC;IAE3C,MAAMgC,mBAAmB,GAAG,IAAI1J,GAAG,EAAW;IAC9C,KAAK,MAAM,CAACvB,OAAO,EAAEE,MAAM,CAAC,IAAIqI,aAAa,EAAE;MAC7C,OAAOzN,QAAQ,CAAC6P,GAAG,CACjB1B,eAAe,EACfzB,iBAAiB,CAACtH,MAAM,EAAE3E,MAAM,CAACoN,IAAI,EAAE,CAAC,CAAC/J,IAAI,CAC3ChE,MAAM,CAACsQ,WAAW,CAAC;QACjBC,SAAS,EAAEA,CAAA,KAAK;UACd7P,cAAc,CAAC0G,GAAG,CAAC0I,aAAa,EAAE1K,OAAO,CAAC;UAC1C,KAAK,MAAMwI,KAAK,IAAItI,MAAM,EAAE;YAC1B+K,mBAAmB,CAACjJ,GAAG,CAACwG,KAAK,CAAC;UAChC;UACA;UACAnN,cAAc,CAAC0P,MAAM,CAAC3D,WAAW,EAAEpH,OAAO,CAAC;UAC3C,OAAOpF,MAAM,CAACyH,IAAI;QACpB,CAAC;QACD+I,SAAS,EAAEA,CAAA,KACT5P,MAAM,CAAC2M,OAAO,CAACvE,MAAM,EAAE5C,aAAa,CAACqK,gBAAgB,CAAC;UAAErL,OAAO;UAAEE,MAAM,EAAEC,KAAK,CAACoK,IAAI,CAACrK,MAAM;QAAC,CAAE,CAAC;OACjG,CAAC,CACH,CACF;IACH;IACA,OAAOpF,QAAQ,CAACkQ,UAAU,CAAC/B,eAAe,CAAC;IAE3C;IACA5N,cAAc,CAACiQ,OAAO,CAAClE,WAAW,EAAE,CAAClH,MAAM,EAAEF,OAAO,KAAI;MACtD,KAAK,MAAMwI,KAAK,IAAIyC,mBAAmB,EAAE;QACvC3P,cAAc,CAACyP,MAAM,CAAC7K,MAAM,EAAEsI,KAAK,CAAC;MACtC;MACA,IAAIlN,cAAc,CAACuK,IAAI,CAAC3F,MAAM,CAAC,KAAK,CAAC,EAAE;QACrC7E,cAAc,CAAC0P,MAAM,CAAC3D,WAAW,EAAEpH,OAAO,CAAC;MAC7C;IACF,CAAC,CAAC;IAEF;IACA,KAAK,MAAM,CAACA,OAAO,EAAEE,MAAM,CAAC,IAAIkH,WAAW,EAAE;MAC3C,OAAOtM,QAAQ,CAAC6P,GAAG,CACjB1B,eAAe,EACfzB,iBAAiB,CAACtH,MAAM,EAAE3E,MAAM,CAACgQ,IAAI,CAACvL,OAAO,CAAC,CAAC,CAACpB,IAAI,CAClDhE,MAAM,CAACsQ,WAAW,CAAC;QACjBC,SAAS,EAAEA,CAAA,KAAK;UACd7P,cAAc,CAAC0G,GAAG,CAAC0I,aAAa,EAAE1K,OAAO,CAAC;UAC1C,OAAOpF,MAAM,CAACyH,IAAI;QACpB,CAAC;QACD+I,SAAS,EAAEA,CAAA,KACT5P,MAAM,CAAC2M,OAAO,CAACvE,MAAM,EAAE5C,aAAa,CAACwK,cAAc,CAAC;UAAExL,OAAO;UAAEE,MAAM,EAAEC,KAAK,CAACoK,IAAI,CAACrK,MAAM;QAAC,CAAE,CAAC;OAC/F,CAAC,CACH,CACF;IACH;IACA,OAAOpF,QAAQ,CAACkQ,UAAU,CAAC/B,eAAe,CAAC;IAE3ClD,kBAAkB,EAAE;IAEpB,MAAM0F,YAAY,GAAGnQ,cAAc,CAACuK,IAAI,CAAC6E,aAAa,CAAC,GAAG,CAAC;IAC3D,IAAIe,YAAY,EAAE;MAChB;MACA,OAAO7Q,MAAM,CAAC0Q,OAAO,CAACZ,aAAa,EAAEpI,qBAAqB,EAAE;QAAEoJ,OAAO,EAAE;MAAI,CAAE,CAAC,CAAC9M,IAAI,CACjFhE,MAAM,CAACyN,MAAM,CAAC7C,KAAK,CAAC,CACrB;MACD,OAAO5K,MAAM,CAAC0M,UAAU,CAAC,+BAA+B,EAAEoD,aAAa,CAAC;IAC1E;IAEA,IAAIe,YAAY,EAAE;MAChB;MACA,OAAOpR,KAAK,CAACyP,KAAK,CAACxK,MAAM,CAACpB,sBAAsB,CAAC,CAACU,IAAI,CACpDhE,MAAM,CAAC+Q,QAAQ,CAACrD,SAAS,CAAC,EAC1B1N,MAAM,CAACyN,MAAM,CAAC7C,KAAK,CAAC,CACrB;IACH;IAEA,OAAO0B,kBAAkB;EAC3B,CAAC,CAAC,CAACtI,IAAI,CAAChE,MAAM,CAACgR,QAAQ,CAAC,wBAAwB,EAAE;IAAEC,iBAAiB,EAAE;EAAK,CAAE,CAAC,CAAC;EAEhF,MAAMC,iBAAiB,GAAwBlR,MAAM,CAACoM,OAAO,CAAC,MAC5DpM,MAAM,CAAC0Q,OAAO,CAACjQ,cAAc,CAAC4O,IAAI,CAAC5E,KAAK,CAACS,UAAU,CAAC,EAAExD,qBAAqB,EAAE;IAC3EyJ,WAAW,EAAE,EAAE;IACfL,OAAO,EAAE;GACV,CAAC,CACH;EAED,OAAO9Q,MAAM,CAACoR,YAAY,CAAC,MACzB9E,kBAAkB,CAACtI,IAAI,CACrBhE,MAAM,CAACqR,aAAa,CAAEC,KAAK,IAAKtR,MAAM,CAAC0M,UAAU,CAAC,2CAA2C,EAAE4E,KAAK,CAAC,CAAC,EACtGtR,MAAM,CAAC+Q,QAAQ,CAAC9E,cAAc,CAACjI,IAAI,CACjChE,MAAM,CAACqR,aAAa,CAAEC,KAAK,IAAKtR,MAAM,CAAC0M,UAAU,CAAC,uCAAuC,EAAE4E,KAAK,CAAC,CAAC,CACnG,CAAC,CACH,CACF;EAED,OAAOtR,MAAM,CAACyN,MAAM,CAACxB,cAAc,EAAErB,KAAK,CAAC;EAE3C;EACA,OAAO8C,SAAS,CAAC1J,IAAI,CACnBhE,MAAM,CAACuR,OAAO,CAACvR,MAAM,CAACkP,KAAK,CAACxK,MAAM,CAACrB,iBAAiB,CAAC,CAAC,EACtDrD,MAAM,CAACwR,OAAO,EACdxR,MAAM,CAACyN,MAAM,CAAC7C,KAAK,CAAC,CACrB;EAED,OAAOsG,iBAAiB,CAAClN,IAAI,CAC3BhE,MAAM,CAACuR,OAAO,CAACvR,MAAM,CAACkP,KAAK,CAACxK,MAAM,CAAChB,yBAAyB,CAAC,CAAC,EAC9D1D,MAAM,CAACwR,OAAO,EACdxR,MAAM,CAACyN,MAAM,CAAC7C,KAAK,CAAC,CACrB;EAED,OAAO5K,MAAM,CAACuG,GAAG,CAAC,aAAS;IACzB,MAAMkL,KAAK,GAAG,OAAO7Q,MAAM,CAAC8Q,SAAS,CAAC1I,MAAM,CAAC;IAC7C,OAAO,IAAI,EAAE;MACX,OAAOhJ,MAAM,CAACiN,OAAO,CAAC,sBAAsB,EAAE,OAAOpM,KAAK,CAACsI,IAAI,CAACsI,KAAK,CAAC,CAAC;IACzE;EACF,CAAC,CAAC,CAACzN,IAAI,CAAChE,MAAM,CAACyN,MAAM,CAAC7C,KAAK,CAAC,CAAC;EAE7B,OAAO5K,MAAM,CAACiN,OAAO,CAAC,2BAA2B,CAAC;EAElD,OAAOnK,YAAY,CAACgE,EAAE,CAAC;IACrBa,cAAc;IACdC,cAAc,EAAGxC,OAAO,IAAI;MAC1B,IAAIzE,MAAM,CAACgR,MAAM,CAACvM,OAAO,CAAC,EAAE;QAC1B,OAAOxE,MAAM,CAAC8Q,SAAS,CAAC1I,MAAM,CAAC;MACjC;MACA,OAAOhJ,MAAM,CAAC+I,GAAG,CAACnI,MAAM,CAAC8Q,SAAS,CAAC1I,MAAM,CAAC,EAAE,MAAK;QAC/C,MAAM4I,YAAY,GAAGnR,cAAc,CAAC6B,GAAG,CAACmI,KAAK,CAACS,UAAU,EAAE9F,OAAO,CAAC0H,KAAK,CAAC;QACxE,IAAI8E,YAAY,EAAE;UAChB,OAAOtH,eAAe,CAACuH,YAAY,CAACzM,OAAO,CAAC0H,KAAK,CAAC;QACpD;QACA,OAAO9M,MAAM,CAAC+M,IAAI,CAAC,IAAI9G,iCAAmB,CAAC;UAAEb,OAAO,EAAEA,OAAO,CAAC0H;QAAK,CAAE,CAAC,CAAC;MACzE,CAAC,CAAC;IACJ,CAAC;IACD/F,QAAQ;IACRS,UAAU;IACVkG,SAAS;IACThG,qBAAqB;IACrBwJ;GACD,CAAC;AACJ,CAAC,CAAC;AAEF;;;;AAIO,MAAMY,KAAK,GAAA9O,OAAA,CAAA8O,KAAA,gBAIdzR,KAAK,CAACuJ,MAAM,CAAC9G,YAAY,EAAE4C,IAAI,CAAC;AAEpC;;;;AAIO,MAAMqM,mBAAmB,GAAA/O,OAAA,CAAA+O,mBAAA,gBAAGtM,IAAI,CAACuM,OAAO,cAAChS,MAAM,CAACuG,GAAG,CAAC,aAAS;EAClE,MAAM0L,YAAY,GAAG,OAAOnP,YAAY;EACxC,MAAM2D,KAAK,GAAG,OAAOzG,MAAM,CAACyG,KAAK;EACjC,OAAO;IACL+B,QAAQ,EAAEA,CAAC;MAAE5C;IAAM,CAAE,KAAKqM,YAAY,CAAClL,QAAQ,CAACnB,MAAM,CAAC;IACvDgD,UAAU,EAAEA,CAAC;MAAExD;IAAO,CAAE,KAAK6M,YAAY,CAACzK,UAAU,CAACpC,OAAO,CAAC;IAC7DyD,qBAAqB,EAAEA,CAAC;MAAEzD;IAAO,CAAE,KAAK6M,YAAY,CAACvK,qBAAqB,CAACtC,OAAO,CAAC;IACnF0D,cAAc,EAAEA,CAAA,KACd9I,MAAM,CAAC8E,GAAG,CACRmN,YAAY,CAACtK,cAAc,EAC1B6E,WAAW,IAAKjH,KAAK,CAACoK,IAAI,CAACnD,WAAW,CAAC,CACzC;IACHvD,cAAc,EAAEjJ,MAAM,CAAC6H,UAAU,CAAC,WAAU;MAAEzC;IAAO,CAAE;MACrD,MAAMqM,KAAK,GAAG,OAAOQ,YAAY,CAACrK,cAAc,CAACxC,OAAO,CAAC;MACzD,MAAM2C,OAAO,GAAG,OAAOzH,OAAO,CAACoF,IAAI,EAAiB;MAEpD,OAAOqC,OAAO,CAACC,KAAK,CAAC5B,aAAa,CAAC6B,aAAa,EAAE,CAAC;MAEnD,OAAOpH,KAAK,CAACqR,WAAW,CAACT,KAAK,EAAE,CAAC,EAAEtL,MAAM,CAACgM,gBAAgB,CAAC,CAACnO,IAAI,CAC9DhE,MAAM,CAACoS,OAAO,CAAEpJ,MAAM,IAAKjB,OAAO,CAACsK,QAAQ,CAACrJ,MAAM,CAAC,CAAC,EACpDhJ,MAAM,CAACwR,OAAO,EACdxR,MAAM,CAACwJ,UAAU,CAClB;MAED,OAAOzB,OAAO;IAChB,CAAC,CAAC;IACF0B,OAAO,EAAEA,CAAA,KAAMhD,KAAK,CAAC0B;GACtB;AACH,CAAC,CAAC,CAAC;AAEH;;;;AAIO,MAAMmK,WAAW,GAAAtP,OAAA,CAAAsP,WAAA,gBAIpB/S,SAAS,CAACuS,KAAK,CAACrM,IAAI,EAAE;EACxB6C,UAAU,EAAE,cAAc;EAC1BC,cAAc,EAAE;CACjB,CAAC,CAACvE,IAAI,cAAC3D,KAAK,CAACwJ,OAAO,CAACkI,mBAAmB,CAAC,CAAC","ignoreList":[]}