@aztec/pxe 0.55.1 → 0.57.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 (78) hide show
  1. package/dest/bin/index.js +0 -0
  2. package/dest/database/deferred_note_dao.d.ts +6 -2
  3. package/dest/database/deferred_note_dao.d.ts.map +1 -1
  4. package/dest/database/deferred_note_dao.js +8 -5
  5. package/dest/database/incoming_note_dao.d.ts +3 -1
  6. package/dest/database/incoming_note_dao.d.ts.map +1 -1
  7. package/dest/database/incoming_note_dao.js +5 -1
  8. package/dest/database/kv_pxe_database.d.ts.map +1 -1
  9. package/dest/database/kv_pxe_database.js +3 -2
  10. package/dest/database/outgoing_note_dao.d.ts +3 -1
  11. package/dest/database/outgoing_note_dao.d.ts.map +1 -1
  12. package/dest/database/outgoing_note_dao.js +5 -1
  13. package/dest/kernel_oracle/index.d.ts +1 -1
  14. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts +28 -0
  15. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.d.ts.map +1 -0
  16. package/dest/kernel_prover/hints/build_private_kernel_reset_private_inputs.js +260 -0
  17. package/dest/kernel_prover/hints/index.d.ts +1 -2
  18. package/dest/kernel_prover/hints/index.d.ts.map +1 -1
  19. package/dest/kernel_prover/hints/index.js +2 -3
  20. package/dest/kernel_prover/kernel_prover.d.ts +2 -4
  21. package/dest/kernel_prover/kernel_prover.d.ts.map +1 -1
  22. package/dest/kernel_prover/kernel_prover.js +26 -25
  23. package/dest/kernel_prover/test/test_circuit_prover.d.ts +2 -3
  24. package/dest/kernel_prover/test/test_circuit_prover.d.ts.map +1 -1
  25. package/dest/kernel_prover/test/test_circuit_prover.js +8 -11
  26. package/dest/note_processor/note_processor.d.ts.map +1 -1
  27. package/dest/note_processor/note_processor.js +13 -15
  28. package/dest/note_processor/utils/add_nullable_field_to_payload.d.ts +12 -0
  29. package/dest/note_processor/utils/add_nullable_field_to_payload.d.ts.map +1 -0
  30. package/dest/note_processor/utils/add_nullable_field_to_payload.js +46 -0
  31. package/dest/note_processor/utils/brute_force_note_info.d.ts +26 -0
  32. package/dest/note_processor/utils/brute_force_note_info.d.ts.map +1 -0
  33. package/dest/note_processor/utils/brute_force_note_info.js +52 -0
  34. package/dest/note_processor/utils/index.d.ts +3 -0
  35. package/dest/note_processor/utils/index.d.ts.map +1 -0
  36. package/dest/note_processor/utils/index.js +2 -0
  37. package/dest/note_processor/{produce_note_dao.d.ts → utils/produce_note_daos.d.ts} +12 -8
  38. package/dest/note_processor/utils/produce_note_daos.d.ts.map +1 -0
  39. package/dest/note_processor/utils/produce_note_daos.js +53 -0
  40. package/dest/note_processor/utils/produce_note_daos_for_key.d.ts +9 -0
  41. package/dest/note_processor/utils/produce_note_daos_for_key.d.ts.map +1 -0
  42. package/dest/note_processor/utils/produce_note_daos_for_key.js +80 -0
  43. package/dest/pxe_http/pxe_http_server.d.ts.map +1 -1
  44. package/dest/pxe_http/pxe_http_server.js +12 -4
  45. package/dest/pxe_service/create_pxe_service.d.ts.map +1 -1
  46. package/dest/pxe_service/create_pxe_service.js +1 -3
  47. package/dest/pxe_service/pxe_service.d.ts +8 -8
  48. package/dest/pxe_service/pxe_service.d.ts.map +1 -1
  49. package/dest/pxe_service/pxe_service.js +39 -56
  50. package/package.json +17 -14
  51. package/src/database/deferred_note_dao.ts +5 -1
  52. package/src/database/incoming_note_dao.ts +24 -1
  53. package/src/database/kv_pxe_database.ts +3 -1
  54. package/src/database/outgoing_note_dao.ts +23 -1
  55. package/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +467 -0
  56. package/src/kernel_prover/hints/index.ts +1 -2
  57. package/src/kernel_prover/kernel_prover.ts +53 -76
  58. package/src/kernel_prover/test/test_circuit_prover.ts +11 -15
  59. package/src/note_processor/note_processor.ts +30 -21
  60. package/src/note_processor/utils/add_nullable_field_to_payload.ts +67 -0
  61. package/src/note_processor/utils/brute_force_note_info.ts +82 -0
  62. package/src/note_processor/utils/index.ts +2 -0
  63. package/src/note_processor/utils/produce_note_daos.ts +114 -0
  64. package/src/note_processor/utils/produce_note_daos_for_key.ts +157 -0
  65. package/src/pxe_http/pxe_http_server.ts +18 -3
  66. package/src/pxe_service/create_pxe_service.ts +0 -2
  67. package/src/pxe_service/pxe_service.ts +61 -100
  68. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts +0 -5
  69. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.d.ts.map +0 -1
  70. package/dest/kernel_prover/hints/build_private_kernel_reset_hints.js +0 -90
  71. package/dest/kernel_prover/hints/needs_reset.d.ts +0 -5
  72. package/dest/kernel_prover/hints/needs_reset.d.ts.map +0 -1
  73. package/dest/kernel_prover/hints/needs_reset.js +0 -38
  74. package/dest/note_processor/produce_note_dao.d.ts.map +0 -1
  75. package/dest/note_processor/produce_note_dao.js +0 -131
  76. package/src/kernel_prover/hints/build_private_kernel_reset_hints.ts +0 -249
  77. package/src/kernel_prover/hints/needs_reset.ts +0 -54
  78. package/src/note_processor/produce_note_dao.ts +0 -235
@@ -1,9 +1,9 @@
1
- import { L1NotePayload, TaggedLog } from '@aztec/circuit-types';
1
+ import { L1NotePayload } from '@aztec/circuit-types';
2
2
  import { INITIAL_L2_BLOCK_NUM, MAX_NOTE_HASHES_PER_TX } from '@aztec/circuits.js';
3
3
  import { createDebugLogger } from '@aztec/foundation/log';
4
4
  import { Timer } from '@aztec/foundation/timer';
5
5
  import { getAcirSimulator } from '../simulator/index.js';
