@aztec/pxe 0.77.1 → 0.78.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 (180) hide show
  1. package/dest/bin/index.js +1 -1
  2. package/dest/config/index.d.ts +1 -0
  3. package/dest/config/index.d.ts.map +1 -1
  4. package/dest/config/index.js +1 -0
  5. package/dest/entrypoints/client/bundle/index.d.ts +6 -0
  6. package/dest/entrypoints/client/bundle/index.d.ts.map +1 -0
  7. package/dest/entrypoints/client/bundle/index.js +5 -0
  8. package/dest/entrypoints/client/bundle/utils.d.ts +16 -0
  9. package/dest/entrypoints/client/bundle/utils.d.ts.map +1 -0
  10. package/dest/entrypoints/client/bundle/utils.js +30 -0
  11. package/dest/entrypoints/client/lazy/index.d.ts +6 -0
  12. package/dest/entrypoints/client/lazy/index.d.ts.map +1 -0
  13. package/dest/entrypoints/client/lazy/index.js +5 -0
  14. package/dest/entrypoints/client/lazy/utils.d.ts +15 -0
  15. package/dest/entrypoints/client/lazy/utils.d.ts.map +1 -0
  16. package/dest/entrypoints/client/lazy/utils.js +29 -0
  17. package/dest/entrypoints/client/pxe_creation_options.d.ts +11 -0
  18. package/dest/entrypoints/client/pxe_creation_options.d.ts.map +1 -0
  19. package/dest/entrypoints/server/index.d.ts +7 -0
  20. package/dest/entrypoints/server/index.d.ts.map +1 -0
  21. package/dest/entrypoints/server/index.js +6 -0
  22. package/dest/{utils/create_pxe_service.d.ts → entrypoints/server/utils.d.ts} +4 -4
  23. package/dest/entrypoints/server/utils.d.ts.map +1 -0
  24. package/dest/{utils/create_pxe_service.js → entrypoints/server/utils.js} +5 -11
  25. package/dest/kernel_oracle/index.d.ts +2 -1
  26. package/dest/kernel_oracle/index.d.ts.map +1 -1
  27. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  28. package/dest/kernel_prover/kernel_prover.js +0 -24
  29. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts +2 -2
  30. package/dest/note_decryption_utils/add_public_values_to_payload.d.ts.map +1 -1
  31. package/dest/note_decryption_utils/add_public_values_to_payload.js +3 -3
  32. package/dest/{pxe_data_provider → pxe_oracle_interface}/index.d.ts +17 -9
  33. package/dest/pxe_oracle_interface/index.d.ts.map +1 -0
  34. package/dest/{pxe_data_provider → pxe_oracle_interface}/index.js +104 -61
  35. package/dest/pxe_oracle_interface/tagging_utils.d.ts.map +1 -0
  36. package/dest/pxe_service/error_enriching.d.ts +3 -4
  37. package/dest/pxe_service/error_enriching.d.ts.map +1 -1
  38. package/dest/pxe_service/error_enriching.js +4 -4
  39. package/dest/pxe_service/pxe_service.d.ts +18 -14
  40. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  41. package/dest/pxe_service/pxe_service.js +118 -65
  42. package/dest/storage/address_data_provider/address_data_provider.d.ts +13 -0
  43. package/dest/storage/address_data_provider/address_data_provider.d.ts.map +1 -0
  44. package/dest/storage/address_data_provider/address_data_provider.js +50 -0
  45. package/dest/storage/address_data_provider/index.d.ts +2 -0
  46. package/dest/storage/address_data_provider/index.d.ts.map +1 -0
  47. package/dest/storage/address_data_provider/index.js +1 -0
  48. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts +11 -0
  49. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.d.ts.map +1 -0
  50. package/dest/storage/auth_witness_data_provider/auth_witness_data_provider.js +20 -0
  51. package/dest/storage/auth_witness_data_provider/index.d.ts +2 -0
  52. package/dest/storage/auth_witness_data_provider/index.d.ts.map +1 -0
  53. package/dest/storage/auth_witness_data_provider/index.js +1 -0
  54. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts +16 -0
  55. package/dest/storage/capsule_data_provider/capsule_data_provider.d.ts.map +1 -0
  56. package/dest/storage/capsule_data_provider/capsule_data_provider.js +57 -0
  57. package/dest/storage/capsule_data_provider/index.d.ts +2 -0
  58. package/dest/storage/capsule_data_provider/index.d.ts.map +1 -0
  59. package/dest/storage/capsule_data_provider/index.js +1 -0
  60. package/dest/{contract_data_provider → storage/contract_data_provider}/contract_data_provider.d.ts +38 -33
  61. package/dest/storage/contract_data_provider/contract_data_provider.d.ts.map +1 -0
  62. package/dest/{contract_data_provider → storage/contract_data_provider}/contract_data_provider.js +87 -42
  63. package/dest/storage/contract_data_provider/index.d.ts.map +1 -0
  64. package/dest/storage/contract_data_provider/private_functions_tree.d.ts.map +1 -0
  65. package/dest/storage/data_provider.d.ts +4 -0
  66. package/dest/storage/data_provider.d.ts.map +1 -0
  67. package/dest/storage/data_provider.js +1 -0
  68. package/dest/storage/index.d.ts +10 -0
  69. package/dest/storage/index.d.ts.map +1 -0
  70. package/dest/storage/index.js +9 -0
  71. package/dest/storage/note_data_provider/index.d.ts +3 -0
  72. package/dest/storage/note_data_provider/index.d.ts.map +1 -0
  73. package/dest/storage/note_data_provider/index.js +2 -0
  74. package/dest/storage/note_data_provider/note_dao.d.ts.map +1 -0
  75. package/dest/storage/note_data_provider/note_data_provider.d.ts +20 -0
  76. package/dest/storage/note_data_provider/note_data_provider.d.ts.map +1 -0
  77. package/dest/storage/note_data_provider/note_data_provider.js +249 -0
  78. package/dest/storage/sync_data_provider/index.d.ts +2 -0
  79. package/dest/storage/sync_data_provider/index.d.ts.map +1 -0
  80. package/dest/storage/sync_data_provider/index.js +1 -0
  81. package/dest/storage/sync_data_provider/sync_data_provider.d.ts +12 -0
  82. package/dest/storage/sync_data_provider/sync_data_provider.d.ts.map +1 -0
  83. package/dest/storage/sync_data_provider/sync_data_provider.js +29 -0
  84. package/dest/storage/tagging_data_provider/index.d.ts +2 -0
  85. package/dest/storage/tagging_data_provider/index.d.ts.map +1 -0
  86. package/dest/storage/tagging_data_provider/index.js +1 -0
  87. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts +18 -0
  88. package/dest/storage/tagging_data_provider/tagging_data_provider.d.ts.map +1 -0
  89. package/dest/storage/tagging_data_provider/tagging_data_provider.js +65 -0
  90. package/dest/synchronizer/synchronizer.d.ts +7 -3
  91. package/dest/synchronizer/synchronizer.d.ts.map +1 -1
  92. package/dest/synchronizer/synchronizer.js +16 -11
  93. package/dest/test/pxe_test_suite.d.ts.map +1 -0
  94. package/dest/{pxe_service/test → test}/pxe_test_suite.js +2 -6
  95. package/package.json +19 -26
  96. package/src/bin/index.ts +1 -1
  97. package/src/config/index.ts +2 -0
  98. package/src/entrypoints/client/bundle/index.ts +5 -0
  99. package/src/entrypoints/client/bundle/utils.ts +58 -0
  100. package/src/entrypoints/client/lazy/index.ts +5 -0
  101. package/src/entrypoints/client/lazy/utils.ts +53 -0
  102. package/src/entrypoints/client/pxe_creation_options.ts +7 -0
  103. package/src/entrypoints/server/index.ts +6 -0
  104. package/src/{utils/create_pxe_service.ts → entrypoints/server/utils.ts} +7 -18
  105. package/src/kernel_oracle/index.ts +1 -1
  106. package/src/kernel_prover/kernel_prover.ts +0 -46
  107. package/src/note_decryption_utils/add_public_values_to_payload.ts +4 -4
  108. package/src/{pxe_data_provider → pxe_oracle_interface}/index.ts +128 -96
  109. package/src/pxe_service/error_enriching.ts +8 -6
  110. package/src/pxe_service/pxe_service.ts +155 -89
  111. package/src/storage/address_data_provider/address_data_provider.ts +71 -0
  112. package/src/storage/address_data_provider/index.ts +1 -0
  113. package/src/storage/auth_witness_data_provider/auth_witness_data_provider.ts +34 -0
  114. package/src/storage/auth_witness_data_provider/index.ts +1 -0
  115. package/src/storage/capsule_data_provider/capsule_data_provider.ts +80 -0
  116. package/src/storage/capsule_data_provider/index.ts +1 -0
  117. package/src/{contract_data_provider → storage/contract_data_provider}/contract_data_provider.ts +128 -48
  118. package/src/storage/data_provider.ts +3 -0
  119. package/src/storage/index.ts +10 -0
  120. package/src/storage/note_data_provider/index.ts +2 -0
  121. package/src/storage/note_data_provider/note_data_provider.ts +345 -0
  122. package/src/storage/sync_data_provider/index.ts +1 -0
  123. package/src/storage/sync_data_provider/sync_data_provider.ts +40 -0
  124. package/src/storage/tagging_data_provider/index.ts +1 -0
  125. package/src/storage/tagging_data_provider/tagging_data_provider.ts +92 -0
  126. package/src/synchronizer/synchronizer.ts +15 -10
  127. package/src/{pxe_service/test → test}/pxe_test_suite.ts +2 -9
  128. package/dest/contract_data_provider/contract_data_provider.d.ts.map +0 -1
  129. package/dest/contract_data_provider/index.d.ts.map +0 -1
  130. package/dest/contract_data_provider/private_functions_tree.d.ts.map +0 -1
  131. package/dest/database/index.d.ts +0 -3
  132. package/dest/database/index.d.ts.map +0 -1
  133. package/dest/database/index.js +0 -2
  134. package/dest/database/interfaces/contract_artifact_db.d.ts +0 -20
  135. package/dest/database/interfaces/contract_artifact_db.d.ts.map +0 -1
  136. package/dest/database/interfaces/contract_artifact_db.js +0 -3
  137. package/dest/database/interfaces/contract_instance_db.d.ts +0 -20
  138. package/dest/database/interfaces/contract_instance_db.d.ts.map +0 -1
  139. package/dest/database/interfaces/contract_instance_db.js +0 -3
  140. package/dest/database/interfaces/index.d.ts +0 -4
  141. package/dest/database/interfaces/index.d.ts.map +0 -1
  142. package/dest/database/interfaces/pxe_database.d.ts +0 -211
  143. package/dest/database/interfaces/pxe_database.d.ts.map +0 -1
  144. package/dest/database/interfaces/pxe_database.js +0 -4
  145. package/dest/database/interfaces/pxe_database_test_suite.d.ts +0 -7
  146. package/dest/database/interfaces/pxe_database_test_suite.d.ts.map +0 -1
  147. package/dest/database/interfaces/pxe_database_test_suite.js +0 -557
  148. package/dest/database/kv_pxe_database.d.ts +0 -58
  149. package/dest/database/kv_pxe_database.d.ts.map +0 -1
  150. package/dest/database/kv_pxe_database.js +0 -480
  151. package/dest/database/note_dao.d.ts.map +0 -1
  152. package/dest/index.d.ts +0 -9
  153. package/dest/index.d.ts.map +0 -1
  154. package/dest/index.js +0 -8
  155. package/dest/pxe_data_provider/index.d.ts.map +0 -1
  156. package/dest/pxe_data_provider/tagging_utils.d.ts.map +0 -1
  157. package/dest/pxe_service/test/pxe_test_suite.d.ts.map +0 -1
  158. package/dest/utils/create_pxe_service.d.ts.map +0 -1
  159. package/src/database/index.ts +0 -2
  160. package/src/database/interfaces/contract_artifact_db.ts +0 -20
  161. package/src/database/interfaces/contract_instance_db.ts +0 -21
  162. package/src/database/interfaces/index.ts +0 -3
  163. package/src/database/interfaces/pxe_database.ts +0 -240
  164. package/src/database/interfaces/pxe_database_test_suite.ts +0 -558
  165. package/src/database/kv_pxe_database.ts +0 -670
  166. package/src/index.ts +0 -9
  167. /package/dest/{database/interfaces/index.js → entrypoints/client/pxe_creation_options.js} +0 -0
  168. /package/dest/{pxe_data_provider → pxe_oracle_interface}/tagging_utils.d.ts +0 -0
  169. /package/dest/{pxe_data_provider → pxe_oracle_interface}/tagging_utils.js +0 -0
  170. /package/dest/{contract_data_provider → storage/contract_data_provider}/index.d.ts +0 -0
  171. /package/dest/{contract_data_provider → storage/contract_data_provider}/index.js +0 -0
  172. /package/dest/{contract_data_provider → storage/contract_data_provider}/private_functions_tree.d.ts +0 -0
  173. /package/dest/{contract_data_provider → storage/contract_data_provider}/private_functions_tree.js +0 -0
  174. /package/dest/{database → storage/note_data_provider}/note_dao.d.ts +0 -0
  175. /package/dest/{database → storage/note_data_provider}/note_dao.js +0 -0
  176. /package/dest/{pxe_service/test → test}/pxe_test_suite.d.ts +0 -0
  177. /package/src/{pxe_data_provider → pxe_oracle_interface}/tagging_utils.ts +0 -0
  178. /package/src/{contract_data_provider → storage/contract_data_provider}/index.ts +0 -0
  179. /package/src/{contract_data_provider → storage/contract_data_provider}/private_functions_tree.ts +0 -0
  180. /package/src/{database → storage/note_data_provider}/note_dao.ts +0 -0
