1use core::slice;
2
3use super::{EMPTY_WORD, Felt, Word, smt::InnerNode};
4
5pub struct EmptySubtreeRoots;
10
11impl EmptySubtreeRoots {
12 pub const fn empty_hashes(tree_depth: u8) -> &'static [Word] {
15 let ptr = &EMPTY_SUBTREES[255 - tree_depth as usize] as *const Word;
16 unsafe { slice::from_raw_parts(ptr, tree_depth as usize + 1) }
20 }
21
22 pub const fn entry(tree_depth: u8, node_depth: u8) -> &'static Word {
24 assert!(node_depth <= tree_depth);
25 let pos = 255 - tree_depth + node_depth;
26 &EMPTY_SUBTREES[pos as usize]
27 }
28
29 pub(crate) const fn get_inner_node(tree_depth: u8, node_depth: u8) -> InnerNode {
36 let &child = Self::entry(tree_depth, node_depth + 1);
37 InnerNode { left: child, right: child }
38 }
39}
40
41const EMPTY_SUBTREES: [Word; 256] = [
42 Word::new([
43 Felt::new(0xee3d94db86d48dc4),
44 Felt::new(0x3d13166c7aba0368),
45 Felt::new(0x282e861f2936aa7),
46 Felt::new(0xf0328a1745537b4),
47 ]),
48 Word::new([
49 Felt::new(0x33174b312b730760),
50 Felt::new(0x9d1e00c5b50352b2),
51 Felt::new(0x16bf9ec4acef2e42),
52 Felt::new(0x4263877e63c4cbe7),
53 ]),
54 Word::new([
55 Felt::new(0xa8e039042672a8bc),
56 Felt::new(0x1010d951d941d9d4),
57 Felt::new(0xd3e8f0ecc866ac3b),
58 Felt::new(0xb2dbbbb80da232ba),
59 ]),
60 Word::new([
61 Felt::new(0xa0d2c1a3e455f299),
62 Felt::new(0x648e8e13867dc8eb),
63 Felt::new(0xe79f94ea61189847),
64 Felt::new(0xb88a89e1f2765a31),
65 ]),
66 Word::new([
67 Felt::new(0xe168133fd9ab570d),
68 Felt::new(0x6fc7d0295ac5a3a2),
69 Felt::new(0xc973ea026e9411c),
70 Felt::new(0x63c29ea04552b532),
71 ]),
72 Word::new([
73 Felt::new(0x27e57ecc0f9f196),
74 Felt::new(0xc02f6e29fd19b059),
75 Felt::new(0x4a42fbc436efb0b6),
76 Felt::new(0xbff30574a98a1b29),
77 ]),
78 Word::new([
79 Felt::new(0x18c32592a4f4d0b),
80 Felt::new(0x6b9a08797252d5d5),
81 Felt::new(0xdbfe48f00a088a2),
82 Felt::new(0x16b4c3e485b173e3),
83 ]),
84 Word::new([
85 Felt::new(0x26c8902938b831a5),
86 Felt::new(0x66ee91b36943f92e),
87 Felt::new(0x4e8deeafef9f5725),
88 Felt::new(0xbb35751d5dfb0a33),
89 ]),
90 Word::new([
91 Felt::new(0x74af678f8e020ff4),
92 Felt::new(0xd4784cda0beed295),
93 Felt::new(0x4380949d841d793c),
94 Felt::new(0xdf587011d09d3bbb),
95 ]),
96 Word::new([
97 Felt::new(0xa211d1da76aaef98),
98 Felt::new(0xd904ccc6435e268),
99 Felt::new(0x1c6f16a5d03b8416),
100 Felt::new(0x87800f7f5da9c93),
101 ]),
102 Word::new([
103 Felt::new(0xa00bbad0a52adeff),
104 Felt::new(0xe22179c651da9d76),
105 Felt::new(0x474f10493a3723f4),
106 Felt::new(0x84397e6bd34a1f5b),
107 ]),
108 Word::new([
109 Felt::new(0xe8f440afef4d082b),
110 Felt::new(0x14fff8e329613cc9),
111 Felt::new(0x78e984bc8b40f4f1),
112 Felt::new(0x6ed8f02e5be1bab2),
113 ]),
114 Word::new([
115 Felt::new(0xda824edf085b5f9f),
116 Felt::new(0xc8a8f1c1b86d349e),
117 Felt::new(0xe1bf6975afb7b2de),
118 Felt::new(0xd7df51ea51028489),
119 ]),
120 Word::new([
121 Felt::new(0xf64873d31456de99),
122 Felt::new(0x1fc9cb920b6c72b),
123 Felt::new(0x96613d9d71af4373),
124 Felt::new(0x61d607eb097e76c9),
125 ]),
126 Word::new([
127 Felt::new(0xca304d2b3b778719),
128 Felt::new(0xa54d8602f37eed39),
129 Felt::new(0xb4574db6dc09bcf2),
130 Felt::new(0x5e42cd4f1de9587c),
131 ]),
132 Word::new([
133 Felt::new(0x17575dfa689d8a07),
134 Felt::new(0x1db9d374d7436444),
135 Felt::new(0x21d1e8dca296f38d),
136 Felt::new(0xbc4aad43a9d93f54),
137 ]),
138 Word::new([
139 Felt::new(0x9fa0697330c054cd),
140 Felt::new(0xd5d57fbf059452e8),
141 Felt::new(0xe848fafb1c43414c),
142 Felt::new(0xacb7754fd77c9d52),
143 ]),
144 Word::new([
145 Felt::new(0x406af89b918e596c),
146 Felt::new(0xb735a2c588ee87df),
147 Felt::new(0xb40ff1dd1c3c6599),
148 Felt::new(0x675a582b4c8a68ac),
149 ]),
150 Word::new([
151 Felt::new(0x530ff6be0c86a2f6),
152 Felt::new(0x5541fabfefd34c91),
153 Felt::new(0x4af1579d212149ae),
154 Felt::new(0x23962b7df862f27c),
155 ]),
156 Word::new([
157 Felt::new(0x1676b694f41cfc0d),
158 Felt::new(0x59b165ea5f354fd8),
159 Felt::new(0x5b45ee14e2501f08),
160 Felt::new(0xd0c8ca7bc2e01e18),
161 ]),
162 Word::new([
163 Felt::new(0x2cff5d1e629ddc7b),
164 Felt::new(0x5062be34e4351fe),
165 Felt::new(0xfd76495b9d8ea67),
166 Felt::new(0xb96453b1c8060ca8),
167 ]),
168 Word::new([
169 Felt::new(0x860b00517d3de1ef),
170 Felt::new(0xd609c82af07b9dad),
171 Felt::new(0xa54a528b8f1cbddc),
172 Felt::new(0xb4fff658ed97e635),
173 ]),
174 Word::new([
175 Felt::new(0xd002cea8f347c347),
176 Felt::new(0xa135cebffdf3ec10),
177 Felt::new(0xb0200ea08da2cef4),
178 Felt::new(0x4e6f2f75d627b137),
179 ]),
180 Word::new([
181 Felt::new(0xc1983ce677cabbf4),
182 Felt::new(0x58f0143480f44788),
183 Felt::new(0xf8c23e4f84b6c6c1),
184 Felt::new(0xc9ce41371c4900b8),
185 ]),
186 Word::new([
187 Felt::new(0x837d99979bc9a5e6),
188 Felt::new(0x7621559aa4af175a),
189 Felt::new(0x6986737347c799c2),
190 Felt::new(0x8cee99eb47c3e702),
191 ]),
192 Word::new([
193 Felt::new(0x42e17ba02508a41f),
194 Felt::new(0xb95e349bd55ba61f),
195 Felt::new(0xcc2bfeb29c4c68b2),
196 Felt::new(0xf268f57860a446b1),
197 ]),
198 Word::new([
199 Felt::new(0xd3ffd4ccc6dda508),
200 Felt::new(0x81db1910ef04ca07),
201 Felt::new(0x5c698ee6c3aeab97),
202 Felt::new(0x2ac1e2c2c5f237de),
203 ]),
204 Word::new([
205 Felt::new(0x1f42a1ef25bd0aad),
206 Felt::new(0x81b0f63e2760b8db),
207 Felt::new(0xe9607c7061b018f9),
208 Felt::new(0xf02a88202294a700),
209 ]),
210 Word::new([
211 Felt::new(0xea5da09b39b60468),
212 Felt::new(0xe48ea41d94fe91a7),
213 Felt::new(0x24dde954ce08b32b),
214 Felt::new(0xe1bb6e41bd0613e6),
215 ]),
216 Word::new([
217 Felt::new(0xc5e9f7188b43a24f),
218 Felt::new(0x8d7132abc9d901e4),
219 Felt::new(0xdc09a33ff4d0eb03),
220 Felt::new(0xa119bb1db594b4cf),
221 ]),
222 Word::new([
223 Felt::new(0x589002afcbd4a233),
224 Felt::new(0xe4eae44d3c2a308d),
225 Felt::new(0x8bc0bca14b6b4dde),
226 Felt::new(0x3716e0e86a7aaa6c),
227 ]),
228 Word::new([
229 Felt::new(0xaa4ba9602230007e),
230 Felt::new(0x2b2c3e14b888a3d4),
231 Felt::new(0x90a36fb42ec2ba19),
232 Felt::new(0x2e07ef26b078c4a7),
233 ]),
234 Word::new([
235 Felt::new(0x32307da7aad33113),
236 Felt::new(0x343ed87928b9ab0c),
237 Felt::new(0x1c01d79482c021f0),
238 Felt::new(0x6f866afccc595439),
239 ]),
240 Word::new([
241 Felt::new(0x9780804b58b0d066),
242 Felt::new(0x1329929c6dc19c09),
243 Felt::new(0xc04add06dbaef6bf),
244 Felt::new(0xf494a28db17c5c4),
245 ]),
246 Word::new([
247 Felt::new(0xe9dbb1c64d55571f),
248 Felt::new(0x663f0f716f28734),
249 Felt::new(0x7285fd4b8e87a78c),
250 Felt::new(0x2e152a4595b7597e),
251 ]),
252 Word::new([
253 Felt::new(0x5531fabfa5960807),
254 Felt::new(0x8afe79be96d903a4),
255 Felt::new(0x24321cce4f1942f8),
256 Felt::new(0xb1829ec9d60aac8f),
257 ]),
258 Word::new([
259 Felt::new(0x9f7afc6634a82d1),
260 Felt::new(0x496e26bc17af352b),
261 Felt::new(0x8216f090e1d13381),
262 Felt::new(0x610cf5a3b3e190f9),
263 ]),
264 Word::new([
265 Felt::new(0xb5f8c141a9acd007),
266 Felt::new(0x4430345ace970576),
267 Felt::new(0x64d97e5533db3170),
268 Felt::new(0x95c016d769b0fc2d),
269 ]),
270 Word::new([
271 Felt::new(0x88820d6a7ba5a94a),
272 Felt::new(0x27b614d79eb7b30b),
273 Felt::new(0xff2751e904085d5f),
274 Felt::new(0x752509a0860b37d),
275 ]),
276 Word::new([
277 Felt::new(0x1070bc84bb53a855),
278 Felt::new(0x1edad3d5da84e59b),
279 Felt::new(0x8efd48a13e4dfe0d),
280 Felt::new(0x3ab20af6203aba62),
281 ]),
282 Word::new([
283 Felt::new(0xb4d6d3cc85438d08),
284 Felt::new(0x5592639fb2792724),
285 Felt::new(0x5939996ea4c52176),
286 Felt::new(0xaa83a79236367ee7),
287 ]),
288 Word::new([
289 Felt::new(0x4c08ac735aa1925a),
290 Felt::new(0x84951e177ac84e86),
291 Felt::new(0xd5b2657778d3271a),
292 Felt::new(0x375f75333654a77c),
293 ]),
294 Word::new([
295 Felt::new(0x2fcbd8fcd125e5),
296 Felt::new(0xd8f711ed1b369d43),
297 Felt::new(0x9688301695b6bcd4),
298 Felt::new(0x52a010319401179),
299 ]),
300 Word::new([
301 Felt::new(0x1c67f8fde4c9c070),
302 Felt::new(0x438ccdf9d82b3a3f),
303 Felt::new(0xb9324515d5547ff5),
304 Felt::new(0x85ff37504c8230f0),
305 ]),
306 Word::new([
307 Felt::new(0xcf8b6fabda4621f3),
308 Felt::new(0x1df94bb4ea8aeb6d),
309 Felt::new(0x8efffb7e8996b9e5),
310 Felt::new(0xa9aef575e8a86c4d),
311 ]),
312 Word::new([
313 Felt::new(0x6e20862a64baaaef),
314 Felt::new(0xc54fbbfa034d6f1b),
315 Felt::new(0x16d9fd099f5bba71),
316 Felt::new(0xe4ac4cf3186fae83),
317 ]),
318 Word::new([
319 Felt::new(0x12914625293d7f84),
320 Felt::new(0xd3b46add4f77be8),
321 Felt::new(0xaac8846e6eeb9acd),
322 Felt::new(0xab6a69452b4b167b),
323 ]),
324 Word::new([
325 Felt::new(0x69652e812cdfe03d),
326 Felt::new(0x22731622b139de96),
327 Felt::new(0xd7226e9a887f368d),
328 Felt::new(0xe9bbf6ad8f51ee13),
329 ]),
330 Word::new([
331 Felt::new(0xc39a01964af141d7),
332 Felt::new(0xb5ab2062263dcaa2),
333 Felt::new(0x1d7fbcd9204cbd34),
334 Felt::new(0xd48c517d5543c163),
335 ]),
336 Word::new([
337 Felt::new(0x44118fda0c2b4af2),
338 Felt::new(0x487d307ce7444bb2),
339 Felt::new(0x171b7c6a17d734b2),
340 Felt::new(0xd9a737ddf65949d9),
341 ]),
342 Word::new([
343 Felt::new(0xc2cdc1b940450fec),
344 Felt::new(0x29864b9632eff0cd),
345 Felt::new(0x9ae31f150850e78c),
346 Felt::new(0xf9f9d0ef1092be87),
347 ]),
348 Word::new([
349 Felt::new(0x1703dd34002f3862),
350 Felt::new(0xf04b44446be81ea1),
351 Felt::new(0x8da51598849beb99),
352 Felt::new(0x8112e155f7f856a0),
353 ]),
354 Word::new([
355 Felt::new(0x3d4da8351f41dc1c),
356 Felt::new(0x682e55817f56f30b),
357 Felt::new(0xf20cc7fe5b98b951),
358 Felt::new(0x8297d3de042785d4),
359 ]),
360 Word::new([
361 Felt::new(0x1f9d07a435a6d13e),
362 Felt::new(0x789a1330825c199a),
363 Felt::new(0x6e058e9dbc30f3a0),
364 Felt::new(0xb09be46b59290984),
365 ]),
366 Word::new([
367 Felt::new(0xaf2d49c9a3975d21),
368 Felt::new(0xebd4d399fc30a751),
369 Felt::new(0x224a3884ca353e5d),
370 Felt::new(0xbebba344bbe055a7),
371 ]),
372 Word::new([
373 Felt::new(0xdf576dc16b0abc3f),
374 Felt::new(0x40439af403c36338),
375 Felt::new(0x317b1f2308849c53),
376 Felt::new(0x91e5c9d14107cb04),
377 ]),
378 Word::new([
379 Felt::new(0x93af916aa15f97e2),
380 Felt::new(0x50d4aec3e408fba7),
381 Felt::new(0xd16bd5f71b6d6915),
382 Felt::new(0x27b96db871be03ef),
383 ]),
384 Word::new([
385 Felt::new(0x72fce6dd7d54e348),
386 Felt::new(0x632a2e8b6177c670),
387 Felt::new(0xefd897bebdc4ec2b),
388 Felt::new(0xfe66bfe440033790),
389 ]),
390 Word::new([
391 Felt::new(0xc581364aef408d6a),
392 Felt::new(0xfcc7efb35cccae32),
393 Felt::new(0xee0a97dded065fbf),
394 Felt::new(0x2b1eb2c45fd0e633),
395 ]),
396 Word::new([
397 Felt::new(0x9e460e8159152a88),
398 Felt::new(0xcc5a2946f03bf507),
399 Felt::new(0x95535e9cf29e4ab9),
400 Felt::new(0x29b23d31ffe6df18),
401 ]),
402 Word::new([
403 Felt::new(0xbae2c405d8ba715d),
404 Felt::new(0xb886f0545ae16153),
405 Felt::new(0x728d5965a4cdfc0b),
406 Felt::new(0x86bd552048f3ebc4),
407 ]),
408 Word::new([
409 Felt::new(0x3a4c6dbaa6feda93),
410 Felt::new(0x8a32917885a3f22c),
411 Felt::new(0xd6016ba7fc1a0717),
412 Felt::new(0x3bfd41569497b156),
413 ]),
414 Word::new([
415 Felt::new(0xa907fad371653f15),
416 Felt::new(0x6be9ce6ac746f5bc),
417 Felt::new(0x1bee5ac8750d2444),
418 Felt::new(0x16050d83d4f7a90c),
419 ]),
420 Word::new([
421 Felt::new(0x4b194182aa7e9324),
422 Felt::new(0x813af49c845cea5e),
423 Felt::new(0x6886f4d8628bab16),
424 Felt::new(0xe3b6ef1419e2432c),
425 ]),
426 Word::new([
427 Felt::new(0x3edc103de28f1fac),
428 Felt::new(0xb6a05b8802d6ed5c),
429 Felt::new(0xf320c3f130a175c8),
430 Felt::new(0x326c8bb02f9a51f6),
431 ]),
432 Word::new([
433 Felt::new(0x5b1ac27a49b5d1da),
434 Felt::new(0x9e1fa75b04da7545),
435 Felt::new(0x9a522396a1cd68af),
436 Felt::new(0x91a4d435f3fcd43f),
437 ]),
438 Word::new([
439 Felt::new(0x318ac5d8f1e489ce),
440 Felt::new(0x339e7a0b2aec5843),
441 Felt::new(0x38f15bf9832a2c28),
442 Felt::new(0x5e3fef94216f72f1),
443 ]),
444 Word::new([
445 Felt::new(0xc43e0723d2a7e79c),
446 Felt::new(0xa06167cc0ebdf1e5),
447 Felt::new(0xe62f10089af57ba6),
448 Felt::new(0x838c863d60b859a2),
449 ]),
450 Word::new([
451 Felt::new(0xd10456af5f30e5d5),
452 Felt::new(0x235df7fe21fb912c),
453 Felt::new(0xe5acc29d13d80779),
454 Felt::new(0x580b83247a1f6524),
455 ]),
456 Word::new([
457 Felt::new(0x2a8b1bf7e9bc5675),
458 Felt::new(0x9e523f2d659a3e30),
459 Felt::new(0x3ecfdb1615666b74),
460 Felt::new(0xf53746b86fedee7f),
461 ]),
462 Word::new([
463 Felt::new(0xa12095b3b22680a9),
464 Felt::new(0x3010ad751585161d),
465 Felt::new(0xfb9c0ea33c7437b2),
466 Felt::new(0x9225d8151ec724a8),
467 ]),
468 Word::new([
469 Felt::new(0x1b09eac8ad815107),
470 Felt::new(0x33cb241ad41b562d),
471 Felt::new(0xa04f457b4cd1ece9),
472 Felt::new(0x84f27a45985d700e),
473 ]),
474 Word::new([
475 Felt::new(0xe5598d92d1507185),
476 Felt::new(0x84aa2bf7d87a26e8),
477 Felt::new(0x158f0e13550dec2a),
478 Felt::new(0x54d699e5eb65ee63),
479 ]),
480 Word::new([
481 Felt::new(0x902e89f122f8f8f7),
482 Felt::new(0xc2da7127af8c699a),
483 Felt::new(0x75762e75b77a1662),
484 Felt::new(0x7e683b3c116af130),
485 ]),
486 Word::new([
487 Felt::new(0xabc2aa2ecd2316dd),
488 Felt::new(0x44558fa721857f00),
489 Felt::new(0xf61dd475fdbc23d0),
490 Felt::new(0x22ba84332065a9e8),
491 ]),
492 Word::new([
493 Felt::new(0x5aa94e045e4bb7ae),
494 Felt::new(0xf6ddadbdd8747728),
495 Felt::new(0xeeab65efab2a1d2),
496 Felt::new(0xd12cc579c49b9db5),
497 ]),
498 Word::new([
499 Felt::new(0x71ea68262a73196a),
500 Felt::new(0x9612483af09f1bde),
501 Felt::new(0x7fe5fd69bbf241a4),
502 Felt::new(0x34de27c57b37975d),
503 ]),
504 Word::new([
505 Felt::new(0xf29bc8ba140714f6),
506 Felt::new(0xf0b44caca4f6561e),
507 Felt::new(0x742695d702446774),
508 Felt::new(0x7e1437b52ee16c0c),
509 ]),
510 Word::new([
511 Felt::new(0x13f6180493eaa129),
512 Felt::new(0x8fa2e77f499c911c),
513 Felt::new(0x1223e5ccda975bf),
514 Felt::new(0xc2a362e5449eac8b),
515 ]),
516 Word::new([
517 Felt::new(0xcf1254ec733c8fb0),
518 Felt::new(0x34359ae1e2272fc9),
519 Felt::new(0xce928a65262d59d5),
520 Felt::new(0xc84e1f72e2e78101),
521 ]),
522 Word::new([
523 Felt::new(0x8841b659676a2df5),
524 Felt::new(0x4c808c965135ff8f),
525 Felt::new(0x374d574fd96ee7d1),
526 Felt::new(0xa0ae0e5765bc8716),
527 ]),
528 Word::new([
529 Felt::new(0xba3692cf34a6eb7a),
530 Felt::new(0x384dce8b1fd8fcd5),
531 Felt::new(0x248f1c83f6cf6055),
532 Felt::new(0xbf50ca14b3c5b022),
533 ]),
534 Word::new([
535 Felt::new(0x18611824fa468341),
536 Felt::new(0xaab4187ff224ec04),
537 Felt::new(0x4ad742d8a070d084),
538 Felt::new(0xfa3bb42df7d86480),
539 ]),
540 Word::new([
541 Felt::new(0x2ab25bf43fc462b5),
542 Felt::new(0x6ac0cc243f54b796),
543 Felt::new(0x2401eabf391a2199),
544 Felt::new(0x62a71dae211b983),
545 ]),
546 Word::new([
547 Felt::new(0xbc5e568df9f18772),
548 Felt::new(0xee864850b75a99ba),
549 Felt::new(0x2a53e3e6776ae456),
550 Felt::new(0x8eb51bedbe483d7c),
551 ]),
552 Word::new([
553 Felt::new(0xce8161f4c705bfbb),
554 Felt::new(0xf1071a4e343a37e9),
555 Felt::new(0xddc4878a9e5de00f),
556 Felt::new(0xee33d737cd3c5dc8),
557 ]),
558 Word::new([
559 Felt::new(0x9eadd43aebfcd43d),
560 Felt::new(0xf35cec43429c0a95),
561 Felt::new(0xcad253fc16b63e5a),
562 Felt::new(0xea25dc9baaf21d38),
563 ]),
564 Word::new([
565 Felt::new(0xa85a87fbf220f449),
566 Felt::new(0x1db1c09109882161),
567 Felt::new(0xab5139cb30eb2c88),
568 Felt::new(0xe62f2ade31d95b14),
569 ]),
570 Word::new([
571 Felt::new(0xad3fae6f7f635376),
572 Felt::new(0x21e5dba9b8e21ac8),
573 Felt::new(0x86506eeeba6c7151),
574 Felt::new(0x6bf71fdffc8d9ae7),
575 ]),
576 Word::new([
577 Felt::new(0x37ec52a9396f4574),
578 Felt::new(0xf19404a514aa9285),
579 Felt::new(0x3ed5ae669769c4e7),
580 Felt::new(0x2286b493b85c9481),
581 ]),
582 Word::new([
583 Felt::new(0xc37fc37b83940bd2),
584 Felt::new(0xe3d67417540b620b),
585 Felt::new(0x1495f7a7848dde0a),
586 Felt::new(0xeaf4f9c053465ff),
587 ]),
588 Word::new([
589 Felt::new(0x80131752569df8f0),
590 Felt::new(0x30720a862b82f732),
591 Felt::new(0xabed5fb95dbe678b),
592 Felt::new(0x6cf7da37075ad45e),
593 ]),
594 Word::new([
595 Felt::new(0xa318ea66909473fe),
596 Felt::new(0x4a6c6ebc4bee8b3c),
597 Felt::new(0xf0d622f04ce1b02e),
598 Felt::new(0x92c2f8e192c000a1),
599 ]),
600 Word::new([
601 Felt::new(0xb39d728756dca017),
602 Felt::new(0x4f66acee5bcd7d98),
603 Felt::new(0xf623331bed29e125),
604 Felt::new(0xbcfc777f0eb03793),
605 ]),
606 Word::new([
607 Felt::new(0x6cdabd98e067b039),
608 Felt::new(0xd6356a27c3df3ddc),
609 Felt::new(0xd5afb88820db9d2f),
610 Felt::new(0x8203a7adfa667bfc),
611 ]),
612 Word::new([
613 Felt::new(0x1ddef8e482da50e0),
614 Felt::new(0x7fa3c9c0865609ec),
615 Felt::new(0x6ca762886d4d6227),
616 Felt::new(0x9a95160f2a4fe5d9),
617 ]),
618 Word::new([
619 Felt::new(0x607230c3b366dbd5),
620 Felt::new(0x5b996a7d876b7602),
621 Felt::new(0xf61df5d15469c8ea),
622 Felt::new(0x9bb4f5c06ac49403),
623 ]),
624 Word::new([
625 Felt::new(0x6a27c9e7082595e7),
626 Felt::new(0xbf93eb89e2090438),
627 Felt::new(0xd2db18139bedc636),
628 Felt::new(0x79710c33a1f1f612),
629 ]),
630 Word::new([
631 Felt::new(0xf54e4461aa09608b),
632 Felt::new(0x898a7b52804d88c9),
633 Felt::new(0xbc548fab0257ea25),
634 Felt::new(0xe783017a62b49474),
635 ]),
636 Word::new([
637 Felt::new(0xf7efdb376a7734c9),
638 Felt::new(0x2d4ded56d9ef2076),
639 Felt::new(0xa17d90a509b879d0),
640 Felt::new(0xcf012a20045b29e1),
641 ]),
642 Word::new([
643 Felt::new(0x37e40a30232a4f06),
644 Felt::new(0xfbd9877fb761052e),
645 Felt::new(0xc4c41f56a70377cd),
646 Felt::new(0x631e942f6680d4cc),
647 ]),
648 Word::new([
649 Felt::new(0xcf868b6d54b515a5),
650 Felt::new(0xa522edf7c43f7aee),
651 Felt::new(0x66057652f34d479),
652 Felt::new(0x59f4a86223bc80bd),
653 ]),
654 Word::new([
655 Felt::new(0xb7214ce5a0ba8dfd),
656 Felt::new(0x5c7a6e583e4e255e),
657 Felt::new(0xabc8369f8bf38a1c),
658 Felt::new(0xb5db79ae07f0689c),
659 ]),
660 Word::new([
661 Felt::new(0x18c980169ef2d0bb),
662 Felt::new(0x6526b64df8eb4eac),
663 Felt::new(0xfe4d8327ca5bd91a),
664 Felt::new(0xe36d607069c7dd85),
665 ]),
666 Word::new([
667 Felt::new(0x602a97209948e5cc),
668 Felt::new(0xb7d19db914da726),
669 Felt::new(0xe4e43672c24d376c),
670 Felt::new(0x8bb9f7465e019213),
671 ]),
672 Word::new([
673 Felt::new(0x187bff077d393e3d),
674 Felt::new(0x17fb9a97c5055580),
675 Felt::new(0x618469c060eb2719),
676 Felt::new(0xfc7be4b58477e5ac),
677 ]),
678 Word::new([
679 Felt::new(0x1d40fcbc7a25cc97),
680 Felt::new(0xaee142f7cebadbd5),
681 Felt::new(0x22dbaed94300ddf8),
682 Felt::new(0xe069c36278753a06),
683 ]),
684 Word::new([
685 Felt::new(0xcd1e21c5f02ce44d),
686 Felt::new(0x3b0ddbaa04daff25),
687 Felt::new(0xbb55cd14f54818c7),
688 Felt::new(0xc57f1b84ed302102),
689 ]),
690 Word::new([
691 Felt::new(0x5c8e1f56cbdb0f87),
692 Felt::new(0xeeeb31b4d317cf1d),
693 Felt::new(0x8bf45cd3659a6d1),
694 Felt::new(0x9e179aa20693175a),
695 ]),
696 Word::new([
697 Felt::new(0x10f58975fbb0fca),
698 Felt::new(0x5f35c19eb0f615c1),
699 Felt::new(0x9870cdafe46a3d),
700 Felt::new(0xcec9d9f3925df88b),
701 ]),
702 Word::new([
703 Felt::new(0x89e90b2f029b50c0),
704 Felt::new(0xd78a4223d0036c8a),
705 Felt::new(0x996b326a1d5cd76d),
706 Felt::new(0x5b314d29bb1694e3),
707 ]),
708 Word::new([
709 Felt::new(0x1be6e6955ba0f3a8),
710 Felt::new(0xc7e07c49076315ef),
711 Felt::new(0x93e91de5c7849fb2),
712 Felt::new(0xe81bc86fc641596f),
713 ]),
714 Word::new([
715 Felt::new(0x5320464735f18522),
716 Felt::new(0x1a741214432ca63d),
717 Felt::new(0xaf3ed59d324bdbe8),
718 Felt::new(0x2493eb414c91ac94),
719 ]),
720 Word::new([
721 Felt::new(0x35897b61f231fa86),
722 Felt::new(0xb1531e954332f229),
723 Felt::new(0x92e950b1c1f874a),
724 Felt::new(0x469de0412ca52491),
725 ]),
726 Word::new([
727 Felt::new(0x1ecea76deca59ec5),
728 Felt::new(0xe884b570f5d54e45),
729 Felt::new(0x58939f3a1b5bc7e1),
730 Felt::new(0xf14eab10f926958f),
731 ]),
732 Word::new([
733 Felt::new(0x26251aa927a69723),
734 Felt::new(0xb1808fe0795ab008),
735 Felt::new(0xd195fe923d1944c9),
736 Felt::new(0x2334a61c28dc63c),
737 ]),
738 Word::new([
739 Felt::new(0xe4b659081d9cf4e4),
740 Felt::new(0xf1174a5f72916819),
741 Felt::new(0x1de902b42b3b4054),
742 Felt::new(0xbe2bc215120367d0),
743 ]),
744 Word::new([
745 Felt::new(0xfc87b8043d32428f),
746 Felt::new(0x8f8cb244e3ddf6da),
747 Felt::new(0xc7539186ece143a7),
748 Felt::new(0xf28008f902075229),
749 ]),
750 Word::new([
751 Felt::new(0xf76c24c9f86c44d3),
752 Felt::new(0x97c7abcbb6d07d35),
753 Felt::new(0x9d8e37a1697a0d4),
754 Felt::new(0xa3f818e48770f5fa),
755 ]),
756 Word::new([
757 Felt::new(0x885686c79c1cd95e),
758 Felt::new(0xcdebe76fd203c23e),
759 Felt::new(0xdf9b7cd5099673ed),
760 Felt::new(0xe60438536ad13270),
761 ]),
762 Word::new([
763 Felt::new(0x7790809942b9389d),
764 Felt::new(0xa3d82432c31de99),
765 Felt::new(0xaea11fece88c7d27),
766 Felt::new(0x5cc764da96d0b2f0),
767 ]),
768 Word::new([
769 Felt::new(0x80e555c41170427f),
770 Felt::new(0x87e68144276d79c8),
771 Felt::new(0xebdc63f28aa58a53),
772 Felt::new(0x168dd22672627819),
773 ]),
774 Word::new([
775 Felt::new(0xea1dc59c29da5b6c),
776 Felt::new(0xa33188c0a077761),
777 Felt::new(0xabd3c84cddbe1477),
778 Felt::new(0xd28244bc92f36e0f),
779 ]),
780 Word::new([
781 Felt::new(0xdadc2beb7ccfe3fa),
782 Felt::new(0x218532461f981fb4),
783 Felt::new(0xf0455f1d4e2f9732),
784 Felt::new(0xa7338b43d2b7e62d),
785 ]),
786 Word::new([
787 Felt::new(0x195d8bc1cfe2711a),
788 Felt::new(0x44e392ba7e259f47),
789 Felt::new(0x480120d41e18ab3c),
790 Felt::new(0x2056ffb29c2d89d1),
791 ]),
792 Word::new([
793 Felt::new(0x382e33ba5fe6ada3),
794 Felt::new(0x45402a8903efebc9),
795 Felt::new(0xb9b0d63a59c70da),
796 Felt::new(0x7afebd4726d8cfe5),
797 ]),
798 Word::new([
799 Felt::new(0xbf60bf6b45a4c9d),
800 Felt::new(0xfb5b9b553646f19c),
801 Felt::new(0x9949b60ce7639da3),
802 Felt::new(0x9c62552c0d1868ff),
803 ]),
804 Word::new([
805 Felt::new(0xdb2a0aba0fc5e4f8),
806 Felt::new(0x8ee4f01d4b0fa49e),
807 Felt::new(0xd70a17a77b5c4a03),
808 Felt::new(0x57aaaa5b48fea66e),
809 ]),
810 Word::new([
811 Felt::new(0x6d635940443564cb),
812 Felt::new(0xc7fbf0e26b5e3ff6),
813 Felt::new(0xa45bce664368b65e),
814 Felt::new(0xd6c5c1a92be0c60d),
815 ]),
816 Word::new([
817 Felt::new(0x6ea62d6033fb2dd3),
818 Felt::new(0x1a37910cf90ec6d8),
819 Felt::new(0x83d826e9933760b5),
820 Felt::new(0xf8387c90d9c6b5a9),
821 ]),
822 Word::new([
823 Felt::new(0x134766f1da2fbc91),
824 Felt::new(0xcfaeea545df2c757),
825 Felt::new(0xd0accefaed1eaa0f),
826 Felt::new(0xec38d4053f84b163),
827 ]),
828 Word::new([
829 Felt::new(0xb02ad1e757380aee),
830 Felt::new(0x4538b8ea13112d4),
831 Felt::new(0xb2d761fe842a2a85),
832 Felt::new(0x8e98d58adf5a1f29),
833 ]),
834 Word::new([
835 Felt::new(0x44603d9549ddee64),
836 Felt::new(0x43de72d570967bbb),
837 Felt::new(0x4a3e71144e62d0fa),
838 Felt::new(0xffb2fdcb48965939),
839 ]),
840 Word::new([
841 Felt::new(0x606f3ee12fe9ec0c),
842 Felt::new(0xe7d494ab8e483d87),
843 Felt::new(0x3b47f7c0d316cd4a),
844 Felt::new(0x86f941c7fa834581),
845 ]),
846 Word::new([
847 Felt::new(0x30c2385facf08b86),
848 Felt::new(0x4446168e25ac2c21),
849 Felt::new(0x61c6db1c3f283b21),
850 Felt::new(0x2fdf6bc360bf803),
851 ]),
852 Word::new([
853 Felt::new(0xeec8d9cc3e46d243),
854 Felt::new(0x65bcae511dcce39),
855 Felt::new(0xd3da5bbfdbd09cd3),
856 Felt::new(0xe7c35fc3d11216a5),
857 ]),
858 Word::new([
859 Felt::new(0x841fb6fb35e7b49b),
860 Felt::new(0xfc4e2e1239caa7b8),
861 Felt::new(0x37cb93ec88f102e5),
862 Felt::new(0xa707a1556032152c),
863 ]),
864 Word::new([
865 Felt::new(0x37c67bd7b7cef984),
866 Felt::new(0x75bbe46da2ee5c90),
867 Felt::new(0x3a5c568d1f71cab1),
868 Felt::new(0x36939cdca2dc0b55),
869 ]),
870 Word::new([
871 Felt::new(0x4f76756a55f3a644),
872 Felt::new(0xd30f8fa45394aff4),
873 Felt::new(0x65c55096158b202f),
874 Felt::new(0x368a5fb0b0d475d0),
875 ]),
876 Word::new([
877 Felt::new(0xa9b9acd256cabb0f),
878 Felt::new(0xd8b1170f301208c7),
879 Felt::new(0xab152f908d46bf8),
880 Felt::new(0x1b7a10556730ec16),
881 ]),
882 Word::new([
883 Felt::new(0xd967a72076e3059c),
884 Felt::new(0xbd1015a08ffe8881),
885 Felt::new(0xf72f186dde0c6e78),
886 Felt::new(0xa58910205352895a),
887 ]),
888 Word::new([
889 Felt::new(0x130333f2fd400a4d),
890 Felt::new(0xf20104837a118d6e),
891 Felt::new(0xda1e5d608fb9062c),
892 Felt::new(0xb8ac5c76d60950b8),
893 ]),
894 Word::new([
895 Felt::new(0x65d0deae6fb0c6cb),
896 Felt::new(0x1b442ae344dcd9e7),
897 Felt::new(0x1eedabab8fc07fa4),
898 Felt::new(0xb0dc89b96f256189),
899 ]),
900 Word::new([
901 Felt::new(0xef88de626968c17a),
902 Felt::new(0x569a01072cdbbc2b),
903 Felt::new(0xc99bbba6d083c68f),
904 Felt::new(0x9ed4a176fe341849),
905 ]),
906 Word::new([
907 Felt::new(0x5d49d1e9d17448a6),
908 Felt::new(0x6974d510bc47ee66),
909 Felt::new(0xbcbea4dec0b68586),
910 Felt::new(0xdaa5457e0cfd3e61),
911 ]),
912 Word::new([
913 Felt::new(0x9fceba739503cda0),
914 Felt::new(0xb9daf271ac42c8ba),
915 Felt::new(0x10fe3e8de8680d83),
916 Felt::new(0xd7e1dc73ced7730b),
917 ]),
918 Word::new([
919 Felt::new(0x93ec6c422d4271ea),
920 Felt::new(0x73923813232b0e70),
921 Felt::new(0xbbe6a4441a900b65),
922 Felt::new(0x36b2164f37c9319b),
923 ]),
924 Word::new([
925 Felt::new(0xce3ecb2eed624694),
926 Felt::new(0xb7e1d75fff7a454c),
927 Felt::new(0x86c24aa3a8d92d2b),
928 Felt::new(0xb1ba74cafa9ce649),
929 ]),
930 Word::new([
931 Felt::new(0xb5fae724eb357479),
932 Felt::new(0x359532ddc4840cb9),
933 Felt::new(0x4b111251e037e9fa),
934 Felt::new(0xfcdab1cdd314c1d9),
935 ]),
936 Word::new([
937 Felt::new(0xb3a89464d21c9ff1),
938 Felt::new(0x8136e1b457a59ca8),
939 Felt::new(0x88b0fa606b53c4d5),
940 Felt::new(0x89645f8a9dfe97a2),
941 ]),
942 Word::new([
943 Felt::new(0xfe115ef35b814cbf),
944 Felt::new(0x63de467fb93b6851),
945 Felt::new(0x17c73b03c9f44ad8),
946 Felt::new(0x53742721f568b5be),
947 ]),
948 Word::new([
949 Felt::new(0xd8110ea6e905cc2),
950 Felt::new(0xd67b3c7cea25100),
951 Felt::new(0x9e49b38ed51d1c60),
952 Felt::new(0xe9e24f9b597c9bfd),
953 ]),
954 Word::new([
955 Felt::new(0xefe9086b5bb5a504),
956 Felt::new(0x991f92a90c9346a3),
957 Felt::new(0xe4fab215a20f453b),
958 Felt::new(0x4e4d4dde9146d61a),
959 ]),
960 Word::new([
961 Felt::new(0xaa998c3b26497ffa),
962 Felt::new(0x985bd5cf4ccefb3c),
963 Felt::new(0xce44e80aa02424bb),
964 Felt::new(0x75158a37503aed75),
965 ]),
966 Word::new([
967 Felt::new(0xdb61760c917116f1),
968 Felt::new(0xf378c9645174a832),
969 Felt::new(0x1216aa71b73e7fac),
970 Felt::new(0x8a4e7f0591a129fd),
971 ]),
972 Word::new([
973 Felt::new(0xaf11a04daaf4ed67),
974 Felt::new(0xd3e59f0d7dad9064),
975 Felt::new(0x30c206089a2c294d),
976 Felt::new(0xe104db59761e8a99),
977 ]),
978 Word::new([
979 Felt::new(0x70b545ba7a6d447),
980 Felt::new(0x6ac0e423ddf68913),
981 Felt::new(0xf9b50997257bb033),
982 Felt::new(0xdac37c7b1c18b48a),
983 ]),
984 Word::new([
985 Felt::new(0xd182b9dff0fcd5c0),
986 Felt::new(0xf87619ae86b6eb02),
987 Felt::new(0x6838c1b612b17cb5),
988 Felt::new(0x9b705d5b6bcf92c),
989 ]),
990 Word::new([
991 Felt::new(0xfba622b3026c6193),
992 Felt::new(0xdacde486f8129b96),
993 Felt::new(0xd5acd22a7c2cf6aa),
994 Felt::new(0xf5beb40535e6c0f2),
995 ]),
996 Word::new([
997 Felt::new(0x59bde17b2d501969),
998 Felt::new(0xb4abe1389123d3b9),
999 Felt::new(0x683d8dd8635d9a67),
1000 Felt::new(0x347e01da4c07833),
1001 ]),
1002 Word::new([
1003 Felt::new(0x4e28956ab7162a06),
1004 Felt::new(0xccfcc7358f48c727),
1005 Felt::new(0x7b3485f20c979144),
1006 Felt::new(0xeeb27fa694f1c8fd),
1007 ]),
1008 Word::new([
1009 Felt::new(0x275b2c0ee883807b),
1010 Felt::new(0x8f68f2016c1391cd),
1011 Felt::new(0xb59fdccb20322765),
1012 Felt::new(0xeb9b902c5351d5d4),
1013 ]),
1014 Word::new([
1015 Felt::new(0xb767d8cb8816cc8e),
1016 Felt::new(0xbd29bb02cdcbc9af),
1017 Felt::new(0xeb1dca9bfebee6f),
1018 Felt::new(0x57597da8109c0354),
1019 ]),
1020 Word::new([
1021 Felt::new(0xeb32a8db8cf216),
1022 Felt::new(0xeb5532ac68f304c1),
1023 Felt::new(0x9bca72ffccb957ee),
1024 Felt::new(0x33d4b152ebedb841),
1025 ]),
1026 Word::new([
1027 Felt::new(0x439b20dce9810169),
1028 Felt::new(0x2b693e2530a1b88c),
1029 Felt::new(0x36b8898f4e900c7a),
1030 Felt::new(0x7bf5064dde3a0da1),
1031 ]),
1032 Word::new([
1033 Felt::new(0x8794201ce6158fe0),
1034 Felt::new(0xfcc53644557471f3),
1035 Felt::new(0xa66d87f6ae6f64d0),
1036 Felt::new(0x4e876d9d933b2ad0),
1037 ]),
1038 Word::new([
1039 Felt::new(0x6ff8f4900e43bab6),
1040 Felt::new(0x40014f298cb7b9a3),
1041 Felt::new(0x9d6b252ff946ee3d),
1042 Felt::new(0xb014d99ab8508072),
1043 ]),
1044 Word::new([
1045 Felt::new(0x9cdd5a4a37511cae),
1046 Felt::new(0x684444122d770c18),
1047 Felt::new(0x8982944b22a22577),
1048 Felt::new(0x50a58d944629de54),
1049 ]),
1050 Word::new([
1051 Felt::new(0x853f5b8ad557fac3),
1052 Felt::new(0xdab1743c03b8da56),
1053 Felt::new(0xc70d6683d4f4c086),
1054 Felt::new(0x2f1d0f67a5dfae4c),
1055 ]),
1056 Word::new([
1057 Felt::new(0xf3b6fe76eb11284),
1058 Felt::new(0xbeb9e98b146c63a8),
1059 Felt::new(0xc7e8824fce7777ad),
1060 Felt::new(0x5229918b04410d6a),
1061 ]),
1062 Word::new([
1063 Felt::new(0xc170c46601ffc4f3),
1064 Felt::new(0x1258e8e47103c39b),
1065 Felt::new(0x612e99da984aac99),
1066 Felt::new(0xc82fcfcf56d6dd94),
1067 ]),
1068 Word::new([
1069 Felt::new(0xf793819d04d5679d),
1070 Felt::new(0xb738b97ec0a52dd3),
1071 Felt::new(0x4df897389119a098),
1072 Felt::new(0xa5af45eb0d007785),
1073 ]),
1074 Word::new([
1075 Felt::new(0xfcf59c6c9d7280e7),
1076 Felt::new(0x662b993b320f3345),
1077 Felt::new(0xeb8e04ba28f156fa),
1078 Felt::new(0xe72233ee6a444749),
1079 ]),
1080 Word::new([
1081 Felt::new(0x7ad6b7badfc9e757),
1082 Felt::new(0x3332f340184af6f5),
1083 Felt::new(0xe92a736dcdf52022),
1084 Felt::new(0xf1759f8041119245),
1085 ]),
1086 Word::new([
1087 Felt::new(0x166382d3c8ca3a95),
1088 Felt::new(0x36c8c25f971d771a),
1089 Felt::new(0xe82cc977ee1402cc),
1090 Felt::new(0xe13f6dc2ab919177),
1091 ]),
1092 Word::new([
1093 Felt::new(0x41fb8b9d5a9ab5e8),
1094 Felt::new(0xb2a608f5d6fbc37d),
1095 Felt::new(0xe81719d9778c54b4),
1096 Felt::new(0xcc0d4373ef2bb8e1),
1097 ]),
1098 Word::new([
1099 Felt::new(0x60b3788c45c1bc29),
1100 Felt::new(0xcb38969a428c5423),
1101 Felt::new(0xca11f6b9d957f57c),
1102 Felt::new(0x7a166881648514cb),
1103 ]),
1104 Word::new([
1105 Felt::new(0x3548d7dcbe4af37f),
1106 Felt::new(0xb199194f25a6f55a),
1107 Felt::new(0x751017bda8f0d816),
1108 Felt::new(0x80117260c6525c4a),
1109 ]),
1110 Word::new([
1111 Felt::new(0x1d1d34d842e95671),
1112 Felt::new(0x38ab2833c4a2bded),
1113 Felt::new(0x3a53caf5f6e20f5f),
1114 Felt::new(0xfee946c5ebce837d),
1115 ]),
1116 Word::new([
1117 Felt::new(0x65dbb5d849e46f92),
1118 Felt::new(0x753679d0d09d1250),
1119 Felt::new(0xc539adf9062e7698),
1120 Felt::new(0xd76f4b13d2635af3),
1121 ]),
1122 Word::new([
1123 Felt::new(0x9eae446581f7076d),
1124 Felt::new(0x237138e3a1c55ee8),
1125 Felt::new(0xfb54da0b58969484),
1126 Felt::new(0x9a899375c4f10483),
1127 ]),
1128 Word::new([
1129 Felt::new(0x88b12578d3c36cc4),
1130 Felt::new(0x9cd868d6a29df146),
1131 Felt::new(0x5443d21524637821),
1132 Felt::new(0xceb3692fad9f76b9),
1133 ]),
1134 Word::new([
1135 Felt::new(0x4e45d3e34ebfcb0d),
1136 Felt::new(0xedca6a0f8d90eb2e),
1137 Felt::new(0x1a182dad4a914731),
1138 Felt::new(0xd89946f41f53f106),
1139 ]),
1140 Word::new([
1141 Felt::new(0x42a89e1abee8b12d),
1142 Felt::new(0x3af360678475225a),
1143 Felt::new(0x3e28a1cdede0c7a3),
1144 Felt::new(0x25cc76ad1c8788e),
1145 ]),
1146 Word::new([
1147 Felt::new(0xa6e955e3b0721737),
1148 Felt::new(0xbbd721b51cbc605f),
1149 Felt::new(0xfa537854669f20a5),
1150 Felt::new(0x2a1ab83bb24d43f7),
1151 ]),
1152 Word::new([
1153 Felt::new(0x1c289dc62c4e7907),
1154 Felt::new(0x186437cf1f8b3abf),
1155 Felt::new(0x929244addee54abf),
1156 Felt::new(0x42ec87a9141b58fb),
1157 ]),
1158 Word::new([
1159 Felt::new(0xf5ea743b81e59fee),
1160 Felt::new(0x32e2c826d0fc57d4),
1161 Felt::new(0xbc411bca1b745388),
1162 Felt::new(0xc9af8de5bc3b8692),
1163 ]),
1164 Word::new([
1165 Felt::new(0xf75129028d95ebab),
1166 Felt::new(0xf9d02d7713784ff2),
1167 Felt::new(0x944b5fea457c946b),
1168 Felt::new(0xa6645d6f5389a91f),
1169 ]),
1170 Word::new([
1171 Felt::new(0x236ce9e32fb0131c),
1172 Felt::new(0x92cac3a2b67600b8),
1173 Felt::new(0x437914d1d9e409bb),
1174 Felt::new(0x6bff102a4ea81e38),
1175 ]),
1176 Word::new([
1177 Felt::new(0x9906825ec6d45f25),
1178 Felt::new(0x1245ccf4121950a2),
1179 Felt::new(0xff82337f357949bb),
1180 Felt::new(0xe1f59f6b824f97af),
1181 ]),
1182 Word::new([
1183 Felt::new(0xd6030ea8046f0d1e),
1184 Felt::new(0x69fd3c732586f5db),
1185 Felt::new(0x765cccb10c151f30),
1186 Felt::new(0xd1bad2f1ba1bdc5b),
1187 ]),
1188 Word::new([
1189 Felt::new(0xd4a0cff6578c123e),
1190 Felt::new(0xf11a17948930b14a),
1191 Felt::new(0xd128dd2a4213b53c),
1192 Felt::new(0x2df8fe54f23f6b91),
1193 ]),
1194 Word::new([
1195 Felt::new(0xa891ab94552907b2),
1196 Felt::new(0xc64b69708f99b16e),
1197 Felt::new(0xb99d29be9af9df15),
1198 Felt::new(0xa452647d61bd3d7b),
1199 ]),
1200 Word::new([
1201 Felt::new(0xd339a7d5f35bdf7e),
1202 Felt::new(0x296127097a98dbdd),
1203 Felt::new(0x66d3eac876c1a984),
1204 Felt::new(0x2714db555ccbdca4),
1205 ]),
1206 Word::new([
1207 Felt::new(0x6ca87920a067acd6),
1208 Felt::new(0x55a102d742879de5),
1209 Felt::new(0xa3f57a4b6a56d7f3),
1210 Felt::new(0x18770879a832a177),
1211 ]),
1212 Word::new([
1213 Felt::new(0x1208793a0a77e984),
1214 Felt::new(0x89ed5a1f45b34219),
1215 Felt::new(0x8d74e6f75e77ef03),
1216 Felt::new(0xa78cc9b7d29a1ee9),
1217 ]),
1218 Word::new([
1219 Felt::new(0x345fffecefd56a65),
1220 Felt::new(0x23dec03b9f663006),
1221 Felt::new(0x66f452be070b34d8),
1222 Felt::new(0xe1c6aaaa54765dc),
1223 ]),
1224 Word::new([
1225 Felt::new(0xb7b714ca60c77011),
1226 Felt::new(0x5ffe9476baa10259),
1227 Felt::new(0xbea15cd2b4150dda),
1228 Felt::new(0x4467804ab919e3d8),
1229 ]),
1230 Word::new([
1231 Felt::new(0x21c65ff7a4185640),
1232 Felt::new(0x5d20fffcc7779035),
1233 Felt::new(0x92b571249fa728d5),
1234 Felt::new(0xe9e2eeca83b49342),
1235 ]),
1236 Word::new([
1237 Felt::new(0x2be46f9d0b431948),
1238 Felt::new(0xa5c1a12c95a56f44),
1239 Felt::new(0xc620adca5cd874),
1240 Felt::new(0x51c64b969c1dc0c9),
1241 ]),
1242 Word::new([
1243 Felt::new(0xae9e7f421ab12b3f),
1244 Felt::new(0x5f90e40cdb47bbec),
1245 Felt::new(0x3d2a6be00ce19d31),
1246 Felt::new(0x609632a98643a06c),
1247 ]),
1248 Word::new([
1249 Felt::new(0xde0f38c1d4cf5977),
1250 Felt::new(0x3d6f0f44105b0fb2),
1251 Felt::new(0x5f34005bed22db6f),
1252 Felt::new(0x377009a91543c872),
1253 ]),
1254 Word::new([
1255 Felt::new(0x8763f1c59420f662),
1256 Felt::new(0xbe15cc9b37fdbdb3),
1257 Felt::new(0xeed75857d5451487),
1258 Felt::new(0x10b3507901fcfb8b),
1259 ]),
1260 Word::new([
1261 Felt::new(0x2e40aeb53f7ba2f5),
1262 Felt::new(0xed598b103221e46),
1263 Felt::new(0xed943dae7f3be8f7),
1264 Felt::new(0x7115a61b37a95c30),
1265 ]),
1266 Word::new([
1267 Felt::new(0xef9bdb6947abe190),
1268 Felt::new(0xfe47c74c5ad62e2b),
1269 Felt::new(0xf85ee41bc6960d64),
1270 Felt::new(0x55e51b57d5990e2b),
1271 ]),
1272 Word::new([
1273 Felt::new(0x81798808c02cffe0),
1274 Felt::new(0x22df79cb29991e51),
1275 Felt::new(0x965714f831e09f90),
1276 Felt::new(0x67ac8aef55047894),
1277 ]),
1278 Word::new([
1279 Felt::new(0x321d58dfe138e326),
1280 Felt::new(0xee80b399b444c937),
1281 Felt::new(0x6cbc565ad3d69ccf),
1282 Felt::new(0x6ea9e44922bdc48e),
1283 ]),
1284 Word::new([
1285 Felt::new(0xf2a11cd35120f6c3),
1286 Felt::new(0x4e77378973b2ca8),
1287 Felt::new(0x1adb26e6c1630440),
1288 Felt::new(0x42e5495895baee92),
1289 ]),
1290 Word::new([
1291 Felt::new(0xe07020daabcdebae),
1292 Felt::new(0x2d5c6456b50a05c3),
1293 Felt::new(0x3050bdec1715085b),
1294 Felt::new(0xe4d05bce00c4f30d),
1295 ]),
1296 Word::new([
1297 Felt::new(0xe64d54038f19cbc3),
1298 Felt::new(0xde70db9c37ffc1a6),
1299 Felt::new(0xb4a54682fe025b15),
1300 Felt::new(0xcb4e28247a791f29),
1301 ]),
1302 Word::new([
1303 Felt::new(0x9cd2815cef52b092),
1304 Felt::new(0xd46fa4485d7aaf5c),
1305 Felt::new(0x275777fd3b9637f7),
1306 Felt::new(0x684317aab8bb48da),
1307 ]),
1308 Word::new([
1309 Felt::new(0xfef7ca5bc1a8531),
1310 Felt::new(0x66da24a709f70f60),
1311 Felt::new(0xc6d0048b0222dc8d),
1312 Felt::new(0xd82cc216eed266b4),
1313 ]),
1314 Word::new([
1315 Felt::new(0xc11007d4b20c68e8),
1316 Felt::new(0xb88dea2c92f105d1),
1317 Felt::new(0xfe885fceee959992),
1318 Felt::new(0x4d8c71eeb47c8f90),
1319 ]),
1320 Word::new([
1321 Felt::new(0x980fbe89dd050886),
1322 Felt::new(0xdb7ad3a9a9f39be1),
1323 Felt::new(0xf830b6439c7e9bc0),
1324 Felt::new(0xdd76938b7c686c07),
1325 ]),
1326 Word::new([
1327 Felt::new(0xb678629d183cf841),
1328 Felt::new(0x664f19c21a6465bc),
1329 Felt::new(0xba142578e79eb9d0),
1330 Felt::new(0x1d57cbcdb2bbcb18),
1331 ]),
1332 Word::new([
1333 Felt::new(0xc8822aae44990ed3),
1334 Felt::new(0xf7edce1d2a235ab4),
1335 Felt::new(0x8f35d229e981ca01),
1336 Felt::new(0x50dc4c673c8fc58),
1337 ]),
1338 Word::new([
1339 Felt::new(0x86edc215b92306e7),
1340 Felt::new(0xe333ce17fd0f40df),
1341 Felt::new(0xabcca6409bb48e29),
1342 Felt::new(0xa110affea61c2951),
1343 ]),
1344 Word::new([
1345 Felt::new(0x269d782ba380a2e4),
1346 Felt::new(0x32bdc65a619310cd),
1347 Felt::new(0x52895e02cb1df991),
1348 Felt::new(0x1749f76388896455),
1349 ]),
1350 Word::new([
1351 Felt::new(0x8f99ac4698f12102),
1352 Felt::new(0x9983407c99f948c5),
1353 Felt::new(0x7b89856f980cb407),
1354 Felt::new(0x8acff0a017e68367),
1355 ]),
1356 Word::new([
1357 Felt::new(0xe7983973c759318a),
1358 Felt::new(0xb389a6754d7976ca),
1359 Felt::new(0x1d7ded5044c6ede6),
1360 Felt::new(0x4290fc214bd001d7),
1361 ]),
1362 Word::new([
1363 Felt::new(0x2a1607db398812eb),
1364 Felt::new(0xbbaaed6d5de95899),
1365 Felt::new(0x53699ff1add9cc48),
1366 Felt::new(0x71c99c4c20a2cbe9),
1367 ]),
1368 Word::new([
1369 Felt::new(0x9c211abaf37beba7),
1370 Felt::new(0x44f91ee2c8f84830),
1371 Felt::new(0xdaf1ca95546ff105),
1372 Felt::new(0x4d15218eb972c855),
1373 ]),
1374 Word::new([
1375 Felt::new(0x47018b067647ff40),
1376 Felt::new(0xabd25bc93e3cd280),
1377 Felt::new(0x1e33fd9953262800),
1378 Felt::new(0x9b8f68c64db159c3),
1379 ]),
1380 Word::new([
1381 Felt::new(0xa20fb2bcf2636418),
1382 Felt::new(0xdc8996a5085ba820),
1383 Felt::new(0x349b49cddfc936d4),
1384 Felt::new(0x1d816c1d0bfef815),
1385 ]),
1386 Word::new([
1387 Felt::new(0xc19364d95b916e9b),
1388 Felt::new(0xdcb0cf99f9ca31b5),
1389 Felt::new(0x1b5493d83dca1621),
1390 Felt::new(0xf0758e5e3459a0f9),
1391 ]),
1392 Word::new([
1393 Felt::new(0xdf2cb895c1de5b3a),
1394 Felt::new(0xb7347b591512353a),
1395 Felt::new(0xfdbbce7837412eb7),
1396 Felt::new(0x893fa2af604d446f),
1397 ]),
1398 Word::new([
1399 Felt::new(0x75d2b8fc6043d11e),
1400 Felt::new(0xa6559eaebeed7d5f),
1401 Felt::new(0xa9379773dad056b3),
1402 Felt::new(0xf3bcf80d0748d3c1),
1403 ]),
1404 Word::new([
1405 Felt::new(0x35b731f6c583214a),
1406 Felt::new(0x26249962927dd05f),
1407 Felt::new(0x75fc431a3e7c9e93),
1408 Felt::new(0x170c1036d421083d),
1409 ]),
1410 Word::new([
1411 Felt::new(0x1d6fbabfdf0d9096),
1412 Felt::new(0x7d7c9687d9eca6cc),
1413 Felt::new(0xd62974b75d27af1c),
1414 Felt::new(0x93ed9a3825cc1c35),
1415 ]),
1416 Word::new([
1417 Felt::new(0xd30946664518ff6e),
1418 Felt::new(0xd3e54aedfb7ba7e5),
1419 Felt::new(0xb91107b2bfadfa1d),
1420 Felt::new(0x2f7b0b2cb06cc43b),
1421 ]),
1422 Word::new([
1423 Felt::new(0x47d1dc850260558e),
1424 Felt::new(0x8e5dbde02c522c39),
1425 Felt::new(0x3464d9fe9fd4a1e),
1426 Felt::new(0xf9e5bcfe534437be),
1427 ]),
1428 Word::new([
1429 Felt::new(0x83378fd3d8e8a235),
1430 Felt::new(0x5c12793119b6dfdb),
1431 Felt::new(0xfc6f110fe6acbc57),
1432 Felt::new(0x3138336422622a48),
1433 ]),
1434 Word::new([
1435 Felt::new(0x239c939a0a9787a0),
1436 Felt::new(0x6c0d389b75f1cfb4),
1437 Felt::new(0xc1947a136998e2a1),
1438 Felt::new(0x76c1779e38ffb573),
1439 ]),
1440 Word::new([
1441 Felt::new(0x7a266f705e62cd23),
1442 Felt::new(0x7246a2960a038c2),
1443 Felt::new(0xc1f47087a22fa2cb),
1444 Felt::new(0xf298d4651af0b8b2),
1445 ]),
1446 Word::new([
1447 Felt::new(0x623bcdb6cc15e3ad),
1448 Felt::new(0x8a6e820adf4725c3),
1449 Felt::new(0x48737f1587e13208),
1450 Felt::new(0xbf747c141bf3564c),
1451 ]),
1452 Word::new([
1453 Felt::new(0x14842ec18fe2348c),
1454 Felt::new(0x3701e593309841cf),
1455 Felt::new(0x8e85c9f1884fdf7b),
1456 Felt::new(0xa4cc06a6b8cae8e3),
1457 ]),
1458 Word::new([
1459 Felt::new(0xcfebb64f4bf4f79),
1460 Felt::new(0x54754d70569eeecd),
1461 Felt::new(0x50405a6b79d1ae83),
1462 Felt::new(0x9075f17ccebc056c),
1463 ]),
1464 Word::new([
1465 Felt::new(0x9a93d03d0f9c825f),
1466 Felt::new(0xf704fa1580fe53c7),
1467 Felt::new(0xf95df7a7d06a22b7),
1468 Felt::new(0x8462e18adf8b3607),
1469 ]),
1470 Word::new([
1471 Felt::new(0xb5210a5cbd9556b4),
1472 Felt::new(0x6fd4218ebf3c7336),
1473 Felt::new(0x19d661830be725ae),
1474 Felt::new(0x28a2862b49428353),
1475 ]),
1476 Word::new([
1477 Felt::new(0x93ceddc8a18724fe),
1478 Felt::new(0x4e3299172e9130ed),
1479 Felt::new(0x80229e0e1808c860),
1480 Felt::new(0x13f479347eb7fd78),
1481 ]),
1482 Word::new([
1483 Felt::new(0x86e4db88d39d4203),
1484 Felt::new(0x81c24ca37b068741),
1485 Felt::new(0x12b7d21371ca58f5),
1486 Felt::new(0xb6546d4722efcbb0),
1487 ]),
1488 Word::new([
1489 Felt::new(0x96ce1320155172c5),
1490 Felt::new(0xbf622c3a5ab86fba),
1491 Felt::new(0x5876a31266554836),
1492 Felt::new(0x4f23fd3646963922),
1493 ]),
1494 Word::new([
1495 Felt::new(0x48f59a613c9baa43),
1496 Felt::new(0x761de5ad2fd2c806),
1497 Felt::new(0x2db99e809e35728f),
1498 Felt::new(0x38b05ac131a0edc0),
1499 ]),
1500 Word::new([
1501 Felt::new(0x6e4fba2ef071cb8a),
1502 Felt::new(0x77c415814dc5a0e5),
1503 Felt::new(0xa0492c8344a64bb1),
1504 Felt::new(0xc6dd5e8dbc841fe5),
1505 ]),
1506 Word::new([
1507 Felt::new(0xa31e2e634187fec),
1508 Felt::new(0xa4c019c12457e4b1),
1509 Felt::new(0xa7b9de27a75ec6b4),
1510 Felt::new(0x990bacb76b218164),
1511 ]),
1512 Word::new([
1513 Felt::new(0x97c85363ab1c997e),
1514 Felt::new(0xa95cd8ccab0b41b3),
1515 Felt::new(0xb98b7ebc3680470b),
1516 Felt::new(0x22fe1b13640f19a9),
1517 ]),
1518 Word::new([
1519 Felt::new(0x113c9a5f0dfbf187),
1520 Felt::new(0x77f2dc9c46f3d699),
1521 Felt::new(0xc3d92d34c950f8f4),
1522 Felt::new(0x9cc6aaf7ffdaf2b6),
1523 ]),
1524 Word::new([
1525 Felt::new(0xa5f51bc68b62924c),
1526 Felt::new(0x54182d0b8b519f87),
1527 Felt::new(0x15b42760e2ad50a5),
1528 Felt::new(0x3b2d54cae046788),
1529 ]),
1530 Word::new([
1531 Felt::new(0xefec815078a58b7d),
1532 Felt::new(0x2d02bd88ae2b8a3d),
1533 Felt::new(0x7b3dee115eaac60a),
1534 Felt::new(0x8e659da09a00ffad),
1535 ]),
1536 Word::new([
1537 Felt::new(0x1987fb02253b4338),
1538 Felt::new(0xa7c1e3a856b329be),
1539 Felt::new(0x8d90defd305553e8),
1540 Felt::new(0xb132ee2f7526c94d),
1541 ]),
1542 Word::new([
1543 Felt::new(0x1556b5441e77734f),
1544 Felt::new(0xa2ceaf4b2822a233),
1545 Felt::new(0x41e5ee79d553e00c),
1546 Felt::new(0xf2cdc04fd67a69f2),
1547 ]),
1548 Word::new([
1549 Felt::new(0xd4a8d6025cb6e3a),
1550 Felt::new(0xd8d181277e183f21),
1551 Felt::new(0x3bf9725618de11d3),
1552 Felt::new(0xb26a0eb5a7d9c86e),
1553 ]),
1554 Word::new([
1555 Felt::new(0xcdc5ad1e45e351c2),
1556 Felt::new(0xf00b06807244caa6),
1557 Felt::new(0xbbb01495c9a7e17d),
1558 Felt::new(0xd9614df7e656a73f),
1559 ]),
1560 Word::new([
1561 Felt::new(0xfc61931c05c4a55f),
1562 Felt::new(0xcff6ce2372650a9),
1563 Felt::new(0x6e6c32ff4dc92c6),
1564 Felt::new(0x1b72d8c04b0e409d),
1565 ]),
1566 Word::new([
1567 Felt::new(0x77d6e2f32439dbf0),
1568 Felt::new(0xa1f8ce9eb02419a5),
1569 Felt::new(0xd3ad9fb0cea61624),
1570 Felt::new(0x66ab5c684fbb8597),
1571 ]),
1572 EMPTY_WORD,
1573];
1574
1575#[test]
1576fn all_depths_opens_to_zero() {
1577 use super::Rpo256;
1578
1579 assert!(EMPTY_SUBTREES.len() > u8::MAX as usize);
1581
1582 for depth in 0..=u8::MAX {
1583 let mut subtree = EmptySubtreeRoots::empty_hashes(depth).to_vec();
1585 subtree.reverse();
1586
1587 assert_eq!(depth as usize + 1, subtree.len());
1590
1591 let initial = EMPTY_WORD;
1593 assert_eq!(initial, subtree.remove(0));
1594
1595 subtree
1597 .into_iter()
1598 .scan(initial, |state, x| {
1599 *state = Rpo256::merge(&[*state; 2]);
1600 Some((x, *state))
1601 })
1602 .for_each(|(x, computed)| assert_eq!(x, computed));
1603 }
1604}
1605
1606#[test]
1607fn test_entry() {
1608 for depth in 0..255 {
1610 assert_eq!(EmptySubtreeRoots::entry(depth, depth), &EMPTY_WORD);
1611 }
1612
1613 for depth in 0..255 {
1615 assert_eq!(EmptySubtreeRoots::entry(depth, 0), &EmptySubtreeRoots::empty_hashes(depth)[0]);
1616 }
1617}