@lodestar/beacon-node 1.34.0-dev.d5a4e7a09c → 1.34.0-dev.d9fc7bb103

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 (264) hide show
  1. package/lib/api/impl/beacon/blocks/index.js +162 -55
  2. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  3. package/lib/api/impl/beacon/pool/index.js +3 -3
  4. package/lib/api/impl/beacon/pool/index.js.map +1 -1
  5. package/lib/api/impl/beacon/state/index.js +15 -16
  6. package/lib/api/impl/beacon/state/index.js.map +1 -1
  7. package/lib/api/impl/debug/index.d.ts +1 -1
  8. package/lib/api/impl/debug/index.js +24 -1
  9. package/lib/api/impl/debug/index.js.map +1 -1
  10. package/lib/api/impl/validator/index.js +37 -26
  11. package/lib/api/impl/validator/index.js.map +1 -1
  12. package/lib/api/impl/validator/utils.d.ts +3 -3
  13. package/lib/api/impl/validator/utils.js +2 -2
  14. package/lib/api/impl/validator/utils.js.map +1 -1
  15. package/lib/chain/archiveStore/archiveStore.d.ts +1 -1
  16. package/lib/chain/archiveStore/archiveStore.js +2 -2
  17. package/lib/chain/archiveStore/interface.d.ts +1 -1
  18. package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +1 -1
  19. package/lib/chain/archiveStore/utils/archiveBlocks.js +89 -22
  20. package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
  21. package/lib/chain/beaconProposerCache.d.ts +1 -0
  22. package/lib/chain/beaconProposerCache.js +3 -0
  23. package/lib/chain/beaconProposerCache.js.map +1 -1
  24. package/lib/chain/blocks/importBlock.js +3 -2
  25. package/lib/chain/blocks/importBlock.js.map +1 -1
  26. package/lib/chain/blocks/types.d.ts +66 -23
  27. package/lib/chain/blocks/types.js +39 -5
  28. package/lib/chain/blocks/types.js.map +1 -1
  29. package/lib/chain/blocks/utils/zebraBanner.d.ts +2 -0
  30. package/lib/chain/blocks/utils/zebraBanner.js +45 -0
  31. package/lib/chain/blocks/utils/zebraBanner.js.map +1 -0
  32. package/lib/chain/blocks/verifyBlock.js +18 -5
  33. package/lib/chain/blocks/verifyBlock.js.map +1 -1
  34. package/lib/chain/blocks/verifyBlocksDataAvailability.js +21 -10
  35. package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
  36. package/lib/chain/blocks/writeBlockInputToDb.js +63 -16
  37. package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
  38. package/lib/chain/chain.d.ts +18 -101
  39. package/lib/chain/chain.js +107 -68
  40. package/lib/chain/chain.js.map +1 -1
  41. package/lib/chain/emitter.d.ts +18 -2
  42. package/lib/chain/emitter.js +13 -0
  43. package/lib/chain/emitter.js.map +1 -1
  44. package/lib/chain/errors/dataColumnSidecarError.d.ts +69 -0
  45. package/lib/chain/errors/dataColumnSidecarError.js +21 -0
  46. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -0
  47. package/lib/chain/errors/index.d.ts +1 -0
  48. package/lib/chain/errors/index.js +1 -0
  49. package/lib/chain/errors/index.js.map +1 -1
  50. package/lib/chain/interface.d.ts +6 -7
  51. package/lib/chain/interface.js.map +1 -1
  52. package/lib/chain/options.d.ts +4 -1
  53. package/lib/chain/options.js +1 -0
  54. package/lib/chain/options.js.map +1 -1
  55. package/lib/chain/prepareNextSlot.js +2 -1
  56. package/lib/chain/prepareNextSlot.js.map +1 -1
  57. package/lib/chain/produceBlock/produceBlockBody.d.ts +30 -16
  58. package/lib/chain/produceBlock/produceBlockBody.js +28 -28
  59. package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
  60. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts +6 -3
  61. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js +28 -4
  62. package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.js.map +1 -1
  63. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +64 -18
  64. package/lib/chain/seenCache/seenGossipBlockInput.js +321 -53
  65. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  66. package/lib/chain/validation/dataColumnSidecar.d.ts +29 -0
  67. package/lib/chain/validation/dataColumnSidecar.js +248 -0
  68. package/lib/chain/validation/dataColumnSidecar.js.map +1 -0
  69. package/lib/db/beacon.d.ts +3 -1
  70. package/lib/db/beacon.js +3 -1
  71. package/lib/db/beacon.js.map +1 -1
  72. package/lib/db/buckets.d.ts +3 -1
  73. package/lib/db/buckets.js +2 -0
  74. package/lib/db/buckets.js.map +1 -1
  75. package/lib/db/interface.d.ts +3 -1
  76. package/lib/db/repositories/dataColumnSidecar.d.ts +26 -0
  77. package/lib/db/repositories/dataColumnSidecar.js +39 -0
  78. package/lib/db/repositories/dataColumnSidecar.js.map +1 -0
  79. package/lib/db/repositories/dataColumnSidecarArchive.d.ts +24 -0
  80. package/lib/db/repositories/dataColumnSidecarArchive.js +39 -0
  81. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -0
  82. package/lib/db/repositories/index.d.ts +2 -0
  83. package/lib/db/repositories/index.js +2 -0
  84. package/lib/db/repositories/index.js.map +1 -1
  85. package/lib/execution/builder/http.d.ts +20 -4
  86. package/lib/execution/builder/http.js +30 -11
  87. package/lib/execution/builder/http.js.map +1 -1
  88. package/lib/execution/builder/interface.d.ts +5 -4
  89. package/lib/execution/engine/http.d.ts +8 -5
  90. package/lib/execution/engine/http.js +56 -42
  91. package/lib/execution/engine/http.js.map +1 -1
  92. package/lib/execution/engine/interface.d.ts +6 -13
  93. package/lib/execution/engine/interface.js +1 -1
  94. package/lib/execution/engine/interface.js.map +1 -1
  95. package/lib/execution/engine/mock.d.ts +1 -0
  96. package/lib/execution/engine/mock.js +5 -0
  97. package/lib/execution/engine/mock.js.map +1 -1
  98. package/lib/execution/engine/types.d.ts +12 -2
  99. package/lib/execution/engine/types.js +8 -2
  100. package/lib/execution/engine/types.js.map +1 -1
  101. package/lib/metrics/metrics/beacon.d.ts +15 -5
  102. package/lib/metrics/metrics/beacon.js +61 -14
  103. package/lib/metrics/metrics/beacon.js.map +1 -1
  104. package/lib/metrics/metrics/lodestar.d.ts +29 -1
  105. package/lib/metrics/metrics/lodestar.js +59 -0
  106. package/lib/metrics/metrics/lodestar.js.map +1 -1
  107. package/lib/network/core/metrics.d.ts +10 -3
  108. package/lib/network/core/metrics.js +22 -4
  109. package/lib/network/core/metrics.js.map +1 -1
  110. package/lib/network/core/networkCore.d.ts +15 -4
  111. package/lib/network/core/networkCore.js +73 -23
  112. package/lib/network/core/networkCore.js.map +1 -1
  113. package/lib/network/core/networkCoreWorker.js +2 -0
  114. package/lib/network/core/networkCoreWorker.js.map +1 -1
  115. package/lib/network/core/networkCoreWorkerHandler.d.ts +5 -3
  116. package/lib/network/core/networkCoreWorkerHandler.js +6 -1
  117. package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
  118. package/lib/network/core/types.d.ts +7 -4
  119. package/lib/network/events.d.ts +4 -2
  120. package/lib/network/events.js.map +1 -1
  121. package/lib/network/gossip/gossipsub.d.ts +2 -2
  122. package/lib/network/gossip/gossipsub.js +8 -6
  123. package/lib/network/gossip/gossipsub.js.map +1 -1
  124. package/lib/network/gossip/interface.d.ts +8 -1
  125. package/lib/network/gossip/interface.js +1 -0
  126. package/lib/network/gossip/interface.js.map +1 -1
  127. package/lib/network/gossip/scoringParameters.d.ts +6 -2
  128. package/lib/network/gossip/scoringParameters.js.map +1 -1
  129. package/lib/network/gossip/topic.d.ts +2033 -1484
  130. package/lib/network/gossip/topic.js +29 -1
  131. package/lib/network/gossip/topic.js.map +1 -1
  132. package/lib/network/interface.d.ts +11 -3
  133. package/lib/network/metadata.d.ts +9 -5
  134. package/lib/network/metadata.js +26 -5
  135. package/lib/network/metadata.js.map +1 -1
  136. package/lib/network/network.d.ts +14 -4
  137. package/lib/network/network.js +73 -11
  138. package/lib/network/network.js.map +1 -1
  139. package/lib/network/networkConfig.d.ts +12 -0
  140. package/lib/network/networkConfig.js +2 -0
  141. package/lib/network/networkConfig.js.map +1 -0
  142. package/lib/network/options.d.ts +1 -0
  143. package/lib/network/options.js +5 -0
  144. package/lib/network/options.js.map +1 -1
  145. package/lib/network/peers/discover.d.ts +8 -3
  146. package/lib/network/peers/discover.js +99 -14
  147. package/lib/network/peers/discover.js.map +1 -1
  148. package/lib/network/peers/peerManager.d.ts +10 -4
  149. package/lib/network/peers/peerManager.js +105 -19
  150. package/lib/network/peers/peerManager.js.map +1 -1
  151. package/lib/network/peers/peersData.d.ts +17 -3
  152. package/lib/network/peers/peersData.js.map +1 -1
  153. package/lib/network/peers/score/interface.d.ts +1 -1
  154. package/lib/network/peers/score/score.d.ts +2 -2
  155. package/lib/network/peers/score/score.js +4 -1
  156. package/lib/network/peers/score/score.js.map +1 -1
  157. package/lib/network/peers/score/store.d.ts +3 -1
  158. package/lib/network/peers/score/store.js +6 -2
  159. package/lib/network/peers/score/store.js.map +1 -1
  160. package/lib/network/peers/utils/assertPeerRelevance.d.ts +7 -3
  161. package/lib/network/peers/utils/assertPeerRelevance.js +10 -1
  162. package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
  163. package/lib/network/peers/utils/prioritizePeers.d.ts +19 -7
  164. package/lib/network/peers/utils/prioritizePeers.js +42 -6
  165. package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
  166. package/lib/network/processor/extractSlotRootFns.js +8 -1
  167. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  168. package/lib/network/processor/gossipHandlers.js +165 -16
  169. package/lib/network/processor/gossipHandlers.js.map +1 -1
  170. package/lib/network/processor/gossipQueues/index.js +5 -0
  171. package/lib/network/processor/gossipQueues/index.js.map +1 -1
  172. package/lib/network/processor/index.js +1 -0
  173. package/lib/network/processor/index.js.map +1 -1
  174. package/lib/network/reqresp/ReqRespBeaconNode.d.ts +2 -2
  175. package/lib/network/reqresp/ReqRespBeaconNode.js +36 -14
  176. package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
  177. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +24 -4
  178. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +259 -20
  179. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -1
  180. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +37 -6
  181. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +283 -28
  182. package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -1
  183. package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +1 -1
  184. package/lib/network/reqresp/handlers/beaconBlocksByRange.js +3 -3
  185. package/lib/network/reqresp/handlers/beaconBlocksByRange.js.map +1 -1
  186. package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts +2 -2
  187. package/lib/network/reqresp/handlers/beaconBlocksByRoot.js.map +1 -1
  188. package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +2 -2
  189. package/lib/network/reqresp/handlers/blobSidecarsByRange.js +2 -3
  190. package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +1 -1
  191. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts +8 -0
  192. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js +73 -0
  193. package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.js.map +1 -0
  194. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts +6 -0
  195. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js +36 -0
  196. package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.js.map +1 -0
  197. package/lib/network/reqresp/handlers/index.js +13 -2
  198. package/lib/network/reqresp/handlers/index.js.map +1 -1
  199. package/lib/network/reqresp/protocols.d.ts +4 -0
  200. package/lib/network/reqresp/protocols.js +20 -0
  201. package/lib/network/reqresp/protocols.js.map +1 -1
  202. package/lib/network/reqresp/rateLimit.js +19 -3
  203. package/lib/network/reqresp/rateLimit.js.map +1 -1
  204. package/lib/network/reqresp/score.js +3 -0
  205. package/lib/network/reqresp/score.js.map +1 -1
  206. package/lib/network/reqresp/types.d.ts +13 -6
  207. package/lib/network/reqresp/types.js +14 -5
  208. package/lib/network/reqresp/types.js.map +1 -1
  209. package/lib/network/statusCache.d.ts +5 -5
  210. package/lib/network/statusCache.js.map +1 -1
  211. package/lib/network/subnets/interface.d.ts +3 -0
  212. package/lib/network/subnets/interface.js +14 -1
  213. package/lib/network/subnets/interface.js.map +1 -1
  214. package/lib/network/subnets/syncnetsService.js +4 -5
  215. package/lib/network/subnets/syncnetsService.js.map +1 -1
  216. package/lib/node/nodejs.js +1 -0
  217. package/lib/node/nodejs.js.map +1 -1
  218. package/lib/sync/constants.d.ts +18 -3
  219. package/lib/sync/constants.js +21 -3
  220. package/lib/sync/constants.js.map +1 -1
  221. package/lib/sync/interface.d.ts +2 -2
  222. package/lib/sync/interface.js +1 -1
  223. package/lib/sync/interface.js.map +1 -1
  224. package/lib/sync/range/batch.d.ts +17 -2
  225. package/lib/sync/range/batch.js +39 -7
  226. package/lib/sync/range/batch.js.map +1 -1
  227. package/lib/sync/range/chain.d.ts +15 -1
  228. package/lib/sync/range/chain.js +124 -33
  229. package/lib/sync/range/chain.js.map +1 -1
  230. package/lib/sync/range/range.d.ts +3 -2
  231. package/lib/sync/range/range.js +9 -3
  232. package/lib/sync/range/range.js.map +1 -1
  233. package/lib/sync/range/utils/chainTarget.d.ts +5 -1
  234. package/lib/sync/range/utils/chainTarget.js +26 -1
  235. package/lib/sync/range/utils/chainTarget.js.map +1 -1
  236. package/lib/sync/range/utils/peerBalancer.d.ts +19 -5
  237. package/lib/sync/range/utils/peerBalancer.js +104 -10
  238. package/lib/sync/range/utils/peerBalancer.js.map +1 -1
  239. package/lib/sync/sync.js +1 -1
  240. package/lib/sync/sync.js.map +1 -1
  241. package/lib/sync/unknownBlock.d.ts +54 -5
  242. package/lib/sync/unknownBlock.js +321 -61
  243. package/lib/sync/unknownBlock.js.map +1 -1
  244. package/lib/sync/utils/remoteSyncType.d.ts +4 -4
  245. package/lib/sync/utils/remoteSyncType.js.map +1 -1
  246. package/lib/util/blobs.d.ts +16 -4
  247. package/lib/util/blobs.js +122 -5
  248. package/lib/util/blobs.js.map +1 -1
  249. package/lib/util/dataColumns.d.ts +137 -0
  250. package/lib/util/dataColumns.js +358 -0
  251. package/lib/util/dataColumns.js.map +1 -0
  252. package/lib/util/metadata.d.ts +5 -0
  253. package/lib/util/metadata.js +10 -0
  254. package/lib/util/metadata.js.map +1 -1
  255. package/lib/util/sszBytes.d.ts +1 -0
  256. package/lib/util/sszBytes.js +17 -0
  257. package/lib/util/sszBytes.js.map +1 -1
  258. package/lib/util/types.d.ts +7 -0
  259. package/lib/util/types.js +3 -0
  260. package/lib/util/types.js.map +1 -1
  261. package/package.json +18 -18
  262. package/lib/network/reqresp/handlers/status.d.ts +0 -4
  263. package/lib/network/reqresp/handlers/status.js +0 -11
  264. package/lib/network/reqresp/handlers/status.js.map +0 -1