@@ -14,32 +14,41 @@ import { getNonNullifiedL1ToL2MessageWitness } from '@aztec/stdlib/messaging';
14
14
  import { Note } from '@aztec/stdlib/note';
15
15
  import { MerkleTreeId } from '@aztec/stdlib/trees';
16
16
  import { TxHash } from '@aztec/stdlib/tx';
17
- import { ContractDataProvider } from '../contract_data_provider/index.js';
18
- import { NoteDao } from '../database/note_dao.js';
19
17
  import { getOrderedNoteItems } from '../note_decryption_utils/add_public_values_to_payload.js';
18
+ import { NoteDao } from '../storage/note_data_provider/note_dao.js';
20
19
  import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndexesMap } from './tagging_utils.js';
21
20
  /**
22
21
  * A data layer that provides and stores information needed for simulating/proving a transaction.
23
- */ export class PXEDataProvider {
24
- db;
25
- keyStore;
22
+ */ export class PXEOracleInterface {
26
23
  aztecNode;
24
+ keyStore;
27
25
  simulationProvider;
28
26
  contractDataProvider;
27
+ noteDataProvider;
28
+ capsuleDataProvider;
29
+ syncDataProvider;
30
+ taggingDataProvider;
31
+ addressDataProvider;
32
+ authWitnessDataProvider;
29
33
  log;
30
- constructor(db, keyStore, aztecNode, simulationProvider, contractDataProvider, log = createLogger('pxe:pxe_data_provider')){
31
- this.db = db;
32
- this.keyStore = keyStore;
34
+ constructor(aztecNode, keyStore, simulationProvider, contractDataProvider, noteDataProvider, capsuleDataProvider, syncDataProvider, taggingDataProvider, addressDataProvider, authWitnessDataProvider, log = createLogger('pxe:pxe_data_manager')){
33
35
  this.aztecNode = aztecNode;
36
+ this.keyStore = keyStore;
34
37
  this.simulationProvider = simulationProvider;
35
38
  this.contractDataProvider = contractDataProvider;
39
+ this.noteDataProvider = noteDataProvider;
40
+ this.capsuleDataProvider = capsuleDataProvider;
41
+ this.syncDataProvider = syncDataProvider;
42
+ this.taggingDataProvider = taggingDataProvider;
43
+ this.addressDataProvider = addressDataProvider;
44
+ this.authWitnessDataProvider = authWitnessDataProvider;
36
45
  this.log = log;
37
46
  }
38
47
  getKeyValidationRequest(pkMHash, contractAddress) {
39
48
  return this.keyStore.getKeyValidationRequest(pkMHash, contractAddress);
40
49
  }
41
50
  async getCompleteAddress(account) {
42
- const completeAddress = await this.db.getCompleteAddress(account);
51
+ const completeAddress = await this.addressDataProvider.getCompleteAddress(account);
43
52
  if (!completeAddress) {
44
53
  throw new Error(`No public key registered for address ${account}.
45
54
  Register it by calling pxe.registerAccount(...).\nSee docs for context: https://docs.aztec.network/developers/reference/debugging/aztecnr-errors#simulation-error-no-public-key-registered-for-address-0x0-register-it-by-calling-pxeregisterrecipient-or-pxeregisteraccount`);
@@ -47,21 +56,18 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
47
56
  return completeAddress;
48
57
  }
49
58
  async getContractInstance(address) {
50
- const instance = await this.db.getContractInstance(address);
59
+ const instance = await this.contractDataProvider.getContractInstance(address);
51
60
  if (!instance) {
52
61
  throw new Error(`No contract instance found for address ${address.toString()}`);
53
62
  }
54
63
  return instance;
55
64
  }
56
65
  async getAuthWitness(messageHash) {
57
- const witness = await this.db.getAuthWitness(messageHash);
58
- if (!witness) {
59
- throw new Error(`Unknown auth witness for message hash ${messageHash.toString()}`);
60
- }
66
+ const witness = await this.authWitnessDataProvider.getAuthWitness(messageHash);
61
67
  return witness;
62
68
  }
63
69
  async getNotes(contractAddress, storageSlot, status, scopes) {
64
- const noteDaos = await this.db.getNotes({
70
+ const noteDaos = await this.noteDataProvider.getNotes({
65
71
  contractAddress,
66
72
  storageSlot,
67
73
  status,
@@ -176,7 +182,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
176
182
  *
177
183
  * @returns A Promise that resolves to a BlockHeader object.
178
184
  */ getBlockHeader() {
179
- return this.db.getBlockHeader();
185
+ return this.syncDataProvider.getBlockHeader();
180
186
  }
181
187
  /**
182
188
  * Fetches the current block number.
@@ -205,7 +211,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
205
211
  * finally the index specified tag. We will then query the node with this tag for each address in the address book.
206
212
  * @returns The full list of the users contact addresses.
207
213
  */ getSenders() {
208
- return this.db.getSenderAddresses();
214
+ return this.taggingDataProvider.getSenderAddresses();
209
215
  }
210
216
  /**
211
217
  * Returns the tagging secret for a given sender and recipient pair. For this to work, the ivsk_m of the sender must be known.
@@ -217,7 +223,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
217
223
  */ async getIndexedTaggingSecretAsSender(contractAddress, sender, recipient) {
218
224
  await this.syncTaggedLogsAsSender(contractAddress, sender, recipient);
219
225
  const appTaggingSecret = await this.#calculateAppTaggingSecret(contractAddress, sender, recipient);
220
- const [index] = await this.db.getTaggingSecretsIndexesAsSender([
226
+ const [index] = await this.taggingDataProvider.getTaggingSecretsIndexesAsSender([
221
227
  appTaggingSecret
222
228
  ]);
223
229
  return new IndexedTaggingSecret(appTaggingSecret, index);
@@ -237,10 +243,10 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
237
243
  contractName,
238
244
  contractAddress
239
245
  });
240
- const [index] = await this.db.getTaggingSecretsIndexesAsSender([
246
+ const [index] = await this.taggingDataProvider.getTaggingSecretsIndexesAsSender([
241
247
  secret
242
248
  ]);
243
- await this.db.setTaggingSecretsIndexesAsSender([
249
+ await this.taggingDataProvider.setTaggingSecretsIndexesAsSender([
244
250
  new IndexedTaggingSecret(secret, index + 1)
245
251
  ]);
246
252
  }
@@ -270,7 +276,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
270
276
  // We implicitly add all PXE accounts as senders, this helps us decrypt tags on notes that we send to ourselves
271
277
  // (recipient = us, sender = us)
272
278
  const senders = [
273
- ...await this.db.getSenderAddresses(),
279
+ ...await this.taggingDataProvider.getSenderAddresses(),
274
280
  ...await this.keyStore.getAccounts()
275
281
  ].filter((address, index, self)=>index === self.findIndex((otherAddress)=>otherAddress.equals(address)));
276
282
  const appTaggingSecrets = await Promise.all(senders.map(async (contact)=>{
@@ -281,7 +287,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
281
287
  contractAddress
282
288
  ]);
283
289
  }));
284
- const indexes = await this.db.getTaggingSecretsIndexesAsRecipient(appTaggingSecrets);
290
+ const indexes = await this.taggingDataProvider.getTaggingSecretsIndexesAsRecipient(appTaggingSecrets);
285
291
  return appTaggingSecrets.map((secret, i)=>new IndexedTaggingSecret(secret, indexes[i]));
286
292
  }
287
293
  /**
@@ -292,7 +298,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
292
298
  * @param recipient - The address of the recipient.
293
299
  */ async syncTaggedLogsAsSender(contractAddress, sender, recipient) {
294
300
  const appTaggingSecret = await this.#calculateAppTaggingSecret(contractAddress, sender, recipient);
295
- const [oldIndex] = await this.db.getTaggingSecretsIndexesAsSender([
301
+ const [oldIndex] = await this.taggingDataProvider.getTaggingSecretsIndexesAsSender([
296
302
  appTaggingSecret
297
303
  ]);
298
304
  // This algorithm works such that:
@@ -326,7 +332,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
326
332
  }while (numConsecutiveEmptyLogs < MIN_CONSECUTIVE_EMPTY_LOGS)
327
333
  const contractName = await this.contractDataProvider.getDebugContractName(contractAddress);
328
334
  if (currentIndex !== oldIndex) {
329
- await this.db.setTaggingSecretsIndexesAsSender([
335
+ await this.taggingDataProvider.setTaggingSecretsIndexesAsSender([
330
336
  new IndexedTaggingSecret(appTaggingSecret, currentIndex)
331
337
  ]);
332
338
  this.log.debug(`Syncing logs for sender ${sender} at contract ${contractName}(${contractAddress})`, {
@@ -446,7 +452,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
446
452
  // We filter the logs by block number and store them in the map.
447
453
  logsMap.set(recipient.toString(), logsForRecipient.filter((log)=>log.blockNumber <= maxBlockNumber));
448
454
  // At this point we have processed all the logs for the recipient so we store the new largest indexes in the db.
449
- await this.db.setTaggingSecretsIndexesAsRecipient(Object.entries(newLargestIndexMapToStore).map(([appTaggingSecret, index])=>new IndexedTaggingSecret(Fr.fromHexString(appTaggingSecret), index)));
455
+ await this.taggingDataProvider.setTaggingSecretsIndexesAsRecipient(Object.entries(newLargestIndexMapToStore).map(([appTaggingSecret, index])=>new IndexedTaggingSecret(Fr.fromHexString(appTaggingSecret), index)));
450
456
  }
451
457
  return logsMap;
452
458
  }
@@ -472,7 +478,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
472
478
  if (!excludedIndices.has(scopedLog.txHash.toString())) {
473
479
  excludedIndices.set(scopedLog.txHash.toString(), new Set());
474
480
  }
475
- const note = await getOrderedNoteItems(this.db, payload);
481
+ const note = await getOrderedNoteItems(this.contractDataProvider, payload);
476
482
  const plaintext = [
477
483
  payload.storageSlot,
478
484
  payload.noteTypeId.toField(),
@@ -509,17 +515,78 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
509
515
  }
510
516
  return;
511
517
  }
512
- // Called when notes are delivered, usually as a result to a call to the process_log contract function
513
518
  async deliverNote(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient) {
514
- const noteDao = await this.produceNoteDao(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient);
515
- await this.db.addNotes([
519
+ // We are going to store the new note in the NoteDataProvider, which will let us later return it via `getNotes`.
520
+ // There's two things we need to check before we do this however:
521
+ // - we must make sure the note does actually exist in the note hash tree
522
+ // - we need to check if the note has already been nullified
523
+ //
524
+ // Failing to do either of the above would result in circuits getting either non-existent notes and failing to
525
+ // produce inclusion proofs for them, or getting nullified notes and producing duplicate nullifiers, both of which
526
+ // are catastrophic failure modes.
527
+ //
528
+ // Note that adding a note and removing it is *not* equivalent to never adding it in the first place. A nullifier
529
+ // emitted in a block that comes after note creation might result in the note being de-nullified by a chain reorg,
530
+ // so we must store both the note hash and nullifier block information.
531
+ // We avoid making node queries at 'latest' since we don't want to process notes or nullifiers that only exist ahead
532
+ // in time of the locally synced state.
533
+ // Note that while this technically results in historical queries, we perform it at the latest locally synced block
534
+ // number which *should* be recent enough to be available, even for non-archive nodes.
535
+ const syncedBlockNumber = await this.syncDataProvider.getBlockNumber();
536
+ // TODO (#12559): handle undefined syncedBlockNumber
537
+ // if (syncedBlockNumber === undefined) {
538
+ // throw new Error(`Attempted to deliver a note with an unsynchronized PXE - this should never happen`);
539
+ //}
540
+ // By computing siloed and unique note hashes ourselves we prevent contracts from interfering with the note storage
541
+ // of other contracts, which would constitute a security breach.
542
+ const uniqueNoteHash = await computeUniqueNoteHash(nonce, await siloNoteHash(contractAddress, noteHash));
543
+ const siloedNullifier = await siloNullifier(contractAddress, nullifier);
544
+ // We store notes by their index in the global note hash tree, which has the convenient side effect of validating
545
+ // note existence in said tree.
546
+ const [uniqueNoteHashTreeIndex] = await this.aztecNode.findLeavesIndexes(syncedBlockNumber, MerkleTreeId.NOTE_HASH_TREE, [
547
+ uniqueNoteHash
548
+ ]);
549
+ if (uniqueNoteHashTreeIndex === undefined) {
550
+ throw new Error(`Note hash ${noteHash} (uniqued as ${uniqueNoteHash}) is not present on the tree at block ${syncedBlockNumber} (from tx ${txHash})`);
551
+ }
552
+ // TODO (#12550): findLeavesIndexes should probably return an InBlock, same as findNullifiersIndexesWithBlock. This
553
+ // would save us from having to then query the tx receipt in order to get the block hash and number. Note regardless
554
+ // that we're not validating that the note was indeed created in this tx (which would require inspecting the tx
555
+ // effects), so maybe what we really want is an InTx.
556
+ const txReceipt = await this.aztecNode.getTxReceipt(new TxHash(txHash));
557
+ if (txReceipt === undefined) {
558
+ throw new Error(`Failed to fetch tx receipt for tx hash ${txHash} when searching for note hashes`);
559
+ }
560
+ // TODO(#12549): does it make sense to store the recipient's address point instead of just its address?
561
+ const recipientAddressPoint = await recipient.toAddressPoint();
562
+ const noteDao = new NoteDao(new Note(content), contractAddress, storageSlot, nonce, noteHash, siloedNullifier, new TxHash(txHash), txReceipt.blockNumber, txReceipt.blockHash.toString(), uniqueNoteHashTreeIndex, recipientAddressPoint, NoteSelector.empty());
563
+ await this.noteDataProvider.addNotes([
516
564
  noteDao
517
565
  ], recipient);
518
566
  this.log.verbose('Added note', {
519
567
  contract: noteDao.contractAddress,
520
568
  slot: noteDao.storageSlot,
521
- nullifier: noteDao.siloedNullifier.toString
569
+ noteHash: noteDao.noteHash,
570
+ nullifier: noteDao.siloedNullifier.toString()
522
571
  });
572
+ const [nullifierIndex] = await this.aztecNode.findNullifiersIndexesWithBlock(syncedBlockNumber, [
573
+ siloedNullifier
574
+ ]);
575
+ if (nullifierIndex !== undefined) {
576
+ const { data: _, ...blockHashAndNum } = nullifierIndex;
577
+ await this.noteDataProvider.removeNullifiedNotes([
578
+ {
579
+ data: siloedNullifier,
580
+ ...blockHashAndNum
581
+ }
582
+ ], recipientAddressPoint);
583
+ this.log.verbose(`Removed just-added note`, {
584
+ contract: contractAddress,
585
+ slot: storageSlot,
586
+ noteHash: noteHash,
587
+ nullifier: siloedNullifier.toString()
588
+ });
589
+ }
523
590
  }
524
591
  async getLogByTag(tag) {
525
592
  const logs = await this.aztecNode.getLogsByTags([
@@ -555,7 +622,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
555
622
  contract: contractAddress
556
623
  });
557
624
  for (const recipient of (await this.keyStore.getAccounts())){
558
- const currentNotesForRecipient = await this.db.getNotes({
625
+ const currentNotesForRecipient = await this.noteDataProvider.getNotes({
559
626
  contractAddress,
560
627
  owner: recipient
561
628
  });
@@ -571,7 +638,7 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
571
638
  };
572
639
  }
573
640
  }).filter((nullifier)=>nullifier !== undefined);
574
- const nullifiedNotes = await this.db.removeNullifiedNotes(foundNullifiers, await recipient.toAddressPoint());
641
+ const nullifiedNotes = await this.noteDataProvider.removeNullifiedNotes(foundNullifiers, await recipient.toAddressPoint());
575
642
  nullifiedNotes.forEach((noteDao)=>{
576
643
  this.log.verbose(`Removed note for contract ${noteDao.contractAddress} at slot ${noteDao.storageSlot}`, {
577
644
  contract: noteDao.contractAddress,
@@ -581,32 +648,8 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
581
648
  });
582
649
  }
583
650
  }
584
- async produceNoteDao(contractAddress, storageSlot, nonce, content, noteHash, nullifier, txHash, recipient) {
585
- // We need to validate that the note does indeed exist in the world state to avoid adding notes that are then
586
- // impossible to prove.
587
- const receipt = await this.aztecNode.getTxReceipt(new TxHash(txHash));
588
- if (receipt === undefined) {
589
- throw new Error(`Failed to fetch tx receipt for tx hash ${txHash} when searching for note hashes`);
590
- }
591
- // Siloed and unique hashes are computed by us instead of relying on values sent by the contract to make sure
592
- // we're not e.g. storing notes that belong to some other contract, which would constitute a security breach.
593
- const uniqueNoteHash = await computeUniqueNoteHash(nonce, await siloNoteHash(contractAddress, noteHash));
594
- const siloedNullifier = await siloNullifier(contractAddress, nullifier);
595
- // We store notes by their index in the global note hash tree, which has the convenient side effect of validating
596
- // note existence in said tree. Note that while this is technically a historical query, we perform it at the latest
597
- // locally synced block number which *should* be recent enough to be available. We avoid querying at 'latest' since
598
- // we want to avoid accidentally processing notes that only exist ahead in time of the locally synced state.
599
- const syncedBlockNumber = await this.db.getBlockNumber();
600
- const uniqueNoteHashTreeIndex = (await this.aztecNode.findLeavesIndexes(syncedBlockNumber, MerkleTreeId.NOTE_HASH_TREE, [
601
- uniqueNoteHash
602
- ]))[0];
603
- if (uniqueNoteHashTreeIndex === undefined) {
604
- throw new Error(`Note hash ${noteHash} (uniqued as ${uniqueNoteHash}) is not present on the tree at block ${syncedBlockNumber} (from tx ${txHash})`);
605
- }
606
- return new NoteDao(new Note(content), contractAddress, storageSlot, nonce, noteHash, siloedNullifier, new TxHash(txHash), receipt.blockNumber, receipt.blockHash.toString(), uniqueNoteHashTreeIndex, await recipient.toAddressPoint(), NoteSelector.empty());
607
- }
608
651
  async callProcessLog(contractAddress, logPlaintext, txHash, noteHashes, firstNullifier, recipient, simulator) {
609
- const artifact = await new ContractDataProvider(this.db).getFunctionArtifactByName(contractAddress, 'process_log');
652
+ const artifact = await this.contractDataProvider.getFunctionArtifactByName(contractAddress, 'process_log');
610
653
  if (!artifact) {
611
654
  throw new Error(`Mandatory implementation of "process_log" missing in noir contract ${contractAddress.toString()}.`);
612
655
  }
@@ -629,16 +672,16 @@ import { WINDOW_HALF_SIZE, getIndexedTaggingSecretsForTheWindow, getInitialIndex
629
672
  await (simulator ?? new AcirSimulator(this, this.simulationProvider)).runUnconstrained(execRequest, contractAddress, selector, []);
630
673
  }
631
674
  storeCapsule(contractAddress, slot, capsule) {
632
- return this.db.storeCapsule(contractAddress, slot, capsule);
675
+ return this.capsuleDataProvider.storeCapsule(contractAddress, slot, capsule);
633
676
  }
634
677
  loadCapsule(contractAddress, slot) {
635
- return this.db.loadCapsule(contractAddress, slot);
678
+ return this.capsuleDataProvider.loadCapsule(contractAddress, slot);
636
679
  }
637
680
  deleteCapsule(contractAddress, slot) {
638
- return this.db.deleteCapsule(contractAddress, slot);
681
+ return this.capsuleDataProvider.deleteCapsule(contractAddress, slot);
639
682
  }
640
683
  copyCapsule(contractAddress, srcSlot, dstSlot, numEntries) {
641
- return this.db.copyCapsule(contractAddress, srcSlot, dstSlot, numEntries);
684
+ return this.capsuleDataProvider.copyCapsule(contractAddress, srcSlot, dstSlot, numEntries);
642
685
  }
643
686
  }
644
687
  function toBoundedVec(array, maxLength) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagging_utils.d.ts","sourceRoot":"","sources":["../../src/pxe_oracle_interface/tagging_utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG1D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,wBAAgB,oCAAoC,CAClD,iBAAiB,EAAE;IAAE,gBAAgB,EAAE,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAAE,GAC3F,oBAAoB,EAAE,CAQxB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,qBAAqB,EAAE,oBAAoB,EAAE,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAQ3G"}
@@ -1,12 +1,11 @@
1
1
  import type { Logger } from '@aztec/foundation/log';
2
2
  import { type SimulationError } from '@aztec/stdlib/errors';
3
- import { ContractDataProvider } from '../contract_data_provider/index.js';
4
- import type { PxeDatabase } from '../database/interfaces/pxe_database.js';
3
+ import type { ContractDataProvider } from '../storage/contract_data_provider/contract_data_provider.js';
5
4
  /**
6
5
  * Adds contract and function names to a simulation error, if they
7
6
  * can be found in the PXE database
8
7
  * @param err - The error to enrich.
9
8
  */
10
- export declare function enrichSimulationError(err: SimulationError, db: PxeDatabase, logger: Logger): Promise<void>;
11
- export declare function enrichPublicSimulationError(err: SimulationError, contractDataProvider: ContractDataProvider, db: PxeDatabase, logger: Logger): Promise<void>;
9
+ export declare function enrichSimulationError(err: SimulationError, contractDataProvider: ContractDataProvider, logger: Logger): Promise<void>;
10
+ export declare function enrichPublicSimulationError(err: SimulationError, contractDataProvider: ContractDataProvider, logger: Logger): Promise<void>;
12
11
  //# sourceMappingURL=error_enriching.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error_enriching.d.ts","sourceRoot":"","sources":["../../src/pxe_service/error_enriching.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,KAAK,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAE1E;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAwChG;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,oBAAoB,EAAE,oBAAoB,EAC1C,EAAE,EAAE,WAAW,EACf,MAAM,EAAE,MAAM,iBAyCf"}
1
+ {"version":3,"file":"error_enriching.d.ts","sourceRoot":"","sources":["../../src/pxe_service/error_enriching.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,OAAO,EAAE,KAAK,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAEvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6DAA6D,CAAC;AAExG;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,eAAe,EACpB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,MAAM,iBAyCf;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,oBAAoB,EAAE,oBAAoB,EAC1C,MAAM,EAAE,MAAM,iBAyCf"}
@@ -8,7 +8,7 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
8
8
  * Adds contract and function names to a simulation error, if they
9
9
  * can be found in the PXE database
10
10
  * @param err - The error to enrich.
11
- */ export async function enrichSimulationError(err, db, logger) {
11
+ */ export async function enrichSimulationError(err, contractDataProvider, logger) {
12
12
  // Maps contract addresses to the set of function names that were in error.
13
13
  // Map and Set do reference equality for their keys instead of value equality, so we store the string
14
14
  // representation to get e.g. different contract address objects with the same address value to match.
@@ -23,7 +23,7 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
23
23
  ...mentionedFunctions.entries()
24
24
  ].map(async ([contractAddress, fnNames])=>{
25
25
  const parsedContractAddress = AztecAddress.fromString(contractAddress);
26
- const contract = await db.getContract(parsedContractAddress);
26
+ const contract = await contractDataProvider.getContract(parsedContractAddress);
27
27
  if (contract) {
28
28
  err.enrichWithContractName(parsedContractAddress, contract.name);
29
29
  for (const fnName of fnNames){
@@ -39,7 +39,7 @@ import { isNoirCallStackUnresolved } from '@aztec/stdlib/errors';
39
39
  }
40
40
  }));
41
41
  }
42
- export async function enrichPublicSimulationError(err, contractDataProvider, db, logger) {
42
+ export async function enrichPublicSimulationError(err, contractDataProvider, logger) {
43
43
  const callStack = err.getCallStack();
44
44
  const originalFailingFunction = callStack[callStack.length - 1];
45
45
  // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Properly fix this.
@@ -64,6 +64,6 @@ export async function enrichPublicSimulationError(err, contractDataProvider, db,
64
64
  logger.warn(`Could not resolve noir call stack for ${originalFailingFunction.contractAddress.toString()}:${originalFailingFunction.functionName?.toString() ?? ''}: ${err}`);
65
65
  }
66
66
  }
67
- await enrichSimulationError(err, db, logger);
67
+ await enrichSimulationError(err, contractDataProvider, logger);
68
68
  }
69
69
  }
@@ -2,46 +2,50 @@ import { L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/constants';
2
2
  import { Fr, type Point } from '@aztec/foundation/fields';
3
3
  import { type Logger } from '@aztec/foundation/log';
4
4
  import type { SiblingPath } from '@aztec/foundation/trees';
5
- import type { KeyStore } from '@aztec/key-store';
6
- import type { L2TipsStore } from '@aztec/kv-store/stores';
5
+ import type { AztecAsyncKVStore } from '@aztec/kv-store';
7
6
  import { type ProtocolContractsProvider } from '@aztec/protocol-contracts';
8
7
  import { type SimulationProvider } from '@aztec/simulator/client';
9
8
  import { type AbiDecoded, type ContractArtifact } from '@aztec/stdlib/abi';
10
9
  import type { AuthWitness } from '@aztec/stdlib/auth-witness';
11
10
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
12
11
  import type { InBlock, L2Block } from '@aztec/stdlib/block';
13
- import type { CompleteAddress, ContractClassWithId, ContractInstanceWithAddress, NodeInfo, PartialAddress } from '@aztec/stdlib/contract';
12
+ import { CompleteAddress, type ContractClassWithId, type ContractInstanceWithAddress, type NodeInfo, type PartialAddress } from '@aztec/stdlib/contract';
14
13
  import type { GasFees } from '@aztec/stdlib/gas';
15
14
  import type { AztecNode, EventMetadataDefinition, GetContractClassLogsResponse, GetPublicLogsResponse, PXE, PXEInfo, PrivateKernelProver } from '@aztec/stdlib/interfaces/client';
16
15
  import type { LogFilter } from '@aztec/stdlib/logs';
17
16
  import { type NotesFilter, UniqueNote } from '@aztec/stdlib/note';
18
17
  import { PrivateExecutionResult, type Tx, type TxEffect, type TxExecutionRequest, type TxHash, TxProvingResult, type TxReceipt, TxSimulationResult } from '@aztec/stdlib/tx';
19
18
  import type { PXEServiceConfig } from '../config/index.js';
20
- import type { PxeDatabase } from '../database/index.js';
21
19
  /**
22
20
  * A Private eXecution Environment (PXE) implementation.
23
21
  */
24
22
  export declare class PXEService implements PXE {
25
23
  #private;
26
- private keyStore;
27
24
  private node;
28
- private db;
29
- private proofCreator;
30
- private protocolContractsProvider;
31
25
  private synchronizer;
26
+ private keyStore;
32
27
  private contractDataProvider;
33
- private pxeDataProvider;
28
+ private noteDataProvider;
29
+ private capsuleDataProvider;
30
+ private syncDataProvider;
31
+ private taggingDataProvider;
32
+ private addressDataProvider;
33
+ private authWitnessDataProvider;
34
34
  private simulator;
35
- private log;
36
35
  private packageVersion;
37
36
  private proverEnabled;
38
- constructor(keyStore: KeyStore, node: AztecNode, db: PxeDatabase, tipsStore: L2TipsStore, proofCreator: PrivateKernelProver, simulationProvider: SimulationProvider, protocolContractsProvider: ProtocolContractsProvider, config: PXEServiceConfig, loggerOrSuffix?: string | Logger);
37
+ private proofCreator;
38
+ private protocolContractsProvider;
39
+ private log;
40
+ private constructor();
39
41
  /**
40
- * Starts the PXE Service by beginning the synchronization process between the Aztec node and the database.
42
+ * Creates an instance of a PXE Service by instantiating all the necessary data providers and services.
43
+ * Also triggers the registration of the protocol contracts and makes sure the provided node
44
+ * can be contacted.
41
45
  *
42
- * @returns A promise that resolves when the server has started successfully.
46
+ * @returns A promise that resolves PXE service is ready to be used.
43
47
  */
44
- init(): Promise<void>;
48
+ static create(node: AztecNode, store: AztecAsyncKVStore, proofCreator: PrivateKernelProver, simulationProvider: SimulationProvider, protocolContractsProvider: ProtocolContractsProvider, config: PXEServiceConfig, loggerOrSuffix?: string | Logger): Promise<PXEService>;
45
49
  isL1ToL2MessageSynced(l1ToL2Message: Fr): Promise<boolean>;
46
50
  /** Returns an estimate of the db size in bytes. */
47
51
  estimateDbSize(): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/pxe_service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/pxe_service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAiB,KAAK,kBAAkB,EAAsB,MAAM,yBAAyB,CAAC;AACrG,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAOtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,EAChC,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,EACrB,GAAG,EACH,OAAO,EACP,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,KAAK,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EACL,sBAAsB,EAGtB,KAAK,EAAE,EACP,KAAK,QAAQ,EACb,KAAK,kBAAkB,EACvB,KAAK,MAAM,EACX,eAAe,EACf,KAAK,SAAS,EACd,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAe3D;;GAEG;AACH,qBAAa,UAAW,YAAW,GAAG;;IAElC,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,uBAAuB;IAC/B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,yBAAyB;IACjC,OAAO,CAAC,GAAG;IAhBb,OAAO;IAmBP;;;;;;OAMG;WACiB,MAAM,CACxB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,iBAAiB,EACxB,YAAY,EAAE,mBAAmB,EACjC,kBAAkB,EAAE,kBAAkB,EACtC,yBAAyB,EAAE,yBAAyB,EACpD,MAAM,EAAE,gBAAgB,EACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM;IAiElC,qBAAqB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1D,mDAAmD;IACtC,cAAc;IAcpB,cAAc,CAAC,OAAO,EAAE,WAAW;IAInC,cAAc,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC;IAI1D,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IAInE,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC;IAItF,wBAAwB,CACnC,EAAE,EAAE,EAAE,EACN,eAAe,GAAE,OAAe,GAC/B,OAAO,CAAC;QACT,aAAa,EAAE,mBAAmB,GAAG,SAAS,CAAC;QAC/C,iCAAiC,EAAE,OAAO,CAAC;QAC3C,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;KACxC,CAAC;IAeW,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAC/D,gBAAgB,EAAE,2BAA2B,GAAG,SAAS,CAAC;QAC1D,qBAAqB,EAAE,OAAO,CAAC;QAC/B,0BAA0B,EAAE,OAAO,CAAC;KACrC,CAAC;IAcW,eAAe,CAAC,SAAS,EAAE,EAAE,EAAE,cAAc,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAgBxF,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBlE,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAM/B,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYlD,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAUnD,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhE,gBAAgB,CAAC,QAAQ,EAAE;QAAE,QAAQ,EAAE,2BAA2B,CAAC;QAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAA;KAAE;IAqCjG,cAAc,CAAC,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B9F,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIjC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE;IAInD,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA6BpD,0BAA0B,CACrC,eAAe,EAAE,YAAY,EAC7B,WAAW,EAAE,EAAE,EACf,MAAM,EAAE,EAAE,GACT,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAI3D,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAIpG,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAQ3D,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,OAAO,CAClB,SAAS,EAAE,kBAAkB,EAC7B,sBAAsB,EAAE,sBAAsB,GAC7C,OAAO,CAAC,eAAe,CAAC;IAcd,UAAU,CACrB,SAAS,EAAE,kBAAkB,EAC7B,cAAc,EAAE,OAAO,EACvB,SAAS,GAAE,YAAY,GAAG,SAAqB,EAC/C,gBAAgB,GAAE,OAAe,EACjC,kBAAkB,GAAE,OAAe,EACnC,OAAO,GAAE,OAAe,EACxB,MAAM,CAAC,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,kBAAkB,CAAC;IAuEjB,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAa/B,qBAAqB,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,GAAG,EAAE,EACX,EAAE,EAAE,YAAY,EAChB,KAAK,CAAC,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,UAAU,CAAC;IAmBf,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIhD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IAI7D,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpD;;;;OAIG;IACI,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIvE;;;;OAIG;IACI,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA4BxE,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;IAuBtC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IA6JxB,gBAAgB,CAAC,CAAC,EAC7B,gBAAgB,EAAE,uBAAuB,EACzC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAEb,IAAI,EAAE,KAAK,EAAE,GACZ,OAAO,CAAC,CAAC,EAAE,CAAC;IAiET,eAAe,CAAC,CAAC,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IA8BxG,iBAAiB;IAIvB,OAAO,CAAC,kBAAkB;CAa3B"}