6
- import { produceNoteDaos } from './produce_note_dao.js';
6
+ import { produceNoteDaos } from './utils/produce_note_daos.js';
7
7
  /**
8
8
  * NoteProcessor is responsible for decrypting logs and converting them to notes via their originating contracts
9
9
  * before storing them against their owner.
@@ -100,17 +100,15 @@ export class NoteProcessor {
100
100
  for (const functionLogs of txFunctionLogs) {
101
101
  for (const log of functionLogs.logs) {
102
102
  this.stats.seen++;
103
- const incomingTaggedNote = TaggedLog.decryptAsIncoming(log.data, ivskM);
104
- const outgoingTaggedNote = TaggedLog.decryptAsOutgoing(log.data, ovskM);
105
- if (incomingTaggedNote || outgoingTaggedNote) {
106
- if (incomingTaggedNote &&
107
- outgoingTaggedNote &&
108
- !incomingTaggedNote.payload.equals(outgoingTaggedNote.payload)) {
109
- throw new Error(`Incoming and outgoing note payloads do not match. Incoming: ${JSON.stringify(incomingTaggedNote.payload)}, Outgoing: ${JSON.stringify(outgoingTaggedNote.payload)}`);
103
+ const incomingNotePayload = L1NotePayload.decryptAsIncoming(log, ivskM);
104
+ const outgoingNotePayload = L1NotePayload.decryptAsOutgoing(log, ovskM);
105
+ if (incomingNotePayload || outgoingNotePayload) {
106
+ if (incomingNotePayload && outgoingNotePayload && !incomingNotePayload.equals(outgoingNotePayload)) {
107
+ throw new Error(`Incoming and outgoing note payloads do not match. Incoming: ${JSON.stringify(incomingNotePayload)}, Outgoing: ${JSON.stringify(outgoingNotePayload)}`);
110
108
  }
111
- const payload = incomingTaggedNote?.payload || outgoingTaggedNote?.payload;
112
- const txHash = block.body.txEffects[indexOfTxInABlock].txHash;
113
- const { incomingNote, outgoingNote, incomingDeferredNote, outgoingDeferredNote } = await produceNoteDaos(this.simulator, incomingTaggedNote ? this.ivpkM : undefined, outgoingTaggedNote ? this.ovpkM : undefined, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, this.log);
109
+ const payload = incomingNotePayload || outgoingNotePayload;
110
+ const txEffect = block.body.txEffects[indexOfTxInABlock];
111
+ const { incomingNote, outgoingNote, incomingDeferredNote, outgoingDeferredNote } = await produceNoteDaos(this.simulator, this.db, incomingNotePayload ? this.ivpkM : undefined, outgoingNotePayload ? this.ovpkM : undefined, payload, txEffect.txHash, noteHashes, dataStartIndexForTx, excludedIndices, this.log, txEffect.unencryptedLogs);
114
112
  if (incomingNote) {
115
113
  incomingNotes.push(incomingNote);
116
114
  this.stats.decryptedIncoming++;
@@ -204,7 +202,7 @@ export class NoteProcessor {
204
202
  const incomingNotes = [];
205
203
  const outgoingNotes = [];
206
204
  for (const deferredNote of deferredNoteDaos) {
207
- const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash, noteHashes, dataStartIndexForTx } = deferredNote;
205
+ const { publicKey, note, contractAddress, storageSlot, noteTypeId, txHash, noteHashes, dataStartIndexForTx, unencryptedLogs, } = deferredNote;
208
206
  const payload = new L1NotePayload(note, contractAddress, storageSlot, noteTypeId);
209
207
  const isIncoming = publicKey.equals(this.ivpkM);
210
208
  const isOutgoing = publicKey.equals(this.ovpkM);
@@ -212,7 +210,7 @@ export class NoteProcessor {
212
210
  // The note does not belong to this note processor
213
211
  continue;
214
212
  }
215
- const { incomingNote, outgoingNote } = await produceNoteDaos(this.simulator, isIncoming ? this.ivpkM : undefined, isOutgoing ? this.ovpkM : undefined, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, this.log);
213
+ const { incomingNote, outgoingNote } = await produceNoteDaos(this.simulator, this.db, isIncoming ? this.ivpkM : undefined, isOutgoing ? this.ovpkM : undefined, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, this.log, unencryptedLogs);
216
214
  if (isIncoming) {
217
215
  if (!incomingNote) {
218
216
  throw new Error('Deferred incoming note could not be decoded');
@@ -231,4 +229,4 @@ export class NoteProcessor {
231
229
  return { incomingNotes, outgoingNotes };
232
230
  }
233
231
  }
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3Ivbm90ZV9wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixhQUFhLEVBQWdCLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTlGLE9BQU8sRUFBcUIsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQWtCLE1BQU0sb0JBQW9CLENBQUM7QUFFckgsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBUWhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWN4RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sYUFBYTtJQWdCeEIsWUFDa0IsT0FBcUI7SUFDckMsbUdBQW1HO0lBQ2xGLEtBQWdCO0lBQ2pDLG1HQUFtRztJQUNsRixLQUFnQixFQUN6QixRQUFrQixFQUNsQixFQUFlLEVBQ2YsSUFBZSxFQUNmLGFBQXFCLEVBQ3JCLFNBQXdCLEVBQ3hCLEdBQVc7UUFWSCxZQUFPLEdBQVAsT0FBTyxDQUFjO1FBRXBCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFFaEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBZTtRQUN4QixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBMUJyQixtRUFBbUU7UUFDbkQsVUFBSyxHQUFVLElBQUksS0FBSyxFQUFFLENBQUM7UUFFM0MsNENBQTRDO1FBQzVCLFVBQUss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
232
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90ZV9wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3Ivbm90ZV9wcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixhQUFhLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7QUFFbkYsT0FBTyxFQUFxQixvQkFBb0IsRUFBRSxzQkFBc0IsRUFBa0IsTUFBTSxvQkFBb0IsQ0FBQztBQUVySCxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBYy9EOzs7R0FHRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBZ0J4QixZQUNrQixPQUFxQjtJQUNyQyxtR0FBbUc7SUFDbEYsS0FBZ0I7SUFDakMsbUdBQW1HO0lBQ2xGLEtBQWdCLEVBQ3pCLFFBQWtCLEVBQ2xCLEVBQWUsRUFDZixJQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBd0IsRUFDeEIsR0FBVztRQVZILFlBQU8sR0FBUCxPQUFPLENBQWM7UUFFcEIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUVoQixVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFNBQUksR0FBSixJQUFJLENBQVc7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3hCLFFBQUcsR0FBSCxHQUFHLENBQVE7UUExQnJCLG1FQUFtRTtRQUNuRCxVQUFLLEdBQVUsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUUzQyw0Q0FBNEM7UUFDNUIsVUFBSyxHQUF1QjtZQUMx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
@@ -0,0 +1,12 @@
1
+ import { L1NotePayload } from '@aztec/circuit-types';
2
+ import { type Fr } from '@aztec/foundation/fields';
3
+ import { type PxeDatabase } from '../../database/pxe_database.js';
4
+ /**
5
+ * Inserts publicly delivered nullable fields into the note payload.
6
+ * @param db - PXE database used to fetch contract instance and artifact.
7
+ * @param payload - Note payload to which nullable fields should be added.
8
+ * @param nullableFields - List of nullable fields to be added to the note payload.
9
+ * @returns Note payload with nullable fields added.
10
+ */
11
+ export declare function addNullableFieldsToPayload(db: PxeDatabase, payload: L1NotePayload, nullableFields: Fr[]): Promise<L1NotePayload>;
12
+ //# sourceMappingURL=add_nullable_field_to_payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add_nullable_field_to_payload.d.ts","sourceRoot":"","sources":["../../../src/note_processor/utils/add_nullable_field_to_payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAQ,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAGnD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,EAAE,EAAE,GACnB,OAAO,CAAC,aAAa,CAAC,CAiDxB"}
@@ -0,0 +1,46 @@
1
+ import { L1NotePayload, Note } from '@aztec/circuit-types';
2
+ import { ContractNotFoundError } from '@aztec/simulator';
3
+ /**
4
+ * Inserts publicly delivered nullable fields into the note payload.
5
+ * @param db - PXE database used to fetch contract instance and artifact.
6
+ * @param payload - Note payload to which nullable fields should be added.
7
+ * @param nullableFields - List of nullable fields to be added to the note payload.
8
+ * @returns Note payload with nullable fields added.
9
+ */
10
+ export async function addNullableFieldsToPayload(db, payload, nullableFields) {
11
+ const instance = await db.getContractInstance(payload.contractAddress);
12
+ if (!instance) {
13
+ throw new ContractNotFoundError(`Could not find instance for ${payload.contractAddress.toString()}. This should never happen here as the partial notes flow should be triggered only for non-deferred notes.`);
14
+ }
15
+ const artifact = await db.getContractArtifact(instance.contractClassId);
16
+ if (!artifact) {
17
+ throw new Error(`Could not find artifact for contract class ${instance.contractClassId.toString()}. This should never happen here as the partial notes flow should be triggered only for non-deferred notes.`);
18
+ }
19
+ const noteFields = Object.values(artifact.notes).find(note => note.id.equals(payload.noteTypeId))?.fields;
20
+ if (!noteFields) {
21
+ throw new Error(`Could not find note fields for note type ${payload.noteTypeId.toString()}.`);
22
+ }
23
+ // We sort note fields by index so that we can iterate over them in order.
24
+ noteFields.sort((a, b) => a.index - b.index);
25
+ // Now we insert the nullable fields into the note based on its indices defined in the ABI.
26
+ const modifiedNoteItems = [...payload.note.items];
27
+ let indexInNullable = 0;
28
+ for (let i = 0; i < noteFields.length; i++) {
29
+ const noteField = noteFields[i];
30
+ if (noteField.nullable) {
31
+ if (i == noteFields.length - 1) {
32
+ // We are processing the last field so we simply insert the rest of the nullable fields at the end
33
+ modifiedNoteItems.push(...nullableFields.slice(indexInNullable));
34
+ }
35
+ else {
36
+ const noteFieldLength = noteFields[i + 1].index - noteField.index;
37
+ const nullableFieldsToInsert = nullableFields.slice(indexInNullable, indexInNullable + noteFieldLength);
38
+ indexInNullable += noteFieldLength;
39
+ // Now we insert the nullable fields at the note field index
40
+ modifiedNoteItems.splice(noteField.index, 0, ...nullableFieldsToInsert);
41
+ }
42
+ }
43
+ }
44
+ return new L1NotePayload(new Note(modifiedNoteItems), payload.contractAddress, payload.storageSlot, payload.noteTypeId);
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkX251bGxhYmxlX2ZpZWxkX3RvX3BheWxvYWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3IvdXRpbHMvYWRkX251bGxhYmxlX2ZpZWxkX3RvX3BheWxvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUl6RDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLDBCQUEwQixDQUM5QyxFQUFlLEVBQ2YsT0FBc0IsRUFDdEIsY0FBb0I7SUFFcEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxxQkFBcUIsQ0FDN0IsK0JBQStCLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLDRHQUE0RyxDQUM5SyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUNiLDhDQUE4QyxRQUFRLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSw0R0FBNEcsQ0FDOUwsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7SUFFMUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTdDLDJGQUEyRjtJQUMzRixNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztJQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixrR0FBa0c7Z0JBQ2xHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDbEUsTUFBTSxzQkFBc0IsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxlQUFlLEdBQUcsZUFBZSxDQUFDLENBQUM7Z0JBQ3hHLGVBQWUsSUFBSSxlQUFlLENBQUM7Z0JBQ25DLDREQUE0RDtnQkFDNUQsaUJBQWlCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztZQUMxRSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksYUFBYSxDQUN0QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUMzQixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsVUFBVSxDQUNuQixDQUFDO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,26 @@
1
+ import { type L1NotePayload, type TxHash } from '@aztec/circuit-types';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ import { type AcirSimulator } from '@aztec/simulator';
4
+ export interface NoteInfo {
5
+ noteHashIndex: number;
6
+ nonce: Fr;
7
+ noteHash: Fr;
8
+ siloedNullifier: Fr;
9
+ txHash: TxHash;
10
+ }
11
+ /**
12
+ * Finds nonce, index, inner hash and siloed nullifier for a given note.
13
+ * @dev Finds the index in the note hash tree by computing the note hash with different nonce and see which hash for
14
+ * the current tx matches this value.
15
+ * @remarks This method assists in identifying spent notes in the note hash tree.
16
+ * @param siloedNoteHashes - Note hashes in the tx. One of them should correspond to the note we are looking for
17
+ * @param txHash - Hash of a tx the note was emitted in.
18
+ * @param l1NotePayload - The note payload.
19
+ * @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same
20
+ * l1NotePayload. We need to find a different index for each replicate.
21
+ * @param computeNullifier - A flag indicating whether to compute the nullifier or just return 0.
22
+ * @returns Nonce, index, inner hash and siloed nullifier for a given note.
23
+ * @throws If cannot find the nonce for the note.
24
+ */
25
+ export declare function bruteForceNoteInfo(simulator: AcirSimulator, siloedNoteHashes: Fr[], txHash: TxHash, { contractAddress, storageSlot, noteTypeId, note }: L1NotePayload, excludedIndices: Set<number>, computeNullifier: boolean): Promise<NoteInfo>;
26
+ //# sourceMappingURL=brute_force_note_info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brute_force_note_info.d.ts","sourceRoot":"","sources":["../../../src/note_processor/utils/brute_force_note_info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,EAAE,EAAE,MAAM,0BAA0B,CAAC;AAC9C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,EAAE,CAAC;IACV,QAAQ,EAAE,EAAE,CAAC;IACb,eAAe,EAAE,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,aAAa,EACxB,gBAAgB,EAAE,EAAE,EAAE,EACtB,MAAM,EAAE,MAAM,EACd,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,aAAa,EACjE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,QAAQ,CAAC,CA+CnB"}
@@ -0,0 +1,52 @@
1
+ import { computeNoteHashNonce, siloNullifier } from '@aztec/circuits.js/hash';
2
+ import { Fr } from '@aztec/foundation/fields';
3
+ /**
4
+ * Finds nonce, index, inner hash and siloed nullifier for a given note.
5
+ * @dev Finds the index in the note hash tree by computing the note hash with different nonce and see which hash for
6
+ * the current tx matches this value.
7
+ * @remarks This method assists in identifying spent notes in the note hash tree.
8
+ * @param siloedNoteHashes - Note hashes in the tx. One of them should correspond to the note we are looking for
9
+ * @param txHash - Hash of a tx the note was emitted in.
10
+ * @param l1NotePayload - The note payload.
11
+ * @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same
12
+ * l1NotePayload. We need to find a different index for each replicate.
13
+ * @param computeNullifier - A flag indicating whether to compute the nullifier or just return 0.
14
+ * @returns Nonce, index, inner hash and siloed nullifier for a given note.
15
+ * @throws If cannot find the nonce for the note.
16
+ */
17
+ export async function bruteForceNoteInfo(simulator, siloedNoteHashes, txHash, { contractAddress, storageSlot, noteTypeId, note }, excludedIndices, computeNullifier) {
18
+ let noteHashIndex = 0;
19
+ let nonce;
20
+ let noteHash;
21
+ let siloedNoteHash;
22
+ let innerNullifier;
23
+ const firstNullifier = Fr.fromBuffer(txHash.toBuffer());
24
+ for (; noteHashIndex < siloedNoteHashes.length; ++noteHashIndex) {
25
+ if (excludedIndices.has(noteHashIndex)) {
26
+ continue;
27
+ }
28
+ const siloedNoteHashFromTxEffect = siloedNoteHashes[noteHashIndex];
29
+ if (siloedNoteHashFromTxEffect.equals(Fr.ZERO)) {
30
+ break;
31
+ }
32
+ const expectedNonce = computeNoteHashNonce(firstNullifier, noteHashIndex);
33
+ ({ noteHash, siloedNoteHash, innerNullifier } = await simulator.computeNoteHashAndOptionallyANullifier(contractAddress, expectedNonce, storageSlot, noteTypeId, computeNullifier, note));
34
+ if (siloedNoteHashFromTxEffect.equals(siloedNoteHash)) {
35
+ nonce = expectedNonce;
36
+ break;
37
+ }
38
+ }
39
+ if (!nonce) {
40
+ // NB: this used to warn the user that a decrypted log didn't match any notes.
41
+ // This was previously fine as we didn't chop transient note logs, but now we do (#1641 complete).
42
+ throw new Error('Cannot find a matching note hash for the note.');
43
+ }
44
+ return {
45
+ noteHashIndex,
46
+ nonce,
47
+ noteHash: noteHash,
48
+ siloedNullifier: siloNullifier(contractAddress, innerNullifier),
49
+ txHash,
50
+ };
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1dGVfZm9yY2Vfbm90ZV9pbmZvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL25vdGVfcHJvY2Vzc29yL3V0aWxzL2JydXRlX2ZvcmNlX25vdGVfaW5mby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBVzlDOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUN0QyxTQUF3QixFQUN4QixnQkFBc0IsRUFDdEIsTUFBYyxFQUNkLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFpQixFQUNqRSxlQUE0QixFQUM1QixnQkFBeUI7SUFFekIsSUFBSSxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLElBQUksS0FBcUIsQ0FBQztJQUMxQixJQUFJLFFBQXdCLENBQUM7SUFDN0IsSUFBSSxjQUE4QixDQUFDO0lBQ25DLElBQUksY0FBOEIsQ0FBQztJQUNuQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBRXhELE9BQU8sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBQ2hFLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSwwQkFBMEIsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNuRSxJQUFJLDBCQUEwQixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUMxRSxDQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLFNBQVMsQ0FBQyxzQ0FBc0MsQ0FDcEcsZUFBZSxFQUNmLGFBQWEsRUFDYixXQUFXLEVBQ1gsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixJQUFJLENBQ0wsQ0FBQyxDQUFDO1FBRUgsSUFBSSwwQkFBMEIsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxLQUFLLEdBQUcsYUFBYSxDQUFDO1lBQ3RCLE1BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLDhFQUE4RTtRQUM5RSxrR0FBa0c7UUFDbEcsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxPQUFPO1FBQ0wsYUFBYTtRQUNiLEtBQUs7UUFDTCxRQUFRLEVBQUUsUUFBUztRQUNuQixlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWUsRUFBRSxjQUFlLENBQUM7UUFDaEUsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ export { produceNoteDaos } from './produce_note_daos.js';
2
+ export { NoteInfo } from './brute_force_note_info.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/note_processor/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { produceNoteDaos } from './produce_note_daos.js';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3IvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDIn0=
@@ -1,16 +1,19 @@
1
- import { type L1NotePayload, type TxHash } from '@aztec/circuit-types';
2
- import { Fr, type PublicKey } from '@aztec/circuits.js';
1
+ import { type L1NotePayload, type PublicKey, type TxHash, type UnencryptedTxL2Logs } from '@aztec/circuit-types';
2
+ import { type Fr } from '@aztec/foundation/fields';
3
3
  import { type Logger } from '@aztec/foundation/log';
4
4
  import { type AcirSimulator } from '@aztec/simulator';
5
- import { DeferredNoteDao } from '../database/deferred_note_dao.js';
6
- import { IncomingNoteDao } from '../database/incoming_note_dao.js';
7
- import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
5
+ import { type DeferredNoteDao } from '../../database/deferred_note_dao.js';
6
+ import { IncomingNoteDao } from '../../database/incoming_note_dao.js';
7
+ import { OutgoingNoteDao } from '../../database/outgoing_note_dao.js';
8
+ import { type PxeDatabase } from '../../database/pxe_database.js';
8
9
  /**
9
10
  * Decodes a note from a transaction that we know was intended for us.
10
11
  * Throws if we do not yet have the contract corresponding to the note in our database.
11
12
  * Accepts a set of excluded indices, which are indices that have been assigned a note in the same tx.
12
13
  * Inserts the index of the note into the excludedIndices set if the note is successfully decoded.
13
14
  *
15
+ * @param simulator - An instance of AcirSimulator.
16
+ * @param db - An instance of PxeDatabase.
14
17
  * @param ivpkM - The public counterpart to the secret key to be used in the decryption of incoming note logs.
15
18
  * @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
16
19
  * @param payload - An instance of l1NotePayload.
@@ -18,13 +21,14 @@ import { OutgoingNoteDao } from '../database/outgoing_note_dao.js';
18
21
  * @param noteHashes - New note hashes in this transaction, one of which belongs to this note.
19
22
  * @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
20
23
  * @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same l1NotePayload, we need to find a different index for each replicate.
21
- * @param simulator - An instance of AcirSimulator.
24
+ * @param logger - An instance of Logger.
25
+ * @param unencryptedLogs - Unencrypted logs for the transaction (used to complete partial notes).
22
26
  * @returns An object containing the incoming, outgoing, and deferred notes.
23
27
  */
24
- export declare function produceNoteDaos(simulator: AcirSimulator, ivpkM: PublicKey | undefined, ovpkM: PublicKey | undefined, payload: L1NotePayload, txHash: TxHash, noteHashes: Fr[], dataStartIndexForTx: number, excludedIndices: Set<number>, log: Logger): Promise<{
28
+ export declare function produceNoteDaos(simulator: AcirSimulator, db: PxeDatabase, ivpkM: PublicKey | undefined, ovpkM: PublicKey | undefined, payload: L1NotePayload, txHash: TxHash, noteHashes: Fr[], dataStartIndexForTx: number, excludedIndices: Set<number>, logger: Logger, unencryptedLogs: UnencryptedTxL2Logs): Promise<{
25
29
  incomingNote: IncomingNoteDao | undefined;
26
30
  outgoingNote: OutgoingNoteDao | undefined;
27
31
  incomingDeferredNote: DeferredNoteDao | undefined;
28
32
  outgoingDeferredNote: DeferredNoteDao | undefined;
29
33
  }>;
30
- //# sourceMappingURL=produce_note_dao.d.ts.map
34
+ //# sourceMappingURL=produce_note_daos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"produce_note_daos.d.ts","sourceRoot":"","sources":["../../../src/note_processor/utils/produce_note_daos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAGlE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,aAAa,EACxB,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,KAAK,EAAE,SAAS,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,EAAE,EAChB,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,mBAAmB,GACnC,OAAO,CAAC;IACT,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,YAAY,EAAE,eAAe,GAAG,SAAS,CAAC;IAC1C,oBAAoB,EAAE,eAAe,GAAG,SAAS,CAAC;IAClD,oBAAoB,EAAE,eAAe,GAAG,SAAS,CAAC;CACnD,CAAC,CAkED"}
@@ -0,0 +1,53 @@
1
+ import { IncomingNoteDao } from '../../database/incoming_note_dao.js';
2
+ import { OutgoingNoteDao } from '../../database/outgoing_note_dao.js';
3
+ import { produceNoteDaosForKey } from './produce_note_daos_for_key.js';
4
+ /**
5
+ * Decodes a note from a transaction that we know was intended for us.
6
+ * Throws if we do not yet have the contract corresponding to the note in our database.
7
+ * Accepts a set of excluded indices, which are indices that have been assigned a note in the same tx.
8
+ * Inserts the index of the note into the excludedIndices set if the note is successfully decoded.
9
+ *
10
+ * @param simulator - An instance of AcirSimulator.
11
+ * @param db - An instance of PxeDatabase.
12
+ * @param ivpkM - The public counterpart to the secret key to be used in the decryption of incoming note logs.
13
+ * @param ovpkM - The public counterpart to the secret key to be used in the decryption of outgoing note logs.
14
+ * @param payload - An instance of l1NotePayload.
15
+ * @param txHash - The hash of the transaction that created the note. Equivalent to the first nullifier of the transaction.
16
+ * @param noteHashes - New note hashes in this transaction, one of which belongs to this note.
17
+ * @param dataStartIndexForTx - The next available leaf index for the note hash tree for this transaction.
18
+ * @param excludedIndices - Indices that have been assigned a note in the same tx. Notes in a tx can have the same l1NotePayload, we need to find a different index for each replicate.
19
+ * @param logger - An instance of Logger.
20
+ * @param unencryptedLogs - Unencrypted logs for the transaction (used to complete partial notes).
21
+ * @returns An object containing the incoming, outgoing, and deferred notes.
22
+ */
23
+ export async function produceNoteDaos(simulator, db, ivpkM, ovpkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, unencryptedLogs) {
24
+ // WARNING: This code is full of tech debt and will be refactored once we have final design of partial notes
25
+ // delivery.
26
+ if (!ivpkM && !ovpkM) {
27
+ throw new Error('Both ivpkM and ovpkM are undefined. Cannot create note.');
28
+ }
29
+ let incomingNote;
30
+ let outgoingNote;
31
+ let incomingDeferredNote;
32
+ let outgoingDeferredNote;
33
+ if (ivpkM) {
34
+ [incomingNote, incomingDeferredNote] = await produceNoteDaosForKey(simulator, db, ivpkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, unencryptedLogs, IncomingNoteDao.fromPayloadAndNoteInfo);
35
+ }
36
+ if (ovpkM) {
37
+ if (incomingNote) {
38
+ // Incoming note is defined meaning that this PXE has both the incoming and outgoing keys. We can skip computing
39
+ // note hash and note index since we already have them in the incoming note.
40
+ outgoingNote = new OutgoingNoteDao(payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, incomingNote.nonce, incomingNote.noteHash, incomingNote.index, ovpkM);
41
+ }
42
+ else {
43
+ [outgoingNote, outgoingDeferredNote] = await produceNoteDaosForKey(simulator, db, ovpkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, unencryptedLogs, OutgoingNoteDao.fromPayloadAndNoteInfo);
44
+ }
45
+ }
46
+ return {
47
+ incomingNote,
48
+ outgoingNote,
49
+ incomingDeferredNote,
50
+ outgoingDeferredNote,
51
+ };
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZV9ub3RlX2Rhb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbm90ZV9wcm9jZXNzb3IvdXRpbHMvcHJvZHVjZV9ub3RlX2Rhb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLFNBQXdCLEVBQ3hCLEVBQWUsRUFDZixLQUE0QixFQUM1QixLQUE0QixFQUM1QixPQUFzQixFQUN0QixNQUFjLEVBQ2QsVUFBZ0IsRUFDaEIsbUJBQTJCLEVBQzNCLGVBQTRCLEVBQzVCLE1BQWMsRUFDZCxlQUFvQztJQU9wQyw0R0FBNEc7SUFDNUcsWUFBWTtJQUNaLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELElBQUksWUFBeUMsQ0FBQztJQUM5QyxJQUFJLFlBQXlDLENBQUM7SUFDOUMsSUFBSSxvQkFBaUQsQ0FBQztJQUN0RCxJQUFJLG9CQUFpRCxDQUFDO0lBRXRELElBQUksS0FBSyxFQUFFLENBQUM7UUFDVixDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLE1BQU0scUJBQXFCLENBQ2hFLFNBQVMsRUFDVCxFQUFFLEVBQ0YsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sVUFBVSxFQUNWLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsTUFBTSxFQUNOLGVBQWUsRUFDZixlQUFlLENBQUMsc0JBQXNCLENBQ3ZDLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsZ0hBQWdIO1lBQ2hILDRFQUE0RTtZQUM1RSxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLGVBQWUsRUFDdkIsT0FBTyxDQUFDLFdBQVcsRUFDbkIsT0FBTyxDQUFDLFVBQVUsRUFDbEIsTUFBTSxFQUNOLFlBQVksQ0FBQyxLQUFLLEVBQ2xCLFlBQVksQ0FBQyxRQUFRLEVBQ3JCLFlBQVksQ0FBQyxLQUFLLEVBQ2xCLEtBQUssQ0FDTixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLFlBQVksRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLE1BQU0scUJBQXFCLENBQ2hFLFNBQVMsRUFDVCxFQUFFLEVBQ0YsS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sVUFBVSxFQUNWLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsTUFBTSxFQUNOLGVBQWUsRUFDZixlQUFlLENBQUMsc0JBQXNCLENBQ3ZDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxZQUFZO1FBQ1osWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixvQkFBb0I7S0FDckIsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,9 @@
1
+ import { type L1NotePayload, type TxHash, UnencryptedTxL2Logs } from '@aztec/circuit-types';
2
+ import { Fr, type PublicKey } from '@aztec/circuits.js';
3
+ import { type Logger } from '@aztec/foundation/log';
4
+ import { type AcirSimulator } from '@aztec/simulator';
5
+ import { DeferredNoteDao } from '../../database/deferred_note_dao.js';
6
+ import { type PxeDatabase } from '../../database/pxe_database.js';
7
+ import { type NoteInfo } from './brute_force_note_info.js';
8
+ export declare function produceNoteDaosForKey<T>(simulator: AcirSimulator, db: PxeDatabase, pkM: PublicKey, payload: L1NotePayload, txHash: TxHash, noteHashes: Fr[], dataStartIndexForTx: number, excludedIndices: Set<number>, logger: Logger, unencryptedLogs: UnencryptedTxL2Logs, daoConstructor: (payload: L1NotePayload, noteInfo: NoteInfo, dataStartIndexForTx: number, pkM: PublicKey) => T): Promise<[T | undefined, DeferredNoteDao | undefined]>;
9
+ //# sourceMappingURL=produce_note_daos_for_key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"produce_note_daos_for_key.d.ts","sourceRoot":"","sources":["../../../src/note_processor/utils/produce_note_daos_for_key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,4BAA4B,CAAC;AAE/E,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,SAAS,EAAE,aAAa,EACxB,EAAE,EAAE,WAAW,EACf,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,EAAE,EAAE,EAChB,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,EAC5B,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,mBAAmB,EACpC,cAAc,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,KAAK,CAAC,GAC7G,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC,CAAC,CA4DvD"}
@@ -0,0 +1,80 @@
1
+ import { UnencryptedTxL2Logs } from '@aztec/circuit-types';
2
+ import { Fr } from '@aztec/circuits.js';
3
+ import { ContractNotFoundError } from '@aztec/simulator';
4
+ import { DeferredNoteDao } from '../../database/deferred_note_dao.js';
5
+ import { addNullableFieldsToPayload } from './add_nullable_field_to_payload.js';
6
+ import { bruteForceNoteInfo } from './brute_force_note_info.js';
7
+ export async function produceNoteDaosForKey(simulator, db, pkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, unencryptedLogs, daoConstructor) {
8
+ let noteDao;
9
+ let deferredNoteDao;
10
+ try {
11
+ const noteInfo = await bruteForceNoteInfo(simulator, noteHashes, txHash, payload, excludedIndices, true);
12
+ excludedIndices?.add(noteInfo.noteHashIndex);
13
+ noteDao = daoConstructor(payload, noteInfo, dataStartIndexForTx, pkM);
14
+ }
15
+ catch (e) {
16
+ if (e instanceof ContractNotFoundError) {
17
+ logger.warn(e.message);
18
+ deferredNoteDao = new DeferredNoteDao(pkM, payload.note, payload.contractAddress, payload.storageSlot, payload.noteTypeId, txHash, noteHashes, dataStartIndexForTx, unencryptedLogs);
19
+ }
20
+ else if (e.message.includes('failed to solve blackbox function: embedded_curve_add') ||
21
+ e.message.includes('Could not find key prefix.')) {
22
+ // TODO(#8769): This branch is a temporary partial notes delivery solution that should be eventually replaced.
23
+ // Both error messages above occur only when we are dealing with a partial note and are thrown when calling
24
+ // `note.compute_note_hash()` or `note.compute_nullifier_without_context()`
25
+ // in `compute_note_hash_and_optionally_a_nullifier` function. It occurs with partial notes because in the
26
+ // partial flow we receive a note log of a note that is missing some fields here and then we try to compute
27
+ // the note hash with MSM while some of the fields are zeroed out (or get a nsk for zero npk_m_hash).
28
+ noteDao = await handlePartialNote(simulator, db, pkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, unencryptedLogs, daoConstructor);
29
+ }
30
+ else {
31
+ logger.error(`Could not process note because of "${e}". Discarding note...`);
32
+ }
33
+ }
34
+ return [noteDao, deferredNoteDao];
35
+ }
36
+ async function handlePartialNote(simulator, db, pkM, payload, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, unencryptedLogs, daoConstructor) {
37
+ let noteDao;
38
+ for (const functionLogs of unencryptedLogs.functionLogs) {
39
+ for (const log of functionLogs.logs) {
40
+ const { data } = log;
41
+ // It is the expectation that partial notes will have the corresponding unencrypted log be multiple
42
+ // of Fr.SIZE_IN_BYTES as the nullable fields should be simply concatenated.
43
+ if (data.length % Fr.SIZE_IN_BYTES === 0) {
44
+ const nullableFields = [];
45
+ for (let i = 0; i < data.length; i += Fr.SIZE_IN_BYTES) {
46
+ const chunk = data.subarray(i, i + Fr.SIZE_IN_BYTES);
47
+ nullableFields.push(Fr.fromBuffer(chunk));
48
+ }
49
+ // We insert the nullable fields into the note and then we try to produce the note dao again
50
+ const payloadWithNullableFields = await addNullableFieldsToPayload(db, payload, nullableFields);
51
+ let deferredNoteDao;
52
+ try {
53
+ [noteDao, deferredNoteDao] = await produceNoteDaosForKey(simulator, db, pkM, payloadWithNullableFields, txHash, noteHashes, dataStartIndexForTx, excludedIndices, logger, UnencryptedTxL2Logs.empty(), // We set unencrypted logs to empty to prevent infinite recursion.
54
+ daoConstructor);
55
+ }
56
+ catch (e) {
57
+ // We ignore the key prefix error because that is expected to be triggered when an incorrect value
58
+ // is inserted at the position of `npk_m_hash`. This happens commonly because we are brute forcing
59
+ // the unencrypted logs.
60
+ if (!e.message.includes('Could not find key prefix.')) {
61
+ throw e;
62
+ }
63
+ }
64
+ if (deferredNoteDao) {
65
+ // This should not happen as we should first get contract not found error before the blackbox func error.
66
+ throw new Error('Partial notes should never be deferred.');
67
+ }
68
+ if (noteDao) {
69
+ // We managed to complete the partial note so we terminate the search.
70
+ break;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ if (!noteDao) {
76
+ logger.error(`Partial note note found. Discarding note...`);
77
+ }
78
+ return noteDao;
79
+ }
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjZV9ub3RlX2Rhb3NfZm9yX2tleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub3RlX3Byb2Nlc3Nvci91dGlscy9wcm9kdWNlX25vdGVfZGFvc19mb3Jfa2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUMsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsRUFBRSxFQUFrQixNQUFNLG9CQUFvQixDQUFDO0FBRXhELE9BQU8sRUFBc0IscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFpQixrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRS9FLE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQ3pDLFNBQXdCLEVBQ3hCLEVBQWUsRUFDZixHQUFjLEVBQ2QsT0FBc0IsRUFDdEIsTUFBYyxFQUNkLFVBQWdCLEVBQ2hCLG1CQUEyQixFQUMzQixlQUE0QixFQUM1QixNQUFjLEVBQ2QsZUFBb0MsRUFDcEMsY0FBOEc7SUFFOUcsSUFBSSxPQUFzQixDQUFDO0lBQzNCLElBQUksZUFBNEMsQ0FBQztJQUVqRCxJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFrQixDQUN2QyxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixPQUFPLEVBQ1AsZUFBZSxFQUNmLElBQUksQ0FDTCxDQUFDO1FBQ0YsZUFBZSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0MsT0FBTyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLFlBQVkscUJBQXFCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV2QixlQUFlLEdBQUcsSUFBSSxlQUFlLENBQ25DLEdBQUcsRUFDSCxPQUFPLENBQUMsSUFBSSxFQUNaLE9BQU8sQ0FBQyxlQUFlLEVBQ3ZCLE9BQU8sQ0FBQyxXQUFXLEVBQ25CLE9BQU8sQ0FBQyxVQUFVLEVBQ2xCLE1BQU0sRUFDTixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGVBQWUsQ0FDaEIsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUNKLENBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLHVEQUF1RCxDQUFDO1lBQ25GLENBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEVBQ3pELENBQUM7WUFDRCw4R0FBOEc7WUFDOUcsMkdBQTJHO1lBQzNHLDJFQUEyRTtZQUMzRSwwR0FBMEc7WUFDMUcsMkdBQTJHO1lBQzNHLHFHQUFxRztZQUNyRyxPQUFPLEdBQUcsTUFBTSxpQkFBaUIsQ0FDL0IsU0FBUyxFQUNULEVBQUUsRUFDRixHQUFHLEVBQ0gsT0FBTyxFQUNQLE1BQU0sRUFDTixVQUFVLEVBQ1YsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixNQUFNLEVBQ04sZUFBZSxFQUNmLGNBQWMsQ0FDZixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDL0UsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLFNBQXdCLEVBQ3hCLEVBQWUsRUFDZixHQUFjLEVBQ2QsT0FBc0IsRUFDdEIsTUFBYyxFQUNkLFVBQWdCLEVBQ2hCLG1CQUEyQixFQUMzQixlQUE0QixFQUM1QixNQUFjLEVBQ2QsZUFBb0MsRUFDcEMsY0FBOEc7SUFFOUcsSUFBSSxPQUFzQixDQUFDO0lBRTNCLEtBQUssTUFBTSxZQUFZLElBQUksZUFBZSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hELEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7WUFDckIsbUdBQW1HO1lBQ25HLDRFQUE0RTtZQUM1RSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxjQUFjLEdBQUcsRUFBRSxDQUFDO2dCQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO29CQUN2RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNyRCxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztnQkFFRCw0RkFBNEY7Z0JBQzVGLE1BQU0seUJBQXlCLEdBQUcsTUFBTSwwQkFBMEIsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUVoRyxJQUFJLGVBQTRDLENBQUM7Z0JBQ2pELElBQUksQ0FBQztvQkFDSCxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsR0FBRyxNQUFNLHFCQUFxQixDQUN0RCxTQUFTLEVBQ1QsRUFBRSxFQUNGLEdBQUcsRUFDSCx5QkFBeUIsRUFDekIsTUFBTSxFQUNOLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsZUFBZSxFQUNmLE1BQU0sRUFDTixtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxrRUFBa0U7b0JBQy9GLGNBQWMsQ0FDZixDQUFDO2dCQUNKLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxrR0FBa0c7b0JBQ2xHLGtHQUFrRztvQkFDbEcsd0JBQXdCO29CQUN4QixJQUFJLENBQUUsQ0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsRUFBRSxDQUFDO3dCQUMvRCxNQUFNLENBQUMsQ0FBQztvQkFDVixDQUFDO2dCQUNILENBQUM7Z0JBRUQsSUFBSSxlQUFlLEVBQUUsQ0FBQztvQkFDcEIseUdBQXlHO29CQUN6RyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7Z0JBQzdELENBQUM7Z0JBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztvQkFDWixzRUFBc0U7b0JBQ3RFLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"pxe_http_server.d.ts","sourceRoot":"","sources":["../../src/pxe_http/pxe_http_server.ts"],"names":[],"mappings":";AAAA,OAAO,EAUL,KAAK,GAAG,EAUT,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,aAAa,EAAiC,MAAM,mCAAmC,CAAC;AAEjG,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,aAAa,CAmCjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAStF"}
1
+ {"version":3,"file":"pxe_http_server.d.ts","sourceRoot":"","sources":["../../src/pxe_http/pxe_http_server.ts"],"names":[],"mappings":";AAAA,OAAO,EAcL,KAAK,GAAG,EAaT,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,aAAa,EAAiC,MAAM,mCAAmC,CAAC;AAEjG,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,GAAG,aAAa,CA2CjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,CAStF"}
@@ -1,5 +1,5 @@
1
- import { AuthWitness, CompleteAddress, EncryptedNoteL2BlockL2Logs, ExtendedNote, ExtendedUnencryptedL2Log, L2Block, LogId, Note, NullifierMembershipWitness, SiblingPath, SimulatedTx, Tx, TxEffect, TxExecutionRequest, TxHash, TxReceipt, UnencryptedL2BlockL2Logs, UniqueNote, } from '@aztec/circuit-types';
2
- import { FunctionSelector } from '@aztec/circuits.js';
1
+ import { AuthWitness, CompleteAddress, CountedNoteLog, CountedPublicExecutionRequest, EncryptedL2Log, EncryptedL2NoteLog, EncryptedNoteL2BlockL2Logs, ExtendedNote, ExtendedUnencryptedL2Log, L2Block, LogId, Note, NullifierMembershipWitness, PrivateExecutionResult, SiblingPath, Tx, TxEffect, TxExecutionRequest, TxHash, TxProvingResult, TxReceipt, TxSimulationResult, UnencryptedL2BlockL2Logs, UnencryptedL2Log, UniqueNote, } from '@aztec/circuit-types';
2
+ import { FunctionSelector, PrivateCallStackItem } from '@aztec/circuits.js';
3
3
  import { NoteSelector } from '@aztec/foundation/abi';
4
4
  import { AztecAddress } from '@aztec/foundation/aztec-address';
5
5
  import { Buffer32 } from '@aztec/foundation/buffer';
@@ -34,9 +34,17 @@ export function createPXERpcServer(pxeService) {
34
34
  LogId,
35
35
  }, {
36
36
  EncryptedNoteL2BlockL2Logs,
37
+ EncryptedL2NoteLog,
38
+ EncryptedL2Log,
39
+ UnencryptedL2Log,
37
40
  NoteSelector,
38
41
  NullifierMembershipWitness,
39
- SimulatedTx,
42
+ TxSimulationResult,
43
+ TxProvingResult,
44
+ PrivateExecutionResult,
45
+ PrivateCallStackItem,
46
+ CountedPublicExecutionRequest,
47
+ CountedNoteLog,
40
48
  Tx,
41
49
  TxReceipt,
42
50
  UnencryptedL2BlockL2Logs,
@@ -56,4 +64,4 @@ export function startPXEHttpServer(pxeService, port) {
56
64
  httpServer.listen(port);
57
65
  return httpServer;
58
66
  }
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2h0dHBfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9odHRwL3B4ZV9odHRwX3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZiwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLHdCQUF3QixFQUN4QixPQUFPLEVBQ1AsS0FBSyxFQUNMLElBQUksRUFDSiwwQkFBMEIsRUFFMUIsV0FBVyxFQUNYLFdBQVcsRUFDWCxFQUFFLEVBQ0YsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixNQUFNLEVBQ04sU0FBUyxFQUNULHdCQUF3QixFQUN4QixVQUFVLEdBQ1gsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDM0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpHLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4Qjs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsVUFBZTtJQUNoRCxPQUFPLElBQUksYUFBYSxDQUN0QixVQUFVLEVBQ1Y7UUFDRSxlQUFlO1FBQ2YsWUFBWTtRQUNaLGtCQUFrQjtRQUNsQix3QkFBd0I7UUFDeEIsZ0JBQWdCO1FBQ2hCLE1BQU07UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLEtBQUs7UUFDTCxFQUFFO1FBQ0YsY0FBYztRQUNkLElBQUk7UUFDSixZQUFZO1FBQ1osVUFBVTtRQUNWLFdBQVc7UUFDWCxXQUFXO1FBQ1gsT0FBTztRQUNQLFFBQVE7UUFDUixLQUFLO0tBQ04sRUFDRDtRQUNFLDBCQUEwQjtRQUMxQixZQUFZO1FBQ1osMEJBQTBCO1FBQzFCLFdBQVc7UUFDWCxFQUFFO1FBQ0YsU0FBUztRQUNULHdCQUF3QjtLQUN6QixFQUNELENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFVBQWUsRUFBRSxJQUFxQjtJQUN2RSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMifQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHhlX2h0dHBfc2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9odHRwL3B4ZV9odHRwX3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2QsNkJBQTZCLEVBQzdCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsMEJBQTBCLEVBQzFCLFlBQVksRUFDWix3QkFBd0IsRUFDeEIsT0FBTyxFQUNQLEtBQUssRUFDTCxJQUFJLEVBQ0osMEJBQTBCLEVBRTFCLHNCQUFzQixFQUN0QixXQUFXLEVBQ1gsRUFBRSxFQUNGLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsTUFBTSxFQUNOLGVBQWUsRUFDZixTQUFTLEVBQ1Qsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzNELE9BQU8sRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVqRyxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFFeEI7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFVBQWU7SUFDaEQsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsVUFBVSxFQUNWO1FBQ0UsZUFBZTtRQUNmLFlBQVk7UUFDWixrQkFBa0I7UUFDbEIsd0JBQXdCO1FBQ3hCLGdCQUFnQjtRQUNoQixNQUFNO1FBQ04sUUFBUTtRQUNSLFVBQVU7UUFDVixLQUFLO1FBQ0wsRUFBRTtRQUNGLGNBQWM7UUFDZCxJQUFJO1FBQ0osWUFBWTtRQUNaLFVBQVU7UUFDVixXQUFXO1FBQ1gsV0FBVztRQUNYLE9BQU87UUFDUCxRQUFRO1FBQ1IsS0FBSztLQUNOLEVBQ0Q7UUFDRSwwQkFBMEI7UUFDMUIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsWUFBWTtRQUNaLDBCQUEwQjtRQUMxQixrQkFBa0I7UUFDbEIsZUFBZTtRQUNmLHNCQUFzQjtRQUN0QixvQkFBb0I7UUFDcEIsNkJBQTZCO1FBQzdCLGNBQWM7UUFDZCxFQUFFO1FBQ0YsU0FBUztRQUNULHdCQUF3QjtLQUN6QixFQUNELENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFVBQWUsRUFBRSxJQUFxQjtJQUN2RSxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxNQUFNLFNBQVMsR0FBRyw2QkFBNkIsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV0RSxNQUFNLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDL0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRCxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhCLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"create_pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/create_pxe_service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAahF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,EACtD,YAAY,CAAC,EAAE,mBAAmB,uBA4BnC"}
1
+ {"version":3,"file":"create_pxe_service.d.ts","sourceRoot":"","sources":["../../src/pxe_service/create_pxe_service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAYhF,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EACxB,YAAY,GAAE,MAAM,GAAG,OAAO,GAAG,SAAqB,EACtD,YAAY,CAAC,EAAE,mBAAmB,uBA2BnC"}
@@ -7,7 +7,6 @@ import { getCanonicalAuthRegistry } from '@aztec/protocol-contracts/auth-registr
7
7
  import { getCanonicalClassRegisterer } from '@aztec/protocol-contracts/class-registerer';
8
8
  import { getCanonicalFeeJuice } from '@aztec/protocol-contracts/fee-juice';
9
9
  import { getCanonicalInstanceDeployer } from '@aztec/protocol-contracts/instance-deployer';
10
- import { getCanonicalKeyRegistry } from '@aztec/protocol-contracts/key-registry';
11
10
  import { getCanonicalMultiCallEntrypointContract } from '@aztec/protocol-contracts/multi-call-entrypoint';
12
11
  import { getCanonicalRouter } from '@aztec/protocol-contracts/router';
13
12
  import { KVPxeDatabase } from '../database/kv_pxe_database.js';
@@ -37,7 +36,6 @@ export async function createPXEService(aztecNode, config, useLogSuffix = undefin
37
36
  getCanonicalInstanceDeployer(),
38
37
  getCanonicalMultiCallEntrypointContract(),
39
38
  getCanonicalFeeJuice(),
40
- getCanonicalKeyRegistry(),
41
39
  getCanonicalAuthRegistry(),
42
40
  getCanonicalRouter(),
43
41
  ]) {
@@ -58,4 +56,4 @@ function createProver(config, logSuffix) {
58
56
  const log = createDebugLogger('aztec:pxe:bb-native-prover' + (logSuffix ? `:${logSuffix}` : ''));
59
57
  return BBNativePrivateKernelProver.new(bbConfig, log);
60
58
  }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX3B4ZV9zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9zZXJ2aWNlL2NyZWF0ZV9weGVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxTQUFvQixFQUNwQixNQUF3QixFQUN4QixlQUE2QyxTQUFTLEVBQ3RELFlBQWtDO0lBRWxDLE1BQU0sU0FBUyxHQUNiLE9BQU8sWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFFakgsTUFBTSxXQUFXLEdBQUcsTUFBTSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM3RCxNQUFNLFdBQVcsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUMzQixNQUFNLFdBQVcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FDOUYsQ0FBQztJQUNGLE1BQU0sRUFBRSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sV0FBVyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkgsTUFBTSxNQUFNLEdBQUcsWUFBWSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRixLQUFLLE1BQU0sUUFBUSxJQUFJO1FBQ3JCLDJCQUEyQixFQUFFO1FBQzdCLDRCQUE0QixFQUFFO1FBQzlCLHVDQUF1QyxFQUFFO1FBQ3pDLG9CQUFvQixFQUFFO1FBQ3RCLHVCQUF1QixFQUFFO1FBQ3pCLHdCQUF3QixFQUFFO1FBQzFCLGtCQUFrQixFQUFFO0tBQ3JCLEVBQUUsQ0FBQztRQUNGLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsTUFBd0IsRUFBRSxTQUFrQjtJQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLE1BQW9HLENBQUM7SUFDdEgsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakcsT0FBTywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUMifQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX3B4ZV9zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B4ZV9zZXJ2aWNlL2NyZWF0ZV9weGVfc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN6RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMzRixPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUd0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGdCQUFnQixDQUNwQyxTQUFvQixFQUNwQixNQUF3QixFQUN4QixlQUE2QyxTQUFTLEVBQ3RELFlBQWtDO0lBRWxDLE1BQU0sU0FBUyxHQUNiLE9BQU8sWUFBWSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFFakgsTUFBTSxXQUFXLEdBQUcsTUFBTSxTQUFTLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUM3RCxNQUFNLFdBQVcsR0FBRyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUMzQixNQUFNLFdBQVcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FDOUYsQ0FBQztJQUNGLE1BQU0sRUFBRSxHQUFHLElBQUksYUFBYSxDQUFDLE1BQU0sV0FBVyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFbkgsTUFBTSxNQUFNLEdBQUcsWUFBWSxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRixLQUFLLE1BQU0sUUFBUSxJQUFJO1FBQ3JCLDJCQUEyQixFQUFFO1FBQzdCLDRCQUE0QixFQUFFO1FBQzlCLHVDQUF1QyxFQUFFO1FBQ3pDLG9CQUFvQixFQUFFO1FBQ3RCLHdCQUF3QixFQUFFO1FBQzFCLGtCQUFrQixFQUFFO0tBQ3JCLEVBQUUsQ0FBQztRQUNGLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsTUFBd0IsRUFBRSxTQUFrQjtJQUNoRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFCLE9BQU8sSUFBSSx1QkFBdUIsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLE1BQW9HLENBQUM7SUFDdEgsTUFBTSxHQUFHLEdBQUcsaUJBQWlCLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakcsT0FBTywyQkFBMkIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELENBQUMifQ==