burn_tripo 0.1.0

TripoSG(-scribble) implemented in burn
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
#![allow(clippy::large_const_arrays)]
#![allow(clippy::unreadable_literal)]
pub(crate) const MCCORNERS: [[i32; 3]; 8] = [
    [0, 0, 0],
    [1, 0, 0],
    [0, 1, 0],
    [1, 1, 0],
    [0, 0, 1],
    [1, 0, 1],
    [0, 1, 1],
    [1, 1, 1],
];

pub(crate) const MCEDGELOCATIONS: [[i32; 4]; 12] = [
    [0, 0, 0, 0],
    [1, 0, 0, 2],
    [0, 0, 1, 0],
    [0, 0, 0, 2],
    [0, 1, 0, 0],
    [1, 1, 0, 2],
    [0, 1, 1, 0],
    [0, 1, 0, 2],
    [0, 0, 0, 1],
    [1, 0, 0, 1],
    [1, 0, 1, 1],
    [0, 0, 1, 1],
];

pub(crate) const MCFIRSTPATCHINDEX: [i32; 257] = [
    0, 0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 24, 25, 28, 29, 31,
    33, 35, 36, 38, 39, 41, 42, 43, 45, 46, 47, 49, 51, 53, 54, 56, 59, 60, 61, 63, 65, 66, 67, 68,
    69, 70, 71, 73, 74, 76, 77, 79, 81, 82, 83, 85, 86, 87, 88, 89, 91, 93, 95, 96, 97, 99, 100,
    102, 105, 107, 109, 110, 111, 112, 113, 114, 115, 117, 118, 119, 120, 122, 123, 125, 127, 129,
    130, 131, 132, 133, 134, 136, 139, 141, 143, 145, 147, 149, 150, 153, 157, 159, 161, 163, 165,
    166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 177, 179, 180, 181, 182, 183, 185, 186, 187,
    189, 191, 193, 195, 197, 200, 202, 203, 205, 206, 207, 208, 209, 210, 211, 213, 215, 218, 220,
    223, 225, 229, 231, 233, 235, 237, 238, 240, 241, 243, 244, 245, 247, 248, 249, 251, 253, 255,
    256, 257, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 271, 272, 274, 275, 276, 277,
    278, 279, 280, 282, 283, 284, 285, 287, 289, 291, 292, 293, 295, 296, 297, 299, 300, 301, 302,
    303, 304, 305, 306, 307, 309, 310, 311, 312, 314, 315, 316, 317, 318, 320, 321, 322, 323, 324,
    325, 327, 328, 329, 330, 331, 332, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346,
    347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 358,
];

pub(crate) const MCFIRSTEDGEINDEX: [i32; 359] = [
    0, 3, 6, 10, 13, 17, 20, 23, 28, 31, 34, 37, 41, 46, 50, 55, 60, 64, 67, 71, 74, 77, 82, 85,
    88, 93, 96, 99, 102, 108, 111, 114, 118, 121, 125, 128, 134, 138, 141, 147, 152, 155, 160, 163,
    166, 169, 173, 178, 181, 184, 188, 191, 195, 198, 204, 207, 210, 213, 216, 219, 224, 230, 234,
    237, 242, 245, 251, 256, 260, 265, 270, 274, 277, 281, 287, 292, 295, 300, 303, 307, 312, 315,
    321, 326, 330, 334, 341, 348, 352, 355, 358, 361, 364, 367, 371, 374, 378, 383, 386, 390, 396,
    399, 402, 405, 408, 411, 415, 418, 423, 426, 431, 437, 443, 448, 452, 457, 460, 464, 470, 475,
    479, 482, 487, 492, 495, 499, 504, 507, 511, 515, 522, 528, 533, 540, 544, 547, 550, 553, 556,
    559, 563, 566, 571, 574, 578, 581, 586, 589, 593, 597, 604, 607, 610, 613, 616, 619, 622, 625,
    630, 633, 639, 642, 647, 650, 656, 659, 666, 672, 677, 683, 689, 694, 700, 705, 712, 716, 719,
    724, 730, 733, 740, 746, 753, 759, 762, 765, 768, 771, 774, 777, 780, 783, 787, 790, 793, 796,
    800, 803, 806, 809, 812, 817, 820, 824, 827, 831, 836, 842, 847, 853, 859, 864, 867, 870, 874,
    877, 880, 883, 886, 891, 894, 897, 900, 903, 908, 911, 914, 917, 920, 923, 929, 932, 936, 939,
    943, 947, 952, 955, 962, 967, 970, 977, 983, 986, 992, 996, 999, 1003, 1008, 1014, 1017, 1021,
    1025, 1029, 1034, 1037, 1044, 1049, 1052, 1057, 1061, 1066, 1072, 1079, 1084, 1088, 1093, 1099,
    1105, 1110, 1113, 1118, 1125, 1131, 1134, 1140, 1146, 1153, 1158, 1162, 1169, 1172, 1175, 1181,
    1184, 1188, 1191, 1195, 1198, 1202, 1206, 1210, 1215, 1221, 1224, 1229, 1236, 1241, 1244, 1249,
    1255, 1262, 1266, 1271, 1276, 1280, 1285, 1291, 1294, 1299, 1306, 1312, 1317, 1320, 1326, 1332,
    1338, 1345, 1352, 1355, 1358, 1363, 1367, 1373, 1376, 1381, 1384, 1389, 1395, 1402, 1408, 1415,
    1422, 1425, 1428, 1434, 1437, 1443, 1448, 1454, 1459, 1465, 1469, 1472, 1476, 1481, 1486, 1490,
    1495, 1499, 1505, 1508, 1513, 1519, 1523, 1526, 1530, 1533, 1536,
];