@@ -1,10 +1,12 @@
1
1
  import { BitArray } from "@chainsafe/ssz";
2
- import { SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_COUNT } from "@lodestar/params";
3
- import { withTimeout } from "@lodestar/utils";
2
+ import { ForkSeq, SLOTS_PER_EPOCH, SYNC_COMMITTEE_SUBNET_COUNT } from "@lodestar/params";
3
+ import { prettyPrintIndices, toHex, withTimeout } from "@lodestar/utils";
4
4
  import { GOODBYE_KNOWN_CODES, GoodByeReasonCode, Libp2pEvent } from "../../constants/index.js";
5
+ import { getCustodyGroups, getDataColumns } from "../../util/dataColumns.js";
5
6
  import { NetworkEvent } from "../events.js";
6
7
  import { SubnetType } from "../metadata.js";
7
8
  import { ReqRespMethod } from "../reqresp/ReqRespBeaconNode.js";
9
+ import { computeNodeId } from "../subnets/index.js";
8
10
  import { getConnection, getConnectionsMap, prettyPrintPeerId, prettyPrintPeerIdStr } from "../util.js";
9
11
  import { ClientKind, getKnownClientFromAgentVersion } from "./client.js";
10
12
  import { PeerDiscovery } from "./discover.js";
@@ -42,6 +44,7 @@ const STARVATION_PRUNE_RATIO = 0.05;
42
44
  * Relative factor of peers that are allowed to have a negative gossipsub score without penalizing them in lodestar.
