@aztec/simulator 0.69.0 → 0.69.1

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.
@@ -74,24 +74,111 @@ let PublicProcessor = (() => {
74
74
  * @param processedTxHandler - Handler for processed txs in the context of block building or proving.
75
75
  * @returns The list of processed txs with their circuit simulation outputs.
76
76
  */
77
- async process(txs, maxTransactions = txs.length, txValidator, deadline) {
78
- // The processor modifies the tx objects in place, so we need to clone them.
79
- txs = txs.map(tx => Tx.clone(tx));
77
+ async process(txs, limits = {}, validators = {}) {
78
+ const { maxTransactions, maxBlockSize, deadline, maxBlockGas } = limits;
79
+ const { preprocessValidator, postprocessValidator, nullifierCache } = validators;
80
80
  const result = [];
81
81
  const failed = [];
82
- let returns = [];
83
- let totalGas = new Gas(0, 0);
84
82
  const timer = new Timer();
85
- for (const tx of txs) {
86
- // only process up to the limit of the block
87
- if (result.length >= maxTransactions) {
83
+ let totalSizeInBytes = 0;
84
+ let returns = [];
85
+ let totalPublicGas = new Gas(0, 0);
86
+ let totalBlockGas = new Gas(0, 0);
87
+ for (const origTx of txs) {
88
+ // Only process up to the max tx limit
89
+ if (maxTransactions !== undefined && result.length >= maxTransactions) {
90
+ this.log.debug(`Stopping tx processing due to reaching the max tx limit.`);
88
91
  break;
89
92
  }
93
+ // Bail if we've hit the deadline
94
+ if (deadline && this.dateProvider.now() > +deadline) {
95
+ this.log.warn(`Stopping tx processing due to timeout.`);
96
+ break;
97
+ }
98
+ // Skip this tx if it'd exceed max block size
99
+ const txHash = origTx.getTxHash().toString();
100
+ const preTxSizeInBytes = origTx.getEstimatedPrivateTxEffectsSize();
101
+ if (maxBlockSize !== undefined && totalSizeInBytes + preTxSizeInBytes > maxBlockSize) {
102
+ this.log.warn(`Skipping processing of tx ${txHash} sized ${preTxSizeInBytes} bytes due to block size limit`, {
103
+ txHash,
104
+ sizeInBytes: preTxSizeInBytes,
105
+ totalSizeInBytes,
106
+ maxBlockSize,
107
+ });
108
+ continue;
109
+ }
110
+ // Skip this tx if its gas limit would exceed the block gas limit
111
+ const txGasLimit = origTx.data.constants.txContext.gasSettings.gasLimits;
112
+ if (maxBlockGas !== undefined && totalBlockGas.add(txGasLimit).gtAny(maxBlockGas)) {
113
+ this.log.warn(`Skipping processing of tx ${txHash} due to block gas limit`, {
114
+ txHash,
115
+ txGasLimit,
116
+ totalBlockGas,
117
+ maxBlockGas,
118
+ });
119
+ continue;
120
+ }
121
+ // The processor modifies the tx objects in place, so we need to clone them.
122
+ const tx = Tx.clone(origTx);
123
+ // We validate the tx before processing it, to avoid unnecessary work.
124
+ if (preprocessValidator) {
125
+ const result = await preprocessValidator.validateTx(tx);
126
+ if (result.result === 'invalid') {
127
+ const reason = result.reason.join(', ');
128
+ this.log.warn(`Rejecting tx ${tx.getTxHash().toString()} due to pre-process validation fail: ${reason}`);
129
+ failed.push({ tx, error: new Error(`Tx failed preprocess validation: ${reason}`) });
130
+ returns.push(new NestedProcessReturnValues([]));
131
+ continue;
132
+ }
133
+ else if (result.result === 'skipped') {
134
+ const reason = result.reason.join(', ');
135
+ this.log.warn(`Skipping tx ${tx.getTxHash().toString()} due to pre-process validation: ${reason}`);
136
+ returns.push(new NestedProcessReturnValues([]));
137
+ continue;
138
+ }
139
+ else {
140
+ this.log.trace(`Tx ${tx.getTxHash().toString()} is valid before processing.`);
141
+ }
142
+ }
90
143
  try {
91
- const [processedTx, returnValues] = await this.processTx(tx, txValidator, deadline);
144
+ const [processedTx, returnValues] = await this.processTx(tx, deadline);
145
+ // If the actual size of this tx would exceed block size, skip it
146
+ const txSize = processedTx.txEffect.getDASize();
147
+ if (maxBlockSize !== undefined && totalSizeInBytes + txSize > maxBlockSize) {
148
+ this.log.warn(`Skipping processed tx ${txHash} sized ${txSize} due to max block size.`, {
149
+ txHash,
150
+ sizeInBytes: txSize,
151
+ totalSizeInBytes,
152
+ maxBlockSize,
153
+ });
154
+ continue;
155
+ }
156
+ // Re-validate the transaction
157
+ if (postprocessValidator) {
158
+ // Only accept processed transactions that are not double-spends,
159
+ // public functions emitting nullifiers would pass earlier check but fail here.
160
+ // Note that we're checking all nullifiers generated in the private execution twice,
161
+ // we could store the ones already checked and skip them here as an optimization.
162
+ // TODO(palla/txs): Can we get into this case? AVM validates this. We should be able to remove it.
163
+ const result = await postprocessValidator.validateTx(processedTx);
164
+ if (result.result !== 'valid') {
165
+ const reason = result.reason.join(', ');
166
+ this.log.error(`Rejecting tx ${processedTx.hash} after processing: ${reason}.`);
167
+ failed.push({ tx, error: new Error(`Tx failed post-process validation: ${reason}`) });
168
+ continue;
169
+ }
170
+ else {
171
+ this.log.trace(`Tx ${tx.getTxHash().toString()} is valid post processing.`);
172
+ }
173
+ }
174
+ // Otherwise, commit tx state for the next tx to be processed
175
+ await this.commitTxState(processedTx);
176
+ nullifierCache?.addNullifiers(processedTx.txEffect.nullifiers.map(n => n.toBuffer()));
92
177
  result.push(processedTx);
93
178
  returns = returns.concat(returnValues);
94
- totalGas = totalGas.add(processedTx.gasUsed.publicGas);
179
+ totalPublicGas = totalPublicGas.add(processedTx.gasUsed.publicGas);
180
+ totalBlockGas = totalBlockGas.add(processedTx.gasUsed.totalGas);
181
+ totalSizeInBytes += txSize;
95
182
  }
96
183
  catch (err) {
97
184
  if (err?.name === 'PublicProcessorTimeoutError') {
@@ -105,11 +192,18 @@ let PublicProcessor = (() => {
105
192
  }
106
193
  }
107
194
  const duration = timer.s();
108
- const rate = duration > 0 ? totalGas.l2Gas / duration : 0;
109
- this.metrics.recordAllTxs(totalGas, rate);
195
+ const rate = duration > 0 ? totalPublicGas.l2Gas / duration : 0;
196
+ this.metrics.recordAllTxs(totalPublicGas, rate);
197
+ this.log.info(`Processed ${result.length} succesful txs and ${failed.length} txs in ${duration}ms`, {
198
+ duration,
199
+ rate,
200
+ totalPublicGas,
201
+ totalBlockGas,
202
+ totalSizeInBytes,
203
+ });
110
204
  return [result, failed, returns];
111
205
  }
112
- async processTx(tx, txValidator, deadline) {
206
+ async processTx(tx, deadline) {
113
207
  const [time, [processedTx, returnValues]] = await elapsed(() => this.processTxWithinDeadline(tx, deadline));
114
208
  this.log.verbose(!tx.hasPublicCalls()
115
209
  ? `Processed tx ${processedTx.hash} with no public calls in ${time}ms`
@@ -128,19 +222,12 @@ let PublicProcessor = (() => {
128
222
  l2ToL1MessageCount: processedTx.txEffect.l2ToL1Msgs.length,
129
223
  durationMs: time,
130
224
  });
225
+ return [processedTx, returnValues ?? []];
226
+ }
227
+ async commitTxState(processedTx, txValidator) {
131
228
  // Commit the state updates from this transaction
229
+ // TODO(palla/txs): It seems like this doesn't do anything...?
132
230
  await this.worldStateDB.commit();
133
- // Re-validate the transaction
134
- if (txValidator) {
135
- // Only accept processed transactions that are not double-spends,
136
- // public functions emitting nullifiers would pass earlier check but fail here.
137
- // Note that we're checking all nullifiers generated in the private execution twice,
138
- // we could store the ones already checked and skip them here as an optimization.
139
- const [_, invalid] = await txValidator.validateTxs([processedTx]);
140
- if (invalid.length) {
141
- throw new Error(`Transaction ${invalid[0].hash} invalid after processing public functions`);
142
- }
143
- }
144
231
  // Update the state so that the next tx in the loop has the correct .startState
145
232
  // NB: before this change, all .startStates were actually incorrect, but the issue was never caught because we either:
146
233
  // a) had only 1 tx with public calls per block, so this loop had len 1
@@ -165,7 +252,6 @@ let PublicProcessor = (() => {
165
252
  await this.db.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, processedTx.txEffect.publicDataWrites.map(x => x.toBuffer()));
166
253
  const treeInsertionEnd = process.hrtime.bigint();
167
254
  this.metrics.recordTreeInsertions(Number(treeInsertionEnd - treeInsertionStart) / 1000);
168
- return [processedTx, returnValues ?? []];
169
255
  }
170
256
  /** Processes the given tx within deadline. Returns timeout if deadline is hit. */
171
257
  async processTxWithinDeadline(tx, deadline) {
@@ -263,4 +349,4 @@ let PublicProcessor = (() => {
263
349
  _a;
264
350
  })();
265
351
  export { PublicProcessor };
266
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFFWix5QkFBeUIsRUFFekIsRUFBRSxFQUNGLGdCQUFnQixFQUVoQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEdBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUlMLEVBQUUsRUFDRixHQUFHLEVBRUgsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxHQUNoQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFxQixLQUFLLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxVQUFVLEVBQXFELFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ILE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDVSxrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsZUFBZ0M7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
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3Byb2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMvcHVibGljX3Byb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLFlBQVksRUFFWix5QkFBeUIsRUFFekIsRUFBRSxFQUNGLGdCQUFnQixFQUVoQixnQ0FBZ0MsRUFDaEMsb0NBQW9DLEdBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUlMLEVBQUUsRUFDRixHQUFHLEVBRUgsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsZUFBZSxHQUNoQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFxQixLQUFLLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzVGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxVQUFVLEVBQXFELFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRW5ILE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU3RDs7R0FFRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsWUFDVSxrQkFBc0MsRUFDdEMsWUFBMEIsRUFDMUIsZUFBZ0M7UUFGaEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7SUFDdkMsQ0FBQztJQUVKOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FDWCxVQUFxQyxFQUNyQyxxQkFBOEMsRUFDOUMsZUFBZ0MsRUFDaEMsaUJBQTBCO1FBRTFCLE1BQU0sZ0JBQWdCLEdBQUcscUJBQXFCLElBQUksVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUNwRCxVQUFVLEVBQ1YsWUFBWSxFQUNaLElBQUksQ0FBQyxlQUFlLEVBQ3BCLGVBQWU7UUFDZix1QkFBdUIsQ0FBQyxJQUFJLEVBQzVCLGlCQUFpQixDQUNsQixDQUFDO1FBRUYsT0FBTyxJQUFJLGVBQWUsQ0FDeEIsVUFBVSxFQUNWLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGlCQUFpQixFQUNqQixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsZUFBZSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVTLHVCQUF1QixDQUMvQixFQUE2QixFQUM3QixZQUEwQixFQUMxQixlQUFnQyxFQUNoQyxlQUFnQyxFQUNoQyxrQkFBMkIsRUFDM0IsaUJBQTBCO1FBRTFCLE9BQU8sSUFBSSxpQkFBaUIsQ0FDMUIsRUFBRSxFQUNGLFlBQVksRUFDWixlQUFlLEVBQ2YsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixpQkFBaUIsQ0FDbEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQU0sMkJBQTRCLFNBQVEsS0FBSztJQUM3QyxZQUFZLFVBQWtCLCtCQUErQjtRQUMzRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLDZCQUE2QixDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVEOzs7R0FHRztJQUNVLGVBQWU7Ozs7OztzQkFBZixlQUFlO1lBRTFCLFlBQ1ksRUFBNkIsRUFDN0IsZUFBZ0MsRUFDaEMsZ0JBQTZCLEVBQzdCLFlBQTBCLEVBQzFCLGlCQUFvQyxFQUN0QyxZQUEwQixFQUNsQyxlQUFnQyxFQUN4QixNQUFNLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQztnQkFQOUMsT0FBRSxJQUhILG1EQUFlLEVBR2QsRUFBRSxFQUEyQjtnQkFDN0Isb0JBQWUsR0FBZixlQUFlLENBQWlCO2dCQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWE7Z0JBQzdCLGlCQUFZLEdBQVosWUFBWSxDQUFjO2dCQUMxQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO2dCQUN0QyxpQkFBWSxHQUFaLFlBQVksQ0FBYztnQkFFMUIsUUFBRyxHQUFILEdBQUcsQ0FBNkM7Z0JBRXhELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUNoRixDQUFDO1lBRUQsSUFBSSxNQUFNO2dCQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFDN0IsQ0FBQztZQUVEOzs7OztlQUtHO1lBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FDbEIsR0FBaUIsRUFDakIsU0FLSSxFQUFFLEVBQ04sYUFJSSxFQUFFO2dCQUVOLE1BQU0sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLENBQUM7Z0JBQ3hFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsR0FBRyxVQUFVLENBQUM7Z0JBQ2pGLE1BQU0sTUFBTSxHQUFrQixFQUFFLENBQUM7Z0JBQ2pDLE1BQU0sTUFBTSxHQUFlLEVBQUUsQ0FBQztnQkFDOUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFFMUIsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7Z0JBQ3pCLElBQUksT0FBTyxHQUFnQyxFQUFFLENBQUM7Z0JBQzlDLElBQUksY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUVsQyxLQUFLLE1BQU0sTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUN6QixzQ0FBc0M7b0JBQ3RDLElBQUksZUFBZSxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO3dCQUN0RSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO3dCQUMzRSxNQUFNO29CQUNSLENBQUM7b0JBRUQsaUNBQWlDO29CQUNqQyxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLENBQUM7d0JBQ3hELE1BQU07b0JBQ1IsQ0FBQztvQkFFRCw2Q0FBNkM7b0JBQzdDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztvQkFDbkUsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLGdCQUFnQixHQUFHLGdCQUFnQixHQUFHLFlBQVksRUFBRSxDQUFDO3dCQUNyRixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsTUFBTSxVQUFVLGdCQUFnQixnQ0FBZ0MsRUFBRTs0QkFDM0csTUFBTTs0QkFDTixXQUFXLEVBQUUsZ0JBQWdCOzRCQUM3QixnQkFBZ0I7NEJBQ2hCLFlBQVk7eUJBQ2IsQ0FBQyxDQUFDO3dCQUNILFNBQVM7b0JBQ1gsQ0FBQztvQkFFRCxpRUFBaUU7b0JBQ2pFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO29CQUN6RSxJQUFJLFdBQVcsS0FBSyxTQUFTLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsNkJBQTZCLE1BQU0seUJBQXlCLEVBQUU7NEJBQzFFLE1BQU07NEJBQ04sVUFBVTs0QkFDVixhQUFhOzRCQUNiLFdBQVc7eUJBQ1osQ0FBQyxDQUFDO3dCQUNILFNBQVM7b0JBQ1gsQ0FBQztvQkFFRCw0RUFBNEU7b0JBQzVFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRTVCLHNFQUFzRTtvQkFDdEUsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO3dCQUN4QixNQUFNLE1BQU0sR0FBRyxNQUFNLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDeEQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDOzRCQUNoQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsd0NBQXdDLE1BQU0sRUFBRSxDQUFDLENBQUM7NEJBQ3pHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLG9DQUFvQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQzs0QkFDcEYsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7NEJBQ2hELFNBQVM7d0JBQ1gsQ0FBQzs2QkFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7NEJBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsbUNBQW1DLE1BQU0sRUFBRSxDQUFDLENBQUM7NEJBQ25HLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDOzRCQUNoRCxTQUFTO3dCQUNYLENBQUM7NkJBQU0sQ0FBQzs0QkFDTixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsOEJBQThCLENBQUMsQ0FBQzt3QkFDaEYsQ0FBQztvQkFDSCxDQUFDO29CQUVELElBQUksQ0FBQzt3QkFDSCxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBRXZFLGlFQUFpRTt3QkFDakUsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDaEQsSUFBSSxZQUFZLEtBQUssU0FBUyxJQUFJLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQzs0QkFDM0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLE1BQU0sVUFBVSxNQUFNLHlCQUF5QixFQUFFO2dDQUN0RixNQUFNO2dDQUNOLFdBQVcsRUFBRSxNQUFNO2dDQUNuQixnQkFBZ0I7Z0NBQ2hCLFlBQVk7NkJBQ2IsQ0FBQyxDQUFDOzRCQUNILFNBQVM7d0JBQ1gsQ0FBQzt3QkFFRCw4QkFBOEI7d0JBQzlCLElBQUksb0JBQW9CLEVBQUUsQ0FBQzs0QkFDekIsaUVBQWlFOzRCQUNqRSwrRUFBK0U7NEJBQy9FLG9GQUFvRjs0QkFDcEYsaUZBQWlGOzRCQUNqRixrR0FBa0c7NEJBQ2xHLE1BQU0sTUFBTSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzRCQUNsRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7Z0NBQzlCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dDQUN4QyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsV0FBVyxDQUFDLElBQUksc0JBQXNCLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0NBQ2hGLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLHNDQUFzQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQ0FDdEYsU0FBUzs0QkFDWCxDQUFDO2lDQUFNLENBQUM7Z0NBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLDRCQUE0QixDQUFDLENBQUM7NEJBQzlFLENBQUM7d0JBQ0gsQ0FBQzt3QkFFRCw2REFBNkQ7d0JBQzdELE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDdEMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUN0RixNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3dCQUN6QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzt3QkFFdkMsY0FBYyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQzt3QkFDbkUsYUFBYSxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzt3QkFDaEUsZ0JBQWdCLElBQUksTUFBTSxDQUFDO29CQUM3QixDQUFDO29CQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7d0JBQ2xCLElBQUksR0FBRyxFQUFFLElBQUksS0FBSyw2QkFBNkIsRUFBRSxDQUFDOzRCQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDOzRCQUN4RCxNQUFNO3dCQUNSLENBQUM7d0JBQ0QsTUFBTSxZQUFZLEdBQUcsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDO3dCQUMxRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLFlBQVksSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzt3QkFFdkYsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ2pGLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxDQUFDO2dCQUNILENBQUM7Z0JBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQixNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBRWhELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLE1BQU0sQ0FBQyxNQUFNLFdBQVcsUUFBUSxJQUFJLEVBQUU7b0JBQ2xHLFFBQVE7b0JBQ1IsSUFBSTtvQkFDSixjQUFjO29CQUNkLGFBQWE7b0JBQ2IsZ0JBQWdCO2lCQUNqQixDQUFDLENBQUM7Z0JBRUgsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUdPLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBTSxFQUFFLFFBQWU7Z0JBQzdDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBRTVHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUNkLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRTtvQkFDbEIsQ0FBQyxDQUFDLGdCQUFnQixXQUFXLENBQUMsSUFBSSw0QkFBNEIsSUFBSSxJQUFJO29CQUN0RSxDQUFDLENBQUMsZ0JBQWdCLFdBQVcsQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sb0JBQW9CLElBQUksSUFBSSxFQUM5RztvQkFDRSxNQUFNLEVBQUUsV0FBVyxDQUFDLElBQUk7b0JBQ3hCLEtBQUssRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUU7b0JBQ3JELFVBQVUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUU7b0JBQ3JELFlBQVksRUFBRSxXQUFXLENBQUMsWUFBWTtvQkFDdEMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO29CQUM1QixvQkFBb0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU07b0JBQ2xFLGNBQWMsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO29CQUN0RCxhQUFhLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTTtvQkFDckQscUJBQXFCLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRTtvQkFDaEYsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUU7b0JBQzVFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNO29CQUN4RCxrQkFBa0IsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNO29CQUMxRCxVQUFVLEVBQUUsSUFBSTtpQkFDakIsQ0FDRixDQUFDO2dCQUVGLE9BQU8sQ0FBQyxXQUFXLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFTyxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQXdCLEVBQUUsV0FBc0M7Z0JBQzFGLGlEQUFpRDtnQkFDakQsOERBQThEO2dCQUM5RCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBRWpDLCtFQUErRTtnQkFDL0Usc0hBQXNIO2dCQUN0SCx1RUFBdUU7Z0JBQ3ZFLGdJQUFnSTtnQkFDaEksNEhBQTRIO2dCQUM1SCxnREFBZ0Q7Z0JBQ2hELE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkQsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDeEIsWUFBWSxDQUFDLGNBQWMsRUFDM0IsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLENBQUMsQ0FDOUUsQ0FBQztnQkFDRixJQUFJLENBQUM7b0JBQ0gsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FDdkIsWUFBWSxDQUFDLGNBQWMsRUFDM0IsV0FBVyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDbkcsd0JBQXdCLENBQ3pCLENBQUM7Z0JBQ0osQ0FBQztnQkFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO29CQUNmLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLHlFQUF5RTt3QkFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLFdBQVcsQ0FBQyxJQUFJLDRDQUE0QyxDQUFDLENBQUM7b0JBQy9GLENBQUM7eUJBQU0sQ0FBQzt3QkFDTiwwR0FBMEc7d0JBQzFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLDZEQUE2RCxXQUFXLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztvQkFDbEcsQ0FBQztnQkFDSCxDQUFDO2dCQUVELE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FDNUIsWUFBWSxDQUFDLGdCQUFnQixFQUM3QixXQUFXLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO2dCQUNGLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxJQUFLLENBQUMsQ0FBQztZQUMzRixDQUFDO1lBRUQsa0ZBQWtGO1lBQzFFLEtBQUssQ0FBQyx1QkFBdUIsQ0FDbkMsRUFBTSxFQUNOLFFBQWU7Z0JBRWYsTUFBTSxTQUFTLEdBQTBFLEVBQUUsQ0FBQyxjQUFjLEVBQUU7b0JBQzFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO29CQUN6QyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUV4QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ2QsT0FBTyxNQUFNLFNBQVMsRUFBRSxDQUFDO2dCQUMzQixDQUFDO2dCQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFLFdBQVcsT0FBTyxJQUFJLEVBQUU7b0JBQy9FLFFBQVEsRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFO29CQUNoQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRTtvQkFDcEQsTUFBTSxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQztnQkFFSCxJQUFJLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDaEIsTUFBTSxJQUFJLDJCQUEyQixFQUFFLENBQUM7Z0JBQzFDLENBQUM7Z0JBRUQsT0FBTyxNQUFNLGNBQWMsQ0FDekIsR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQ2pCLE9BQU8sRUFDUCxHQUFHLEVBQUUsQ0FBQyxJQUFJLDJCQUEyQixFQUFFLENBQ3hDLENBQUM7WUFDSixDQUFDO1lBRUQ7Ozs7ZUFJRztZQUNLLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxLQUFTLEVBQUUsUUFBc0I7Z0JBQzFFLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLCtCQUErQixLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUNsRSxPQUFPO2dCQUNULENBQUM7Z0JBRUQsTUFBTSxlQUFlLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO2dCQUN6RCxNQUFNLFdBQVcsR0FBRyxpQ0FBaUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEUsTUFBTSxRQUFRLEdBQUcsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRTFELElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFFckYsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBRWxGLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN0QixNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRSxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQ2hILENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBRW5GLE9BQU8sSUFBSSxlQUFlLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFLTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsRUFBTTtnQkFDdkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUM7Z0JBQzdDLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFM0QsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFNUcsTUFBTSxXQUFXLEdBQUcsZ0NBQWdDLENBQ2xELEVBQUUsRUFDRixjQUFjLEVBQ2QseUJBQXlCLEVBQ3pCLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7Z0JBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FDbEMsR0FBRyxFQUFFLENBQUMsaUJBQWlCO3FCQUNwQixVQUFVLEVBQUU7cUJBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNwRixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlELENBQUM7Z0JBQ0YsT0FBTyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBS08sS0FBSyxDQUFDLHdCQUF3QixDQUFDLEVBQU07Z0JBQzNDLE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBRTFCLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsR0FDN0UsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO2dCQUVELGVBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7b0JBQzlCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO3dCQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDaEQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ2xFLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FDbEMsR0FBRyxFQUFFLENBQUMsaUJBQWlCO3FCQUNwQixVQUFVLEVBQUU7cUJBQ1osTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsNEJBQTRCLENBQUMsOEJBQThCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO3FCQUNwRixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzlELENBQUM7Z0JBRUYsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztnQkFDMUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFakUsTUFBTSxXQUFXLEdBQUcsb0NBQW9DLENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRW5ILE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFFbkgsT0FBTyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUNyQyxDQUFDOzs7O3FDQWpNQSxTQUFTLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztnREFrSXZHLFNBQVMsQ0FBQyxzQ0FBc0MsRUFBRSxDQUFDLEVBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDOUQsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRTtpQkFDaEQsQ0FBQyxDQUFDO29EQXVCRixTQUFTLENBQUMsMENBQTBDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM1RCxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxFQUFFO2lCQUNoRCxDQUFDLENBQUM7WUE1SkgsNEtBQWMsU0FBUyw2REF5QnRCO1lBMkdELDZNQUFjLG9CQUFvQiw2REFvQmpDO1lBS0QseU5BQWMsd0JBQXdCLDZEQW1DckM7Ozs7O1NBclhVLGVBQWUifQ==
@@ -323,6 +323,6 @@ function fetchTxHash(nonRevertibleAccumulatedData) {
323
323
  if (!firstNullifier || firstNullifier.isZero()) {
324
324
  throw new Error(`Cannot get tx hash since first nullifier is missing`);
325
325
  }
326
- return new TxHash(firstNullifier.toBuffer());
326
+ return new TxHash(firstNullifier);
327
327
  }
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBRVosa0JBQWtCLEVBSWxCLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLEVBQUUsRUFDRixHQUFHLEVBR0gsZ0NBQWdDLEVBQ2hDLHNCQUFzQixFQUN0QixxQkFBcUIsRUFHckIseUJBQXlCLEVBQ3pCLFVBQVUsRUFFVixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWpILE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBaUIxQixZQUNrQixLQUF3QixFQUN2QixlQUFnQyxFQUNoQyxtQkFBbUMsRUFDbkMsV0FBd0IsRUFDeEIsZ0JBQXFCLEVBQ3JCLG9CQUF5QixFQUN6QixpQkFBc0MsRUFDdEMsb0JBQXlDLEVBQ3pDLG9CQUF5QyxFQUN6QyxzQkFBZ0QsRUFDaEQseUJBQW1ELEVBQ25ELHlC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
328
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX3R4X2NvbnRleHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHVibGljL3B1YmxpY190eF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBRVosa0JBQWtCLEVBSWxCLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsZ0JBQWdCLEVBR2hCLEVBQUUsRUFDRixHQUFHLEVBR0gsZ0NBQWdDLEVBQ2hDLHNCQUFzQixFQUN0QixxQkFBcUIsRUFHckIseUJBQXlCLEVBQ3pCLFVBQVUsRUFFVixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLHFCQUFxQixHQUN0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBZSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRSxPQUFPLEVBQUUsTUFBTSxJQUFJLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRS9CLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRWpILE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBaUIxQixZQUNrQixLQUF3QixFQUN2QixlQUFnQyxFQUNoQyxtQkFBbUMsRUFDbkMsV0FBd0IsRUFDeEIsZ0JBQXFCLEVBQ3JCLG9CQUF5QixFQUN6QixpQkFBc0MsRUFDdEMsb0JBQXlDLEVBQ3pDLG9CQUF5QyxFQUN6QyxzQkFBZ0QsRUFDaEQseUJBQW1ELEVBQ25ELHlC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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aztec/simulator",
3
- "version": "0.69.0",
3
+ "version": "0.69.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./dest/index.js",
@@ -61,14 +61,14 @@
61
61
  ]
62
62
  },
63
63
  "dependencies": {
64
- "@aztec/circuit-types": "0.69.0",
65
- "@aztec/circuits.js": "0.69.0",
66
- "@aztec/foundation": "0.69.0",
67
- "@aztec/noir-protocol-circuits-types": "0.69.0",
68
- "@aztec/protocol-contracts": "0.69.0",
69
- "@aztec/telemetry-client": "0.69.0",
70
- "@aztec/types": "0.69.0",
71
- "@aztec/world-state": "0.69.0",
64
+ "@aztec/circuit-types": "0.69.1",
65
+ "@aztec/circuits.js": "0.69.1",
66
+ "@aztec/foundation": "0.69.1",
67
+ "@aztec/noir-protocol-circuits-types": "0.69.1",
68
+ "@aztec/protocol-contracts": "0.69.1",
69
+ "@aztec/telemetry-client": "0.69.1",
70
+ "@aztec/types": "0.69.1",
71
+ "@aztec/world-state": "0.69.1",
72
72
  "@noir-lang/acvm_js": "portal:../../noir/packages/acvm_js",
73
73
  "@noir-lang/noirc_abi": "portal:../../noir/packages/noirc_abi",
74
74
  "@noir-lang/types": "portal:../../noir/packages/types",
package/src/avm/errors.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type FailingFunction, type NoirCallStack } from '@aztec/circuit-types';
2
- import { type AztecAddress, type Fr } from '@aztec/circuits.js';
2
+ import { type AztecAddress, type Fr, type Point } from '@aztec/circuits.js';
3
3
 
4
4
  import { ExecutionError } from '../common/errors.js';
5
5
  import { type AvmContext } from './avm_context.js';
@@ -128,6 +128,26 @@ export class OutOfGasError extends AvmExecutionError {
128
128
  }
129
129
  }
130
130
 
131
+ /**
132
+ * Error is thrown when the supplied points length is not a multiple of 3. Specific for MSM opcode.
133
+ */
134
+ export class MSMPointsLengthError extends AvmExecutionError {
135
+ constructor(pointsReadLength: number) {
136
+ super(`Points vector length should be a multiple of 3, was ${pointsReadLength}`);
137
+ this.name = 'MSMPointsLengthError';
138
+ }
139
+ }
140
+
141
+ /**
142
+ * Error is thrown when one of the supplied points does not lie on the Grumpkin curve. Specific for MSM opcode.
143
+ */
144
+ export class MSMPointNotOnCurveError extends AvmExecutionError {
145
+ constructor(point: Point) {
146
+ super(`Point ${point.toString()} is not on the curve.`);
147
+ this.name = 'MSMPointNotOnCurveError';
148
+ }
149
+ }
150
+
131
151
  /**
132
152
  * Error is thrown when a static call attempts to alter some state
133
153
  */
@@ -55,7 +55,7 @@ export function initPersistableStateManager(overrides?: {
55
55
  overrides?.nullifiers || new NullifierManager(worldStateDB),
56
56
  overrides?.doMerkleOperations || false,
57
57
  overrides?.merkleTrees || mock<AvmEphemeralForest>(),
58
- overrides?.txHash || new TxHash(new Fr(27).toBuffer()),
58
+ overrides?.txHash || new TxHash(new Fr(27)),
59
59
  );
60
60
  }
61
61
 
@@ -3,7 +3,7 @@ import { Grumpkin } from '@aztec/circuits.js/barretenberg';
3
3
 
4
4
  import { type AvmContext } from '../avm_context.js';
5
5
  import { Field, TypeTag, Uint1 } from '../avm_memory_types.js';
6
- import { InstructionExecutionError } from '../errors.js';
6
+ import { MSMPointNotOnCurveError, MSMPointsLengthError } from '../errors.js';
7
7
  import { Opcode, OperandType } from '../serialization/instruction_serialization.js';
8
8
  import { Addressing } from './addressing_mode.js';
9
9
  import { Instruction } from './instruction.js';
@@ -44,7 +44,7 @@ export class MultiScalarMul extends Instruction {
44
44
  // Get the size of the unrolled (x, y , inf) points vector
45
45
  const pointsReadLength = memory.get(pointsLengthOffset).toNumber();
46
46
  if (pointsReadLength % 3 !== 0) {
47
- throw new InstructionExecutionError(`Points vector offset should be a multiple of 3, was ${pointsReadLength}`);
47
+ throw new MSMPointsLengthError(pointsReadLength);
48
48
  }
49
49
 
50
50
  // Get the unrolled (x, y, inf) representing the points
@@ -76,7 +76,7 @@ export class MultiScalarMul extends Instruction {
76
76
  const isInf = pointsVector[3 * i + 2].toNumber() === 1;
77
77
  const p: Point = new Point(pointsVector[3 * i].toFr(), pointsVector[3 * i + 1].toFr(), isInf);
78
78
  if (!p.isOnGrumpkin()) {
79
- throw new InstructionExecutionError(`Point ${p.toString()} is not on the curve.`);
79
+ throw new MSMPointNotOnCurveError(p);
80
80
  }
81
81
  grumpkinPoints.push(p);
82
82
  }
@@ -23,7 +23,7 @@ import { computeUniqueNoteHash, siloNoteHash } from '@aztec/circuits.js/hash';
23
23
  import { type FunctionAbi, type FunctionArtifact, type NoteSelector, countArgumentsSize } from '@aztec/foundation/abi';
24
24
  import { AztecAddress } from '@aztec/foundation/aztec-address';
25
25
  import { Fr } from '@aztec/foundation/fields';
26
- import { applyStringFormatting, createLogger } from '@aztec/foundation/log';
26
+ import { createLogger } from '@aztec/foundation/log';
27
27
 
28
28
  import { type NoteData, toACVMWitness } from '../acvm/index.js';
29
29
  import { type PackedValuesCache } from '../common/packed_values_cache.js';
@@ -544,10 +544,6 @@ export class ClientExecutionContext extends ViewDataOracle {
544
544
  );
545
545
  }
546
546
 
547
- public override debugLog(message: string, fields: Fr[]) {
548
- this.log.verbose(`${applyStringFormatting(message, fields)}`, { module: `${this.log.module}:debug_log` });
549
- }
550
-
551
547
  public getDebugFunctionName() {
552
548
  return this.db.getDebugFunctionName(this.contractAddress, this.callContext.functionSelector);
553
549
  }
@@ -290,6 +290,10 @@ export class ViewDataOracle extends TypedOracle {
290
290
  }
291
291
 
292
292
  public override debugLog(message: string, fields: Fr[]): void {
293
+ // TODO(#10558) Remove this check once the debug log is fixed
294
+ if (message.startsWith('Context.note_hashes, after pushing new note hash:')) {
295
+ return;
296
+ }
293
297
  this.log.verbose(`${applyStringFormatting(message, fields)}`, { module: `${this.log.module}:debug_log` });
294
298
  }
295
299
 
@@ -324,7 +324,7 @@ export class MockedAvmTestContractDataSource implements ContractDataSource {
324
324
  return Promise.resolve(this.fnName);
325
325
  }
326
326
 
327
- registerContractFunctionNames(_address: AztecAddress, _names: Record<string, string>): Promise<void> {
327
+ registerContractFunctionSignatures(_address: AztecAddress, _signatures: string[]): Promise<void> {
328
328
  return Promise.resolve();
329
329
  }
330
330
  }