pub(crate) const MCEDGEINDEX: [i32; 1536] = [
    0, 3, 8, 0, 1, 9, 1, 3, 8, 9, 4, 7, 8, 0, 3, 4, 7, 0, 1, 9, 4, 7, 8, 1, 3, 4, 7, 9, 4, 5, 9, 0,
    3, 8, 4, 5, 9, 0, 1, 4, 5, 1, 3, 4, 5, 8, 5, 7, 8, 9, 0, 3, 5, 7, 9, 0, 1, 5, 7, 8, 1, 3, 5, 7,
    2, 3, 11, 0, 2, 8, 11, 0, 1, 9, 2, 3, 11, 1, 2, 8, 9, 11, 4, 7, 8, 2, 3, 11, 0, 2, 4, 7, 11, 0,
    1, 9, 4, 7, 8, 2, 3, 11, 1, 2, 4, 7, 9, 11, 4, 5, 9, 2, 3, 11, 0, 2, 8, 11, 4, 5, 9, 0, 1, 4,
    5, 2, 3, 11, 1, 2, 4, 5, 8, 11, 5, 7, 8, 9, 2, 3, 11, 0, 2, 5, 7, 9, 11, 0, 1, 5, 7, 8, 2, 3,
    11, 1, 2, 5, 7, 11, 1, 2, 10, 0, 3, 8, 1, 2, 10, 0, 2, 9, 10, 2, 3, 8, 9, 10, 4, 7, 8, 1, 2,
    10, 0, 3, 4, 7, 1, 2, 10, 0, 2, 9, 10, 4, 7, 8, 2, 3, 4, 7, 9, 10, 4, 5, 9, 1, 2, 10, 0, 3, 8,
    4, 5, 9, 1, 2, 10, 0, 2, 4, 5, 10, 2, 3, 4, 5, 8, 10, 5, 7, 8, 9, 1, 2, 10, 0, 3, 5, 7, 9, 1,
    2, 10, 0, 2, 5, 7, 8, 10, 2, 3, 5, 7, 10, 1, 3, 10, 11, 0, 1, 8, 10, 11, 0, 3, 9, 10, 11, 8, 9,
    10, 11, 4, 7, 8, 1, 3, 10, 11, 0, 1, 4, 7, 10, 11, 0, 3, 9, 10, 11, 4, 7, 8, 4, 7, 9, 10, 11,
    4, 5, 9, 1, 3, 10, 11, 0, 1, 8, 10, 11, 4, 5, 9, 0, 3, 4, 5, 10, 11, 4, 5, 8, 10, 11, 5, 7, 8,
    9, 1, 3, 10, 11, 0, 1, 5, 7, 9, 10, 11, 0, 3, 5, 7, 8, 10, 11, 5, 7, 10, 11, 6, 7, 11, 0, 3, 8,
    6, 7, 11, 0, 1, 9, 6, 7, 11, 1, 3, 8, 9, 6, 7, 11, 4, 6, 8, 11, 0, 3, 4, 6, 11, 0, 1, 9, 4, 6,
    8, 11, 1, 3, 4, 6, 9, 11, 4, 5, 9, 6, 7, 11, 0, 3, 8, 4, 5, 9, 6, 7, 11, 0, 1, 4, 5, 6, 7, 11,
    1, 3, 4, 5, 8, 6, 7, 11, 5, 6, 8, 9, 11, 0, 3, 5, 6, 9, 11, 0, 1, 5, 6, 8, 11, 1, 3, 5, 6, 11,
    2, 3, 6, 7, 0, 2, 6, 7, 8, 0, 1, 9, 2, 3, 6, 7, 1, 2, 6, 7, 8, 9, 2, 3, 4, 6, 8, 0, 2, 4, 6, 0,
    1, 9, 2, 3, 4, 6, 8, 1, 2, 4, 6, 9, 4, 5, 9, 2, 3, 6, 7, 0, 2, 6, 7, 8, 4, 5, 9, 0, 1, 4, 5, 2,
    3, 6, 7, 1, 2, 4, 5, 6, 7, 8, 2, 3, 5, 6, 8, 9, 0, 2, 5, 6, 9, 0, 1, 2, 3, 5, 6, 8, 1, 2, 5, 6,
    1, 2, 10, 6, 7, 11, 0, 3, 8, 1, 2, 10, 6, 7, 11, 0, 2, 9, 10, 6, 7, 11, 2, 3, 8, 9, 10, 6, 7,
    11, 4, 6, 8, 11, 1, 2, 10, 0, 3, 4, 6, 11, 1, 2, 10, 0, 2, 9, 10, 4, 6, 8, 11, 2, 3, 4, 6, 9,
    10, 11, 4, 5, 9, 1, 2, 10, 6, 7, 11, 0, 3, 8, 4, 5, 9, 1, 2, 10, 6, 7, 11, 0, 2, 4, 5, 10, 6,
    7, 11, 2, 3, 4, 5, 8, 10, 6, 7, 11, 5, 6, 8, 9, 11, 1, 2, 10, 0, 3, 5, 6, 9, 11, 1, 2, 10, 0,
    2, 5, 6, 8, 10, 11, 2, 3, 5, 6, 10, 11, 1, 3, 6, 7, 10, 0, 1, 6, 7, 8, 10, 0, 3, 6, 7, 9, 10,
    6, 7, 8, 9, 10, 1, 3, 4, 6, 8, 10, 0, 1, 4, 6, 10, 0, 3, 4, 6, 8, 9, 10, 4, 6, 9, 10, 4, 5, 9,
    1, 3, 6, 7, 10, 0, 1, 6, 7, 8, 10, 4, 5, 9, 0, 3, 4, 5, 6, 7, 10, 4, 5, 6, 7, 8, 10, 1, 3, 5,
    6, 8, 9, 10, 0, 1, 5, 6, 9, 10, 0, 3, 8, 5, 6, 10, 5, 6, 10, 5, 6, 10, 0, 3, 8, 5, 6, 10, 0, 1,
    9, 5, 6, 10, 1, 3, 8, 9, 5, 6, 10, 4, 7, 8, 5, 6, 10, 0, 3, 4, 7, 5, 6, 10, 0, 1, 9, 4, 7, 8,
    5, 6, 10, 1, 3, 4, 7, 9, 5, 6, 10, 4, 6, 9, 10, 0, 3, 8, 4, 6, 9, 10, 0, 1, 4, 6, 10, 1, 3, 4,
    6, 8, 10, 6, 7, 8, 9, 10, 0, 3, 6, 7, 9, 10, 0, 1, 6, 7, 8, 10, 1, 3, 6, 7, 10, 2, 3, 11, 5, 6,
    10, 0, 2, 8, 11, 5, 6, 10, 0, 1, 9, 2, 3, 11, 5, 6, 10, 1, 2, 8, 9, 11, 5, 6, 10, 4, 7, 8, 2,
    3, 11, 5, 6, 10, 0, 2, 4, 7, 11, 5, 6, 10, 0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 6, 10, 1, 2, 4, 7, 9,
    11, 5, 6, 10, 4, 6, 9, 10, 2, 3, 11, 0, 2, 8, 11, 4, 6, 9, 10, 0, 1, 4, 6, 10, 2, 3, 11, 1, 2,
    4, 6, 8, 10, 11, 6, 7, 8, 9, 10, 2, 3, 11, 0, 2, 6, 7, 9, 10, 11, 0, 1, 6, 7, 8, 10, 2, 3, 11,
    1, 2, 6, 7, 10, 11, 1, 2, 5, 6, 0, 3, 8, 1, 2, 5, 6, 0, 2, 5, 6, 9, 2, 3, 5, 6, 8, 9, 4, 7, 8,
    1, 2, 5, 6, 0, 3, 4, 7, 1, 2, 5, 6, 0, 2, 5, 6, 9, 4, 7, 8, 2, 3, 4, 5, 6, 7, 9, 1, 2, 4, 6, 9,
    0, 3, 8, 1, 2, 4, 6, 9, 0, 2, 4, 6, 2, 3, 4, 6, 8, 1, 2, 6, 7, 8, 9, 0, 1, 2, 3, 6, 7, 9, 0, 2,
    6, 7, 8, 2, 3, 6, 7, 1, 3, 5, 6, 11, 0, 1, 5, 6, 8, 11, 0, 3, 5, 6, 9, 11, 5, 6, 8, 9, 11, 4,
    7, 8, 1, 3, 5, 6, 11, 0, 1, 4, 5, 6, 7, 11, 0, 3, 5, 6, 9, 11, 4, 7, 8, 4, 5, 6, 7, 9, 11, 1,
    3, 4, 6, 9, 11, 0, 1, 4, 6, 8, 9, 11, 0, 3, 4, 6, 11, 4, 6, 8, 11, 1, 3, 6, 7, 8, 9, 11, 0, 1,
    9, 6, 7, 11, 0, 3, 6, 7, 8, 11, 6, 7, 11, 5, 7, 10, 11, 0, 3, 8, 5, 7, 10, 11, 0, 1, 9, 5, 7,
    10, 11, 1, 3, 8, 9, 5, 7, 10, 11, 4, 5, 8, 10, 11, 0, 3, 4, 5, 10, 11, 0, 1, 9, 4, 5, 8, 10,
    11, 1, 3, 4, 5, 9, 10, 11, 4, 7, 9, 10, 11, 0, 3, 8, 4, 7, 9, 10, 11, 0, 1, 4, 7, 10, 11, 1, 3,
    4, 7, 8, 10, 11, 8, 9, 10, 11, 0, 3, 9, 10, 11, 0, 1, 8, 10, 11, 1, 3, 10, 11, 2, 3, 5, 7, 10,
    0, 2, 5, 7, 8, 10, 0, 1, 9, 2, 3, 5, 7, 10, 1, 2, 5, 7, 8, 9, 10, 2, 3, 4, 5, 8, 10, 0, 2, 4,
    5, 10, 0, 1, 9, 2, 3, 4, 5, 8, 10, 1, 2, 4, 5, 9, 10, 2, 3, 4, 7, 9, 10, 0, 2, 4, 7, 8, 9, 10,
    0, 1, 2, 3, 4, 7, 10, 4, 7, 8, 1, 2, 10, 2, 3, 8, 9, 10, 0, 2, 9, 10, 0, 1, 2, 3, 8, 10, 1, 2,
    10, 1, 2, 5, 7, 11, 0, 3, 8, 1, 2, 5, 7, 11, 0, 2, 5, 7, 9, 11, 2, 3, 5, 7, 8, 9, 11, 1, 2, 4,
    5, 8, 11, 0, 1, 2, 3, 4, 5, 11, 0, 2, 4, 5, 8, 9, 11, 4, 5, 9, 2, 3, 11, 1, 2, 4, 7, 9, 11, 0,
    3, 8, 1, 2, 4, 7, 9, 11, 0, 2, 4, 7, 11, 2, 3, 4, 7, 8, 11, 1, 2, 8, 9, 11, 0, 1, 2, 3, 9, 11,
    0, 2, 8, 11, 2, 3, 11, 1, 3, 5, 7, 0, 1, 5, 7, 8, 0, 3, 5, 7, 9, 5, 7, 8, 9, 1, 3, 4, 5, 8, 0,
    1, 4, 5, 0, 3, 4, 5, 8, 9, 4, 5, 9, 1, 3, 4, 7, 9, 0, 1, 4, 7, 8, 9, 0, 3, 4, 7, 4, 7, 8, 1, 3,
    8, 9, 0, 1, 9, 0, 3, 8,
];