43
45
  */
44
46
  const ALLOWED_NEGATIVE_GOSSIPSUB_FACTOR = 0.1;
47
+ // TODO(fulu): dedupe with network/peers/peerData.ts
45
48
  var RelevantPeerStatus;
46
49
  (function (RelevantPeerStatus) {
47
50
  RelevantPeerStatus["Unknown"] = "unknown";
@@ -93,12 +96,16 @@ export class PeerManager {
93
96
  */
94
97
  this.onLibp2pPeerConnect = async (evt) => {
95
98
  const { direction, status, remotePeer } = evt.detail;
96
- this.logger.verbose("peer connected", { peer: prettyPrintPeerId(remotePeer), direction, status });
99
+ const remotePeerStr = remotePeer.toString();
100
+ const remotePeerPrettyStr = prettyPrintPeerId(remotePeer);
101
+ this.logger.verbose("peer connected", { peer: remotePeerPrettyStr, direction, status });
97
102
  // NOTE: The peerConnect event is not emitted here here, but after asserting peer relevance
98
103
  this.metrics?.peerConnectedEvent.inc({ direction, status });
99
- // libp2p may emit closed connection, we don't want to handle it
100
- // see https://github.com/libp2p/js-libp2p/issues/1565
101
- if (this.connectedPeers.has(remotePeer.toString()) || status !== "open") {
104
+ if (evt.detail.status !== "open") {
105
+ this.logger.debug("Peer disconnected before identify protocol initiated", {
106
+ peerId: remotePeerPrettyStr,
107
+ status: evt.detail.status,
108
+ });
102
109
  return;
103
110
  }
104
111
  // On connection:
@@ -107,6 +114,7 @@ export class PeerManager {
107
114
  // NOTE: libp2p may emit two "peer:connect" events: One for inbound, one for outbound
108
115
  // If that happens, it's okay. Only the "outbound" connection triggers immediate action
109
116
  const now = Date.now();
117
+ const nodeId = computeNodeId(remotePeer);
110
118
  const peerData = {
111
119
  lastReceivedMsgUnixTsMs: direction === "outbound" ? 0 : now,
112
120
  // If inbound, request after STATUS_INBOUND_GRACE_PERIOD
@@ -114,6 +122,7 @@ export class PeerManager {
114
122
  connectedUnixTsMs: now,
115
123
  relevantStatus: RelevantPeerStatus.Unknown,
116
124
  direction,
125
+ nodeId,
117
126
  peerId: remotePeer,
118
127
  status: null,
119
128
  metadata: null,
@@ -121,9 +130,9 @@ export class PeerManager {
121
130
  agentClient: null,
122
131
  encodingPreference: null,
123
132
  };
124
- this.connectedPeers.set(remotePeer.toString(), peerData);
133
+ this.connectedPeers.set(remotePeerStr, peerData);
125
134
  if (direction === "outbound") {
126
- //this.pingAndStatusTimeouts();
135
+ // this.pingAndStatusTimeouts();
127
136
  void this.requestPing(remotePeer);
128
137
  void this.requestStatus(remotePeer, this.statusCache.get());
129
138
  }
@@ -137,7 +146,12 @@ export class PeerManager {
137
146
  }
138
147
  })
139
148
  .catch((err) => {
140
- this.logger.debug("Error setting agentVersion for the peer", { peerId: peerData.peerId.toString() }, err);
149
+ if (evt.detail.status !== "open") {
150
+ this.logger.debug("Peer disconnected during identify protocol", { peerId: remotePeerPrettyStr }, err);
151
+ }
152
+ else {
153
+ this.logger.debug("Error setting agentVersion for the peer", { peerId: remotePeerPrettyStr }, err);
154
+ }
141
155
  });
142
156
  };
143
157
  /**
@@ -169,6 +183,7 @@ export class PeerManager {
169
183
  .merge(remotePeer, { tags: { [PEER_RELEVANT_TAG]: undefined } })
170
184
  .catch((e) => this.logger.verbose("cannot untag peer", { peerId: peerIdStr }, e));
171
185
  };
186
+ const { networkConfig } = modules;
172
187
  this.libp2p = modules.libp2p;
173
188
  this.logger = modules.logger;
174
189
  this.metrics = modules.metrics;
@@ -178,12 +193,14 @@ export class PeerManager {
178
193
  this.syncnetsService = modules.syncnetsService;
179
194
  this.statusCache = modules.statusCache;
180
195
  this.clock = modules.clock;
181
- this.config = modules.config;
196
+ this.networkConfig = networkConfig;
197
+ this.config = networkConfig.config;
182
198
  this.peerRpcScores = modules.peerRpcScores;
183
199
  this.networkEventBus = modules.events;
184
200
  this.connectedPeers = modules.peersData.connectedPeers;
185
201
  this.opts = opts;
186
202
  this.discovery = discovery;
203
+ this.nodeId = networkConfig.nodeId;
187
204
  const { metrics } = modules;
188
205
  if (metrics) {
189
206
  metrics.peers.addCollect(() => this.runPeerCountMetrics(metrics));
@@ -281,12 +298,36 @@ export class PeerManager {
281
298
  // Store metadata always in case the peer updates attnets but not the sequence number
282
299
  // Trust that the peer always sends the latest metadata (From Lighthouse)
283
300
  const peerData = this.connectedPeers.get(peer.toString());
301
+ this.logger.debug("onMetadata", {
302
+ peer: peer.toString(),
303
+ peerData: peerData !== undefined,
304
+ custodyGroupCount: metadata?.custodyGroupCount,
305
+ });
284
306
  if (peerData) {
307
+ const oldMetadata = peerData.metadata;
308
+ const custodyGroupCount = metadata.custodyGroupCount ?? this.config.CUSTODY_REQUIREMENT;
309
+ const samplingGroupCount = Math.max(this.config.SAMPLES_PER_SLOT, custodyGroupCount);
310
+ const nodeId = peerData?.nodeId ?? computeNodeId(peer);
311
+ const custodyGroups = oldMetadata == null || oldMetadata.custodyGroups == null || custodyGroupCount !== oldMetadata.custodyGroupCount
312
+ ? getCustodyGroups(this.config, nodeId, custodyGroupCount)
313
+ : oldMetadata.custodyGroups;
314
+ const oldSamplingGroupCount = Math.max(this.config.SAMPLES_PER_SLOT, oldMetadata?.custodyGroupCount ?? 0);
315
+ const samplingGroups = oldMetadata == null || oldMetadata.samplingGroups == null || samplingGroupCount !== oldSamplingGroupCount
316
+ ? getCustodyGroups(this.config, nodeId, samplingGroupCount)
317
+ : oldMetadata.samplingGroups;
285
318
  peerData.metadata = {
286
319
  seqNumber: metadata.seqNumber,
287
320
  attnets: metadata.attnets,
288
321
  syncnets: metadata.syncnets ?? BitArray.fromBitLen(SYNC_COMMITTEE_SUBNET_COUNT),
322
+ custodyGroupCount: metadata.custodyGroupCount ??
323
+ // TODO: spec says that Clients MAY reject peers with a value less than CUSTODY_REQUIREMENT
324
+ this.config.CUSTODY_REQUIREMENT,
325
+ custodyGroups,
326
+ samplingGroups,
289
327
  };
328
+ if (oldMetadata === null || oldMetadata.custodyGroupCount !== peerData.metadata.custodyGroupCount) {
329
+ void this.requestStatus(peer, this.statusCache.get());
330
+ }
290
331
  }
291
332
  }
292
333
  /**
@@ -312,9 +353,10 @@ export class PeerManager {
312
353
  peerData.lastStatusUnixTsMs = Date.now();
313
354
  peerData.status = status;
314
355
  }
356
+ const forkName = this.config.getForkName(this.clock.currentSlot);
315
357
  let isIrrelevant;
316
358
  try {
317
- const irrelevantReasonType = assertPeerRelevance(status, this.statusCache.get(), this.clock.currentSlot);
359
+ const irrelevantReasonType = assertPeerRelevance(forkName, status, this.statusCache.get(), this.clock.currentSlot);
318
360
  if (irrelevantReasonType === null) {
319
361
  isIrrelevant = false;
320
362
  }
@@ -349,18 +391,47 @@ export class PeerManager {
349
391
  peerData.relevantStatus = RelevantPeerStatus.relevant;
350
392
  }
351
393
  if (getConnection(this.libp2p, peer.toString())) {
352
- this.networkEventBus.emit(NetworkEvent.peerConnected, { peer: peer.toString(), status });
394
+ const nodeId = peerData?.nodeId ?? computeNodeId(peer);
395
+ // TODO(fulu): Are we sure we've run Metadata before this?
396
+ const custodyGroupCount = peerData?.metadata?.custodyGroupCount ?? this.config.CUSTODY_REQUIREMENT;
397
+ const custodyGroups = peerData?.metadata?.custodyGroups ?? getCustodyGroups(this.config, nodeId, custodyGroupCount);
398
+ const dataColumns = getDataColumns(this.config, nodeId, custodyGroupCount);
399
+ const sampleSubnets = this.networkConfig.custodyConfig.sampledSubnets;
400
+ const matchingSubnetsNum = sampleSubnets.reduce((acc, elem) => acc + (dataColumns.includes(elem) ? 1 : 0), 0);
401
+ const hasAllColumns = matchingSubnetsNum === sampleSubnets.length;
402
+ const clientAgent = peerData?.agentClient ?? ClientKind.Unknown;
403
+ this.logger.debug("onStatus", {
404
+ nodeId: toHex(nodeId),
405
+ myNodeId: toHex(this.nodeId),
406
+ peerId: peer.toString(),
407
+ custodyGroupCount,
408
+ hasAllColumns,
409
+ dataColumns: prettyPrintIndices(dataColumns),
410
+ matchingSubnetsNum,
411
+ custodyGroups: prettyPrintIndices(custodyGroups),
412
+ mySampleSubnets: sampleSubnets.join(" "),
413
+ clientAgent,
414
+ });
415
+ this.networkEventBus.emit(NetworkEvent.peerConnected, {
416
+ peer: peer.toString(),
417
+ status,
418
+ clientAgent,
419
+ custodyGroups,
420
+ });
353
421
  }
354
422
  }
355
423
  async requestMetadata(peer) {
424
+ const peerIdStr = peer.toString();
356
425
  try {
357
426
  this.onMetadata(peer, await this.reqResp.sendMetadata(peer));
358
427
  }
359
- catch (_e) {
428
+ catch (e) {
429
+ this.logger.verbose("invalid requestMetadata", { peer: prettyPrintPeerIdStr(peerIdStr) }, e);
360
430
  // TODO: Downvote peer here or in the reqResp layer
361
431
  }
362
432
  }
363
433
  async requestPing(peer) {
434
+ const peerIdStr = peer.toString();
364
435
  try {
365
436
  this.onPing(peer, await this.reqResp.sendPing(peer));
366
437
  // If peer replies a PING request also update lastReceivedMsg
@@ -368,15 +439,18 @@ export class PeerManager {
368
439
  if (peerData)
369
440
  peerData.lastReceivedMsgUnixTsMs = Date.now();
370
441
  }
371
- catch (_e) {
442
+ catch (e) {
443
+ this.logger.verbose("invalid requestPing", { peer: prettyPrintPeerIdStr(peerIdStr) }, e);
372
444
  // TODO: Downvote peer here or in the reqResp layer
373
445
  }
374
446
  }
375
447
  async requestStatus(peer, localStatus) {
448
+ const peerIdStr = peer.toString();
376
449
  try {
377
450
  this.onStatus(peer, await this.reqResp.sendStatus(peer, localStatus));
378
451
  }
379
- catch (_e) {
452
+ catch (e) {
453
+ this.logger.verbose("invalid requestStatus", { peer: prettyPrintPeerIdStr(peerIdStr) }, e);
380
454
  // TODO: Failed to get peer latest status: downvote but don't disconnect
381
455
  }
382
456
  }
@@ -422,7 +496,8 @@ export class PeerManager {
422
496
  this.clock.currentSlot - status.headSlot > STARVATION_THRESHOLD_SLOTS;
423
497
  this.lastStatus = status;
424
498
  this.metrics?.peerManager.starved.set(starved ? 1 : 0);
425
- const { peersToDisconnect, peersToConnect, attnetQueries, syncnetQueries } = prioritizePeers(connectedHealthyPeers.map((peer) => {
499
+ const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
500
+ const { peersToDisconnect, peersToConnect, attnetQueries, syncnetQueries, custodyGroupQueries } = prioritizePeers(connectedHealthyPeers.map((peer) => {
426
501
  const peerData = this.connectedPeers.get(peer.toString());
427
502
  return {
428
503
  id: peer,
@@ -430,17 +505,21 @@ export class PeerManager {
430
505
  status: peerData?.status ?? null,
431
506
  attnets: peerData?.metadata?.attnets ?? null,
432
507
  syncnets: peerData?.metadata?.syncnets ?? null,
508
+ // here we care samplingGroups not custodyGroups in order to know which column subnets peers subscribe to
509
+ samplingGroups: peerData?.metadata?.samplingGroups ?? null,
433
510
  score: this.peerRpcScores.getScore(peer),
434
511
  };
435
512
  }),
436
513
  // Collect subnets which we need peers for in the current slot
437
- this.attnetsService.getActiveSubnets(), this.syncnetsService.getActiveSubnets(), {
514
+ this.attnetsService.getActiveSubnets(), this.syncnetsService.getActiveSubnets(),
515
+ // ignore samplingGroups for pre-fulu forks
516
+ forkSeq >= ForkSeq.fulu ? this.networkConfig.custodyConfig.sampleGroups : undefined, {
438
517
  ...this.opts,
439
518
  status,
440
519
  starved,
441
520
  starvationPruneRatio: STARVATION_PRUNE_RATIO,
442
521
  starvationThresholdSlots: STARVATION_THRESHOLD_SLOTS,
443
- });
522
+ }, this.config, this.metrics);
444
523
  const queriesMerged = [];
445
524
  for (const { type, queries } of [
446
525
  { type: SubnetType.attnets, queries: attnetQueries },
@@ -461,6 +540,10 @@ export class PeerManager {
461
540
  this.metrics?.peersRequestedSubnetsPeerCount.inc({ type }, count);
462
541
  }
463
542
  }
543
+ for (const maxPeersToDiscover of custodyGroupQueries.values()) {
544
+ this.metrics?.peersRequestedSubnetsToQuery.inc({ type: "column" }, 1);
545
+ this.metrics?.peersRequestedSubnetsPeerCount.inc({ type: "column" }, maxPeersToDiscover);
546
+ }
464
547
  // disconnect first to have more slots before we dial new peers
465
548
  for (const [reason, peers] of peersToDisconnect) {
466
549
  this.metrics?.peersRequestedToDisconnect.inc({ reason }, peers.length);
@@ -471,7 +554,8 @@ export class PeerManager {
471
554
  if (this.discovery) {
472
555
  try {
473
556
  this.metrics?.peersRequestedToConnect.inc(peersToConnect);
474
- this.discovery.discoverPeers(peersToConnect, queriesMerged);
557
+ // for PeerDAS, lodestar implements subnet sampling strategy, hence we need to issue columnSubnetQueries to PeerDiscovery
558
+ this.discovery.discoverPeers(peersToConnect, custodyGroupQueries, queriesMerged);
475
559
  }
476
560
  catch (e) {
477
561
  this.logger.error("Error on discoverPeers", {}, e);
@@ -540,6 +624,7 @@ export class PeerManager {
540
624
  const peerIdStr = peer.toString();
541
625
  try {
542
626
  this.metrics?.peerGoodbyeSent.inc({ reason });
627
+ this.logger.debug("initiating goodbyeAndDisconnect peer", { reason, peerId: prettyPrintPeerId(peer) });
543
628
  const conn = getConnection(this.libp2p, peerIdStr);
544
629
  if (conn && Date.now() - conn.timeline.open > LONG_PEER_CONNECTION_MS) {
545
630
  this.metrics?.peerLongConnectionDisconnect.inc({ reason });
@@ -592,6 +677,7 @@ export class PeerManager {
592
677
  const attnets = peerData?.metadata?.attnets;
593
678
  // TODO: Consider optimizing by doing observe in batch
594
679
  metrics.peerLongLivedAttnets.observe(attnets ? attnets.getTrueBitIndexes().length : 0);
680
+ metrics.peerColumnGroupCount.observe(peerData?.metadata?.custodyGroupCount ?? 0);
595
681
  metrics.peerScoreByClient.observe({ client }, this.peerRpcScores.getScore(peerId));
596
682
  metrics.peerGossipScoreByClient.observe({ client }, this.peerRpcScores.getGossipScore(peerId));
597
683
  metrics.peerConnectionLength.observe((now - openCnx.timeline.open) / 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"peerManager.js","sourceRoot":"","sources":["../../../src/network/peers/peerManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peerManager.js","sourceRoot":"","sources":["../../../src/network/peers/peerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAIxC,OAAO,EAAC,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAC,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EAAC,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,mBAAmB,EAAE,iBAAiB,EAAE,WAAW,EAAC,MAAM,0BAA0B,CAAC;AAE7F,OAAO,EAAC,gBAAgB,EAAE,cAAc,EAAC,MAAM,2BAA2B,CAAC;AAG3E,OAAO,EAAmB,YAAY,EAAmB,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAE9D,OAAO,EAAyB,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAC,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAC,MAAM,YAAY,CAAC;AACrG,OAAO,EAAC,UAAU,EAAE,8BAA8B,EAAC,MAAM,aAAa,CAAC;AACvE,OAAO,EAAC,aAAa,EAAqB,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAC,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAiD,UAAU,EAAE,qBAAqB,EAAC,MAAM,kBAAkB,CAAC;AACnH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,wGAAwG;AACxG,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AACxC,qGAAqG;AACrG,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,wCAAwC;AACpF,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC5C,qDAAqD;AACrD,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACzC,qGAAqG;AACrG,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9C,0DAA0D;AAC1D,MAAM,0BAA0B,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7C,4DAA4D;AAC5D,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACpD,4DAA4D;AAC5D,MAAM,mCAAmC,GAAG,IAAI,CAAC;AACjD;;;;IAII;AACJ,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,qCAAqC;AACrC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AAEpC,yDAAyD;AACzD,MAAM,0BAA0B,GAAG,eAAe,GAAG,CAAC,CAAC;AACvD,+EAA+E;AAC/E,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC;;GAEG;AACH,MAAM,iCAAiC,GAAG,GAAG,CAAC;AA4D9C,oDAAoD;AACpD,IAAK,kBAIJ;AAJD,WAAK,kBAAkB;IACrB,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,+CAAyB,CAAA;AAC3B,CAAC,EAJI,kBAAkB,KAAlB,kBAAkB,QAItB;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,WAAW;IAyBtB,YAAY,OAA2B,EAAE,IAAqB,EAAE,SAA+B;QAFvF,cAAS,GAAqB,EAAE,CAAC;QA2HzC;;WAEG;QACK,cAAS,GAAG,CAAC,EAAC,IAAI,EAAE,OAAO,EAAgD,EAAQ,EAAE;YAC3F,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1D,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChD,CAAC;gBAED,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;oBACvB,KAAK,aAAa,CAAC,IAAI;wBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBAChC,OAAO;oBACT,KAAK,aAAa,CAAC,OAAO;wBACxB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBACnC,OAAO;oBACT,KAAK,aAAa,CAAC,MAAM;wBACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClC,OAAO;gBACX,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC;QA0XF;;;;;;WAMG;QACK,wBAAmB,GAAG,KAAK,EAAE,GAA4B,EAAiB,EAAE;YAClF,MAAM,EAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,GAAG,CAAC,MAAM,CAAC;YACnD,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC5C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;YACtF,2FAA2F;YAC3F,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;YAE1D,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE;oBACxE,MAAM,EAAE,mBAAmB;oBAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;iBAC1B,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,iBAAiB;YACjB,yDAAyD;YACzD,oFAAoF;YACpF,qFAAqF;YACrF,uFAAuF;YACvF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAa;gBACzB,uBAAuB,EAAE,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC3D,wDAAwD;gBACxD,kBAAkB,EAAE,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,kBAAkB,GAAG,2BAA2B;gBACzG,iBAAiB,EAAE,GAAG;gBACtB,cAAc,EAAE,kBAAkB,CAAC,OAAO;gBAC1C,SAAS;gBACT,MAAM;gBACN,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,IAAI;gBACd,YAAY,EAAE,IAAI;gBAClB,WAAW,EAAE,IAAI;gBACjB,kBAAkB,EAAE,IAAI;aACzB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAEjD,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;gBAC7B,gCAAgC;gBAChC,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAClC,KAAK,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ;iBAC1B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;iBACpB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;gBACzC,IAAI,YAAY,EAAE,CAAC;oBACjB,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;oBACrC,QAAQ,CAAC,WAAW,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAC,MAAM,EAAE,mBAAmB,EAAC,EAAE,GAAG,CAAC,CAAC;gBACtG,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAC,MAAM,EAAE,mBAAmB,EAAC,EAAE,GAAG,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QAEF;;WAEG;QACK,2BAAsB,GAAG,CAAC,GAA4B,EAAQ,EAAE;YACtE,MAAM,EAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAC,GAAG,GAAG,CAAC,MAAM,CAAC;YACnD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YAExC,IAAI,UAAU,GAAG,wBAAwB,CAAC;YAC1C,MAAM,UAAU,GAAoC;gBAClD,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC;gBACvC,SAAS;gBACT,MAAM;aACP,CAAC;YACF,8GAA8G;YAC9G,kEAAkE;YAClE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,yCAAyC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,SAAS,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;gBAClH,UAAU,IAAI,6CAA6C,CAAC;gBAC5D,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;YACvC,CAAC;YAED,gDAAgD;YAChD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;YAC5E,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,SAAS;iBAClB,KAAK,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,EAAC,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAC,EAAC,CAAC;iBAC3D,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,EAAE,CAAU,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC;QAhnBA,MAAM,EAAC,aAAa,EAAC,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QAEnC,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC;QAC1B,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAClH,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAEzC,+FAA+F;QAC/F,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG;YACf,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,0BAA0B,CAAC;YAC9E,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC;YAC7D,WAAW,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,IAAI,qBAAqB,CAClE;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAA2B,EAAE,IAAqB;QAClE,8CAA8C;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM;YAC3B,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,IAAI,mCAAmC;gBAC5F,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;aACxD,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC;QAET,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACjH,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,mBAAmB,CACxD,WAAW,CAAC,eAAe,EAC3B,IAAI,CAAC,sBAAsB,CAC5B,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS;YAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,OAAO,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,4BAA4B;QAChC,MAAM,OAAO,CAAC,GAAG;QACf,4FAA4F;QAC5F,IAAI,CAAC,mBAAmB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC,CACnH,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,QAAQ;QACR,oFAAoF;QAEpF,8BAA8B;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,MAAkB,EAAE,UAAkB;QAC7D,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,KAAkB;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,6EAA6E;gBAC7E,QAAQ,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;IACjD,CAAC;IA4BD;;OAEG;IACK,MAAM,CAAC,IAAY,EAAE,SAAsB;QACjD,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC;QACpE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;YAChD,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,IAAY,EAAE,QAAkB;QACjD,qFAAqF;QACrF,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE;YAC9B,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;YACrB,QAAQ,EAAE,QAAQ,KAAK,SAAS;YAChC,iBAAiB,EAAG,QAAmC,EAAE,iBAAiB;SAC3E,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC;YACtC,MAAM,iBAAiB,GACpB,QAAmC,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;YAC5F,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;YACrF,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,aAAa,GACjB,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,aAAa,IAAI,IAAI,IAAI,iBAAiB,KAAK,WAAW,CAAC,iBAAiB;gBAC7G,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC;gBAC1D,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC;YAChC,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,iBAAiB,IAAI,CAAC,CAAC,CAAC;YAC1G,MAAM,cAAc,GAClB,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,cAAc,IAAI,IAAI,IAAI,kBAAkB,KAAK,qBAAqB;gBACvG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC;gBAC3D,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC;YACjC,QAAQ,CAAC,QAAQ,GAAG;gBAClB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAG,QAAqC,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,2BAA2B,CAAC;gBAC7G,iBAAiB,EACd,QAAmC,CAAC,iBAAiB;oBACtD,2FAA2F;oBAC3F,IAAI,CAAC,MAAM,CAAC,mBAAmB;gBACjC,aAAa;gBACb,cAAc;aACf,CAAC;YACF,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,iBAAiB,KAAK,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAClG,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,IAAY,EAAE,OAAuB;QACrD,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC,CAAC;QAClG,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAEhD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzD,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,EAAE,CAAC;YACtE,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,IAAY,EAAE,MAAc;QAC3C,yCAAyC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEjE,IAAI,YAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,oBAAoB,GAAG,mBAAmB,CAC9C,QAAQ,EACR,MAAM,EACN,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EACtB,IAAI,CAAC,KAAK,CAAC,WAAW,CACvB,CAAC;YACF,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;gBAClC,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;oBACnC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;oBAC7B,MAAM,EAAE,wBAAwB,CAAC,oBAAoB,CAAC;iBACvD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAC,EAAE,CAAU,CAAC,CAAC;YACrG,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,QAAQ;gBAAE,QAAQ,CAAC,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAC;YACtE,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,kFAAkF;QAClF,6FAA6F;QAC7F,IAAI,QAAQ,IAAI,QAAQ,CAAC,cAAc,KAAK,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,SAAS;iBAClB,KAAK,CAAC,IAAI,EAAE;gBACX,2CAA2C;gBAC3C,IAAI,EAAE,EAAC,CAAC,iBAAiB,CAAC,EAAE,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,uBAAuB,EAAC,EAAC;aAC9E,CAAC;iBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAC,EAAE,CAAU,CAAC,CAAC,CAAC;YAC/F,QAAQ,CAAC,cAAc,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QACxD,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;YACvD,0DAA0D;YAC1D,MAAM,iBAAiB,GAAG,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACnG,MAAM,aAAa,GACjB,QAAQ,EAAE,QAAQ,EAAE,aAAa,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAChG,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAE3E,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;YACtE,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9G,MAAM,aAAa,GAAG,kBAAkB,KAAK,aAAa,CAAC,MAAM,CAAC;YAClE,MAAM,WAAW,GAAG,QAAQ,EAAE,WAAW,IAAI,UAAU,CAAC,OAAO,CAAC;YAEhE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;gBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;gBACrB,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC5B,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACvB,iBAAiB;gBACjB,aAAa;gBACb,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC;gBAC5C,kBAAkB;gBAClB,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;gBAChD,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;gBACxC,WAAW;aACZ,CAAC,CAAC;YAEH,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;gBACpD,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;gBACrB,MAAM;gBACN,WAAW;gBACX,aAAa;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAY;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAC,EAAE,CAAU,CAAC,CAAC;YACpG,mDAAmD;QACrD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAErD,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1D,IAAI,QAAQ;gBAAE,QAAQ,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAC,EAAE,CAAU,CAAC,CAAC;YAChG,mDAAmD;QACrD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,WAAmB;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAC,EAAE,CAAU,CAAC,CAAC;YAClG,wEAAwE;QAC1E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,KAAe;QAC7C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,SAAS;QACf,8GAA8G;QAC9G,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,iBAAiB,CAAC,UAAU,EAAE,CAAC;QAEvE,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAElD,uDAAuD;QACvD,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAE5B,yEAAyE;QACzE,MAAM,qBAAqB,GAAa,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;YAClC,QAAQ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,KAAK,UAAU,CAAC,MAAM;oBACpB,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;oBAC/D,MAAM;gBACR,KAAK,UAAU,CAAC,YAAY;oBAC1B,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;oBACtE,MAAM;gBACR,KAAK,UAAU,CAAC,OAAO;oBACrB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,OAAO;QACX,yDAAyD;QACzD,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAC5C,yDAAyD;YACzD,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,GAAG,0BAA0B,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE/D,MAAM,EAAC,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAC,GAAG,eAAe,CAC7G,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,SAAS,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;gBACtC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,IAAI;gBAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;gBAC5C,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI;gBAC9C,yGAAyG;gBACzG,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,IAAI,IAAI;gBAC1D,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;aACzC,CAAC;QACJ,CAAC,CAAC;QACF,8DAA8D;QAC9D,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,EACtC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE;QACvC,2CAA2C;QAC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACnF;YACE,GAAG,IAAI,CAAC,IAAI;YACZ,MAAM;YACN,OAAO;YACP,oBAAoB,EAAE,sBAAsB;YAC5C,wBAAwB,EAAE,0BAA0B;SACrD,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,MAAM,aAAa,GAAyB,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAC,IAAI,EAAE,OAAO,EAAC,IAAI;YAC5B,EAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAC;YAClD,EAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAC;SACrD,EAAE,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,KAAK,GAAG,CAAC,CAAC;gBACd,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,KAAK,IAAI,KAAK,CAAC,kBAAkB,CAAC;oBAClC,aAAa,CAAC,IAAI,CAAC;wBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,IAAI;wBACJ,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;wBAC5C,QAAQ,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;qBACxF,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,GAAG,CAAC,EAAC,IAAI,EAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACvE,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,GAAG,CAAC,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,EAAE,8BAA8B,CAAC,GAAG,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,EAAE,kBAAkB,CAAC,CAAC;QACzF,CAAC;QAED,+DAA+D;QAC/D,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,EAAE,0BAA0B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACrE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,EAAE,uBAAuB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC1D,yHAAyH;gBACzH,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,8EAA8E;QAC9E,gDAAgD;QAChD,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,cAAc,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAC3D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1F,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACtC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,GAAG,EAAE,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,EAAE,EAAE,CAAC;QAEV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YAChD,iBAAiB,EAAE,iBAAiB,CAAC,IAAI;YACzC,cAAc,EAAE,cAAc;YAC9B,aAAa,EAAE,aAAa,CAAC,MAAM;YACnC,cAAc,EAAE,cAAc,CAAC,MAAM;SACtC,CAAC,CAAC;IACL,CAAC;IAEO,qBAAqB;QAC3B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;YACnD,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,iCAAiC,CAAC,CAAC;QACnG,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;IACpF,CAAC;IAEO,qBAAqB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,6EAA6E;YAC7E,iEAAiE;YACjE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACzG,IAAI,GAAG,GAAG,IAAI,CAAC,uBAAuB,GAAG,YAAY,EAAE,CAAC;gBACtD,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,CAAC;YAED,iFAAiF;YACjF,4CAA4C;YAE5C,2EAA2E;YAC3E,uFAAuF;YACvF,sCAAsC;YACtC,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;gBACvD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IA0GO,KAAK,CAAC,UAAU,CAAC,IAAY;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAC,EAAE,CAAU,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,IAAY,EAAE,OAA0B;QACzE,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC;YAErG,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,EAAE,CAAC;gBACtE,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;YAC3D,CAAC;YAED,+EAA+E;YAC/E,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,EAAC,EAAE,CAAU,CAAC,CAAC;QAC7F,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5B,yCAAyC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACrF,IAAI,WAAW,KAAK,oBAAoB,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAC,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC;YACxF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gEAAgE,EAAE;oBACpF,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC;oBACvC,WAAW;iBACZ,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAC1B,KAAK,CAAC,mBAAmB,CAAC,OAA2B;QAC3D,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,yCAAyC;QACzC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QACrC,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QAExC,6CAA6C;QAC7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/C,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,MAAM,WAAW,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACvE,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;gBACpC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,QAAQ,EAAE,WAAW,IAAI,UAAU,CAAC,OAAO,CAAC;gBAC3D,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEhE,MAAM,OAAO,GAAG,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;gBAE5C,sDAAsD;gBACtD,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvF,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,IAAI,CAAC,CAAC,CAAC;gBACjF,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjF,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,EAAE,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC7F,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC3E,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAC,SAAS,EAAC,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAC,MAAM,EAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,cAAc,KAAK,kBAAkB,CAAC,QAAQ,EAAE,CAAC;gBACxD,SAAS,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;CACF"}
@@ -1,7 +1,19 @@
1
1
  import { PeerId } from "@libp2p/interface";
2
2
  import { Encoding } from "@lodestar/reqresp";
3
- import { altair, phase0 } from "@lodestar/types";
3
+ import { CustodyIndex, Slot, Status, fulu } from "@lodestar/types";
4
+ import { NodeId } from "../subnets/interface.js";
4
5
  import { ClientKind } from "./client.js";
6
+ type PeerIdStr = string;
7
+ type Metadata = fulu.Metadata & {
8
+ custodyGroups: CustodyIndex[];
9
+ samplingGroups: CustodyIndex[];
10
+ };
11
+ export type PeerSyncMeta = {
12
+ peerId: PeerIdStr;
13
+ client: string;
14
+ custodyGroups: CustodyIndex[];
15
+ earliestAvailableSlot?: Slot;
16
+ };
5
17
  export declare enum RelevantPeerStatus {
6
18
  Unknown = "unknown",
7
19
  relevant = "relevant",
@@ -14,8 +26,9 @@ export type PeerData = {
14
26
  relevantStatus: RelevantPeerStatus;
15
27
  direction: "inbound" | "outbound";
16
28
  peerId: PeerId;
17
- status: phase0.Status | null;
18
- metadata: altair.Metadata | null;
29
+ nodeId: NodeId | null;
30
+ metadata: Metadata | null;
31
+ status: Status | null;
19
32
  agentVersion: string | null;
20
33
  agentClient: ClientKind | null;
21
34
  encodingPreference: Encoding | null;
@@ -34,4 +47,5 @@ export declare class PeersData {
34
47
  getEncodingPreference(peerIdStr: string): Encoding | null;
35
48
  setEncodingPreference(peerIdStr: string, encoding: Encoding): void;
36
49
  }
50
+ export {};
37
51
  //# sourceMappingURL=peersData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"peersData.js","sourceRoot":"","sources":["../../../src/network/peers/peersData.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,+CAAyB,CAAA;AAC3B,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAgBD;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IAAtB;QACW,mBAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAoB3D,CAAC;IAlBC,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IAClE,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,qBAAqB,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,kBAAkB,IAAI,IAAI,CAAC;IACxE,CAAC;IAED,qBAAqB,CAAC,SAAiB,EAAE,QAAkB;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"peersData.js","sourceRoot":"","sources":["../../../src/network/peers/peersData.ts"],"names":[],"mappings":"AAeA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,+CAAyB,CAAA;AAC3B,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAiBD;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IAAtB;QACW,mBAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAoB3D,CAAC;IAlBC,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IAClE,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;IACjE,CAAC;IAED,qBAAqB,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,kBAAkB,IAAI,IAAI,CAAC;IACxE,CAAC;IAED,qBAAqB,CAAC,SAAiB,EAAE,QAAkB;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QACzC,CAAC;IACH,CAAC;CACF"}
@@ -20,7 +20,7 @@ export interface IPeerScore {
20
20
  getScore(): number;
21
21
  getGossipScore(): number;
22
22
  isCoolingDown(): boolean;
23
- add(scoreDelta: number): void;
23
+ add(scoreDelta: number): number;
24
24
  update(): number;
25
25
  updateGossipsubScore(newScore: number, ignore: boolean): void;
26
26
  getStat(): PeerScoreStat;
@@ -14,7 +14,7 @@ export declare class RealScore implements IPeerScore {
14
14
  isCoolingDown(): boolean;
15
15
  getScore(): number;
16
16
  getGossipScore(): number;
17
- add(scoreDelta: number): void;
17
+ add(scoreDelta: number): number;
18
18
  applyReconnectionCoolDown(reason: GoodByeReasonCode): number;
19
19
  /**
20
20
  * Applies time-based logic such as decay rates to the score.
@@ -44,7 +44,7 @@ export declare class MaxScore implements IPeerScore {
44
44
  getScore(): number;
45
45
  getGossipScore(): number;
46
46
  isCoolingDown(): boolean;
47
- add(): void;
47
+ add(): number;
48
48
  update(): number;
49
49
  applyReconnectionCoolDown(_reason: GoodByeReasonCode): number;
50
50
  updateGossipsubScore(): void;
@@ -29,6 +29,7 @@ export class RealScore {
29
29
  if (newScore < MIN_SCORE)
30
30
  newScore = MIN_SCORE;
31
31
  this.setLodestarScore(newScore);
32
+ return newScore;
32
33
  }
33
34
  applyReconnectionCoolDown(reason) {
34
35
  let coolDownMin = NO_COOL_DOWN_APPLIED;
@@ -138,7 +139,9 @@ export class MaxScore {
138
139
  isCoolingDown() {
139
140
  return false;
140
141
  }
141
- add() { }
142
+ add() {
143
+ return DEFAULT_SCORE;
144
+ }
142
145
  update() {
143
146
  return MAX_SCORE;
144
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/network/peers/score/score.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../../../../src/network/peers/score/score.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { PeerId } from "@libp2p/interface";
2
+ import { Logger } from "@lodestar/utils";
2
3
  import { GoodByeReasonCode } from "../../../constants/network.js";
3
4
  import { PeerIdStr } from "../../../util/peerId.js";
4
5
  import { NetworkCoreMetrics } from "../../core/metrics.js";
@@ -12,7 +13,8 @@ import { IPeerRpcScoreStore, PeerAction, PeerRpcScoreOpts, PeerScoreStats, Score
12
13
  export declare class PeerRpcScoreStore implements IPeerRpcScoreStore {
13
14
  private readonly scores;
14
15
  private readonly metrics;
15
- constructor(opts?: PeerRpcScoreOpts, metrics?: NetworkCoreMetrics | null);
16
+ private readonly logger;
17
+ constructor(opts?: PeerRpcScoreOpts, metrics?: NetworkCoreMetrics | null, logger?: Logger | null);
16
18
  getScore(peer: PeerId): number;
17
19
  getGossipScore(peer: PeerId): number;
18
20
  getScoreState(peer: PeerId): ScoreState;
@@ -1,4 +1,5 @@
1
1
  import { MapDef, pruneSetToMax } from "@lodestar/utils";
2
+ import { prettyPrintPeerId } from "../../util.js";
2
3
  import { DEFAULT_SCORE, MAX_ENTRIES, MAX_SCORE, MIN_SCORE, SCORE_THRESHOLD } from "./constants.js";
3
4
  import { PeerAction } from "./interface.js";
4
5
  import { MaxScore, RealScore } from "./score.js";
@@ -17,8 +18,9 @@ const peerActionScore = {
17
18
  */
18
19
  export class PeerRpcScoreStore {
19
20
  // TODO: Persist scores, at least BANNED status to disk
20
- constructor(opts = {}, metrics = null) {
21
+ constructor(opts = {}, metrics = null, logger = null) {
21
22
  this.metrics = metrics;
23
+ this.logger = logger;
22
24
  this.scores = opts.disablePeerScoring ? new MapDef(() => new MaxScore()) : new MapDef(() => new RealScore());
23
25
  }
24
26
  getScore(peer) {
@@ -38,7 +40,9 @@ export class PeerRpcScoreStore {
38
40
  }
39
41
  applyAction(peer, action, actionName) {
40
42
  const peerScore = this.scores.getOrDefault(peer.toString());
41
- peerScore.add(peerActionScore[action]);
43
+ const scoreChange = peerActionScore[action];
44
+ const newScore = peerScore.add(scoreChange);
45
+ this.logger?.debug("peer score adjusted", { scoreChange, newScore, peerId: prettyPrintPeerId(peer), actionName });
42
46
  this.metrics?.peersReportPeerCount.inc({ reason: actionName });
43
47
  }
44
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/network/peers/score/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAItD,OAAO,EAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAiC,UAAU,EAA+C,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAExC,MAAM,eAAe,GAA+B;IAClD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IACnC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;CACpC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,OAAO,iBAAiB;IAI5B,uDAAuD;IAEvD,YAAY,OAAyB,EAAE,EAAE,UAAqC,IAAI;QAChF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,aAAa,CAAC;IACvE,CAAC;IAED,cAAc,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,aAAa,CAAC;IAC7E,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,aAAa,CAAC,SAAoB;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,KAAK,CAAC;IAC9D,CAAC;IAED,kBAAkB;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,EAAC,CAAC,CAAC,CAAC;IAC5G,CAAC;IAED,WAAW,CAAC,IAAY,EAAE,MAAkB,EAAE,UAAkB;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAC,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,IAAe,EAAE,MAAyB;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,MAAM;QACJ,gCAAgC;QAChC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAExC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;YAEpC,+BAA+B;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,eAAe,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB,CAAC,MAAiB,EAAE,QAAgB,EAAE,MAAe;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnD,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;CACF"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/network/peers/score/store.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
- import { ForkDigest, Root, Slot, phase0 } from "@lodestar/types";
1
+ import { ForkName } from "@lodestar/params";
2
+ import { ForkDigest, Root, Slot, Status } from "@lodestar/types";
2
3
  export declare enum IrrelevantPeerCode {
3
4
  INCOMPATIBLE_FORKS = "IRRELEVANT_PEER_INCOMPATIBLE_FORKS",
4
5
  DIFFERENT_CLOCKS = "IRRELEVANT_PEER_DIFFERENT_CLOCKS",
5
- DIFFERENT_FINALIZED = "IRRELEVANT_PEER_DIFFERENT_FINALIZED"
6
+ DIFFERENT_FINALIZED = "IRRELEVANT_PEER_DIFFERENT_FINALIZED",
7
+ NO_EARLIEST_AVAILABLE_SLOT = "NO_EARLIEST_AVAILABLE_SLOT"
6
8
  }
7
9
  type IrrelevantPeerType = {
8
10
  code: IrrelevantPeerCode.INCOMPATIBLE_FORKS;
@@ -11,6 +13,8 @@ type IrrelevantPeerType = {
11
13
  } | {
12
14
  code: IrrelevantPeerCode.DIFFERENT_CLOCKS;
13
15
  slotDiff: number;
16
+ } | {
17
+ code: IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT;
14
18
  } | {
15
19
  code: IrrelevantPeerCode.DIFFERENT_FINALIZED;
16
20
  expectedRoot: Root;
@@ -20,7 +24,7 @@ type IrrelevantPeerType = {
20
24
  * Process a `Status` message to determine if a peer is relevant to us. If the peer is
21
25
  * irrelevant the reason is returned.
22
26
  */
23
- export declare function assertPeerRelevance(remote: phase0.Status, local: phase0.Status, currentSlot: Slot): IrrelevantPeerType | null;
27
+ export declare function assertPeerRelevance(forkName: ForkName, remote: Status, local: Status, currentSlot: Slot): IrrelevantPeerType | null;
24
28
  export declare function isZeroRoot(root: Root): boolean;
25
29
  export declare function renderIrrelevantPeerType(type: IrrelevantPeerType): string;
26
30
  export {};