poulpy/poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/srl_codegen.rs
poulpy-schemes/src/tfhe/bdd_arithmetic/circuits/u32/srl_codegen.rsRaw
1use crate::tfhe::bdd_arithmetic::{BitCircuit, BitCircuitInfo, Circuit, GetBitCircuitInfo, Node};
2pub(crate) enum AnyBitCircuit {
3 B0(BitCircuit<63, 6>),
4 B1(BitCircuit<63, 6>),
5 B2(BitCircuit<62, 6>),
6 B3(BitCircuit<61, 6>),
7 B4(BitCircuit<60, 6>),
8 B5(BitCircuit<59, 6>),
9 B6(BitCircuit<58, 6>),
10 B7(BitCircuit<57, 6>),
11 B8(BitCircuit<56, 6>),
12 B9(BitCircuit<55, 6>),
13 B10(BitCircuit<54, 6>),
14 B11(BitCircuit<53, 6>),
15 B12(BitCircuit<52, 6>),
16 B13(BitCircuit<51, 6>),
17 B14(BitCircuit<50, 6>),
18 B15(BitCircuit<49, 6>),
19 B16(BitCircuit<48, 6>),
20 B17(BitCircuit<47, 6>),
21 B18(BitCircuit<45, 6>),
22 B19(BitCircuit<43, 6>),
23 B20(BitCircuit<41, 6>),
24 B21(BitCircuit<39, 6>),
25 B22(BitCircuit<37, 6>),
26 B23(BitCircuit<35, 6>),
27 B24(BitCircuit<33, 6>),
28 B25(BitCircuit<31, 6>),
29 B26(BitCircuit<28, 6>),
30 B27(BitCircuit<25, 6>),
31 B28(BitCircuit<22, 6>),
32 B29(BitCircuit<19, 6>),
33 B30(BitCircuit<15, 6>),
34 B31(BitCircuit<11, 6>),
35}
36impl BitCircuitInfo for AnyBitCircuit {
37 fn info(&self) -> (&[Node], &[usize], usize) {
38 match self {
39 AnyBitCircuit::B0(bit_circuit) => (
40 bit_circuit.nodes.as_ref(),
41 bit_circuit.levels.as_ref(),
42 bit_circuit.max_inter_state,
43 ),
44 AnyBitCircuit::B1(bit_circuit) => (
45 bit_circuit.nodes.as_ref(),
46 bit_circuit.levels.as_ref(),
47 bit_circuit.max_inter_state,
48 ),
49 AnyBitCircuit::B2(bit_circuit) => (
50 bit_circuit.nodes.as_ref(),
51 bit_circuit.levels.as_ref(),
52 bit_circuit.max_inter_state,
53 ),
54 AnyBitCircuit::B3(bit_circuit) => (
55 bit_circuit.nodes.as_ref(),
56 bit_circuit.levels.as_ref(),
57 bit_circuit.max_inter_state,
58 ),
59 AnyBitCircuit::B4(bit_circuit) => (
60 bit_circuit.nodes.as_ref(),
61 bit_circuit.levels.as_ref(),
62 bit_circuit.max_inter_state,
63 ),
64 AnyBitCircuit::B5(bit_circuit) => (
65 bit_circuit.nodes.as_ref(),
66 bit_circuit.levels.as_ref(),
67 bit_circuit.max_inter_state,
68 ),
69 AnyBitCircuit::B6(bit_circuit) => (
70 bit_circuit.nodes.as_ref(),
71 bit_circuit.levels.as_ref(),
72 bit_circuit.max_inter_state,
73 ),
74 AnyBitCircuit::B7(bit_circuit) => (
75 bit_circuit.nodes.as_ref(),
76 bit_circuit.levels.as_ref(),
77 bit_circuit.max_inter_state,
78 ),
79 AnyBitCircuit::B8(bit_circuit) => (
80 bit_circuit.nodes.as_ref(),
81 bit_circuit.levels.as_ref(),
82 bit_circuit.max_inter_state,
83 ),
84 AnyBitCircuit::B9(bit_circuit) => (
85 bit_circuit.nodes.as_ref(),
86 bit_circuit.levels.as_ref(),
87 bit_circuit.max_inter_state,
88 ),
89 AnyBitCircuit::B10(bit_circuit) => (
90 bit_circuit.nodes.as_ref(),
91 bit_circuit.levels.as_ref(),
92 bit_circuit.max_inter_state,
93 ),
94 AnyBitCircuit::B11(bit_circuit) => (
95 bit_circuit.nodes.as_ref(),
96 bit_circuit.levels.as_ref(),
97 bit_circuit.max_inter_state,
98 ),
99 AnyBitCircuit::B12(bit_circuit) => (
100 bit_circuit.nodes.as_ref(),
101 bit_circuit.levels.as_ref(),
102 bit_circuit.max_inter_state,
103 ),
104 AnyBitCircuit::B13(bit_circuit) => (
105 bit_circuit.nodes.as_ref(),
106 bit_circuit.levels.as_ref(),
107 bit_circuit.max_inter_state,
108 ),
109 AnyBitCircuit::B14(bit_circuit) => (
110 bit_circuit.nodes.as_ref(),
111 bit_circuit.levels.as_ref(),
112 bit_circuit.max_inter_state,
113 ),
114 AnyBitCircuit::B15(bit_circuit) => (
115 bit_circuit.nodes.as_ref(),
116 bit_circuit.levels.as_ref(),
117 bit_circuit.max_inter_state,
118 ),
119 AnyBitCircuit::B16(bit_circuit) => (
120 bit_circuit.nodes.as_ref(),
121 bit_circuit.levels.as_ref(),
122 bit_circuit.max_inter_state,
123 ),
124 AnyBitCircuit::B17(bit_circuit) => (
125 bit_circuit.nodes.as_ref(),
126 bit_circuit.levels.as_ref(),
127 bit_circuit.max_inter_state,
128 ),
129 AnyBitCircuit::B18(bit_circuit) => (
130 bit_circuit.nodes.as_ref(),
131 bit_circuit.levels.as_ref(),
132 bit_circuit.max_inter_state,
133 ),
134 AnyBitCircuit::B19(bit_circuit) => (
135 bit_circuit.nodes.as_ref(),
136 bit_circuit.levels.as_ref(),
137 bit_circuit.max_inter_state,
138 ),
139 AnyBitCircuit::B20(bit_circuit) => (
140 bit_circuit.nodes.as_ref(),
141 bit_circuit.levels.as_ref(),
142 bit_circuit.max_inter_state,
143 ),
144 AnyBitCircuit::B21(bit_circuit) => (
145 bit_circuit.nodes.as_ref(),
146 bit_circuit.levels.as_ref(),
147 bit_circuit.max_inter_state,
148 ),
149 AnyBitCircuit::B22(bit_circuit) => (
150 bit_circuit.nodes.as_ref(),
151 bit_circuit.levels.as_ref(),
152 bit_circuit.max_inter_state,
153 ),
154 AnyBitCircuit::B23(bit_circuit) => (
155 bit_circuit.nodes.as_ref(),
156 bit_circuit.levels.as_ref(),
157 bit_circuit.max_inter_state,
158 ),
159 AnyBitCircuit::B24(bit_circuit) => (
160 bit_circuit.nodes.as_ref(),
161 bit_circuit.levels.as_ref(),
162 bit_circuit.max_inter_state,
163 ),
164 AnyBitCircuit::B25(bit_circuit) => (
165 bit_circuit.nodes.as_ref(),
166 bit_circuit.levels.as_ref(),
167 bit_circuit.max_inter_state,
168 ),
169 AnyBitCircuit::B26(bit_circuit) => (
170 bit_circuit.nodes.as_ref(),
171 bit_circuit.levels.as_ref(),
172 bit_circuit.max_inter_state,
173 ),
174 AnyBitCircuit::B27(bit_circuit) => (
175 bit_circuit.nodes.as_ref(),
176 bit_circuit.levels.as_ref(),
177 bit_circuit.max_inter_state,
178 ),
179 AnyBitCircuit::B28(bit_circuit) => (
180 bit_circuit.nodes.as_ref(),
181 bit_circuit.levels.as_ref(),
182 bit_circuit.max_inter_state,
183 ),
184 AnyBitCircuit::B29(bit_circuit) => (
185 bit_circuit.nodes.as_ref(),
186 bit_circuit.levels.as_ref(),
187 bit_circuit.max_inter_state,
188 ),
189 AnyBitCircuit::B30(bit_circuit) => (
190 bit_circuit.nodes.as_ref(),
191 bit_circuit.levels.as_ref(),
192 bit_circuit.max_inter_state,
193 ),
194 AnyBitCircuit::B31(bit_circuit) => (
195 bit_circuit.nodes.as_ref(),
196 bit_circuit.levels.as_ref(),
197 bit_circuit.max_inter_state,
198 ),
199 }
200 }
201}
202
203impl GetBitCircuitInfo<u32> for Circuit<AnyBitCircuit, 32usize> {
204 fn input_size(&self) -> usize {
205 2 * u32::BITS as usize
206 }
207 fn output_size(&self) -> usize {
208 u32::BITS as usize
209 }
210 fn get_circuit(&self, bit: usize) -> (&[Node], &[usize], usize) {
211 self.0[bit].info()
212 }
213}
214
215pub(crate) static OUTPUT_CIRCUITS: Circuit<AnyBitCircuit, 32usize> = Circuit([
216 AnyBitCircuit::B0(BitCircuit::new(
217 [
218 Node::new(0, 1, 0),
219 Node::new(29, 1, 0),
220 Node::new(3, 1, 0),
221 Node::new(9, 1, 0),
222 Node::new(13, 1, 0),
223 Node::new(27, 1, 0),
224 Node::new(18, 1, 0),
225 Node::new(25, 1, 0),
226 Node::new(28, 1, 0),
227 Node::new(26, 1, 0),
228 Node::new(20, 1, 0),
229 Node::new(22, 1, 0),
230 Node::new(11, 1, 0),
231 Node::new(10, 1, 0),
232 Node::new(2, 1, 0),
233 Node::new(15, 1, 0),
234 Node::new(1, 1, 0),
235 Node::new(12, 1, 0),
236 Node::new(14, 1, 0),
237 Node::new(4, 1, 0),
238 Node::new(19, 1, 0),
239 Node::new(17, 1, 0),
240 Node::new(30, 1, 0),
241 Node::new(24, 1, 0),
242 Node::new(31, 1, 0),
243 Node::new(16, 1, 0),
244 Node::new(5, 1, 0),
245 Node::new(23, 1, 0),
246 Node::new(8, 1, 0),
247 Node::new(21, 1, 0),
248 Node::new(6, 1, 0),
249 Node::new(7, 1, 0),
250 Node::new(36, 22, 18),
251 Node::new(36, 24, 15),
252 Node::new(36, 6, 14),
253 Node::new(36, 21, 16),
254 Node::new(36, 1, 4),
255 Node::new(36, 5, 12),
256 Node::new(36, 9, 13),
257 Node::new(36, 7, 3),
258 Node::new(36, 8, 17),
259 Node::new(36, 29, 26),
260 Node::new(36, 10, 19),
261 Node::new(36, 25, 0),
262 Node::new(36, 23, 28),
263 Node::new(36, 11, 30),
264 Node::new(36, 27, 31),
265 Node::new(36, 20, 2),
266 Node::new(35, 8, 10),
267 Node::new(35, 6, 2),
268 Node::new(35, 12, 11),
269 Node::new(35, 1, 14),
270 Node::new(35, 0, 13),
271 Node::new(35, 7, 3),
272 Node::new(35, 5, 15),
273 Node::new(35, 4, 9),
274 Node::new(34, 3, 6),
275 Node::new(34, 0, 2),
276 Node::new(34, 4, 1),
277 Node::new(34, 7, 5),
278 Node::new(33, 2, 1),
279 Node::new(33, 0, 3),
280 Node::new(32, 1, 0),
281 ],
282 [0, 32, 48, 56, 60, 62],
283 32,
284 )),
285 AnyBitCircuit::B1(BitCircuit::new(
286 [
287 Node::new(0, 0, 0),
288 Node::new(4, 1, 0),
289 Node::new(18, 1, 0),
290 Node::new(30, 1, 0),
291 Node::new(13, 1, 0),
292 Node::new(27, 1, 0),
293 Node::new(9, 1, 0),
294 Node::new(6, 1, 0),
295 Node::new(20, 1, 0),
296 Node::new(1, 1, 0),
297 Node::new(19, 1, 0),
298 Node::new(5, 1, 0),
299 Node::new(10, 1, 0),
300 Node::new(15, 1, 0),
301 Node::new(31, 1, 0),
302 Node::new(14, 1, 0),
303 Node::new(8, 1, 0),
304 Node::new(12, 1, 0),
305 Node::new(21, 1, 0),
306 Node::new(22, 1, 0),
307 Node::new(26, 1, 0),
308 Node::new(17, 1, 0),
309 Node::new(16, 1, 0),
310 Node::new(25, 1, 0),
311 Node::new(7, 1, 0),
312 Node::new(2, 1, 0),
313 Node::new(28, 1, 0),
314 Node::new(23, 1, 0),
315 Node::new(11, 1, 0),
316 Node::new(29, 1, 0),
317 Node::new(3, 1, 0),
318 Node::new(24, 1, 0),
319 Node::new(36, 18, 11),
320 Node::new(36, 23, 6),
321 Node::new(36, 0, 22),
322 Node::new(36, 21, 9),
323 Node::new(36, 27, 24),
324 Node::new(36, 8, 1),
325 Node::new(36, 14, 13),
326 Node::new(36, 5, 28),
327 Node::new(36, 19, 7),
328 Node::new(36, 29, 4),
329 Node::new(36, 20, 12),
330 Node::new(36, 26, 17),
331 Node::new(36, 3, 15),
332 Node::new(36, 10, 30),
333 Node::new(36, 31, 16),
334 Node::new(36, 2, 25),
335 Node::new(35, 12, 8),
336 Node::new(35, 2, 14),
337 Node::new(35, 7, 13),
338 Node::new(35, 10, 15),
339 Node::new(35, 1, 3),
340 Node::new(35, 11, 5),
341 Node::new(35, 6, 4),
342 Node::new(35, 9, 0),
343 Node::new(34, 1, 5),
344 Node::new(34, 6, 2),
345 Node::new(34, 7, 4),
346 Node::new(34, 0, 3),
347 Node::new(33, 1, 2),
348 Node::new(33, 0, 3),
349 Node::new(32, 1, 0),
350 ],
351 [0, 32, 48, 56, 60, 62],
352 32,
353 )),
354 AnyBitCircuit::B2(BitCircuit::new(
355 [
356 Node::new(0, 0, 0),
357 Node::new(19, 1, 0),
358 Node::new(13, 1, 0),
359 Node::new(21, 1, 0),
360 Node::new(8, 1, 0),
361 Node::new(22, 1, 0),
362 Node::new(18, 1, 0),
363 Node::new(4, 1, 0),
364 Node::new(11, 1, 0),
365 Node::new(16, 1, 0),
366 Node::new(3, 1, 0),
367 Node::new(31, 1, 0),
368 Node::new(17, 1, 0),
369 Node::new(14, 1, 0),
370 Node::new(24, 1, 0),
371 Node::new(20, 1, 0),
372 Node::new(7, 1, 0),
373 Node::new(23, 1, 0),
374 Node::new(6, 1, 0),
375 Node::new(29, 1, 0),
376 Node::new(10, 1, 0),
377 Node::new(12, 1, 0),
378 Node::new(28, 1, 0),
379 Node::new(25, 1, 0),
380 Node::new(27, 1, 0),
381 Node::new(30, 1, 0),
382 Node::new(9, 1, 0),
383 Node::new(15, 1, 0),
384 Node::new(2, 1, 0),
385 Node::new(26, 1, 0),
386 Node::new(5, 1, 0),
387 Node::new(36, 1, 10),
388 Node::new(36, 0, 12),
389 Node::new(36, 15, 7),
390 Node::new(36, 25, 13),
391 Node::new(36, 17, 16),
392 Node::new(36, 0, 9),
393 Node::new(36, 6, 28),
394 Node::new(36, 22, 21),
395 Node::new(36, 19, 2),
396 Node::new(36, 29, 20),
397 Node::new(36, 24, 8),
398 Node::new(36, 11, 27),
399 Node::new(36, 14, 4),
400 Node::new(36, 5, 18),
401 Node::new(36, 3, 30),
402 Node::new(36, 23, 26),
403 Node::new(35, 11, 4),
404 Node::new(35, 9, 6),
405 Node::new(35, 1, 15),
406 Node::new(35, 5, 12),
407 Node::new(35, 8, 14),
408 Node::new(35, 10, 0),
409 Node::new(35, 3, 13),
410 Node::new(35, 7, 2),
411 Node::new(34, 0, 5),
412 Node::new(34, 3, 7),
413 Node::new(34, 6, 1),
414 Node::new(34, 2, 4),
415 Node::new(33, 3, 0),
416 Node::new(33, 1, 2),
417 Node::new(32, 0, 1),
418 ],
419 [0, 31, 47, 55, 59, 61],
420 31,
421 )),
422 AnyBitCircuit::B3(BitCircuit::new(
423 [
424 Node::new(0, 0, 0),
425 Node::new(9, 1, 0),
426 Node::new(29, 1, 0),
427 Node::new(17, 1, 0),
428 Node::new(7, 1, 0),
429 Node::new(4, 1, 0),
430 Node::new(18, 1, 0),
431 Node::new(24, 1, 0),
432 Node::new(28, 1, 0),
433 Node::new(6, 1, 0),
434 Node::new(22, 1, 0),
435 Node::new(3, 1, 0),
436 Node::new(11, 1, 0),
437 Node::new(26, 1, 0),
438 Node::new(27, 1, 0),
439 Node::new(10, 1, 0),
440 Node::new(21, 1, 0),
441 Node::new(20, 1, 0),
442 Node::new(13, 1, 0),
443 Node::new(19, 1, 0),
444 Node::new(31, 1, 0),
445 Node::new(12, 1, 0),
446 Node::new(5, 1, 0),
447 Node::new(25, 1, 0),
448 Node::new(15, 1, 0),
449 Node::new(8, 1, 0),
450 Node::new(23, 1, 0),
451 Node::new(14, 1, 0),
452 Node::new(16, 1, 0),
453 Node::new(30, 1, 0),
454 Node::new(36, 14, 12),
455 Node::new(36, 0, 3),
456 Node::new(36, 29, 27),
457 Node::new(36, 23, 1),
458 Node::new(36, 0, 28),
459 Node::new(36, 8, 21),
460 Node::new(36, 0, 6),
461 Node::new(36, 2, 18),
462 Node::new(36, 20, 24),
463 Node::new(36, 26, 4),
464 Node::new(36, 10, 9),
465 Node::new(36, 17, 5),
466 Node::new(36, 19, 11),
467 Node::new(36, 7, 25),
468 Node::new(36, 13, 15),
469 Node::new(36, 16, 22),
470 Node::new(35, 8, 9),
471 Node::new(35, 5, 11),
472 Node::new(35, 0, 12),
473 Node::new(35, 4, 13),
474 Node::new(35, 6, 14),
475 Node::new(35, 2, 10),
476 Node::new(35, 7, 15),
477 Node::new(35, 1, 3),
478 Node::new(34, 0, 2),
479 Node::new(34, 3, 1),
480 Node::new(34, 4, 5),
481 Node::new(34, 7, 6),
482 Node::new(33, 3, 0),
483 Node::new(33, 2, 1),
484 Node::new(32, 1, 0),
485 ],
486 [0, 30, 46, 54, 58, 60],
487 30,
488 )),
489 AnyBitCircuit::B4(BitCircuit::new(
490 [
491 Node::new(0, 0, 0),
492 Node::new(28, 1, 0),
493 Node::new(10, 1, 0),
494 Node::new(27, 1, 0),
495 Node::new(14, 1, 0),
496 Node::new(11, 1, 0),
497 Node::new(16, 1, 0),
498 Node::new(13, 1, 0),
499 Node::new(18, 1, 0),
500 Node::new(22, 1, 0),
501 Node::new(26, 1, 0),
502 Node::new(20, 1, 0),
503 Node::new(8, 1, 0),
504 Node::new(17, 1, 0),
505 Node::new(5, 1, 0),
506 Node::new(24, 1, 0),
507 Node::new(23, 1, 0),
508 Node::new(15, 1, 0),
509 Node::new(4, 1, 0),
510 Node::new(25, 1, 0),
511 Node::new(31, 1, 0),
512 Node::new(30, 1, 0),
513 Node::new(6, 1, 0),
514 Node::new(29, 1, 0),
515 Node::new(9, 1, 0),
516 Node::new(12, 1, 0),
517 Node::new(19, 1, 0),
518 Node::new(21, 1, 0),
519 Node::new(7, 1, 0),
520 Node::new(36, 9, 22),
521 Node::new(36, 21, 4),
522 Node::new(36, 15, 12),
523 Node::new(36, 3, 5),
524 Node::new(36, 23, 7),
525 Node::new(36, 19, 24),
526 Node::new(36, 16, 28),
527 Node::new(36, 10, 2),
528 Node::new(36, 0, 6),
529 Node::new(36, 1, 25),
530 Node::new(36, 20, 17),
531 Node::new(36, 11, 18),
532 Node::new(36, 0, 13),
533 Node::new(36, 27, 14),
534 Node::new(36, 0, 8),
535 Node::new(36, 0, 26),
536 Node::new(35, 14, 7),
537 Node::new(35, 15, 3),
538 Node::new(35, 10, 6),
539 Node::new(35, 4, 13),
540 Node::new(35, 8, 2),
541 Node::new(35, 12, 5),
542 Node::new(35, 9, 11),
543 Node::new(35, 1, 0),
544 Node::new(34, 4, 6),
545 Node::new(34, 5, 3),
546 Node::new(34, 0, 7),
547 Node::new(34, 1, 2),
548 Node::new(33, 2, 0),
549 Node::new(33, 3, 1),
550 Node::new(32, 1, 0),
551 ],
552 [0, 29, 45, 53, 57, 59],
553 29,
554 )),
555 AnyBitCircuit::B5(BitCircuit::new(
556 [
557 Node::new(0, 0, 0),
558 Node::new(5, 1, 0),
559 Node::new(10, 1, 0),
560 Node::new(7, 1, 0),
561 Node::new(26, 1, 0),
562 Node::new(18, 1, 0),
563 Node::new(20, 1, 0),
564 Node::new(28, 1, 0),
565 Node::new(24, 1, 0),
566 Node::new(8, 1, 0),
567 Node::new(13, 1, 0),
568 Node::new(27, 1, 0),
569 Node::new(29, 1, 0),
570 Node::new(31, 1, 0),
571 Node::new(6, 1, 0),
572 Node::new(23, 1, 0),
573 Node::new(11, 1, 0),
574 Node::new(16, 1, 0),
575 Node::new(17, 1, 0),
576 Node::new(9, 1, 0),
577 Node::new(15, 1, 0),
578 Node::new(14, 1, 0),
579 Node::new(19, 1, 0),
580 Node::new(30, 1, 0),
581 Node::new(12, 1, 0),
582 Node::new(22, 1, 0),
583 Node::new(25, 1, 0),
584 Node::new(21, 1, 0),
585 Node::new(36, 23, 21),
586 Node::new(36, 7, 24),
587 Node::new(36, 12, 10),
588 Node::new(36, 13, 20),
589 Node::new(36, 0, 5),
590 Node::new(36, 26, 19),
591 Node::new(36, 8, 9),
592 Node::new(36, 25, 14),
593 Node::new(36, 0, 18),
594 Node::new(36, 0, 17),
595 Node::new(36, 4, 2),
596 Node::new(36, 0, 6),
597 Node::new(36, 15, 3),
598 Node::new(36, 27, 1),
599 Node::new(36, 0, 22),
600 Node::new(36, 11, 16),
601 Node::new(35, 4, 10),
602 Node::new(35, 14, 15),
603 Node::new(35, 8, 5),
604 Node::new(35, 3, 12),
605 Node::new(35, 11, 1),
606 Node::new(35, 2, 13),
607 Node::new(35, 0, 7),
608 Node::new(35, 9, 6),
609 Node::new(34, 2, 5),
610 Node::new(34, 4, 7),
611 Node::new(34, 1, 3),
612 Node::new(34, 0, 6),
613 Node::new(33, 2, 0),
614 Node::new(33, 1, 3),
615 Node::new(32, 1, 0),
616 ],
617 [0, 28, 44, 52, 56, 58],
618 28,
619 )),
620 AnyBitCircuit::B6(BitCircuit::new(
621 [
622 Node::new(0, 0, 0),
623 Node::new(21, 1, 0),
624 Node::new(20, 1, 0),
625 Node::new(23, 1, 0),
626 Node::new(29, 1, 0),
627 Node::new(7, 1, 0),
628 Node::new(10, 1, 0),
629 Node::new(13, 1, 0),
630 Node::new(14, 1, 0),
631 Node::new(22, 1, 0),
632 Node::new(31, 1, 0),
633 Node::new(27, 1, 0),
634 Node::new(11, 1, 0),
635 Node::new(19, 1, 0),
636 Node::new(9, 1, 0),
637 Node::new(24, 1, 0),
638 Node::new(16, 1, 0),
639 Node::new(17, 1, 0),
640 Node::new(28, 1, 0),
641 Node::new(6, 1, 0),
642 Node::new(26, 1, 0),
643 Node::new(18, 1, 0),
644 Node::new(8, 1, 0),
645 Node::new(12, 1, 0),
646 Node::new(15, 1, 0),
647 Node::new(30, 1, 0),
648 Node::new(25, 1, 0),
649 Node::new(36, 11, 12),
650 Node::new(36, 26, 14),
651 Node::new(36, 20, 6),
652 Node::new(36, 15, 22),
653 Node::new(36, 0, 16),
654 Node::new(36, 0, 2),
655 Node::new(36, 0, 17),
656 Node::new(36, 0, 21),
657 Node::new(36, 18, 23),
658 Node::new(36, 9, 19),
659 Node::new(36, 0, 13),
660 Node::new(36, 3, 5),
661 Node::new(36, 25, 8),
662 Node::new(36, 0, 1),
663 Node::new(36, 4, 7),
664 Node::new(36, 10, 24),
665 Node::new(35, 15, 11),
666 Node::new(35, 6, 1),
667 Node::new(35, 13, 14),
668 Node::new(35, 12, 9),
669 Node::new(35, 7, 2),
670 Node::new(35, 5, 8),
671 Node::new(35, 4, 3),
672 Node::new(35, 10, 0),
673 Node::new(34, 2, 1),
674 Node::new(34, 4, 3),
675 Node::new(34, 5, 6),
676 Node::new(34, 7, 0),
677 Node::new(33, 2, 1),
678 Node::new(33, 0, 3),
679 Node::new(32, 1, 0),
680 ],
681 [0, 27, 43, 51, 55, 57],
682 27,
683 )),
684 AnyBitCircuit::B7(BitCircuit::new(
685 [
686 Node::new(0, 0, 0),
687 Node::new(16, 1, 0),
688 Node::new(30, 1, 0),
689 Node::new(13, 1, 0),
690 Node::new(17, 1, 0),
691 Node::new(21, 1, 0),
692 Node::new(15, 1, 0),
693 Node::new(27, 1, 0),
694 Node::new(26, 1, 0),
695 Node::new(12, 1, 0),
696 Node::new(20, 1, 0),
697 Node::new(29, 1, 0),
698 Node::new(11, 1, 0),
699 Node::new(22, 1, 0),
700 Node::new(8, 1, 0),
701 Node::new(7, 1, 0),
702 Node::new(9, 1, 0),
703 Node::new(31, 1, 0),
704 Node::new(23, 1, 0),
705 Node::new(25, 1, 0),
706 Node::new(10, 1, 0),
707 Node::new(24, 1, 0),
708 Node::new(28, 1, 0),
709 Node::new(18, 1, 0),
710 Node::new(14, 1, 0),
711 Node::new(19, 1, 0),
712 Node::new(36, 0, 23),
713 Node::new(36, 2, 24),
714 Node::new(36, 7, 12),
715 Node::new(36, 22, 9),
716 Node::new(36, 0, 13),
717 Node::new(36, 8, 20),
718 Node::new(36, 0, 5),
719 Node::new(36, 0, 10),
720 Node::new(36, 21, 14),
721 Node::new(36, 17, 6),
722 Node::new(36, 0, 25),
723 Node::new(36, 19, 16),
724 Node::new(36, 11, 3),
725 Node::new(36, 0, 4),
726 Node::new(36, 18, 15),
727 Node::new(36, 0, 1),
728 Node::new(35, 9, 14),
729 Node::new(35, 7, 3),
730 Node::new(35, 10, 2),
731 Node::new(35, 15, 8),
732 Node::new(35, 6, 12),
733 Node::new(35, 4, 1),
734 Node::new(35, 0, 5),
735 Node::new(35, 13, 11),
736 Node::new(34, 4, 7),
737 Node::new(34, 1, 3),
738 Node::new(34, 5, 6),
739 Node::new(34, 2, 0),
740 Node::new(33, 0, 3),
741 Node::new(33, 2, 1),
742 Node::new(32, 1, 0),
743 ],
744 [0, 26, 42, 50, 54, 56],
745 26,
746 )),
747 AnyBitCircuit::B8(BitCircuit::new(
748 [
749 Node::new(0, 0, 0),
750 Node::new(19, 1, 0),
751 Node::new(29, 1, 0),
752 Node::new(12, 1, 0),
753 Node::new(8, 1, 0),
754 Node::new(26, 1, 0),
755 Node::new(21, 1, 0),
756 Node::new(20, 1, 0),
757 Node::new(17, 1, 0),
758 Node::new(14, 1, 0),
759 Node::new(22, 1, 0),
760 Node::new(13, 1, 0),
761 Node::new(18, 1, 0),
762 Node::new(11, 1, 0),
763 Node::new(24, 1, 0),
764 Node::new(28, 1, 0),
765 Node::new(16, 1, 0),
766 Node::new(25, 1, 0),
767 Node::new(30, 1, 0),
768 Node::new(10, 1, 0),
769 Node::new(9, 1, 0),
770 Node::new(31, 1, 0),
771 Node::new(27, 1, 0),
772 Node::new(15, 1, 0),
773 Node::new(23, 1, 0),
774 Node::new(36, 15, 3),
775 Node::new(36, 0, 10),
776 Node::new(36, 0, 24),
777 Node::new(36, 14, 4),
778 Node::new(36, 0, 1),
779 Node::new(36, 0, 6),
780 Node::new(36, 5, 19),
781 Node::new(36, 0, 7),
782 Node::new(36, 17, 20),
783 Node::new(36, 2, 11),
784 Node::new(36, 0, 8),
785 Node::new(36, 22, 13),
786 Node::new(36, 18, 9),
787 Node::new(36, 0, 12),
788 Node::new(36, 0, 16),
789 Node::new(36, 21, 23),
790 Node::new(35, 4, 11),
791 Node::new(35, 2, 15),
792 Node::new(35, 14, 3),
793 Node::new(35, 1, 12),
794 Node::new(35, 10, 8),
795 Node::new(35, 7, 0),
796 Node::new(35, 5, 9),
797 Node::new(35, 13, 6),
798 Node::new(34, 5, 2),
799 Node::new(34, 6, 4),
800 Node::new(34, 1, 0),
801 Node::new(34, 3, 7),
802 Node::new(33, 3, 0),
803 Node::new(33, 2, 1),
804 Node::new(32, 1, 0),
805 ],
806 [0, 25, 41, 49, 53, 55],
807 25,
808 )),
809 AnyBitCircuit::B9(BitCircuit::new(
810 [
811 Node::new(0, 0, 0),
812 Node::new(23, 1, 0),
813 Node::new(29, 1, 0),
814 Node::new(31, 1, 0),
815 Node::new(10, 1, 0),
816 Node::new(21, 1, 0),
817 Node::new(18, 1, 0),
818 Node::new(22, 1, 0),
819 Node::new(26, 1, 0),
820 Node::new(14, 1, 0),
821 Node::new(12, 1, 0),
822 Node::new(28, 1, 0),
823 Node::new(20, 1, 0),
824 Node::new(16, 1, 0),
825 Node::new(24, 1, 0),
826 Node::new(9, 1, 0),
827 Node::new(17, 1, 0),
828 Node::new(13, 1, 0),
829 Node::new(25, 1, 0),
830 Node::new(30, 1, 0),
831 Node::new(15, 1, 0),
832 Node::new(19, 1, 0),
833 Node::new(11, 1, 0),
834 Node::new(27, 1, 0),
835 Node::new(36, 0, 16),
836 Node::new(36, 8, 4),
837 Node::new(36, 0, 12),
838 Node::new(36, 0, 14),
839 Node::new(36, 19, 9),
840 Node::new(36, 0, 5),
841 Node::new(36, 2, 17),
842 Node::new(36, 18, 15),
843 Node::new(36, 0, 21),
844 Node::new(36, 11, 10),
845 Node::new(36, 0, 13),
846 Node::new(36, 3, 20),
847 Node::new(36, 0, 7),
848 Node::new(36, 0, 1),
849 Node::new(36, 0, 6),
850 Node::new(36, 23, 22),
851 Node::new(35, 2, 9),
852 Node::new(35, 3, 10),
853 Node::new(35, 0, 7),
854 Node::new(35, 8, 15),
855 Node::new(35, 14, 1),
856 Node::new(35, 5, 6),
857 Node::new(35, 12, 4),
858 Node::new(35, 13, 11),
859 Node::new(34, 5, 2),
860 Node::new(34, 7, 3),
861 Node::new(34, 1, 0),
862 Node::new(34, 6, 4),
863 Node::new(33, 1, 0),
864 Node::new(33, 2, 3),
865 Node::new(32, 1, 0),
866 ],
867 [0, 24, 40, 48, 52, 54],
868 24,
869 )),
870 AnyBitCircuit::B10(BitCircuit::new(
871 [
872 Node::new(0, 0, 0),
873 Node::new(21, 1, 0),
874 Node::new(10, 1, 0),
875 Node::new(25, 1, 0),
876 Node::new(18, 1, 0),
877 Node::new(24, 1, 0),
878 Node::new(28, 1, 0),
879 Node::new(26, 1, 0),
880 Node::new(19, 1, 0),
881 Node::new(27, 1, 0),
882 Node::new(14, 1, 0),
883 Node::new(20, 1, 0),
884 Node::new(13, 1, 0),
885 Node::new(22, 1, 0),
886 Node::new(23, 1, 0),
887 Node::new(12, 1, 0),
888 Node::new(15, 1, 0),
889 Node::new(16, 1, 0),
890 Node::new(31, 1, 0),
891 Node::new(29, 1, 0),
892 Node::new(17, 1, 0),
893 Node::new(30, 1, 0),
894 Node::new(11, 1, 0),
895 Node::new(36, 0, 11),
896 Node::new(36, 0, 5),
897 Node::new(36, 18, 16),
898 Node::new(36, 0, 4),
899 Node::new(36, 21, 10),
900 Node::new(36, 6, 15),
901 Node::new(36, 19, 12),
902 Node::new(36, 0, 1),
903 Node::new(36, 7, 2),
904 Node::new(36, 0, 20),
905 Node::new(36, 0, 13),
906 Node::new(36, 0, 14),
907 Node::new(36, 0, 3),
908 Node::new(36, 0, 17),
909 Node::new(36, 9, 22),
910 Node::new(36, 0, 8),
911 Node::new(35, 12, 9),
912 Node::new(35, 11, 2),
913 Node::new(35, 0, 5),
914 Node::new(35, 1, 13),
915 Node::new(35, 7, 6),
916 Node::new(35, 3, 8),
917 Node::new(35, 10, 4),
918 Node::new(35, 15, 14),
919 Node::new(34, 0, 4),
920 Node::new(34, 3, 2),
921 Node::new(34, 6, 5),
922 Node::new(34, 1, 7),
923 Node::new(33, 0, 3),
924 Node::new(33, 1, 2),
925 Node::new(32, 0, 1),
926 ],
927 [0, 23, 39, 47, 51, 53],
928 23,
929 )),
930 AnyBitCircuit::B11(BitCircuit::new(
931 [
932 Node::new(0, 0, 0),
933 Node::new(28, 1, 0),
934 Node::new(23, 1, 0),
935 Node::new(21, 1, 0),
936 Node::new(15, 1, 0),
937 Node::new(24, 1, 0),
938 Node::new(30, 1, 0),
939 Node::new(27, 1, 0),
940 Node::new(14, 1, 0),
941 Node::new(18, 1, 0),
942 Node::new(26, 1, 0),
943 Node::new(19, 1, 0),
944 Node::new(17, 1, 0),
945 Node::new(25, 1, 0),
946 Node::new(29, 1, 0),
947 Node::new(16, 1, 0),
948 Node::new(12, 1, 0),
949 Node::new(22, 1, 0),
950 Node::new(31, 1, 0),
951 Node::new(20, 1, 0),
952 Node::new(13, 1, 0),
953 Node::new(11, 1, 0),
954 Node::new(36, 0, 15),
955 Node::new(36, 0, 12),
956 Node::new(36, 0, 10),
957 Node::new(36, 0, 11),
958 Node::new(36, 0, 3),
959 Node::new(36, 0, 19),
960 Node::new(36, 0, 5),
961 Node::new(36, 6, 8),
962 Node::new(36, 0, 17),
963 Node::new(36, 14, 20),
964 Node::new(36, 18, 4),
965 Node::new(36, 7, 21),
966 Node::new(36, 0, 13),
967 Node::new(36, 0, 9),
968 Node::new(36, 1, 16),
969 Node::new(36, 0, 2),
970 Node::new(35, 5, 14),
971 Node::new(35, 12, 1),
972 Node::new(35, 15, 10),
973 Node::new(35, 3, 11),
974 Node::new(35, 6, 0),
975 Node::new(35, 8, 7),
976 Node::new(35, 4, 9),
977 Node::new(35, 2, 13),
978 Node::new(34, 4, 0),
979 Node::new(34, 1, 6),
980 Node::new(34, 2, 3),
981 Node::new(34, 7, 5),
982 Node::new(33, 3, 0),
983 Node::new(33, 1, 2),
984 Node::new(32, 0, 1),
985 ],
986 [0, 22, 38, 46, 50, 52],
987 22,
988 )),
989 AnyBitCircuit::B12(BitCircuit::new(
990 [
991 Node::new(0, 0, 0),
992 Node::new(19, 1, 0),
993 Node::new(23, 1, 0),
994 Node::new(12, 1, 0),
995 Node::new(13, 1, 0),
996 Node::new(26, 1, 0),
997 Node::new(29, 1, 0),
998 Node::new(17, 1, 0),
999 Node::new(28, 1, 0),
1000 Node::new(25, 1, 0),
1001 Node::new(21, 1, 0),
1002 Node::new(30, 1, 0),
1003 Node::new(18, 1, 0),
1004 Node::new(31, 1, 0),
1005 Node::new(24, 1, 0),
1006 Node::new(20, 1, 0),
1007 Node::new(16, 1, 0),
1008 Node::new(15, 1, 0),
1009 Node::new(14, 1, 0),
1010 Node::new(27, 1, 0),
1011 Node::new(22, 1, 0),
1012 Node::new(36, 13, 17),
1013 Node::new(36, 0, 20),
1014 Node::new(36, 0, 10),
1015 Node::new(36, 0, 7),
1016 Node::new(36, 8, 3),
1017 Node::new(36, 0, 14),
1018 Node::new(36, 0, 15),
1019 Node::new(36, 0, 12),
1020 Node::new(36, 0, 2),
1021 Node::new(36, 0, 19),
1022 Node::new(36, 0, 9),
1023 Node::new(36, 0, 16),
1024 Node::new(36, 0, 5),
1025 Node::new(36, 0, 1),
1026 Node::new(36, 11, 18),
1027 Node::new(36, 6, 4),
1028 Node::new(35, 6, 4),
1029 Node::new(35, 12, 7),
1030 Node::new(35, 10, 3),
1031 Node::new(35, 5, 11),
1032 Node::new(35, 2, 15),
1033 Node::new(35, 8, 0),
1034 Node::new(35, 9, 13),
1035 Node::new(35, 1, 14),
1036 Node::new(34, 3, 0),
1037 Node::new(34, 1, 7),
1038 Node::new(34, 2, 4),
1039 Node::new(34, 6, 5),
1040 Node::new(33, 1, 0),
1041 Node::new(33, 3, 2),
1042 Node::new(32, 1, 0),
1043 ],
1044 [0, 21, 37, 45, 49, 51],
1045 21,
1046 )),
1047 AnyBitCircuit::B13(BitCircuit::new(
1048 [
1049 Node::new(0, 0, 0),
1050 Node::new(31, 1, 0),
1051 Node::new(22, 1, 0),
1052 Node::new(27, 1, 0),
1053 Node::new(24, 1, 0),
1054 Node::new(20, 1, 0),
1055 Node::new(17, 1, 0),
1056 Node::new(13, 1, 0),
1057 Node::new(25, 1, 0),
1058 Node::new(18, 1, 0),
1059 Node::new(29, 1, 0),
1060 Node::new(23, 1, 0),
1061 Node::new(21, 1, 0),
1062 Node::new(15, 1, 0),
1063 Node::new(16, 1, 0),
1064 Node::new(19, 1, 0),
1065 Node::new(26, 1, 0),
1066 Node::new(28, 1, 0),
1067 Node::new(14, 1, 0),
1068 Node::new(30, 1, 0),
1069 Node::new(36, 19, 18),
1070 Node::new(36, 0, 14),
1071 Node::new(36, 0, 17),
1072 Node::new(36, 0, 3),
1073 Node::new(36, 1, 13),
1074 Node::new(36, 0, 2),
1075 Node::new(36, 0, 12),
1076 Node::new(36, 0, 9),
1077 Node::new(36, 0, 4),
1078 Node::new(36, 0, 8),
1079 Node::new(36, 0, 16),
1080 Node::new(36, 0, 6),
1081 Node::new(36, 0, 5),
1082 Node::new(36, 0, 15),
1083 Node::new(36, 10, 7),
1084 Node::new(36, 0, 11),
1085 Node::new(35, 6, 14),
1086 Node::new(35, 8, 1),
1087 Node::new(35, 5, 0),
1088 Node::new(35, 2, 12),
1089 Node::new(35, 9, 11),
1090 Node::new(35, 3, 13),
1091 Node::new(35, 10, 7),
1092 Node::new(35, 15, 4),
1093 Node::new(34, 6, 2),
1094 Node::new(34, 5, 7),
1095 Node::new(34, 4, 0),
1096 Node::new(34, 3, 1),
1097 Node::new(33, 1, 2),
1098 Node::new(33, 3, 0),
1099 Node::new(32, 1, 0),
1100 ],
1101 [0, 20, 36, 44, 48, 50],
1102 20,
1103 )),
1104 AnyBitCircuit::B14(BitCircuit::new(
1105 [
1106 Node::new(0, 0, 0),
1107 Node::new(19, 1, 0),
1108 Node::new(15, 1, 0),
1109 Node::new(25, 1, 0),
1110 Node::new(30, 1, 0),
1111 Node::new(16, 1, 0),
1112 Node::new(22, 1, 0),
1113 Node::new(28, 1, 0),
1114 Node::new(27, 1, 0),
1115 Node::new(24, 1, 0),
1116 Node::new(26, 1, 0),
1117 Node::new(20, 1, 0),
1118 Node::new(31, 1, 0),
1119 Node::new(21, 1, 0),
1120 Node::new(17, 1, 0),
1121 Node::new(29, 1, 0),
1122 Node::new(14, 1, 0),
1123 Node::new(23, 1, 0),
1124 Node::new(18, 1, 0),
1125 Node::new(36, 0, 5),
1126 Node::new(36, 0, 11),
1127 Node::new(36, 0, 14),
1128 Node::new(36, 0, 1),
1129 Node::new(36, 0, 6),
1130 Node::new(36, 4, 16),
1131 Node::new(36, 0, 10),
1132 Node::new(36, 0, 8),
1133 Node::new(36, 0, 17),
1134 Node::new(36, 0, 9),
1135 Node::new(36, 0, 18),
1136 Node::new(36, 0, 3),
1137 Node::new(36, 0, 7),
1138 Node::new(36, 0, 15),
1139 Node::new(36, 0, 13),
1140 Node::new(36, 12, 2),
1141 Node::new(35, 11, 2),
1142 Node::new(35, 4, 5),
1143 Node::new(35, 13, 14),
1144 Node::new(35, 9, 0),
1145 Node::new(35, 6, 10),
1146 Node::new(35, 7, 3),
1147 Node::new(35, 8, 15),
1148 Node::new(35, 12, 1),
1149 Node::new(34, 7, 3),
1150 Node::new(34, 5, 6),
1151 Node::new(34, 4, 1),
1152 Node::new(34, 2, 0),
1153 Node::new(33, 0, 2),
1154 Node::new(33, 3, 1),
1155 Node::new(32, 1, 0),
1156 ],
1157 [0, 19, 35, 43, 47, 49],
1158 19,
1159 )),
1160 AnyBitCircuit::B15(BitCircuit::new(
1161 [
1162 Node::new(0, 0, 0),
1163 Node::new(20, 1, 0),
1164 Node::new(25, 1, 0),
1165 Node::new(30, 1, 0),
1166 Node::new(15, 1, 0),
1167 Node::new(19, 1, 0),
1168 Node::new(16, 1, 0),
1169 Node::new(17, 1, 0),
1170 Node::new(18, 1, 0),
1171 Node::new(23, 1, 0),
1172 Node::new(28, 1, 0),
1173 Node::new(26, 1, 0),
1174 Node::new(31, 1, 0),
1175 Node::new(24, 1, 0),
1176 Node::new(29, 1, 0),
1177 Node::new(21, 1, 0),
1178 Node::new(27, 1, 0),
1179 Node::new(22, 1, 0),
1180 Node::new(36, 12, 4),
1181 Node::new(36, 0, 2),
1182 Node::new(36, 0, 8),
1183 Node::new(36, 0, 3),
1184 Node::new(36, 0, 10),
1185 Node::new(36, 0, 15),
1186 Node::new(36, 0, 1),
1187 Node::new(36, 0, 14),
1188 Node::new(36, 0, 11),
1189 Node::new(36, 0, 17),
1190 Node::new(36, 0, 9),
1191 Node::new(36, 0, 5),
1192 Node::new(36, 0, 16),
1193 Node::new(36, 0, 13),
1194 Node::new(36, 0, 7),
1195 Node::new(36, 0, 6),
1196 Node::new(35, 8, 2),
1197 Node::new(35, 4, 6),
1198 Node::new(35, 1, 14),
1199 Node::new(35, 10, 0),
1200 Node::new(35, 3, 9),
1201 Node::new(35, 13, 15),
1202 Node::new(35, 12, 11),
1203 Node::new(35, 7, 5),
1204 Node::new(34, 1, 5),
1205 Node::new(34, 4, 0),
1206 Node::new(34, 6, 3),
1207 Node::new(34, 7, 2),
1208 Node::new(33, 1, 0),
1209 Node::new(33, 3, 2),
1210 Node::new(32, 0, 1),
1211 ],
1212 [0, 18, 34, 42, 46, 48],
1213 18,
1214 )),
1215 AnyBitCircuit::B16(BitCircuit::new(
1216 [
1217 Node::new(0, 0, 0),
1218 Node::new(17, 1, 0),
1219 Node::new(28, 1, 0),
1220 Node::new(30, 1, 0),
1221 Node::new(18, 1, 0),
1222 Node::new(22, 1, 0),
1223 Node::new(27, 1, 0),
1224 Node::new(16, 1, 0),
1225 Node::new(20, 1, 0),
1226 Node::new(25, 1, 0),
1227 Node::new(24, 1, 0),
1228 Node::new(26, 1, 0),
1229 Node::new(21, 1, 0),
1230 Node::new(23, 1, 0),
1231 Node::new(31, 1, 0),
1232 Node::new(29, 1, 0),
1233 Node::new(19, 1, 0),
1234 Node::new(36, 0, 8),
1235 Node::new(36, 0, 11),
1236 Node::new(36, 0, 13),
1237 Node::new(36, 0, 3),
1238 Node::new(36, 0, 15),
1239 Node::new(36, 0, 16),
1240 Node::new(36, 0, 12),
1241 Node::new(36, 0, 6),
1242 Node::new(36, 0, 2),
1243 Node::new(36, 0, 7),
1244 Node::new(36, 0, 4),
1245 Node::new(36, 0, 5),
1246 Node::new(36, 0, 10),
1247 Node::new(36, 0, 9),
1248 Node::new(36, 0, 14),
1249 Node::new(36, 0, 1),
1250 Node::new(35, 13, 15),
1251 Node::new(35, 12, 9),
1252 Node::new(35, 3, 11),
1253 Node::new(35, 8, 0),
1254 Node::new(35, 7, 5),
1255 Node::new(35, 14, 2),
1256 Node::new(35, 1, 10),
1257 Node::new(35, 4, 6),
1258 Node::new(34, 3, 1),
1259 Node::new(34, 5, 4),
1260 Node::new(34, 2, 6),
1261 Node::new(34, 7, 0),
1262 Node::new(33, 2, 0),
1263 Node::new(33, 1, 3),
1264 Node::new(32, 1, 0),
1265 ],
1266 [0, 17, 33, 41, 45, 47],
1267 17,
1268 )),
1269 AnyBitCircuit::B17(BitCircuit::new(
1270 [
1271 Node::new(0, 0, 0),
1272 Node::new(24, 1, 0),
1273 Node::new(21, 1, 0),
1274 Node::new(28, 1, 0),
1275 Node::new(22, 1, 0),
1276 Node::new(29, 1, 0),
1277 Node::new(25, 1, 0),
1278 Node::new(20, 1, 0),
1279 Node::new(19, 1, 0),
1280 Node::new(26, 1, 0),
1281 Node::new(23, 1, 0),
1282 Node::new(18, 1, 0),
1283 Node::new(30, 1, 0),
1284 Node::new(17, 1, 0),
1285 Node::new(27, 1, 0),
1286 Node::new(31, 1, 0),
1287 Node::new(0, 0, 0),
1288 Node::new(36, 0, 8),
1289 Node::new(36, 0, 4),
1290 Node::new(36, 0, 15),
1291 Node::new(36, 0, 11),
1292 Node::new(36, 0, 14),
1293 Node::new(36, 0, 7),
1294 Node::new(36, 0, 1),
1295 Node::new(36, 0, 5),
1296 Node::new(36, 0, 9),
1297 Node::new(36, 0, 12),
1298 Node::new(36, 0, 13),
1299 Node::new(36, 0, 10),
1300 Node::new(36, 0, 3),
1301 Node::new(36, 0, 6),
1302 Node::new(36, 0, 2),
1303 Node::new(35, 13, 6),
1304 Node::new(35, 0, 7),
1305 Node::new(35, 10, 2),
1306 Node::new(35, 9, 4),
1307 Node::new(35, 5, 1),
1308 Node::new(35, 3, 12),
1309 Node::new(35, 8, 15),
1310 Node::new(35, 14, 11),
1311 Node::new(34, 2, 3),
1312 Node::new(34, 6, 7),
1313 Node::new(34, 5, 4),
1314 Node::new(34, 1, 0),
1315 Node::new(33, 3, 0),
1316 Node::new(33, 2, 1),
1317 Node::new(32, 0, 1),
1318 ],
1319 [0, 16, 32, 40, 44, 46],
1320 16,
1321 )),
1322 AnyBitCircuit::B18(BitCircuit::new(
1323 [
1324 Node::new(0, 0, 0),
1325 Node::new(23, 1, 0),
1326 Node::new(24, 1, 0),
1327 Node::new(18, 1, 0),
1328 Node::new(22, 1, 0),
1329 Node::new(30, 1, 0),
1330 Node::new(27, 1, 0),
1331 Node::new(25, 1, 0),
1332 Node::new(31, 1, 0),
1333 Node::new(21, 1, 0),
1334 Node::new(26, 1, 0),
1335 Node::new(19, 1, 0),
1336 Node::new(28, 1, 0),
1337 Node::new(29, 1, 0),
1338 Node::new(20, 1, 0),
1339 Node::new(0, 0, 0),
1340 Node::new(36, 0, 9),
1341 Node::new(36, 0, 8),
1342 Node::new(36, 0, 13),
1343 Node::new(36, 0, 4),
1344 Node::new(36, 0, 1),
1345 Node::new(36, 0, 3),
1346 Node::new(36, 0, 5),
1347 Node::new(36, 0, 6),
1348 Node::new(36, 0, 14),
1349 Node::new(36, 0, 11),
1350 Node::new(36, 0, 10),
1351 Node::new(36, 0, 7),
1352 Node::new(36, 0, 2),
1353 Node::new(36, 0, 12),
1354 Node::new(35, 0, 12),
1355 Node::new(35, 3, 1),
1356 Node::new(35, 7, 4),
1357 Node::new(35, 8, 10),
1358 Node::new(35, 14, 9),
1359 Node::new(35, 0, 13),
1360 Node::new(35, 11, 6),
1361 Node::new(35, 2, 5),
1362 Node::new(34, 2, 6),
1363 Node::new(34, 5, 4),
1364 Node::new(34, 0, 1),
1365 Node::new(34, 7, 3),
1366 Node::new(33, 2, 3),
1367 Node::new(33, 1, 0),
1368 Node::new(32, 0, 1),
1369 ],
1370 [0, 15, 30, 38, 42, 44],
1371 15,
1372 )),
1373 AnyBitCircuit::B19(BitCircuit::new(
1374 [
1375 Node::new(0, 0, 0),
1376 Node::new(27, 1, 0),
1377 Node::new(19, 1, 0),
1378 Node::new(25, 1, 0),
1379 Node::new(26, 1, 0),
1380 Node::new(21, 1, 0),
1381 Node::new(29, 1, 0),
1382 Node::new(30, 1, 0),
1383 Node::new(22, 1, 0),
1384 Node::new(28, 1, 0),
1385 Node::new(20, 1, 0),
1386 Node::new(23, 1, 0),
1387 Node::new(24, 1, 0),
1388 Node::new(31, 1, 0),
1389 Node::new(0, 0, 0),
1390 Node::new(36, 0, 2),
1391 Node::new(36, 0, 11),
1392 Node::new(36, 0, 12),
1393 Node::new(36, 0, 1),
1394 Node::new(36, 0, 8),
1395 Node::new(36, 0, 4),
1396 Node::new(36, 0, 9),
1397 Node::new(36, 0, 13),
1398 Node::new(36, 0, 10),
1399 Node::new(36, 0, 3),
1400 Node::new(36, 0, 6),
1401 Node::new(36, 0, 5),
1402 Node::new(36, 0, 7),
1403 Node::new(35, 4, 1),
1404 Node::new(35, 0, 6),
1405 Node::new(35, 0, 10),
1406 Node::new(35, 11, 12),
1407 Node::new(35, 8, 2),
1408 Node::new(35, 7, 9),
1409 Node::new(35, 0, 3),
1410 Node::new(35, 13, 5),
1411 Node::new(34, 6, 5),
1412 Node::new(34, 1, 7),
1413 Node::new(34, 4, 0),
1414 Node::new(34, 2, 3),
1415 Node::new(33, 1, 0),
1416 Node::new(33, 3, 2),
1417 Node::new(32, 0, 1),
1418 ],
1419 [0, 14, 28, 36, 40, 42],
1420 14,
1421 )),
1422 AnyBitCircuit::B20(BitCircuit::new(
1423 [
1424 Node::new(0, 0, 0),
1425 Node::new(24, 1, 0),
1426 Node::new(23, 1, 0),
1427 Node::new(27, 1, 0),
1428 Node::new(31, 1, 0),
1429 Node::new(22, 1, 0),
1430 Node::new(28, 1, 0),
1431 Node::new(20, 1, 0),
1432 Node::new(29, 1, 0),
1433 Node::new(21, 1, 0),
1434 Node::new(30, 1, 0),
1435 Node::new(25, 1, 0),
1436 Node::new(26, 1, 0),
1437 Node::new(0, 0, 0),
1438 Node::new(36, 0, 6),
1439 Node::new(36, 0, 10),
1440 Node::new(36, 0, 7),
1441 Node::new(36, 0, 2),
1442 Node::new(36, 0, 5),
1443 Node::new(36, 0, 12),
1444 Node::new(36, 0, 8),
1445 Node::new(36, 0, 11),
1446 Node::new(36, 0, 9),
1447 Node::new(36, 0, 3),
1448 Node::new(36, 0, 4),
1449 Node::new(36, 0, 1),
1450 Node::new(35, 0, 12),
1451 Node::new(35, 2, 5),
1452 Node::new(35, 7, 9),
1453 Node::new(35, 0, 10),
1454 Node::new(35, 1, 3),
1455 Node::new(35, 0, 8),
1456 Node::new(35, 11, 4),
1457 Node::new(35, 0, 6),
1458 Node::new(34, 5, 2),
1459 Node::new(34, 0, 4),
1460 Node::new(34, 3, 6),
1461 Node::new(34, 7, 1),
1462 Node::new(33, 3, 1),
1463 Node::new(33, 2, 0),
1464 Node::new(32, 1, 0),
1465 ],
1466 [0, 13, 26, 34, 38, 40],
1467 13,
1468 )),
1469 AnyBitCircuit::B21(BitCircuit::new(
1470 [
1471 Node::new(0, 0, 0),
1472 Node::new(27, 1, 0),
1473 Node::new(30, 1, 0),
1474 Node::new(28, 1, 0),
1475 Node::new(26, 1, 0),
1476 Node::new(24, 1, 0),
1477 Node::new(21, 1, 0),
1478 Node::new(23, 1, 0),
1479 Node::new(29, 1, 0),
1480 Node::new(31, 1, 0),
1481 Node::new(22, 1, 0),
1482 Node::new(25, 1, 0),
1483 Node::new(0, 0, 0),
1484 Node::new(36, 0, 11),
1485 Node::new(36, 0, 8),
1486 Node::new(36, 0, 7),
1487 Node::new(36, 0, 4),
1488 Node::new(36, 0, 1),
1489 Node::new(36, 0, 6),
1490 Node::new(36, 0, 9),
1491 Node::new(36, 0, 10),
1492 Node::new(36, 0, 2),
1493 Node::new(36, 0, 3),
1494 Node::new(36, 0, 5),
1495 Node::new(35, 2, 6),
1496 Node::new(35, 7, 3),
1497 Node::new(35, 0, 1),
1498 Node::new(35, 0, 11),
1499 Node::new(35, 0, 5),
1500 Node::new(35, 9, 8),
1501 Node::new(35, 0, 4),
1502 Node::new(35, 0, 10),
1503 Node::new(34, 7, 3),
1504 Node::new(34, 2, 0),
1505 Node::new(34, 4, 1),
1506 Node::new(34, 6, 5),
1507 Node::new(33, 0, 3),
1508 Node::new(33, 2, 1),
1509 Node::new(32, 0, 1),
1510 ],
1511 [0, 12, 24, 32, 36, 38],
1512 12,
1513 )),
1514 AnyBitCircuit::B22(BitCircuit::new(
1515 [
1516 Node::new(0, 0, 0),
1517 Node::new(30, 1, 0),
1518 Node::new(31, 1, 0),
1519 Node::new(27, 1, 0),
1520 Node::new(23, 1, 0),
1521 Node::new(29, 1, 0),
1522 Node::new(22, 1, 0),
1523 Node::new(26, 1, 0),
1524 Node::new(25, 1, 0),
1525 Node::new(24, 1, 0),
1526 Node::new(28, 1, 0),
1527 Node::new(0, 0, 0),
1528 Node::new(36, 0, 3),
1529 Node::new(36, 0, 1),
1530 Node::new(36, 0, 10),
1531 Node::new(36, 0, 5),
1532 Node::new(36, 0, 2),
1533 Node::new(36, 0, 9),
1534 Node::new(36, 0, 4),
1535 Node::new(36, 0, 7),
1536 Node::new(36, 0, 6),
1537 Node::new(36, 0, 8),
1538 Node::new(35, 0, 1),
1539 Node::new(35, 0, 10),
1540 Node::new(35, 0, 6),
1541 Node::new(35, 0, 3),
1542 Node::new(35, 0, 8),
1543 Node::new(35, 0, 4),
1544 Node::new(35, 2, 9),
1545 Node::new(35, 5, 7),
1546 Node::new(34, 0, 7),
1547 Node::new(34, 5, 1),
1548 Node::new(34, 4, 6),
1549 Node::new(34, 3, 2),
1550 Node::new(33, 3, 2),
1551 Node::new(33, 1, 0),
1552 Node::new(32, 1, 0),
1553 ],
1554 [0, 11, 22, 30, 34, 36],
1555 11,
1556 )),
1557 AnyBitCircuit::B23(BitCircuit::new(
1558 [
1559 Node::new(0, 0, 0),
1560 Node::new(25, 1, 0),
1561 Node::new(30, 1, 0),
1562 Node::new(24, 1, 0),
1563 Node::new(26, 1, 0),
1564 Node::new(27, 1, 0),
1565 Node::new(23, 1, 0),
1566 Node::new(28, 1, 0),
1567 Node::new(31, 1, 0),
1568 Node::new(29, 1, 0),
1569 Node::new(0, 0, 0),
1570 Node::new(36, 0, 7),
1571 Node::new(36, 0, 1),
1572 Node::new(36, 0, 8),
1573 Node::new(36, 0, 4),
1574 Node::new(36, 0, 2),
1575 Node::new(36, 0, 5),
1576 Node::new(36, 0, 3),
1577 Node::new(36, 0, 6),
1578 Node::new(36, 0, 9),
1579 Node::new(35, 0, 5),
1580 Node::new(35, 0, 6),
1581 Node::new(35, 0, 4),
1582 Node::new(35, 0, 2),
1583 Node::new(35, 3, 8),
1584 Node::new(35, 0, 7),
1585 Node::new(35, 0, 1),
1586 Node::new(35, 0, 9),
1587 Node::new(34, 1, 4),
1588 Node::new(34, 6, 5),
1589 Node::new(34, 7, 3),
1590 Node::new(34, 0, 2),
1591 Node::new(33, 3, 1),
1592 Node::new(33, 2, 0),
1593 Node::new(32, 0, 1),
1594 ],
1595 [0, 10, 20, 28, 32, 34],
1596 10,
1597 )),
1598 AnyBitCircuit::B24(BitCircuit::new(
1599 [
1600 Node::new(0, 0, 0),
1601 Node::new(29, 1, 0),
1602 Node::new(24, 1, 0),
1603 Node::new(25, 1, 0),
1604 Node::new(26, 1, 0),
1605 Node::new(30, 1, 0),
1606 Node::new(27, 1, 0),
1607 Node::new(28, 1, 0),
1608 Node::new(31, 1, 0),
1609 Node::new(0, 0, 0),
1610 Node::new(36, 0, 5),
1611 Node::new(36, 0, 3),
1612 Node::new(36, 0, 1),
1613 Node::new(36, 0, 7),
1614 Node::new(36, 0, 2),
1615 Node::new(36, 0, 4),
1616 Node::new(36, 0, 6),
1617 Node::new(36, 0, 8),
1618 Node::new(35, 0, 7),
1619 Node::new(35, 0, 6),
1620 Node::new(35, 0, 1),
1621 Node::new(35, 0, 2),
1622 Node::new(35, 0, 8),
1623 Node::new(35, 0, 5),
1624 Node::new(35, 0, 4),
1625 Node::new(35, 0, 3),
1626 Node::new(34, 2, 1),
1627 Node::new(34, 4, 0),
1628 Node::new(34, 7, 3),
1629 Node::new(34, 6, 5),
1630 Node::new(33, 1, 2),
1631 Node::new(33, 0, 3),
1632 Node::new(32, 0, 1),
1633 ],
1634 [0, 9, 18, 26, 30, 32],
1635 9,
1636 )),
1637 AnyBitCircuit::B25(BitCircuit::new(
1638 [
1639 Node::new(0, 0, 0),
1640 Node::new(27, 1, 0),
1641 Node::new(26, 1, 0),
1642 Node::new(25, 1, 0),
1643 Node::new(31, 1, 0),
1644 Node::new(30, 1, 0),
1645 Node::new(29, 1, 0),
1646 Node::new(28, 1, 0),
1647 Node::new(0, 0, 0),
1648 Node::new(36, 0, 1),
1649 Node::new(36, 0, 2),
1650 Node::new(36, 0, 5),
1651 Node::new(36, 0, 3),
1652 Node::new(36, 0, 7),
1653 Node::new(36, 0, 4),
1654 Node::new(36, 0, 6),
1655 Node::new(0, 0, 0),
1656 Node::new(35, 0, 3),
1657 Node::new(35, 0, 6),
1658 Node::new(35, 0, 1),
1659 Node::new(35, 0, 5),
1660 Node::new(35, 0, 2),
1661 Node::new(35, 0, 7),
1662 Node::new(35, 0, 4),
1663 Node::new(34, 2, 3),
1664 Node::new(34, 0, 4),
1665 Node::new(34, 1, 5),
1666 Node::new(34, 6, 7),
1667 Node::new(33, 0, 3),
1668 Node::new(33, 1, 2),
1669 Node::new(32, 1, 0),
1670 ],
1671 [0, 8, 16, 24, 28, 30],
1672 8,
1673 )),
1674 AnyBitCircuit::B26(BitCircuit::new(
1675 [
1676 Node::new(0, 0, 0),
1677 Node::new(30, 1, 0),
1678 Node::new(27, 1, 0),
1679 Node::new(26, 1, 0),
1680 Node::new(28, 1, 0),
1681 Node::new(31, 1, 0),
1682 Node::new(29, 1, 0),
1683 Node::new(0, 0, 0),
1684 Node::new(36, 0, 3),
1685 Node::new(36, 0, 4),
1686 Node::new(36, 0, 5),
1687 Node::new(36, 0, 1),
1688 Node::new(36, 0, 2),
1689 Node::new(36, 0, 6),
1690 Node::new(0, 0, 0),
1691 Node::new(35, 0, 2),
1692 Node::new(35, 0, 4),
1693 Node::new(35, 0, 3),
1694 Node::new(35, 0, 6),
1695 Node::new(35, 0, 5),
1696 Node::new(35, 0, 1),
1697 Node::new(34, 0, 4),
1698 Node::new(34, 0, 1),
1699 Node::new(34, 2, 6),
1700 Node::new(34, 3, 5),
1701 Node::new(33, 0, 3),
1702 Node::new(33, 1, 2),
1703 Node::new(32, 0, 1),
1704 ],
1705 [0, 7, 14, 21, 25, 27],
1706 7,
1707 )),
1708 AnyBitCircuit::B27(BitCircuit::new(
1709 [
1710 Node::new(0, 0, 0),
1711 Node::new(31, 1, 0),
1712 Node::new(30, 1, 0),
1713 Node::new(29, 1, 0),
1714 Node::new(27, 1, 0),
1715 Node::new(28, 1, 0),
1716 Node::new(0, 0, 0),
1717 Node::new(36, 0, 5),
1718 Node::new(36, 0, 3),
1719 Node::new(36, 0, 4),
1720 Node::new(36, 0, 2),
1721 Node::new(36, 0, 1),
1722 Node::new(0, 0, 0),
1723 Node::new(35, 0, 3),
1724 Node::new(35, 0, 1),
1725 Node::new(35, 0, 5),
1726 Node::new(35, 0, 2),
1727 Node::new(35, 0, 4),
1728 Node::new(34, 0, 5),
1729 Node::new(34, 3, 1),
1730 Node::new(34, 0, 2),
1731 Node::new(34, 0, 4),
1732 Node::new(33, 3, 1),
1733 Node::new(33, 0, 2),
1734 Node::new(32, 1, 0),
1735 ],
1736 [0, 6, 12, 18, 22, 24],
1737 6,
1738 )),
1739 AnyBitCircuit::B28(BitCircuit::new(
1740 [
1741 Node::new(0, 0, 0),
1742 Node::new(29, 1, 0),
1743 Node::new(31, 1, 0),
1744 Node::new(30, 1, 0),
1745 Node::new(28, 1, 0),
1746 Node::new(0, 0, 0),
1747 Node::new(36, 0, 2),
1748 Node::new(36, 0, 4),
1749 Node::new(36, 0, 1),
1750 Node::new(36, 0, 3),
1751 Node::new(0, 0, 0),
1752 Node::new(35, 0, 2),
1753 Node::new(35, 0, 3),
1754 Node::new(35, 0, 1),
1755 Node::new(35, 0, 4),
1756 Node::new(34, 0, 3),
1757 Node::new(34, 0, 1),
1758 Node::new(34, 0, 2),
1759 Node::new(34, 0, 4),
1760 Node::new(33, 3, 1),
1761 Node::new(33, 0, 2),
1762 Node::new(32, 1, 0),
1763 ],
1764 [0, 5, 10, 15, 19, 21],
1765 5,
1766 )),
1767 AnyBitCircuit::B29(BitCircuit::new(
1768 [
1769 Node::new(0, 0, 0),
1770 Node::new(29, 1, 0),
1771 Node::new(30, 1, 0),
1772 Node::new(31, 1, 0),
1773 Node::new(0, 0, 0),
1774 Node::new(36, 0, 1),
1775 Node::new(36, 0, 2),
1776 Node::new(36, 0, 3),
1777 Node::new(0, 0, 0),
1778 Node::new(35, 0, 1),
1779 Node::new(35, 0, 3),
1780 Node::new(35, 0, 2),
1781 Node::new(0, 0, 0),
1782 Node::new(34, 0, 3),
1783 Node::new(34, 0, 1),
1784 Node::new(34, 0, 2),
1785 Node::new(33, 3, 2),
1786 Node::new(33, 0, 1),
1787 Node::new(32, 1, 0),
1788 ],
1789 [0, 4, 8, 12, 16, 18],
1790 4,
1791 )),
1792 AnyBitCircuit::B30(BitCircuit::new(
1793 [
1794 Node::new(0, 0, 0),
1795 Node::new(31, 1, 0),
1796 Node::new(30, 1, 0),
1797 Node::new(0, 0, 0),
1798 Node::new(36, 0, 2),
1799 Node::new(36, 0, 1),
1800 Node::new(0, 0, 0),
1801 Node::new(35, 0, 2),
1802 Node::new(35, 0, 1),
1803 Node::new(0, 0, 0),
1804 Node::new(34, 0, 1),
1805 Node::new(34, 0, 2),
1806 Node::new(33, 0, 1),
1807 Node::new(33, 0, 2),
1808 Node::new(32, 0, 1),
1809 ],
1810 [0, 3, 6, 9, 12, 14],
1811 3,
1812 )),
1813 AnyBitCircuit::B31(BitCircuit::new(
1814 [
1815 Node::new(0, 0, 0),
1816 Node::new(31, 1, 0),
1817 Node::new(0, 0, 0),
1818 Node::new(36, 0, 1),
1819 Node::new(0, 0, 0),
1820 Node::new(35, 0, 1),
1821 Node::new(0, 0, 0),
1822 Node::new(34, 0, 1),
1823 Node::new(0, 0, 0),
1824 Node::new(33, 0, 1),
1825 Node::new(32, 0, 1),
1826 ],
1827 [0, 2, 4, 6, 8, 10],
1828 2,
1829 )),
1830]);