pub(crate) const PROBLEMATICCONFIGS: [u8; 256] = [
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 1, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 255, 255, 2, 255, 255,
    255, 255, 255, 255, 255, 255, 5, 255, 255, 255, 255, 255, 255, 5, 5, 255, 255, 255, 255, 255,
    255, 4, 255, 255, 255, 3, 3, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 5, 255, 5,
    255, 5, 255, 255, 255, 255, 255, 255, 255, 3, 255, 255, 255, 255, 255, 2, 255, 255, 255, 255,
    255, 255, 255, 3, 255, 3, 255, 4, 255, 255, 0, 255, 0, 255, 255, 255, 255, 255, 255, 255, 255,
    1, 255, 255, 255, 0, 255, 255, 255, 255, 255, 255, 255, 1, 255, 255, 255, 1, 255, 4, 2, 255,
    255, 255, 2, 255, 255, 255, 255, 0, 255, 2, 4, 255, 255, 255, 255, 0, 255, 2, 255, 255, 255,
    255, 255, 255, 255, 255, 4, 255, 255, 4, 255, 255, 255, 255, 255, 255,
];

pub(crate) const DMCEDGEOFFSET: [[i8; 12]; 256] = [
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
    [0, -1, -1, 0, -1, -1, -1, -1, 0, -1, -1, -1],
    [0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1],
    [-1, 0, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1],
    [-1, -1, -1, -1, 0, -1, -1, 0, 0, -1, -1, -1],
    [0, -1, -1, 0, 0, -1, -1, 0, -1, -1, -1, -1],
    [0, 0, -1, -1, 1, -1, -1, 1, 1, 0, -1, -1],
    [-1, 0, -1, 0, 0, -1, -1, 0, -1, 0, -1, -1],
    [-1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1, -1],
    [0, -1, -1, 0, 1, 1, -1, -1, 0, 1, -1, -1],
    [0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1],
    [-1, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, -1],
    [-1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, -1],
    [0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1],
    [0, 0, -1, -1, -1, 0, -1, 0, 0, -1, -1, -1],
    [-1, 0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1],
    [-1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0],
    [0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, 0],
    [0, 0, 1, 1, -1, -1, -1, -1, -1, 0, -1, 1],
    [-1, 0, 0, -1, -1, -1, -1, -1, 0, 0, -1, 0],
    [-1, -1, 1, 1, 0, -1, -1, 0, 0, -1, -1, 1],
    [0, -1, 0, -1, 0, -1, -1, 0, -1, -1, -1, 0],
    [0, 0, 2, 2, 1, -1, -1, 1, 1, 0, -1, 2],
    [-1, 0, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0],
    [-1, -1, 1, 1, 0, 0, -1, -1, -1, 0, -1, 1],
    [0, -1, 0, -1, 1, 1, -1, -1, 0, 1, -1, 0],
    [0, 0, 1, 1, 0, 0, -1, -1, -1, -1, -1, 1],
    [-1, 0, 0, -1, 0, 0, -1, -1, 0, -1, -1, 0],
    [-1, -1, 1, 1, -1, 0, -1, 0, 0, 0, -1, 1],
    [0, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0],
    [0, 0, 1, 1, -1, 0, -1, 0, 0, -1, -1, 1],
    [-1, 0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0],
    [-1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1],
    [0, 1, 1, 0, -1, -1, -1, -1, 0, -1, 1, -1],
    [0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0, -1],
    [-1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, -1],
    [-1, 1, 1, -1, 0, -1, -1, 0, 0, -1, 1, -1],
    [0, 1, 1, 0, 0, -1, -1, 0, -1, -1, 1, -1],
    [0, -1, 0, -1, 1, -1, -1, 1, 1, 0, 0, -1],
    [-1, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1],
    [-1, 1, 1, -1, 0, 0, -1, -1, -1, 0, 1, -1],
    [0, 2, 2, 0, 1, 1, -1, -1, 0, 1, 2, -1],
    [0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0, -1],
    [-1, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1],
    [-1, 1, 1, -1, -1, 0, -1, 0, 0, 0, 1, -1],
    [0, 1, 1, 0, -1, 0, -1, 0, -1, 0, 1, -1],
    [0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1],
    [-1, -1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1],
    [-1, 0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0],
    [0, 0, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0],
    [0, -1, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0],
    [-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0],
    [-1, 1, -1, 1, 0, -1, -1, 0, 0, -1, 1, 1],
    [0, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0],
    [0, -1, -1, 0, 1, -1, -1, 1, 1, 0, 0, 0],
    [-1, -1, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0],
    [-1, 1, -1, 1, 0, 0, -1, -1, -1, 0, 1, 1],
    [0, 0, -1, -1, 1, 1, -1, -1, 0, 1, 0, 0],
    [0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0],
    [-1, -1, -1, -1, 0, 0, -1, -1, 0, -1, 0, 0],
    [-1, 1, -1, 1, -1, 0, -1, 0, 0, 0, 1, 1],
    [0, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0],
    [0, -1, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0],
    [-1, -1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0],
    [-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0],
    [0, -1, -1, 0, -1, -1, 1, 1, 0, -1, -1, 1],
    [0, 0, -1, -1, -1, -1, 1, 1, -1, 0, -1, 1],
    [-1, 0, -1, 0, -1, -1, 1, 1, 0, 0, -1, 1],
    [-1, -1, -1, -1, 0, -1, 0, -1, 0, -1, -1, 0],
    [0, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 0],
    [0, 0, -1, -1, 1, -1, 1, -1, 1, 0, -1, 1],
    [-1, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0],
    [-1, -1, -1, -1, 0, 0, 1, 1, -1, 0, -1, 1],
    [0, -1, -1, 0, 1, 1, 2, 2, 0, 1, -1, 2],
    [0, 0, -1, -1, 0, 0, 1, 1, -1, -1, -1, 1],
    [-1, 0, -1, 0, 0, 0, 1, 1, 0, -1, -1, 1],
    [-1, -1, -1, -1, -1, 0, 0, -1, 0, 0, -1, 0],
    [0, -1, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0],
    [0, 0, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0],
    [-1, 0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0],
    [-1, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1],
    [0, -1, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1],
    [0, 0, 1, 1, -1, -1, 1, 1, -1, 0, -1, -1],
    [-1, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1],
    [-1, -1, 0, 0, 0, -1, 0, -1, 0, -1, -1, -1],
    [0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1, -1],
    [0, 0, 1, 1, 1, -1, 1, -1, 1, 0, -1, -1],
    [-1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1],
    [-1, -1, 1, 1, 0, 0, 1, 1, -1, 0, -1, -1],
    [0, -1, 0, -1, 1, 1, 0, 0, 0, 1, -1, -1],
    [0, 0, 1, 1, 0, 0, 1, 1, -1, -1, -1, -1],
    [-1, 0, 0, -1, 0, 0, 0, 0, 0, -1, -1, -1],
    [-1, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1],
    [0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, -1],
    [0, 0, 0, 0, -1, 0, 0, -1, 0, -1, -1, -1],
    [-1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1],
    [-1, 0, 0, -1, -1, -1, 1, 1, -1, -1, 0, 1],
    [0, 1, 1, 0, -1, -1, 2, 2, 0, -1, 1, 2],
    [0, -1, 0, -1, -1, -1, 1, 1, -1, 0, 0, 1],
    [-1, -1, 0, 0, -1, -1, 1, 1, 0, 0, 0, 1],
    [-1, 1, 1, -1, 0, -1, 0, -1, 0, -1, 1, 0],
    [0, 1, 1, 0, 0, -1, 0, -1, -1, -1, 1, 0],
    [0, -1, 0, -1, 1, -1, 1, -1, 1, 0, 0, 1],
    [-1, -1, 0, 0, 0, -1, 0, -1, -1, 0, 0, 0],
    [-1, 1, 1, -1, 0, 0, 2, 2, -1, 0, 1, 2],
    [0, 2, 2, 0, 1, 1, 3, 3, 0, 1, 2, 3],
    [0, -1, 0, -1, 0, 0, 1, 1, -1, -1, 0, 1],
    [-1, -1, 0, 0, 0, 0, 1, 1, 0, -1, 0, 1],
    [-1, 1, 1, -1, -1, 0, 0, -1, 0, 0, 1, 0],
    [0, 1, 1, 0, -1, 0, 0, -1, -1, 0, 1, 0],
    [0, -1, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0],
    [-1, -1, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0],
    [-1, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1],
    [0, 0, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1],
    [0, -1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1],
    [-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1],
    [-1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1],
    [0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0, -1],
    [0, -1, -1, 0, 0, -1, 0, -1, 0, 0, 0, -1],
    [-1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0, -1],
    [-1, 1, -1, 1, 0, 0, 1, 1, -1, 0, 1, -1],
    [0, 0, -1, -1, 1, 1, 0, 0, 0, 1, 0, -1],
    [0, -1, -1, 0, 0, 0, 0, 0, -1, -1, 0, -1],
    [-1, -1, -1, -1, 0, 0, 0, 0, 0, -1, 0, -1],
    [-1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1],
    [0, 0, -1, -1, -1, 0, 0, -1, -1, 0, 0, -1],
    [0, -1, -1, 0, -1, 1, 1, -1, 0, -1, 1, -1],
    [-1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1],
    [-1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1],
    [0, -1, -1, 0, -1, 1, 1, -1, 0, -1, 1, -1],
    [0, 0, -1, -1, -1, 1, 1, -1, -1, 0, 1, -1],
    [-1, 0, -1, 0, -1, 1, 1, -1, 0, 0, 1, -1],
    [-1, -1, -1, -1, 0, 1, 1, 0, 0, -1, 1, -1],
    [0, -1, -1, 0, 0, 1, 1, 0, -1, -1, 1, -1],
    [0, 0, -1, -1, 1, 2, 2, 1, 1, 0, 2, -1],
    [-1, 0, -1, 0, 0, 1, 1, 0, -1, 0, 1, -1],
    [-1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0, -1],
    [0, -1, -1, 0, 1, -1, 1, -1, 0, 1, 1, -1],
    [0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0, -1],
    [-1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, -1],
    [-1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, -1],
    [0, -1, -1, 0, -1, -1, 0, 0, -1, 0, 0, -1],
    [0, 0, -1, -1, -1, -1, 0, 0, 0, -1, 0, -1],
    [-1, 0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1],
    [-1, -1, 0, 0, -1, 1, 1, -1, -1, -1, 1, 0],
    [0, -1, 0, -1, -1, 1, 1, -1, 0, -1, 1, 0],
    [0, 0, 1, 1, -1, 2, 2, -1, -1, 0, 2, 1],
    [-1, 0, 0, -1, -1, 1, 1, -1, 0, 0, 1, 0],
    [-1, -1, 1, 1, 0, 2, 2, 0, 0, -1, 2, 1],
    [0, -1, 0, -1, 0, 1, 1, 0, -1, -1, 1, 0],
    [0, 0, 2, 2, 1, 3, 3, 1, 1, 0, 3, 2],
    [-1, 0, 0, -1, 0, 1, 1, 0, -1, 0, 1, 0],
    [-1, -1, 1, 1, 0, -1, 0, -1, -1, 0, 0, 1],
    [0, -1, 0, -1, 1, -1, 1, -1, 0, 1, 1, 0],
    [0, 0, 1, 1, 0, -1, 0, -1, -1, -1, 0, 1],
    [-1, 0, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0],
    [-1, -1, 1, 1, -1, -1, 0, 0, 0, 0, 0, 1],
    [0, -1, 0, -1, -1, -1, 0, 0, -1, 0, 0, 0],
    [0, 0, 1, 1, -1, -1, 0, 0, 0, -1, 0, 1],
    [-1, 0, 0, -1, -1, -1, 0, 0, -1, -1, 0, 0],
    [-1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1],
    [0, 1, 1, 0, -1, 1, 1, -1, 0, -1, -1, -1],
    [0, -1, 0, -1, -1, 0, 0, -1, -1, 0, -1, -1],
    [-1, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, -1],
    [-1, 1, 1, -1, 0, 1, 1, 0, 0, -1, -1, -1],
    [0, 1, 1, 0, 0, 1, 1, 0, -1, -1, -1, -1],
    [0, -1, 0, -1, 1, 0, 0, 1, 1, 0, -1, -1],
    [-1, -1, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1],
    [-1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1],
    [0, 1, 1, 0, 1, -1, 1, -1, 0, 1, -1, -1],
    [0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1, -1],
    [-1, -1, 0, 0, 0, -1, 0, -1, 0, -1, -1, -1],
    [-1, 0, 0, -1, -1, -1, 0, 0, 0, 0, -1, -1],
    [0, 0, 0, 0, -1, -1, 0, 0, -1, 0, -1, -1],
    [0, -1, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1],
    [-1, -1, 0, 0, -1, -1, 0, 0, -1, -1, -1, -1],
    [-1, 0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0],
    [0, 0, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0],
    [0, -1, -1, 0, -1, 0, 0, -1, -1, 0, -1, 0],
    [-1, -1, -1, -1, -1, 0, 0, -1, 0, 0, -1, 0],
    [-1, 1, -1, 1, 0, 1, 1, 0, 0, -1, -1, 1],
    [0, 0, -1, -1, 0, 0, 0, 0, -1, -1, -1, 0],
    [0, -1, -1, 0, 1, 0, 0, 1, 1, 0, -1, 0],
    [-1, -1, -1, -1, 0, 0, 0, 0, -1, 0, -1, 0],
    [-1, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0],
    [0, 0, -1, -1, 0, -1, 0, -1, 0, 0, -1, 0],
    [0, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 0],
    [-1, -1, -1, -1, 0, -1, 0, -1, 0, -1, -1, 0],
    [-1, 0, -1, 0, -1, -1, 0, 0, 0, 0, -1, 0],
    [0, 0, -1, -1, -1, -1, 1, 1, -1, 0, -1, 1],
    [0, -1, -1, 0, -1, -1, 0, 0, 0, -1, -1, 0],
    [-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, 0],
    [-1, -1, -1, -1, -1, 0, -1, 0, -1, -1, 0, 0],
    [0, -1, -1, 0, -1, 1, -1, 1, 0, -1, 1, 1],
    [0, 0, -1, -1, -1, 1, -1, 1, -1, 0, 1, 1],
    [-1, 0, -1, 0, -1, 1, -1, 1, 0, 0, 1, 1],
    [-1, -1, -1, -1, 0, 0, -1, -1, 0, -1, 0, 0],
    [0, -1, -1, 0, 0, 0, -1, -1, -1, -1, 0, 0],
    [0, 0, -1, -1, 1, 1, -1, -1, 1, 0, 1, 1],
    [-1, 0, -1, 0, 0, 0, -1, -1, -1, 0, 0, 0],
    [-1, -1, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0],
    [0, -1, -1, 0, 1, -1, -1, 1, 0, 1, 1, 1],
    [0, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, 0],
    [-1, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 0],
    [-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0],
    [0, -1, -1, 0, -1, -1, -1, -1, -1, 0, 0, 0],
    [0, 0, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0],
    [-1, 0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0],
    [-1, -1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1],
    [0, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, -1],
    [0, 0, 1, 1, -1, 1, -1, 1, -1, 0, 1, -1],
    [-1, 0, 0, -1, -1, 0, -1, 0, 0, 0, 0, -1],
    [-1, -1, 0, 0, 0, 0, -1, -1, 0, -1, 0, -1],
    [0, -1, 0, -1, 0, 0, -1, -1, -1, -1, 0, -1],
    [0, 0, 1, 1, 1, 1, -1, -1, 1, 0, 1, -1],
    [-1, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, -1],
    [-1, -1, 0, 0, 0, -1, -1, 0, -1, 0, 0, -1],
    [0, -1, 0, -1, 0, -1, -1, 0, 0, 0, 0, -1],
    [0, 0, 0, 0, 0, -1, -1, 0, -1, -1, 0, -1],
    [-1, 1, 1, -1, 0, -1, -1, 0, 0, -1, 1, -1],
    [-1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, -1],
    [0, -1, 0, -1, -1, -1, -1, -1, -1, 0, 0, -1],
    [0, 0, 0, 0, -1, -1, -1, -1, 0, -1, 0, -1],
    [-1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1],
    [-1, 0, 0, -1, -1, 0, -1, 0, -1, -1, -1, 0],
    [0, 1, 1, 0, -1, 1, -1, 1, 0, -1, -1, 1],
    [0, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0],
    [-1, -1, 0, 0, -1, 0, -1, 0, 0, 0, -1, 0],
    [-1, 0, 0, -1, 0, 0, -1, -1, 0, -1, -1, 0],
    [0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, 0],
    [0, -1, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0],
    [-1, -1, 1, 1, 0, 0, -1, -1, -1, 0, -1, 1],
    [-1, 0, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0],
    [0, 1, 1, 0, 1, -1, -1, 1, 0, 1, -1, 1],
    [0, -1, 0, -1, 0, -1, -1, 0, -1, -1, -1, 0],
    [-1, -1, 0, 0, 0, -1, -1, 0, 0, -1, -1, 0],
    [-1, 0, 0, -1, -1, -1, -1, -1, 0, 0, -1, 0],
    [0, 0, 0, 0, -1, -1, -1, -1, -1, 0, -1, 0],
    [0, -1, 0, -1, -1, -1, -1, -1, 0, -1, -1, 0],
    [-1, -1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0],
    [-1, 0, -1, 0, -1, 0, -1, 0, -1, -1, -1, -1],
    [0, 0, -1, -1, -1, 0, -1, 0, 0, -1, -1, -1],
    [0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1],
    [-1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, -1],
    [-1, 0, -1, 0, 0, 0, -1, -1, 0, -1, -1, -1],
    [0, 0, -1, -1, 0, 0, -1, -1, -1, -1, -1, -1],
    [0, -1, -1, 0, 0, 0, -1, -1, 0, 0, -1, -1],
    [-1, -1, -1, -1, 0, 0, -1, -1, -1, 0, -1, -1],
    [-1, 0, -1, 0, 0, -1, -1, 0, -1, 0, -1, -1],
    [0, 0, -1, -1, 0, -1, -1, 0, 0, 0, -1, -1],
    [0, -1, -1, 0, 0, -1, -1, 0, -1, -1, -1, -1],
    [-1, -1, -1, -1, 0, -1, -1, 0, 0, -1, -1, -1],
    [-1, 0, -1, 0, -1, -1, -1, -1, 0, 0, -1, -1],
    [0, 0, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1],
    [0, -1, -1, 0, -1, -1, -1, -1, 0, -1, -1, -1],
    [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
];

pub(crate) const DMCQUAD: [[[i32; 4]; 4]; 6] = [
    [[0, 0, 0, 0], [0, -1, 0, 4], [0, -1, -1, 6], [0, 0, -1, 2]],
    [[0, 0, 0, 8], [0, 0, -1, 11], [-1, 0, -1, 10], [-1, 0, 0, 9]],
    [[0, 0, 0, 3], [-1, 0, 0, 1], [-1, -1, 0, 5], [0, -1, 0, 7]],
    [[0, 0, 0, 0], [0, 0, -1, 2], [0, -1, -1, 6], [0, -1, 0, 4]],
    [[0, 0, 0, 8], [-1, 0, 0, 9], [-1, 0, -1, 10], [0, 0, -1, 11]],
    [[0, 0, 0, 3], [0, -1, 0, 7], [-1, -1, 0, 5], [-1, 0, 0, 1]],
];