use std::mem::MaybeUninit;
pub enum EdgeDir {
X,
Y,
Z,
}
#[derive(Debug, Clone, Copy)]
pub struct Edge {
pub v1: u8,
pub v2: u8,
}
impl Edge {
pub fn is_special_edge(&self) -> bool {
self.v1 == 0 && self.v2 == 0
}
pub fn dir(&self) -> EdgeDir {
match (self.v1, self.v2) {
(0, 1) | (3, 2) | (4, 5) | (7, 6) => EdgeDir::X,
(0, 3) | (1, 2) | (4, 7) | (5, 6) => EdgeDir::Y,
(0, 4) | (1, 5) | (2, 6) | (3, 7) => EdgeDir::Z,
_ => panic!("Invalid edge"),
}
}
const fn from_edge_num(num: i8) -> Self {
match num {
0 => Self { v1: 0, v2: 1 },
1 => Self { v1: 1, v2: 2 },
2 => Self { v1: 3, v2: 2 },
3 => Self { v1: 0, v2: 3 },
4 => Self { v1: 4, v2: 5 },
5 => Self { v1: 5, v2: 6 },
6 => Self { v1: 7, v2: 6 },
7 => Self { v1: 4, v2: 7 },
8 => Self { v1: 0, v2: 4 },
9 => Self { v1: 1, v2: 5 },
10 => Self { v1: 2, v2: 6 },
11 => Self { v1: 3, v2: 7 },
12 => Self { v1: 0, v2: 0 }, _ => panic!("Invalid edge number"),
}
}
}
pub const CASES: [[i8; 2]; 256] = [
[0, -1],
[1, 0],
[1, 1],
[2, 0],
[1, 2],
[3, 0],
[2, 3],
[5, 0],
[1, 3],
[2, 1],
[3, 3],
[5, 1],
[2, 5],
[5, 4],
[5, 9],
[8, 0],
[1, 4],
[2, 2],
[3, 4],
[5, 2],
[4, 2],
[6, 2],
[6, 9],
[11, 0],
[3, 8],
[5, 5],
[7, 3],
[9, 1],
[6, 16],
[14, 3],
[12, 12],
[5, 24],
[1, 5],
[3, 1],
[2, 4],
[5, 3],
[3, 6],
[7, 0],
[5, 10],
[9, 0],
[4, 3],
[6, 4],
[6, 11],
[14, 1],
[6, 17],
[12, 4],
[11, 6],
[5, 25],
[2, 8],
[5, 7],
[5, 12],
[8, 1],
[6, 18],
[12, 5],
[14, 7],
[5, 28],
[6, 21],
[11, 4],
[12, 15],
[5, 30],
[10, 5],
[6, 32],
[6, 39],
[2, 12],
[1, 6],
[4, 0],
[3, 5],
[6, 0],
[2, 6],
[6, 3],
[5, 11],
[14, 0],
[3, 9],
[6, 5],
[7, 4],
[12, 1],
[5, 14],
[11, 3],
[9, 4],
[5, 26],
[3, 10],
[6, 6],
[7, 5],
[12, 2],
[6, 19],
[10, 1],
[12, 13],
[6, 24],
[7, 7],
[12, 9],
[13, 1],
[7, 9],
[12, 20],
[6, 33],
[7, 13],
[3, 12],
[2, 10],
[6, 7],
[5, 13],
[11, 2],
[5, 16],
[12, 7],
[8, 3],
[5, 29],
[6, 22],
[10, 2],
[12, 17],
[6, 27],
[14, 9],
[6, 34],
[5, 39],
[2, 14],
[5, 20],
[14, 5],
[9, 5],
[5, 32],
[11, 10],
[6, 35],
[5, 41],
[2, 16],
[12, 23],
[6, 37],
[7, 14],
[3, 16],
[6, 46],
[4, 6],
[3, 21],
[1, 8],
[1, 7],
[3, 2],
[4, 1],
[6, 1],
[3, 7],
[7, 1],
[6, 10],
[12, 0],
[2, 7],
[5, 6],
[6, 12],
[11, 1],
[5, 15],
[9, 2],
[14, 6],
[5, 27],
[2, 9],
[5, 8],
[6, 13],
[14, 2],
[6, 20],
[12, 6],
[10, 3],
[6, 25],
[5, 18],
[8, 2],
[12, 16],
[5, 31],
[11, 9],
[5, 34],
[6, 40],
[2, 13],
[3, 11],
[7, 2],
[6, 14],
[12, 3],
[7, 6],
[13, 0],
[12, 14],
[7, 8],
[6, 23],
[12, 10],
[10, 4],
[6, 28],
[12, 21],
[7, 10],
[6, 41],
[3, 13],
[5, 21],
[9, 3],
[11, 8],
[5, 33],
[12, 22],
[7, 11],
[6, 42],
[3, 14],
[14, 11],
[5, 36],
[6, 44],
[2, 17],
[6, 47],
[3, 18],
[4, 7],
[1, 9],
[2, 11],
[6, 8],
[6, 15],
[10, 0],
[5, 17],
[12, 8],
[11, 7],
[6, 26],
[5, 19],
[14, 4],
[12, 18],
[6, 29],
[8, 4],
[5, 35],
[5, 40],
[2, 15],
[5, 22],
[11, 5],
[12, 19],
[6, 30],
[14, 10],
[6, 36],
[6, 43],
[4, 4],
[9, 7],
[5, 37],
[7, 15],
[3, 17],
[5, 44],
[2, 19],
[3, 22],
[1, 10],
[5, 23],
[12, 11],
[14, 8],
[6, 31],
[9, 6],
[7, 12],
[5, 42],
[3, 15],
[11, 11],
[6, 38],
[6, 45],
[4, 5],
[5, 45],
[3, 19],
[2, 21],
[1, 11],
[8, 5],
[5, 38],
[5, 43],
[2, 18],
[5, 46],
[3, 20],
[2, 22],
[1, 12],
[5, 47],
[2, 20],
[3, 23],
[1, 13],
[2, 23],
[1, 14],
[1, 15],
[0, -1],
];
pub const TILING_1: [[i8; 3]; 16] = [
[0, 8, 3],
[0, 1, 9],
[1, 2, 10],
[3, 11, 2],
[4, 7, 8],
[9, 5, 4],
[10, 6, 5],
[7, 6, 11],
[7, 11, 6],
[10, 5, 6],
[9, 4, 5],
[4, 8, 7],
[3, 2, 11],
[1, 10, 2],
[0, 9, 1],
[0, 3, 8],
];
pub const TILING_EDGES_1: [[Edge; 3]; 16] = convert_tiling(&TILING_1);
pub const TILING_2: [[i8; 6]; 24] = [
[1, 8, 3, 9, 8, 1],
[0, 11, 2, 8, 11, 0],
[4, 3, 0, 7, 3, 4],
[9, 2, 10, 0, 2, 9],
[0, 5, 4, 1, 5, 0],
[3, 10, 1, 11, 10, 3],
[1, 6, 5, 2, 6, 1],
[7, 2, 3, 6, 2, 7],
[9, 7, 8, 5, 7, 9],
[6, 8, 4, 11, 8, 6],
[10, 4, 9, 6, 4, 10],
[11, 5, 10, 7, 5, 11],
[11, 10, 5, 7, 11, 5],
[10, 9, 4, 6, 10, 4],
[6, 4, 8, 11, 6, 8],
[9, 8, 7, 5, 9, 7],
[7, 3, 2, 6, 7, 2],
[1, 5, 6, 2, 1, 6],
[3, 1, 10, 11, 3, 10],
[0, 4, 5, 1, 0, 5],
[9, 10, 2, 0, 9, 2],
[4, 0, 3, 7, 4, 3],
[0, 2, 11, 8, 0, 11],
[1, 3, 8, 9, 1, 8],
];
pub const TILING_EDGES_2: [[Edge; 6]; 24] = convert_tiling(&TILING_2);
pub const TEST_3: [i8; 24] = [
5, 1,
4, 5,
1, 2,
2, 3,
4, 3,
6, 6,
-6, -6,
-3, -4,
-3, -2,
-2, -1,
-5, -4,
-1, -5,
];
pub const TILING_3_1: [[i8; 6]; 24] = [
[0, 8, 3, 1, 2, 10],
[9, 5, 4, 0, 8, 3],
[3, 0, 8, 11, 7, 6],
[1, 9, 0, 2, 3, 11],
[0, 1, 9, 8, 4, 7],
[9, 0, 1, 5, 10, 6],
[1, 2, 10, 9, 5, 4],
[10, 1, 2, 6, 11, 7],
[8, 4, 7, 3, 11, 2],
[2, 3, 11, 10, 6, 5],
[5, 10, 6, 4, 7, 8],
[4, 9, 5, 7, 6, 11],
[5, 9, 4, 11, 6, 7],
[6, 10, 5, 8, 7, 4],
[11, 3, 2, 5, 6, 10],
[7, 4, 8, 2, 11, 3],
[2, 1, 10, 7, 11, 6],
[10, 2, 1, 4, 5, 9],
[1, 0, 9, 6, 10, 5],
[9, 1, 0, 7, 4, 8],
[0, 9, 1, 11, 3, 2],
[8, 0, 3, 6, 7, 11],
[4, 5, 9, 3, 8, 0],
[3, 8, 0, 10, 2, 1],
];
pub const TILING_EDGES_3_1: [[Edge; 6]; 24] = convert_tiling(&TILING_3_1);
pub const TILING_3_2: [[i8; 12]; 24] = [
[10, 3, 2, 10, 8, 3, 10, 1, 0, 8, 10, 0],
[3, 4, 8, 3, 5, 4, 3, 0, 9, 5, 3, 9],
[6, 8, 7, 6, 0, 8, 6, 11, 3, 0, 6, 3],
[11, 0, 3, 11, 9, 0, 11, 2, 1, 9, 11, 1],
[7, 9, 4, 7, 1, 9, 7, 8, 0, 1, 7, 0],
[6, 1, 10, 6, 0, 1, 9, 0, 6, 9, 6, 5],
[4, 10, 5, 4, 2, 10, 4, 9, 1, 2, 4, 1],
[7, 2, 11, 7, 1, 2, 7, 6, 10, 1, 7, 10],
[2, 7, 11, 2, 4, 7, 2, 3, 8, 4, 2, 8],
[5, 11, 6, 5, 3, 11, 5, 10, 2, 3, 5, 2],
[8, 6, 7, 8, 10, 6, 8, 4, 5, 10, 8, 5],
[11, 5, 6, 11, 9, 5, 11, 7, 4, 9, 11, 4],
[6, 5, 11, 5, 9, 11, 4, 7, 11, 4, 11, 9],
[7, 6, 8, 6, 10, 8, 5, 4, 8, 5, 8, 10],
[6, 11, 5, 11, 3, 5, 2, 10, 5, 2, 5, 3],
[11, 7, 2, 7, 4, 2, 8, 3, 2, 8, 2, 4],
[11, 2, 7, 2, 1, 7, 10, 6, 7, 10, 7, 1],
[5, 10, 4, 10, 2, 4, 1, 9, 4, 1, 4, 2],
[10, 1, 6, 1, 0, 6, 6, 0, 9, 5, 6, 9],
[4, 9, 7, 9, 1, 7, 0, 8, 7, 0, 7, 1],
[3, 0, 11, 0, 9, 11, 1, 2, 11, 1, 11, 9],
[7, 8, 6, 8, 0, 6, 3, 11, 6, 3, 6, 0],
[8, 4, 3, 4, 5, 3, 9, 0, 3, 9, 3, 5],
[2, 3, 10, 3, 8, 10, 0, 1, 10, 0, 10, 8],
];
pub const TILING_EDGES_3_2: [[Edge; 12]; 24] = convert_tiling(&TILING_3_2);
pub const TEST_4: [i8; 8] = [
7, 7,
7, 7,
-7, -7,
-7, -7,
];
pub const TILING_4_1: [[i8; 6]; 8] = [
[0, 8, 3, 5, 10, 6],
[0, 1, 9, 11, 7, 6],
[1, 2, 10, 8, 4, 7],
[9, 5, 4, 2, 3, 11],
[4, 5, 9, 11, 3, 2],
[10, 2, 1, 7, 4, 8],
[9, 1, 0, 6, 7, 11],
[3, 8, 0, 6, 10, 5],
];
pub const TILING_EDGES_4_1: [[Edge; 6]; 8] = convert_tiling(&TILING_4_1);
pub const TILING_4_2: [[i8; 18]; 8] = [
[8, 5, 0, 5, 8, 6, 3, 6, 8, 6, 3, 10, 0, 10, 3, 10, 0, 5],
[9, 6, 1, 6, 9, 7, 0, 7, 9, 7, 0, 11, 1, 11, 0, 11, 1, 6],
[10, 7, 2, 7, 10, 4, 1, 4, 10, 4, 1, 8, 2, 8, 1, 8, 2, 7],
[11, 4, 3, 4, 11, 5, 2, 5, 11, 5, 2, 9, 3, 9, 2, 9, 3, 4],
[3, 4, 11, 5, 11, 4, 11, 5, 2, 9, 2, 5, 2, 9, 3, 4, 3, 9],
[2, 7, 10, 4, 10, 7, 10, 4, 1, 8, 1, 4, 1, 8, 2, 7, 2, 8],
[1, 6, 9, 7, 9, 6, 9, 7, 0, 11, 0, 7, 0, 11, 1, 6, 1, 11],
[0, 5, 8, 6, 8, 5, 8, 6, 3, 10, 3, 6, 3, 10, 0, 5, 0, 10],
];
pub const TILING_EDGES_4_2: [[Edge; 18]; 8] = convert_tiling(&TILING_4_2);
pub const TILING_5: [[i8; 9]; 48] = [
[2, 8, 3, 2, 10, 8, 10, 9, 8],
[1, 11, 2, 1, 9, 11, 9, 8, 11],
[4, 1, 9, 4, 7, 1, 7, 3, 1],
[8, 5, 4, 8, 3, 5, 3, 1, 5],
[0, 10, 1, 0, 8, 10, 8, 11, 10],
[11, 4, 7, 11, 2, 4, 2, 0, 4],
[7, 0, 8, 7, 6, 0, 6, 2, 0],
[9, 3, 0, 9, 5, 3, 5, 7, 3],
[3, 6, 11, 3, 0, 6, 0, 4, 6],
[3, 9, 0, 3, 11, 9, 11, 10, 9],
[5, 2, 10, 5, 4, 2, 4, 0, 2],
[9, 6, 5, 9, 0, 6, 0, 2, 6],
[0, 7, 8, 0, 1, 7, 1, 5, 7],
[10, 0, 1, 10, 6, 0, 6, 4, 0],
[6, 3, 11, 6, 5, 3, 5, 1, 3],
[10, 7, 6, 10, 1, 7, 1, 3, 7],
[1, 4, 9, 1, 2, 4, 2, 6, 4],
[11, 1, 2, 11, 7, 1, 7, 5, 1],
[8, 2, 3, 8, 4, 2, 4, 6, 2],
[2, 5, 10, 2, 3, 5, 3, 7, 5],
[7, 10, 6, 7, 8, 10, 8, 9, 10],
[6, 9, 5, 6, 11, 9, 11, 8, 9],
[5, 8, 4, 5, 10, 8, 10, 11, 8],
[4, 11, 7, 4, 9, 11, 9, 10, 11],
[4, 7, 11, 4, 11, 9, 9, 11, 10],
[5, 4, 8, 5, 8, 10, 10, 8, 11],
[6, 5, 9, 6, 9, 11, 11, 9, 8],
[7, 6, 10, 7, 10, 8, 8, 10, 9],
[2, 10, 5, 2, 5, 3, 3, 5, 7],
[8, 3, 2, 8, 2, 4, 4, 2, 6],
[11, 2, 1, 11, 1, 7, 7, 1, 5],
[1, 9, 4, 1, 4, 2, 2, 4, 6],
[10, 6, 7, 10, 7, 1, 1, 7, 3],
[6, 11, 3, 6, 3, 5, 5, 3, 1],
[10, 1, 0, 10, 0, 6, 6, 0, 4],
[0, 8, 7, 0, 7, 1, 1, 7, 5],
[9, 5, 6, 9, 6, 0, 0, 6, 2],
[5, 10, 2, 5, 2, 4, 4, 2, 0],
[3, 0, 9, 3, 9, 11, 11, 9, 10],
[3, 11, 6, 3, 6, 0, 0, 6, 4],
[9, 0, 3, 9, 3, 5, 5, 3, 7],
[7, 8, 0, 7, 0, 6, 6, 0, 2],
[11, 7, 4, 11, 4, 2, 2, 4, 0],
[0, 1, 10, 0, 10, 8, 8, 10, 11],
[8, 4, 5, 8, 5, 3, 3, 5, 1],
[4, 9, 1, 4, 1, 7, 7, 1, 3],
[1, 2, 11, 1, 11, 9, 9, 11, 8],
[2, 3, 8, 2, 8, 10, 10, 8, 9],
];
pub const TILING_EDGES_5: [[Edge; 9]; 48] = convert_tiling(&TILING_5);
pub const TEST_6: [[i8; 3]; 48] = [
[2, 7, 10],
[4, 7, 11],
[5, 7, 1],
[5, 7, 3],
[1, 7, 9],
[3, 7, 10],
[6, 7, 5],
[1, 7, 8],
[4, 7, 8],
[1, 7, 8],
[3, 7, 11],
[5, 7, 2],
[5, 7, 0],
[1, 7, 9],
[6, 7, 6],
[2, 7, 9],
[4, 7, 8],
[2, 7, 9],
[2, 7, 10],
[6, 7, 7],
[3, 7, 10],
[4, 7, 11],
[3, 7, 11],
[6, 7, 4],
[-6, -7, 4],
[-3, -7, 11],
[-4, -7, 11],
[-3, -7, 10],
[-6, -7, 7],
[-2, -7, 10],
[-2, -7, 9],
[-4, -7, 8],
[-2, -7, 9],
[-6, -7, 6],
[-1, -7, 9],
[-5, -7, 0],
[-5, -7, 2],
[-3, -7, 11],
[-1, -7, 8],
[-4, -7, 8],
[-1, -7, 8],
[-6, -7, 5],
[-3, -7, 10],
[-1, -7, 9],
[-5, -7, 3],
[-5, -7, 1],
[-4, -7, 11],
[-2, -7, 10],
];
pub const TILING_6_1_1: [[i8; 9]; 48] = [
[6, 5, 10, 3, 1, 8, 9, 8, 1],
[11, 7, 6, 9, 3, 1, 3, 9, 8],
[1, 2, 10, 7, 0, 4, 0, 7, 3],
[3, 0, 8, 5, 2, 6, 2, 5, 1],
[5, 4, 9, 2, 0, 11, 8, 11, 0],
[10, 6, 5, 8, 2, 0, 2, 8, 11],
[10, 6, 5, 0, 4, 3, 7, 3, 4],
[3, 0, 8, 6, 4, 10, 9, 10, 4],
[8, 3, 0, 10, 7, 5, 7, 10, 11],
[8, 4, 7, 10, 0, 2, 0, 10, 9],
[7, 6, 11, 0, 2, 9, 10, 9, 2],
[2, 3, 11, 4, 1, 5, 1, 4, 0],
[0, 1, 9, 6, 3, 7, 3, 6, 2],
[9, 0, 1, 11, 4, 6, 4, 11, 8],
[11, 7, 6, 1, 5, 0, 4, 0, 5],
[0, 1, 9, 7, 5, 11, 10, 11, 5],
[4, 7, 8, 1, 3, 10, 11, 10, 3],
[9, 5, 4, 11, 1, 3, 1, 11, 10],
[10, 1, 2, 8, 5, 7, 5, 8, 9],
[8, 4, 7, 2, 6, 1, 5, 1, 6],
[1, 2, 10, 4, 6, 8, 11, 8, 6],
[2, 3, 11, 5, 7, 9, 8, 9, 7],
[11, 2, 3, 9, 6, 4, 6, 9, 10],
[9, 5, 4, 3, 7, 2, 6, 2, 7],
[4, 5, 9, 2, 7, 3, 7, 2, 6],
[3, 2, 11, 4, 6, 9, 10, 9, 6],
[11, 3, 2, 9, 7, 5, 7, 9, 8],
[10, 2, 1, 8, 6, 4, 6, 8, 11],
[7, 4, 8, 1, 6, 2, 6, 1, 5],
[2, 1, 10, 7, 5, 8, 9, 8, 5],
[4, 5, 9, 3, 1, 11, 10, 11, 1],
[8, 7, 4, 10, 3, 1, 3, 10, 11],
[9, 1, 0, 11, 5, 7, 5, 11, 10],
[6, 7, 11, 0, 5, 1, 5, 0, 4],
[1, 0, 9, 6, 4, 11, 8, 11, 4],
[9, 1, 0, 7, 3, 6, 2, 6, 3],
[11, 3, 2, 5, 1, 4, 0, 4, 1],
[11, 6, 7, 9, 2, 0, 2, 9, 10],
[7, 4, 8, 2, 0, 10, 9, 10, 0],
[0, 3, 8, 5, 7, 10, 11, 10, 7],
[8, 0, 3, 10, 4, 6, 4, 10, 9],
[5, 6, 10, 3, 4, 0, 4, 3, 7],
[5, 6, 10, 0, 2, 8, 11, 8, 2],
[9, 4, 5, 11, 0, 2, 0, 11, 8],
[8, 0, 3, 6, 2, 5, 1, 5, 2],
[10, 2, 1, 4, 0, 7, 3, 7, 0],
[6, 7, 11, 1, 3, 9, 8, 9, 3],
[10, 5, 6, 8, 1, 3, 1, 8, 9],
];
pub const TILING_EDGES_6_1_1: [[Edge; 9]; 48] = convert_tiling(&TILING_6_1_1);
pub const TILING_6_1_2: [[i8; 27]; 48] = [
[
1, 12, 3, 12, 10, 3, 6, 3, 10, 3, 6, 8, 5, 8, 6, 8, 5, 12, 12, 9, 8, 1, 9, 12, 12, 5, 10,
],
[
1, 12, 3, 1, 11, 12, 11, 1, 6, 9, 6, 1, 6, 9, 7, 12, 7, 9, 9, 8, 12, 12, 8, 3, 11, 7, 12,
],
[
4, 12, 0, 4, 1, 12, 1, 4, 10, 7, 10, 4, 10, 7, 2, 12, 2, 7, 7, 3, 12, 12, 3, 0, 1, 2, 12,
],
[
6, 12, 2, 6, 3, 12, 3, 6, 8, 5, 8, 6, 8, 5, 0, 12, 0, 5, 5, 1, 12, 12, 1, 2, 3, 0, 12,
],
[
0, 12, 2, 12, 9, 2, 5, 2, 9, 2, 5, 11, 4, 11, 5, 11, 4, 12, 12, 8, 11, 0, 8, 12, 12, 4, 9,
],
[
0, 12, 2, 0, 10, 12, 10, 0, 5, 8, 5, 0, 5, 8, 6, 12, 6, 8, 8, 11, 12, 12, 11, 2, 10, 6, 12,
],
[
4, 12, 0, 12, 5, 0, 10, 0, 5, 0, 10, 3, 6, 3, 10, 3, 6, 12, 12, 7, 3, 4, 7, 12, 12, 6, 5,
],
[
4, 12, 6, 12, 8, 6, 3, 6, 8, 6, 3, 10, 0, 10, 3, 10, 0, 12, 12, 9, 10, 4, 9, 12, 12, 0, 8,
],
[
5, 12, 7, 5, 8, 12, 8, 5, 0, 10, 0, 5, 0, 10, 3, 12, 3, 10, 10, 11, 12, 12, 11, 7, 8, 3, 12,
],
[
2, 12, 0, 2, 8, 12, 8, 2, 7, 10, 7, 2, 7, 10, 4, 12, 4, 10, 10, 9, 12, 12, 9, 0, 8, 4, 12,
],
[
2, 12, 0, 12, 11, 0, 7, 0, 11, 0, 7, 9, 6, 9, 7, 9, 6, 12, 12, 10, 9, 2, 10, 12, 12, 6, 11,
],
[
5, 12, 1, 5, 2, 12, 2, 5, 11, 4, 11, 5, 11, 4, 3, 12, 3, 4, 4, 0, 12, 12, 0, 1, 2, 3, 12,
],
[
7, 12, 3, 7, 0, 12, 0, 7, 9, 6, 9, 7, 9, 6, 1, 12, 1, 6, 6, 2, 12, 12, 2, 3, 0, 1, 12,
],
[
6, 12, 4, 6, 9, 12, 9, 6, 1, 11, 1, 6, 1, 11, 0, 12, 0, 11, 11, 8, 12, 12, 8, 4, 9, 0, 12,
],
[
5, 12, 1, 12, 6, 1, 11, 1, 6, 1, 11, 0, 7, 0, 11, 0, 7, 12, 12, 4, 0, 5, 4, 12, 12, 7, 6,
],
[
5, 12, 7, 12, 9, 7, 0, 7, 9, 7, 0, 11, 1, 11, 0, 11, 1, 12, 12, 10, 11, 5, 10, 12, 12, 1, 9,
],
[
3, 12, 1, 12, 8, 1, 4, 1, 8, 1, 4, 10, 7, 10, 4, 10, 7, 12, 12, 11, 10, 3, 11, 12, 12, 7, 8,
],
[
3, 12, 1, 3, 9, 12, 9, 3, 4, 11, 4, 3, 4, 11, 5, 12, 5, 11, 11, 10, 12, 12, 10, 1, 9, 5, 12,
],
[
7, 12, 5, 7, 10, 12, 10, 7, 2, 8, 2, 7, 2, 8, 1, 12, 1, 8, 8, 9, 12, 12, 9, 5, 10, 1, 12,
],
[
6, 12, 2, 12, 7, 2, 8, 2, 7, 2, 8, 1, 4, 1, 8, 1, 4, 12, 12, 5, 1, 6, 5, 12, 12, 4, 7,
],
[
6, 12, 4, 12, 10, 4, 1, 4, 10, 4, 1, 8, 2, 8, 1, 8, 2, 12, 12, 11, 8, 6, 11, 12, 12, 2, 10,
],
[
7, 12, 5, 12, 11, 5, 2, 5, 11, 5, 2, 9, 3, 9, 2, 9, 3, 12, 12, 8, 9, 7, 8, 12, 12, 3, 11,
],
[
4, 12, 6, 4, 11, 12, 11, 4, 3, 9, 3, 4, 3, 9, 2, 12, 2, 9, 9, 10, 12, 12, 10, 6, 11, 2, 12,
],
[
7, 12, 3, 12, 4, 3, 9, 3, 4, 3, 9, 2, 5, 2, 9, 2, 5, 12, 12, 6, 2, 7, 6, 12, 12, 5, 4,
],
[
3, 12, 7, 3, 4, 12, 4, 3, 9, 2, 9, 3, 9, 2, 5, 12, 5, 2, 2, 6, 12, 12, 6, 7, 4, 5, 12,
],
[
6, 12, 4, 12, 11, 4, 3, 4, 11, 4, 3, 9, 2, 9, 3, 9, 2, 12, 12, 10, 9, 6, 10, 12, 12, 2, 11,
],
[
5, 12, 7, 5, 11, 12, 11, 5, 2, 9, 2, 5, 2, 9, 3, 12, 3, 9, 9, 8, 12, 12, 8, 7, 11, 3, 12,
],
[
4, 12, 6, 4, 10, 12, 10, 4, 1, 8, 1, 4, 1, 8, 2, 12, 2, 8, 8, 11, 12, 12, 11, 6, 10, 2, 12,
],
[
2, 12, 6, 2, 7, 12, 7, 2, 8, 1, 8, 2, 8, 1, 4, 12, 4, 1, 1, 5, 12, 12, 5, 6, 7, 4, 12,
],
[
5, 12, 7, 12, 10, 7, 2, 7, 10, 7, 2, 8, 1, 8, 2, 8, 1, 12, 12, 9, 8, 5, 9, 12, 12, 1, 10,
],
[
1, 12, 3, 12, 9, 3, 4, 3, 9, 3, 4, 11, 5, 11, 4, 11, 5, 12, 12, 10, 11, 1, 10, 12, 12, 5, 9,
],
[
1, 12, 3, 1, 8, 12, 8, 1, 4, 10, 4, 1, 4, 10, 7, 12, 7, 10, 10, 11, 12, 12, 11, 3, 8, 7, 12,
],
[
7, 12, 5, 7, 9, 12, 9, 7, 0, 11, 0, 7, 0, 11, 1, 12, 1, 11, 11, 10, 12, 12, 10, 5, 9, 1, 12,
],
[
1, 12, 5, 1, 6, 12, 6, 1, 11, 0, 11, 1, 11, 0, 7, 12, 7, 0, 0, 4, 12, 12, 4, 5, 6, 7, 12,
],
[
4, 12, 6, 12, 9, 6, 1, 6, 9, 6, 1, 11, 0, 11, 1, 11, 0, 12, 12, 8, 11, 4, 8, 12, 12, 0, 9,
],
[
3, 12, 7, 12, 0, 7, 9, 7, 0, 7, 9, 6, 1, 6, 9, 6, 1, 12, 12, 2, 6, 3, 2, 12, 12, 1, 0,
],
[
1, 12, 5, 12, 2, 5, 11, 5, 2, 5, 11, 4, 3, 4, 11, 4, 3, 12, 12, 0, 4, 1, 0, 12, 12, 3, 2,
],
[
0, 12, 2, 0, 11, 12, 11, 0, 7, 9, 7, 0, 7, 9, 6, 12, 6, 9, 9, 10, 12, 12, 10, 2, 11, 6, 12,
],
[
0, 12, 2, 12, 8, 2, 7, 2, 8, 2, 7, 10, 4, 10, 7, 10, 4, 12, 12, 9, 10, 0, 9, 12, 12, 4, 8,
],
[
7, 12, 5, 12, 8, 5, 0, 5, 8, 5, 0, 10, 3, 10, 0, 10, 3, 12, 12, 11, 10, 7, 11, 12, 12, 3, 8,
],
[
6, 12, 4, 6, 8, 12, 8, 6, 3, 10, 3, 6, 3, 10, 0, 12, 0, 10, 10, 9, 12, 12, 9, 4, 8, 0, 12,
],
[
0, 12, 4, 0, 5, 12, 5, 0, 10, 3, 10, 0, 10, 3, 6, 12, 6, 3, 3, 7, 12, 12, 7, 4, 5, 6, 12,
],
[
2, 12, 0, 12, 10, 0, 5, 0, 10, 0, 5, 8, 6, 8, 5, 8, 6, 12, 12, 11, 8, 2, 11, 12, 12, 6, 10,
],
[
2, 12, 0, 2, 9, 12, 9, 2, 5, 11, 5, 2, 5, 11, 4, 12, 4, 11, 11, 8, 12, 12, 8, 0, 9, 4, 12,
],
[
2, 12, 6, 12, 3, 6, 8, 6, 3, 6, 8, 5, 0, 5, 8, 5, 0, 12, 12, 1, 5, 2, 1, 12, 12, 0, 3,
],
[
0, 12, 4, 12, 1, 4, 10, 4, 1, 4, 10, 7, 2, 7, 10, 7, 2, 12, 12, 3, 7, 0, 3, 12, 12, 2, 1,
],
[
3, 12, 1, 12, 11, 1, 6, 1, 11, 1, 6, 9, 7, 9, 6, 9, 7, 12, 12, 8, 9, 3, 8, 12, 12, 7, 11,
],
[
3, 12, 1, 3, 10, 12, 10, 3, 6, 8, 6, 3, 6, 8, 5, 12, 5, 8, 8, 9, 12, 12, 9, 1, 10, 5, 12,
],
];
pub const TILING_EDGES_6_1_2: [[Edge; 27]; 48] = convert_tiling(&TILING_6_1_2);
pub const TILING_6_2: [[i8; 15]; 48] = [
[1, 10, 3, 6, 3, 10, 3, 6, 8, 5, 8, 6, 8, 5, 9],
[1, 11, 3, 11, 1, 6, 9, 6, 1, 6, 9, 7, 8, 7, 9],
[4, 1, 0, 1, 4, 10, 7, 10, 4, 10, 7, 2, 3, 2, 7],
[6, 3, 2, 3, 6, 8, 5, 8, 6, 8, 5, 0, 1, 0, 5],
[0, 9, 2, 5, 2, 9, 2, 5, 11, 4, 11, 5, 11, 4, 8],
[0, 10, 2, 10, 0, 5, 8, 5, 0, 5, 8, 6, 11, 6, 8],
[4, 5, 0, 10, 0, 5, 0, 10, 3, 6, 3, 10, 3, 6, 7],
[4, 8, 6, 3, 6, 8, 6, 3, 10, 0, 10, 3, 10, 0, 9],
[5, 8, 7, 8, 5, 0, 10, 0, 5, 0, 10, 3, 11, 3, 10],
[2, 8, 0, 8, 2, 7, 10, 7, 2, 7, 10, 4, 9, 4, 10],
[2, 11, 0, 7, 0, 11, 0, 7, 9, 6, 9, 7, 9, 6, 10],
[5, 2, 1, 2, 5, 11, 4, 11, 5, 11, 4, 3, 0, 3, 4],
[7, 0, 3, 0, 7, 9, 6, 9, 7, 9, 6, 1, 2, 1, 6],
[6, 9, 4, 9, 6, 1, 11, 1, 6, 1, 11, 0, 8, 0, 11],
[5, 6, 1, 11, 1, 6, 1, 11, 0, 7, 0, 11, 0, 7, 4],
[5, 9, 7, 0, 7, 9, 7, 0, 11, 1, 11, 0, 11, 1, 10],
[3, 8, 1, 4, 1, 8, 1, 4, 10, 7, 10, 4, 10, 7, 11],
[3, 9, 1, 9, 3, 4, 11, 4, 3, 4, 11, 5, 10, 5, 11],
[7, 10, 5, 10, 7, 2, 8, 2, 7, 2, 8, 1, 9, 1, 8],
[6, 7, 2, 8, 2, 7, 2, 8, 1, 4, 1, 8, 1, 4, 5],
[6, 10, 4, 1, 4, 10, 4, 1, 8, 2, 8, 1, 8, 2, 11],
[7, 11, 5, 2, 5, 11, 5, 2, 9, 3, 9, 2, 9, 3, 8],
[4, 11, 6, 11, 4, 3, 9, 3, 4, 3, 9, 2, 10, 2, 9],
[7, 4, 3, 9, 3, 4, 3, 9, 2, 5, 2, 9, 2, 5, 6],
[3, 4, 7, 4, 3, 9, 2, 9, 3, 9, 2, 5, 6, 5, 2],
[6, 11, 4, 3, 4, 11, 4, 3, 9, 2, 9, 3, 9, 2, 10],
[5, 11, 7, 11, 5, 2, 9, 2, 5, 2, 9, 3, 8, 3, 9],
[4, 10, 6, 10, 4, 1, 8, 1, 4, 1, 8, 2, 11, 2, 8],
[2, 7, 6, 7, 2, 8, 1, 8, 2, 8, 1, 4, 5, 4, 1],
[5, 10, 7, 2, 7, 10, 7, 2, 8, 1, 8, 2, 8, 1, 9],
[1, 9, 3, 4, 3, 9, 3, 4, 11, 5, 11, 4, 11, 5, 10],
[1, 8, 3, 8, 1, 4, 10, 4, 1, 4, 10, 7, 11, 7, 10],
[7, 9, 5, 9, 7, 0, 11, 0, 7, 0, 11, 1, 10, 1, 11],
[1, 6, 5, 6, 1, 11, 0, 11, 1, 11, 0, 7, 4, 7, 0],
[4, 9, 6, 1, 6, 9, 6, 1, 11, 0, 11, 1, 11, 0, 8],
[3, 0, 7, 9, 7, 0, 7, 9, 6, 1, 6, 9, 6, 1, 2],
[1, 2, 5, 11, 5, 2, 5, 11, 4, 3, 4, 11, 4, 3, 0],
[0, 11, 2, 11, 0, 7, 9, 7, 0, 7, 9, 6, 10, 6, 9],
[0, 8, 2, 7, 2, 8, 2, 7, 10, 4, 10, 7, 10, 4, 9],
[7, 8, 5, 0, 5, 8, 5, 0, 10, 3, 10, 0, 10, 3, 11],
[6, 8, 4, 8, 6, 3, 10, 3, 6, 3, 10, 0, 9, 0, 10],
[0, 5, 4, 5, 0, 10, 3, 10, 0, 10, 3, 6, 7, 6, 3],
[2, 10, 0, 5, 0, 10, 0, 5, 8, 6, 8, 5, 8, 6, 11],
[2, 9, 0, 9, 2, 5, 11, 5, 2, 5, 11, 4, 8, 4, 11],
[2, 3, 6, 8, 6, 3, 6, 8, 5, 0, 5, 8, 5, 0, 1],
[0, 1, 4, 10, 4, 1, 4, 10, 7, 2, 7, 10, 7, 2, 3],
[3, 11, 1, 6, 1, 11, 1, 6, 9, 7, 9, 6, 9, 7, 8],
[3, 10, 1, 10, 3, 6, 8, 6, 3, 6, 8, 5, 9, 5, 8],
];
pub const TILING_EDGES_6_2: [[Edge; 15]; 48] = convert_tiling(&TILING_6_2);
pub const TEST_7: [[i8; 5]; 16] = [
[1, 2, 5, 7, 1],
[3, 4, 5, 7, 3],
[4, 1, 6, 7, 4],
[4, 1, 5, 7, 0],
[2, 3, 5, 7, 2],
[1, 2, 6, 7, 5],
[2, 3, 6, 7, 6],
[3, 4, 6, 7, 7],
[-3, -4, -6, -7, 7],
[-2, -3, -6, -7, 6],
[-1, -2, -6, -7, 5],
[-2, -3, -5, -7, 2],
[-4, -1, -5, -7, 0],
[-4, -1, -6, -7, 4],
[-3, -4, -5, -7, 3],
[-1, -2, -5, -7, 1],
];
pub const TILING_7_1: [[i8; 9]; 16] = [
[9, 5, 4, 10, 1, 2, 8, 3, 0],
[11, 7, 6, 8, 3, 0, 10, 1, 2],
[3, 0, 8, 5, 4, 9, 7, 6, 11],
[8, 4, 7, 9, 0, 1, 11, 2, 3],
[10, 6, 5, 11, 2, 3, 9, 0, 1],
[0, 1, 9, 6, 5, 10, 4, 7, 8],
[1, 2, 10, 7, 6, 11, 5, 4, 9],
[2, 3, 11, 4, 7, 8, 6, 5, 10],
[11, 3, 2, 8, 7, 4, 10, 5, 6],
[10, 2, 1, 11, 6, 7, 9, 4, 5],
[9, 1, 0, 10, 5, 6, 8, 7, 4],
[5, 6, 10, 3, 2, 11, 1, 0, 9],
[7, 4, 8, 1, 0, 9, 3, 2, 11],
[8, 0, 3, 9, 4, 5, 11, 6, 7],
[6, 7, 11, 0, 3, 8, 2, 1, 10],
[4, 5, 9, 2, 1, 10, 0, 3, 8],
];
pub const TILING_EDGES_7_1: [[Edge; 9]; 16] = convert_tiling(&TILING_7_1);
pub const TILING_7_2: [[[i8; 15]; 3]; 16] = [
[
[1, 2, 10, 3, 4, 8, 4, 3, 5, 0, 5, 3, 5, 0, 9],
[3, 0, 8, 9, 1, 4, 2, 4, 1, 4, 2, 5, 10, 5, 2],
[9, 5, 4, 0, 10, 1, 10, 0, 8, 10, 8, 2, 3, 2, 8],
],
[
[3, 0, 8, 1, 6, 10, 6, 1, 7, 2, 7, 1, 7, 2, 11],
[1, 2, 10, 11, 3, 6, 0, 6, 3, 6, 0, 7, 8, 7, 0],
[11, 7, 6, 2, 8, 3, 8, 2, 10, 8, 10, 0, 1, 0, 10],
],
[
[9, 5, 4, 11, 3, 6, 0, 6, 3, 6, 0, 7, 8, 7, 0],
[11, 7, 6, 3, 4, 8, 4, 3, 5, 0, 5, 3, 5, 0, 9],
[3, 0, 8, 4, 9, 7, 11, 7, 9, 5, 11, 9, 11, 5, 6],
],
[
[0, 1, 9, 2, 7, 11, 7, 2, 4, 3, 4, 2, 4, 3, 8],
[2, 3, 11, 8, 0, 7, 1, 7, 0, 7, 1, 4, 9, 4, 1],
[8, 4, 7, 3, 9, 0, 9, 3, 11, 9, 11, 1, 2, 1, 11],
],
[
[2, 3, 11, 0, 5, 9, 5, 0, 6, 1, 6, 0, 6, 1, 10],
[0, 1, 9, 10, 2, 5, 3, 5, 2, 5, 3, 6, 11, 6, 3],
[6, 5, 10, 1, 11, 2, 11, 1, 9, 11, 9, 3, 0, 3, 9],
],
[
[6, 5, 10, 8, 0, 7, 1, 7, 0, 7, 1, 4, 9, 4, 1],
[8, 4, 7, 0, 5, 9, 5, 0, 6, 1, 6, 0, 6, 1, 10],
[0, 1, 9, 5, 10, 4, 8, 4, 10, 6, 8, 10, 8, 6, 7],
],
[
[11, 7, 6, 9, 1, 4, 2, 4, 1, 4, 2, 5, 10, 5, 2],
[9, 5, 4, 1, 6, 10, 6, 1, 7, 2, 7, 1, 7, 2, 11],
[1, 2, 10, 6, 11, 5, 9, 5, 11, 7, 9, 11, 9, 7, 4],
],
[
[8, 4, 7, 10, 2, 5, 3, 5, 2, 5, 3, 6, 11, 6, 3],
[6, 5, 10, 2, 7, 11, 7, 2, 4, 3, 4, 2, 4, 3, 8],
[2, 3, 11, 7, 8, 6, 10, 6, 8, 4, 10, 8, 10, 4, 5],
],
[
[7, 4, 8, 5, 2, 10, 2, 5, 3, 6, 3, 5, 3, 6, 11],
[10, 5, 6, 11, 7, 2, 4, 2, 7, 2, 4, 3, 8, 3, 4],
[11, 3, 2, 6, 8, 7, 8, 6, 10, 8, 10, 4, 5, 4, 10],
],
[
[6, 7, 11, 4, 1, 9, 1, 4, 2, 5, 2, 4, 2, 5, 10],
[4, 5, 9, 10, 6, 1, 7, 1, 6, 1, 7, 2, 11, 2, 7],
[10, 2, 1, 5, 11, 6, 11, 5, 9, 11, 9, 7, 4, 7, 9],
],
[
[10, 5, 6, 7, 0, 8, 0, 7, 1, 4, 1, 7, 1, 4, 9],
[7, 4, 8, 9, 5, 0, 6, 0, 5, 0, 6, 1, 10, 1, 6],
[9, 1, 0, 4, 10, 5, 10, 4, 8, 10, 8, 6, 7, 6, 8],
],
[
[11, 3, 2, 9, 5, 0, 6, 0, 5, 0, 6, 1, 10, 1, 6],
[9, 1, 0, 5, 2, 10, 2, 5, 3, 6, 3, 5, 3, 6, 11],
[10, 5, 6, 2, 11, 1, 9, 1, 11, 3, 9, 11, 9, 3, 0],
],
[
[9, 1, 0, 11, 7, 2, 4, 2, 7, 2, 4, 3, 8, 3, 4],
[11, 3, 2, 7, 0, 8, 0, 7, 1, 4, 1, 7, 1, 4, 9],
[7, 4, 8, 0, 9, 3, 11, 3, 9, 1, 11, 9, 11, 1, 2],
],
[
[4, 5, 9, 6, 3, 11, 3, 6, 0, 7, 0, 6, 0, 7, 8],
[6, 7, 11, 8, 4, 3, 5, 3, 4, 3, 5, 0, 9, 0, 5],
[8, 0, 3, 7, 9, 4, 9, 7, 11, 9, 11, 5, 6, 5, 11],
],
[
[8, 0, 3, 10, 6, 1, 7, 1, 6, 1, 7, 2, 11, 2, 7],
[10, 2, 1, 6, 3, 11, 3, 6, 0, 7, 0, 6, 0, 7, 8],
[6, 7, 11, 3, 8, 2, 10, 2, 8, 0, 10, 8, 10, 0, 1],
],
[
[10, 2, 1, 8, 4, 3, 5, 3, 4, 3, 5, 0, 9, 0, 5],
[8, 0, 3, 4, 1, 9, 1, 4, 2, 5, 2, 4, 2, 5, 10],
[4, 5, 9, 1, 10, 0, 8, 0, 10, 2, 8, 10, 8, 2, 3],
],
];
pub const TILING_EDGES_7_2: [[[Edge; 15]; 3]; 16] = convert_tiling2(&TILING_7_2);
pub const TILING_7_3: [[[i8; 27]; 3]; 16] = [
[
[
12, 2, 10, 12, 10, 5, 12, 5, 4, 12, 4, 8, 12, 8, 3, 12, 3, 0, 12, 0, 9, 12, 9, 1, 12,
1, 2,
],
[
12, 5, 4, 12, 4, 8, 12, 8, 3, 12, 3, 2, 12, 2, 10, 12, 10, 1, 12, 1, 0, 12, 0, 9, 12,
9, 5,
],
[
5, 4, 12, 10, 5, 12, 2, 10, 12, 3, 2, 12, 8, 3, 12, 0, 8, 12, 1, 0, 12, 9, 1, 12, 4, 9,
12,
],
],
[
[
12, 0, 8, 12, 8, 7, 12, 7, 6, 12, 6, 10, 12, 10, 1, 12, 1, 2, 12, 2, 11, 12, 11, 3, 12,
3, 0,
],
[
12, 7, 6, 12, 6, 10, 12, 10, 1, 12, 1, 0, 12, 0, 8, 12, 8, 3, 12, 3, 2, 12, 2, 11, 12,
11, 7,
],
[
7, 6, 12, 8, 7, 12, 0, 8, 12, 1, 0, 12, 10, 1, 12, 2, 10, 12, 3, 2, 12, 11, 3, 12, 6,
11, 12,
],
],
[
[
9, 5, 12, 0, 9, 12, 3, 0, 12, 11, 3, 12, 6, 11, 12, 7, 6, 12, 8, 7, 12, 4, 8, 12, 5, 4,
12,
],
[
3, 0, 12, 11, 3, 12, 6, 11, 12, 5, 6, 12, 9, 5, 12, 4, 9, 12, 7, 4, 12, 8, 7, 12, 0, 8,
12,
],
[
12, 3, 0, 12, 0, 9, 12, 9, 5, 12, 5, 6, 12, 6, 11, 12, 11, 7, 12, 7, 4, 12, 4, 8, 12,
8, 3,
],
],
[
[
12, 1, 9, 12, 9, 4, 12, 4, 7, 12, 7, 11, 12, 11, 2, 12, 2, 3, 12, 3, 8, 12, 8, 0, 12,
0, 1,
],
[
12, 4, 7, 12, 7, 11, 12, 11, 2, 12, 2, 1, 12, 1, 9, 12, 9, 0, 12, 0, 3, 12, 3, 8, 12,
8, 4,
],
[
4, 7, 12, 9, 4, 12, 1, 9, 12, 2, 1, 12, 11, 2, 12, 3, 11, 12, 0, 3, 12, 8, 0, 12, 7, 8,
12,
],
],
[
[
12, 3, 11, 12, 11, 6, 12, 6, 5, 12, 5, 9, 12, 9, 0, 12, 0, 1, 12, 1, 10, 12, 10, 2, 12,
2, 3,
],
[
12, 6, 5, 12, 5, 9, 12, 9, 0, 12, 0, 3, 12, 3, 11, 12, 11, 2, 12, 2, 1, 12, 1, 10, 12,
10, 6,
],
[
6, 5, 12, 11, 6, 12, 3, 11, 12, 0, 3, 12, 9, 0, 12, 1, 9, 12, 2, 1, 12, 10, 2, 12, 5,
10, 12,
],
],
[
[
10, 6, 12, 1, 10, 12, 0, 1, 12, 8, 0, 12, 7, 8, 12, 4, 7, 12, 9, 4, 12, 5, 9, 12, 6, 5,
12,
],
[
0, 1, 12, 8, 0, 12, 7, 8, 12, 6, 7, 12, 10, 6, 12, 5, 10, 12, 4, 5, 12, 9, 4, 12, 1, 9,
12,
],
[
12, 0, 1, 12, 1, 10, 12, 10, 6, 12, 6, 7, 12, 7, 8, 12, 8, 4, 12, 4, 5, 12, 5, 9, 12,
9, 0,
],
],
[
[
11, 7, 12, 2, 11, 12, 1, 2, 12, 9, 1, 12, 4, 9, 12, 5, 4, 12, 10, 5, 12, 6, 10, 12, 7,
6, 12,
],
[
1, 2, 12, 9, 1, 12, 4, 9, 12, 7, 4, 12, 11, 7, 12, 6, 11, 12, 5, 6, 12, 10, 5, 12, 2,
10, 12,
],
[
12, 1, 2, 12, 2, 11, 12, 11, 7, 12, 7, 4, 12, 4, 9, 12, 9, 5, 12, 5, 6, 12, 6, 10, 12,
10, 1,
],
],
[
[
8, 4, 12, 3, 8, 12, 2, 3, 12, 10, 2, 12, 5, 10, 12, 6, 5, 12, 11, 6, 12, 7, 11, 12, 4,
7, 12,
],
[
2, 3, 12, 10, 2, 12, 5, 10, 12, 4, 5, 12, 8, 4, 12, 7, 8, 12, 6, 7, 12, 11, 6, 12, 3,
11, 12,
],
[
12, 2, 3, 12, 3, 8, 12, 8, 4, 12, 4, 5, 12, 5, 10, 12, 10, 6, 12, 6, 7, 12, 7, 11, 12,
11, 2,
],
],
[
[
12, 4, 8, 12, 8, 3, 12, 3, 2, 12, 2, 10, 12, 10, 5, 12, 5, 6, 12, 6, 11, 12, 11, 7, 12,
7, 4,
],
[
12, 3, 2, 12, 2, 10, 12, 10, 5, 12, 5, 4, 12, 4, 8, 12, 8, 7, 12, 7, 6, 12, 6, 11, 12,
11, 3,
],
[
3, 2, 12, 8, 3, 12, 4, 8, 12, 5, 4, 12, 10, 5, 12, 6, 10, 12, 7, 6, 12, 11, 7, 12, 2,
11, 12,
],
],
[
[
12, 7, 11, 12, 11, 2, 12, 2, 1, 12, 1, 9, 12, 9, 4, 12, 4, 5, 12, 5, 10, 12, 10, 6, 12,
6, 7,
],
[
12, 2, 1, 12, 1, 9, 12, 9, 4, 12, 4, 7, 12, 7, 11, 12, 11, 6, 12, 6, 5, 12, 5, 10, 12,
10, 2,
],
[
2, 1, 12, 11, 2, 12, 7, 11, 12, 4, 7, 12, 9, 4, 12, 5, 9, 12, 6, 5, 12, 10, 6, 12, 1,
10, 12,
],
],
[
[
12, 6, 10, 12, 10, 1, 12, 1, 0, 12, 0, 8, 12, 8, 7, 12, 7, 4, 12, 4, 9, 12, 9, 5, 12,
5, 6,
],
[
12, 1, 0, 12, 0, 8, 12, 8, 7, 12, 7, 6, 12, 6, 10, 12, 10, 5, 12, 5, 4, 12, 4, 9, 12,
9, 1,
],
[
1, 0, 12, 10, 1, 12, 6, 10, 12, 7, 6, 12, 8, 7, 12, 4, 8, 12, 5, 4, 12, 9, 5, 12, 0, 9,
12,
],
],
[
[
11, 3, 12, 6, 11, 12, 5, 6, 12, 9, 5, 12, 0, 9, 12, 1, 0, 12, 10, 1, 12, 2, 10, 12, 3,
2, 12,
],
[
5, 6, 12, 9, 5, 12, 0, 9, 12, 3, 0, 12, 11, 3, 12, 2, 11, 12, 1, 2, 12, 10, 1, 12, 6,
10, 12,
],
[
12, 5, 6, 12, 6, 11, 12, 11, 3, 12, 3, 0, 12, 0, 9, 12, 9, 1, 12, 1, 2, 12, 2, 10, 12,
10, 5,
],
],
[
[
9, 1, 12, 4, 9, 12, 7, 4, 12, 11, 7, 12, 2, 11, 12, 3, 2, 12, 8, 3, 12, 0, 8, 12, 1, 0,
12,
],
[
7, 4, 12, 11, 7, 12, 2, 11, 12, 1, 2, 12, 9, 1, 12, 0, 9, 12, 3, 0, 12, 8, 3, 12, 4, 8,
12,
],
[
12, 7, 4, 12, 4, 9, 12, 9, 1, 12, 1, 2, 12, 2, 11, 12, 11, 3, 12, 3, 0, 12, 0, 8, 12,
8, 7,
],
],
[
[
12, 5, 9, 12, 9, 0, 12, 0, 3, 12, 3, 11, 12, 11, 6, 12, 6, 7, 12, 7, 8, 12, 8, 4, 12,
4, 5,
],
[
12, 0, 3, 12, 3, 11, 12, 11, 6, 12, 6, 5, 12, 5, 9, 12, 9, 4, 12, 4, 7, 12, 7, 8, 12,
8, 0,
],
[
0, 3, 12, 9, 0, 12, 5, 9, 12, 6, 5, 12, 11, 6, 12, 7, 11, 12, 4, 7, 12, 8, 4, 12, 3, 8,
12,
],
],
[
[
8, 0, 12, 7, 8, 12, 6, 7, 12, 10, 6, 12, 1, 10, 12, 2, 1, 12, 11, 2, 12, 3, 11, 12, 0,
3, 12,
],
[
6, 7, 12, 10, 6, 12, 1, 10, 12, 0, 1, 12, 8, 0, 12, 3, 8, 12, 2, 3, 12, 11, 2, 12, 7,
11, 12,
],
[
12, 6, 7, 12, 7, 8, 12, 8, 0, 12, 0, 1, 12, 1, 10, 12, 10, 2, 12, 2, 3, 12, 3, 11, 12,
11, 6,
],
],
[
[
10, 2, 12, 5, 10, 12, 4, 5, 12, 8, 4, 12, 3, 8, 12, 0, 3, 12, 9, 0, 12, 1, 9, 12, 2, 1,
12,
],
[
4, 5, 12, 8, 4, 12, 3, 8, 12, 2, 3, 12, 10, 2, 12, 1, 10, 12, 0, 1, 12, 9, 0, 12, 5, 9,
12,
],
[
12, 4, 5, 12, 5, 10, 12, 10, 2, 12, 2, 3, 12, 3, 8, 12, 8, 0, 12, 0, 1, 12, 1, 9, 12,
9, 4,
],
],
];
pub const TILING_EDGES_7_3: [[[Edge; 27]; 3]; 16] = convert_tiling2(&TILING_7_3);
pub const TILING_7_4_1: [[i8; 15]; 16] = [
[3, 4, 8, 4, 3, 10, 2, 10, 3, 4, 10, 5, 9, 1, 0],
[1, 6, 10, 6, 1, 8, 0, 8, 1, 6, 8, 7, 11, 3, 2],
[11, 3, 6, 9, 6, 3, 6, 9, 5, 0, 9, 3, 7, 4, 8],
[2, 7, 11, 7, 2, 9, 1, 9, 2, 7, 9, 4, 8, 0, 3],
[0, 5, 9, 5, 0, 11, 3, 11, 0, 5, 11, 6, 10, 2, 1],
[8, 0, 7, 10, 7, 0, 7, 10, 6, 1, 10, 0, 4, 5, 9],
[9, 1, 4, 11, 4, 1, 4, 11, 7, 2, 11, 1, 5, 6, 10],
[10, 2, 5, 8, 5, 2, 5, 8, 4, 3, 8, 2, 6, 7, 11],
[5, 2, 10, 2, 5, 8, 4, 8, 5, 2, 8, 3, 11, 7, 6],
[4, 1, 9, 1, 4, 11, 7, 11, 4, 1, 11, 2, 10, 6, 5],
[7, 0, 8, 0, 7, 10, 6, 10, 7, 0, 10, 1, 9, 5, 4],
[9, 5, 0, 11, 0, 5, 0, 11, 3, 6, 11, 5, 1, 2, 10],
[11, 7, 2, 9, 2, 7, 2, 9, 1, 4, 9, 7, 3, 0, 8],
[6, 3, 11, 3, 6, 9, 5, 9, 6, 3, 9, 0, 8, 4, 7],
[10, 6, 1, 8, 1, 6, 1, 8, 0, 7, 8, 6, 2, 3, 11],
[8, 4, 3, 10, 3, 4, 3, 10, 2, 5, 10, 4, 0, 1, 9],
];
pub const TILING_EDGES_7_4_1: [[Edge; 15]; 16] = convert_tiling(&TILING_7_4_1);
pub const TILING_7_4_2: [[i8; 27]; 16] = [
[
9, 4, 8, 4, 9, 5, 10, 5, 9, 1, 10, 9, 10, 1, 2, 0, 2, 1, 2, 0, 3, 8, 3, 0, 9, 8, 0,
],
[
11, 6, 10, 6, 11, 7, 8, 7, 11, 3, 8, 11, 8, 3, 0, 2, 0, 3, 0, 2, 1, 10, 1, 2, 11, 10, 2,
],
[
11, 3, 8, 0, 8, 3, 8, 0, 9, 8, 9, 4, 5, 4, 9, 4, 5, 7, 6, 7, 5, 7, 6, 11, 7, 11, 8,
],
[
8, 7, 11, 7, 8, 4, 9, 4, 8, 0, 9, 8, 9, 0, 1, 3, 1, 0, 1, 3, 2, 11, 2, 3, 8, 11, 3,
],
[
10, 5, 9, 5, 10, 6, 11, 6, 10, 2, 11, 10, 11, 2, 3, 1, 3, 2, 3, 1, 0, 9, 0, 1, 10, 9, 1,
],
[
8, 0, 9, 1, 9, 0, 9, 1, 10, 9, 10, 5, 6, 5, 10, 5, 6, 4, 7, 4, 6, 4, 7, 8, 4, 8, 9,
],
[
9, 1, 10, 2, 10, 1, 10, 2, 11, 10, 11, 6, 7, 6, 11, 6, 7, 5, 4, 5, 7, 5, 4, 9, 5, 9, 10,
],
[
10, 2, 11, 3, 11, 2, 11, 3, 8, 11, 8, 7, 4, 7, 8, 7, 4, 6, 5, 6, 4, 6, 5, 10, 6, 10, 11,
],
[
11, 2, 10, 2, 11, 3, 8, 3, 11, 7, 8, 11, 8, 7, 4, 6, 4, 7, 4, 6, 5, 10, 5, 6, 11, 10, 6,
],
[
10, 1, 9, 1, 10, 2, 11, 2, 10, 6, 11, 10, 11, 6, 7, 5, 7, 6, 7, 5, 4, 9, 4, 5, 10, 9, 5,
],
[
9, 0, 8, 0, 9, 1, 10, 1, 9, 5, 10, 9, 10, 5, 6, 4, 6, 5, 6, 4, 7, 8, 7, 4, 9, 8, 4,
],
[
9, 5, 10, 6, 10, 5, 10, 6, 11, 10, 11, 2, 3, 2, 11, 2, 3, 1, 0, 1, 3, 1, 0, 9, 1, 9, 10,
],
[
11, 7, 8, 4, 8, 7, 8, 4, 9, 8, 9, 0, 1, 0, 9, 0, 1, 3, 2, 3, 1, 3, 2, 11, 3, 11, 8,
],
[
8, 3, 11, 3, 8, 0, 9, 0, 8, 4, 9, 8, 9, 4, 5, 7, 5, 4, 5, 7, 6, 11, 6, 7, 8, 11, 7,
],
[
10, 6, 11, 7, 11, 6, 11, 7, 8, 11, 8, 3, 0, 3, 8, 3, 0, 2, 1, 2, 0, 2, 1, 10, 2, 10, 11,
],
[
8, 4, 9, 5, 9, 4, 9, 5, 10, 9, 10, 1, 2, 1, 10, 1, 2, 0, 3, 0, 2, 0, 3, 8, 0, 8, 9,
],
];
pub const TILING_EDGES_7_4_2: [[Edge; 27]; 16] = convert_tiling(&TILING_7_4_2);
pub const TILING_8: [[i8; 6]; 6] = [
[9, 8, 10, 10, 8, 11],
[1, 5, 3, 3, 5, 7],
[0, 4, 2, 4, 6, 2],
[0, 2, 4, 4, 2, 6],
[1, 3, 5, 3, 7, 5],
[9, 10, 8, 10, 11, 8],
];
pub const TILING_EDGES_8: [[Edge; 6]; 6] = convert_tiling(&TILING_8);
pub const TILING_9: [[i8; 12]; 8] = [
[2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8],
[4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1],
[10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8],
[3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5],
[3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9],
[10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0],
[4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2],
[2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4],
];
pub const TILING_EDGES_9: [[Edge; 12]; 8] = convert_tiling(&TILING_9);
pub const TEST_10: [[i8; 3]; 6] = [
[2, 4, 7],
[5, 6, 7],
[1, 3, 7],
[1, 3, 7],
[5, 6, 7],
[2, 4, 7],
];
pub const TILING_10_1_1: [[i8; 12]; 6] = [
[5, 10, 7, 11, 7, 10, 8, 1, 9, 1, 8, 3],
[1, 2, 5, 6, 5, 2, 4, 3, 0, 3, 4, 7],
[11, 0, 8, 0, 11, 2, 4, 9, 6, 10, 6, 9],
[9, 0, 10, 2, 10, 0, 6, 8, 4, 8, 6, 11],
[7, 2, 3, 2, 7, 6, 0, 1, 4, 5, 4, 1],
[7, 9, 5, 9, 7, 8, 10, 1, 11, 3, 11, 1],
];
pub const TILING_EDGES_10_1_1: [[Edge; 12]; 6] = convert_tiling(&TILING_10_1_1);
pub const TILING_10_1_1_: [[i8; 12]; 6] = [
[5, 9, 7, 8, 7, 9, 11, 1, 10, 1, 11, 3],
[3, 2, 7, 6, 7, 2, 4, 1, 0, 1, 4, 5],
[10, 0, 9, 0, 10, 2, 4, 8, 6, 11, 6, 8],
[8, 0, 11, 2, 11, 0, 6, 9, 4, 9, 6, 10],
[5, 2, 1, 2, 5, 6, 0, 3, 4, 7, 4, 3],
[7, 10, 5, 10, 7, 11, 9, 1, 8, 3, 8, 1],
];
pub const TILING_EDGES_10_1_1_: [[Edge; 12]; 6] = convert_tiling(&TILING_10_1_1_);
pub const TILING_10_1_2: [[i8; 24]; 6] = [
[
3, 11, 7, 3, 7, 8, 9, 8, 7, 5, 9, 7, 9, 5, 10, 9, 10, 1, 3, 1, 10, 11, 3, 10,
],
[
7, 6, 5, 7, 5, 4, 0, 4, 5, 1, 0, 5, 0, 1, 2, 0, 2, 3, 7, 3, 2, 6, 7, 2,
],
[
11, 2, 10, 6, 11, 10, 11, 6, 4, 11, 4, 8, 0, 8, 4, 9, 0, 4, 0, 9, 10, 0, 10, 2,
],
[
11, 2, 10, 11, 10, 6, 4, 6, 10, 9, 4, 10, 4, 9, 0, 4, 0, 8, 11, 8, 0, 2, 11, 0,
],
[
7, 6, 5, 4, 7, 5, 7, 4, 0, 7, 0, 3, 2, 3, 0, 1, 2, 0, 2, 1, 5, 2, 5, 6,
],
[
7, 8, 3, 11, 7, 3, 7, 11, 10, 7, 10, 5, 9, 5, 10, 1, 9, 10, 9, 1, 3, 9, 3, 8,
],
];
pub const TILING_EDGES_10_1_2: [[Edge; 24]; 6] = convert_tiling(&TILING_10_1_2);
pub const TILING_10_2: [[i8; 24]; 6] = [
[
12, 5, 9, 12, 9, 8, 12, 8, 3, 12, 3, 1, 12, 1, 10, 12, 10, 11, 12, 11, 7, 12, 7, 5,
],
[
12, 1, 0, 12, 0, 4, 12, 4, 7, 12, 7, 3, 12, 3, 2, 12, 2, 6, 12, 6, 5, 12, 5, 1,
],
[
4, 8, 12, 6, 4, 12, 10, 6, 12, 9, 10, 12, 0, 9, 12, 2, 0, 12, 11, 2, 12, 8, 11, 12,
],
[
12, 9, 4, 12, 4, 6, 12, 6, 11, 12, 11, 8, 12, 8, 0, 12, 0, 2, 12, 2, 10, 12, 10, 9,
],
[
0, 3, 12, 4, 0, 12, 5, 4, 12, 1, 5, 12, 2, 1, 12, 6, 2, 12, 7, 6, 12, 3, 7, 12,
],
[
10, 5, 12, 11, 10, 12, 3, 11, 12, 1, 3, 12, 9, 1, 12, 8, 9, 12, 7, 8, 12, 5, 7, 12,
],
];
pub const TILING_EDGES_10_2: [[Edge; 24]; 6] = convert_tiling(&TILING_10_2);
pub const TILING_10_2_: [[i8; 24]; 6] = [
[
8, 7, 12, 9, 8, 12, 1, 9, 12, 3, 1, 12, 11, 3, 12, 10, 11, 12, 5, 10, 12, 7, 5, 12,
],
[
4, 5, 12, 0, 4, 12, 3, 0, 12, 7, 3, 12, 6, 7, 12, 2, 6, 12, 1, 2, 12, 5, 1, 12,
],
[
12, 11, 6, 12, 6, 4, 12, 4, 9, 12, 9, 10, 12, 10, 2, 12, 2, 0, 12, 0, 8, 12, 8, 11,
],
[
6, 10, 12, 4, 6, 12, 8, 4, 12, 11, 8, 12, 2, 11, 12, 0, 2, 12, 9, 0, 12, 10, 9, 12,
],
[
12, 7, 4, 12, 4, 0, 12, 0, 1, 12, 1, 5, 12, 5, 6, 12, 6, 2, 12, 2, 3, 12, 3, 7,
],
[
12, 7, 11, 12, 11, 10, 12, 10, 1, 12, 1, 3, 12, 3, 8, 12, 8, 9, 12, 9, 5, 12, 5, 7,
],
];
pub const TILING_EDGES_10_2_: [[Edge; 24]; 6] = convert_tiling(&TILING_10_2_);
pub const TILING_11: [[i8; 12]; 12] = [
[2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4],
[1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6],
[8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10],
[0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6],
[9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11],
[5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0],
[5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3],
[9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7],
[0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11],
[8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1],
[1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7],
[2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9],
];
pub const TILING_EDGES_11: [[Edge; 12]; 12] = convert_tiling(&TILING_11);
pub const TEST_12: [[i8; 4]; 24] = [
[4, 3, 7, 11],
[3, 2, 7, 10],
[2, 6, 7, 5],
[6, 4, 7, 7],
[2, 1, 7, 9],
[5, 2, 7, 1],
[5, 3, 7, 2],
[5, 1, 7, 0],
[5, 4, 7, 3],
[6, 3, 7, 6],
[1, 6, 7, 4],
[1, 4, 7, 8],
[4, 1, 7, 8],
[6, 1, 7, 4],
[3, 6, 7, 6],
[4, 5, 7, 3],
[1, 5, 7, 0],
[3, 5, 7, 2],
[2, 5, 7, 1],
[1, 2, 7, 9],
[4, 6, 7, 7],
[6, 2, 7, 5],
[2, 3, 7, 10],
[3, 4, 7, 11],
];
pub const TILING_12_1_1: [[i8; 12]; 24] = [
[7, 6, 11, 10, 3, 2, 3, 10, 8, 9, 8, 10],
[6, 5, 10, 9, 2, 1, 2, 9, 11, 8, 11, 9],
[10, 6, 5, 7, 9, 4, 9, 7, 1, 3, 1, 7],
[7, 6, 11, 4, 8, 5, 3, 5, 8, 5, 3, 1],
[5, 4, 9, 8, 1, 0, 1, 8, 10, 11, 10, 8],
[1, 2, 10, 0, 9, 3, 5, 3, 9, 3, 5, 7],
[10, 1, 2, 0, 11, 3, 11, 0, 6, 4, 6, 0],
[8, 3, 0, 2, 9, 1, 9, 2, 4, 6, 4, 2],
[3, 0, 8, 2, 11, 1, 7, 1, 11, 1, 7, 5],
[6, 5, 10, 7, 11, 4, 2, 4, 11, 4, 2, 0],
[9, 5, 4, 6, 8, 7, 8, 6, 0, 2, 0, 6],
[8, 3, 0, 7, 4, 11, 9, 11, 4, 11, 9, 10],
[4, 7, 8, 11, 0, 3, 0, 11, 9, 10, 9, 11],
[4, 7, 8, 5, 9, 6, 0, 6, 9, 6, 0, 2],
[11, 7, 6, 4, 10, 5, 10, 4, 2, 0, 2, 4],
[11, 2, 3, 1, 8, 0, 8, 1, 7, 5, 7, 1],
[0, 1, 9, 3, 8, 2, 4, 2, 8, 2, 4, 6],
[2, 3, 11, 1, 10, 0, 6, 0, 10, 0, 6, 4],
[9, 0, 1, 3, 10, 2, 10, 3, 5, 7, 5, 3],
[9, 0, 1, 4, 5, 8, 10, 8, 5, 8, 10, 11],
[8, 4, 7, 5, 11, 6, 11, 5, 3, 1, 3, 5],
[5, 4, 9, 6, 10, 7, 1, 7, 10, 7, 1, 3],
[10, 1, 2, 5, 6, 9, 11, 9, 6, 9, 11, 8],
[11, 2, 3, 6, 7, 10, 8, 10, 7, 10, 8, 9],
];
pub const TILING_EDGES_12_1_1: [[Edge; 12]; 24] = convert_tiling(&TILING_12_1_1);
pub const TILING_12_1_1_: [[i8; 12]; 24] = [
[3, 2, 11, 10, 7, 6, 7, 10, 8, 9, 8, 10],
[2, 1, 10, 9, 6, 5, 6, 9, 11, 8, 11, 9],
[9, 4, 5, 7, 10, 6, 10, 7, 1, 3, 1, 7],
[7, 4, 8, 6, 11, 5, 3, 5, 11, 5, 3, 1],
[1, 0, 9, 8, 5, 4, 5, 8, 10, 11, 10, 8],
[1, 0, 9, 2, 10, 3, 5, 3, 10, 3, 5, 7],
[11, 3, 2, 0, 10, 1, 10, 0, 6, 4, 6, 0],
[9, 1, 0, 2, 8, 3, 8, 2, 4, 6, 4, 2],
[3, 2, 11, 0, 8, 1, 7, 1, 8, 1, 7, 5],
[6, 7, 11, 5, 10, 4, 2, 4, 10, 4, 2, 0],
[8, 7, 4, 6, 9, 5, 9, 6, 0, 2, 0, 6],
[8, 7, 4, 3, 0, 11, 9, 11, 0, 11, 9, 10],
[0, 3, 8, 11, 4, 7, 4, 11, 9, 10, 9, 11],
[4, 5, 9, 7, 8, 6, 0, 6, 8, 6, 0, 2],
[10, 5, 6, 4, 11, 7, 11, 4, 2, 0, 2, 4],
[8, 0, 3, 1, 11, 2, 11, 1, 7, 5, 7, 1],
[0, 3, 8, 1, 9, 2, 4, 2, 9, 2, 4, 6],
[2, 1, 10, 3, 11, 0, 6, 0, 11, 0, 6, 4],
[10, 2, 1, 3, 9, 0, 9, 3, 5, 7, 5, 3],
[9, 4, 5, 0, 1, 8, 10, 8, 1, 8, 10, 11],
[11, 6, 7, 5, 8, 4, 8, 5, 3, 1, 3, 5],
[5, 6, 10, 4, 9, 7, 1, 7, 9, 7, 1, 3],
[10, 5, 6, 1, 2, 9, 11, 9, 2, 9, 11, 8],
[11, 6, 7, 2, 3, 10, 8, 10, 3, 10, 8, 9],
];
pub const TILING_EDGES_12_1_1_: [[Edge; 12]; 24] = convert_tiling(&TILING_12_1_1_);
pub const TILING_12_1_2: [[i8; 24]; 24] = [
[
7, 3, 11, 3, 7, 8, 9, 8, 7, 6, 9, 7, 9, 6, 10, 2, 10, 6, 11, 2, 6, 2, 11, 3,
],
[
6, 2, 10, 2, 6, 11, 8, 11, 6, 5, 8, 6, 8, 5, 9, 1, 9, 5, 10, 1, 5, 1, 10, 2,
],
[
10, 9, 5, 9, 10, 1, 3, 1, 10, 6, 3, 10, 3, 6, 7, 4, 7, 6, 5, 4, 6, 4, 5, 9,
],
[
7, 8, 11, 3, 11, 8, 11, 3, 1, 11, 1, 6, 5, 6, 1, 6, 5, 4, 6, 4, 7, 8, 7, 4,
],
[
5, 1, 9, 1, 5, 10, 11, 10, 5, 4, 11, 5, 11, 4, 8, 0, 8, 4, 9, 0, 4, 0, 9, 1,
],
[
1, 9, 10, 5, 10, 9, 10, 5, 7, 10, 7, 2, 3, 2, 7, 2, 3, 0, 2, 0, 1, 9, 1, 0,
],
[
10, 11, 2, 11, 10, 6, 4, 6, 10, 1, 4, 10, 4, 1, 0, 3, 0, 1, 2, 3, 1, 3, 2, 11,
],
[
8, 9, 0, 9, 8, 4, 6, 4, 8, 3, 6, 8, 6, 3, 2, 1, 2, 3, 0, 1, 3, 1, 0, 9,
],
[
3, 11, 8, 7, 8, 11, 8, 7, 5, 8, 5, 0, 1, 0, 5, 0, 1, 2, 0, 2, 3, 11, 3, 2,
],
[
6, 11, 10, 2, 10, 11, 10, 2, 0, 10, 0, 5, 4, 5, 0, 5, 4, 7, 5, 7, 6, 11, 6, 7,
],
[
9, 8, 4, 8, 9, 0, 2, 0, 9, 5, 2, 9, 2, 5, 6, 7, 6, 5, 4, 7, 5, 7, 4, 8,
],
[
8, 4, 0, 9, 0, 4, 0, 9, 10, 0, 10, 3, 11, 3, 10, 3, 11, 7, 3, 7, 8, 4, 8, 7,
],
[
4, 0, 8, 0, 4, 9, 10, 9, 4, 7, 10, 4, 10, 7, 11, 3, 11, 7, 8, 3, 7, 3, 8, 0,
],
[
4, 9, 8, 0, 8, 9, 8, 0, 2, 8, 2, 7, 6, 7, 2, 7, 6, 5, 7, 5, 4, 9, 4, 5,
],
[
11, 10, 6, 10, 11, 2, 0, 2, 11, 7, 0, 11, 0, 7, 4, 5, 4, 7, 6, 5, 7, 5, 6, 10,
],
[
11, 8, 3, 8, 11, 7, 5, 7, 11, 2, 5, 11, 5, 2, 1, 0, 1, 2, 3, 0, 2, 0, 3, 8,
],
[
0, 8, 9, 4, 9, 8, 9, 4, 6, 9, 6, 1, 2, 1, 6, 1, 2, 3, 1, 3, 0, 8, 0, 3,
],
[
2, 10, 11, 6, 11, 10, 11, 6, 4, 11, 4, 3, 0, 3, 4, 3, 0, 1, 3, 1, 2, 10, 2, 1,
],
[
9, 10, 1, 10, 9, 5, 7, 5, 9, 0, 7, 9, 7, 0, 3, 2, 3, 0, 1, 2, 0, 2, 1, 10,
],
[
9, 5, 1, 10, 1, 5, 1, 10, 11, 1, 11, 0, 8, 0, 11, 0, 8, 4, 0, 4, 9, 5, 9, 4,
],
[
8, 11, 7, 11, 8, 3, 1, 3, 8, 4, 1, 8, 1, 4, 5, 6, 5, 4, 7, 6, 4, 6, 7, 11,
],
[
5, 10, 9, 1, 9, 10, 9, 1, 3, 9, 3, 4, 7, 4, 3, 4, 7, 6, 4, 6, 5, 10, 5, 6,
],
[
10, 6, 2, 11, 2, 6, 2, 11, 8, 2, 8, 1, 9, 1, 8, 1, 9, 5, 1, 5, 10, 6, 10, 5,
],
[
11, 7, 3, 8, 3, 7, 3, 8, 9, 3, 9, 2, 10, 2, 9, 2, 10, 6, 2, 6, 11, 7, 11, 6,
],
];
pub const TILING_EDGES_12_1_2: [[Edge; 24]; 24] = convert_tiling(&TILING_12_1_2);
pub const TILING_12_2: [[i8; 24]; 24] = [
[
9, 8, 12, 10, 9, 12, 2, 10, 12, 3, 2, 12, 11, 3, 12, 6, 11, 12, 7, 6, 12, 8, 7, 12,
],
[
8, 11, 12, 9, 8, 12, 1, 9, 12, 2, 1, 12, 10, 2, 12, 5, 10, 12, 6, 5, 12, 11, 6, 12,
],
[
3, 1, 12, 7, 3, 12, 4, 7, 12, 9, 4, 12, 5, 9, 12, 6, 5, 12, 10, 6, 12, 1, 10, 12,
],
[
12, 3, 1, 12, 1, 5, 12, 5, 6, 12, 6, 11, 12, 11, 7, 12, 7, 4, 12, 4, 8, 12, 8, 3,
],
[
11, 10, 12, 8, 11, 12, 0, 8, 12, 1, 0, 12, 9, 1, 12, 4, 9, 12, 5, 4, 12, 10, 5, 12,
],
[
12, 5, 7, 12, 7, 3, 12, 3, 2, 12, 2, 10, 12, 10, 1, 12, 1, 0, 12, 0, 9, 12, 9, 5,
],
[
4, 6, 12, 0, 4, 12, 1, 0, 12, 10, 1, 12, 2, 10, 12, 3, 2, 12, 11, 3, 12, 6, 11, 12,
],
[
6, 4, 12, 2, 6, 12, 3, 2, 12, 8, 3, 12, 0, 8, 12, 1, 0, 12, 9, 1, 12, 4, 9, 12,
],
[
12, 7, 5, 12, 5, 1, 12, 1, 0, 12, 0, 8, 12, 8, 3, 12, 3, 2, 12, 2, 11, 12, 11, 7,
],
[
12, 2, 0, 12, 0, 4, 12, 4, 5, 12, 5, 10, 12, 10, 6, 12, 6, 7, 12, 7, 11, 12, 11, 2,
],
[
2, 0, 12, 6, 2, 12, 7, 6, 12, 8, 7, 12, 4, 8, 12, 5, 4, 12, 9, 5, 12, 0, 9, 12,
],
[
12, 9, 10, 12, 10, 11, 12, 11, 7, 12, 7, 4, 12, 4, 8, 12, 8, 3, 12, 3, 0, 12, 0, 9,
],
[
10, 9, 12, 11, 10, 12, 7, 11, 12, 4, 7, 12, 8, 4, 12, 3, 8, 12, 0, 3, 12, 9, 0, 12,
],
[
12, 0, 2, 12, 2, 6, 12, 6, 7, 12, 7, 8, 12, 8, 4, 12, 4, 5, 12, 5, 9, 12, 9, 0,
],
[
0, 2, 12, 4, 0, 12, 5, 4, 12, 10, 5, 12, 6, 10, 12, 7, 6, 12, 11, 7, 12, 2, 11, 12,
],
[
5, 7, 12, 1, 5, 12, 0, 1, 12, 8, 0, 12, 3, 8, 12, 2, 3, 12, 11, 2, 12, 7, 11, 12,
],
[
12, 4, 6, 12, 6, 2, 12, 2, 3, 12, 3, 8, 12, 8, 0, 12, 0, 1, 12, 1, 9, 12, 9, 4,
],
[
12, 6, 4, 12, 4, 0, 12, 0, 1, 12, 1, 10, 12, 10, 2, 12, 2, 3, 12, 3, 11, 12, 11, 6,
],
[
7, 5, 12, 3, 7, 12, 2, 3, 12, 10, 2, 12, 1, 10, 12, 0, 1, 12, 9, 0, 12, 5, 9, 12,
],
[
12, 10, 11, 12, 11, 8, 12, 8, 0, 12, 0, 1, 12, 1, 9, 12, 9, 4, 12, 4, 5, 12, 5, 10,
],
[
1, 3, 12, 5, 1, 12, 6, 5, 12, 11, 6, 12, 7, 11, 12, 4, 7, 12, 8, 4, 12, 3, 8, 12,
],
[
12, 1, 3, 12, 3, 7, 12, 7, 4, 12, 4, 9, 12, 9, 5, 12, 5, 6, 12, 6, 10, 12, 10, 1,
],
[
12, 11, 8, 12, 8, 9, 12, 9, 1, 12, 1, 2, 12, 2, 10, 12, 10, 5, 12, 5, 6, 12, 6, 11,
],
[
12, 8, 9, 12, 9, 10, 12, 10, 2, 12, 2, 3, 12, 3, 11, 12, 11, 6, 12, 6, 7, 12, 7, 8,
],
];
pub const TILING_EDGES_12_2: [[Edge; 24]; 24] = convert_tiling(&TILING_12_2);
pub const TILING_12_2_: [[i8; 24]; 24] = [
[
12, 2, 11, 12, 11, 7, 12, 7, 6, 12, 6, 10, 12, 10, 9, 12, 9, 8, 12, 8, 3, 12, 3, 2,
],
[
12, 1, 10, 12, 10, 6, 12, 6, 5, 12, 5, 9, 12, 9, 8, 12, 8, 11, 12, 11, 2, 12, 2, 1,
],
[
12, 4, 5, 12, 5, 10, 12, 10, 6, 12, 6, 7, 12, 7, 3, 12, 3, 1, 12, 1, 9, 12, 9, 4,
],
[
7, 6, 12, 8, 7, 12, 4, 8, 12, 5, 4, 12, 1, 5, 12, 3, 1, 12, 11, 3, 12, 6, 11, 12,
],
[
12, 0, 9, 12, 9, 5, 12, 5, 4, 12, 4, 8, 12, 8, 11, 12, 11, 10, 12, 10, 1, 12, 1, 0,
],
[
1, 2, 12, 9, 1, 12, 0, 9, 12, 3, 0, 12, 7, 3, 12, 5, 7, 12, 10, 5, 12, 2, 10, 12,
],
[
12, 1, 2, 12, 2, 11, 12, 11, 3, 12, 3, 0, 12, 0, 4, 12, 4, 6, 12, 6, 10, 12, 10, 1,
],
[
12, 3, 0, 12, 0, 9, 12, 9, 1, 12, 1, 2, 12, 2, 6, 12, 6, 4, 12, 4, 8, 12, 8, 3,
],
[
3, 0, 12, 11, 3, 12, 2, 11, 12, 1, 2, 12, 5, 1, 12, 7, 5, 12, 8, 7, 12, 0, 8, 12,
],
[
6, 5, 12, 11, 6, 12, 7, 11, 12, 4, 7, 12, 0, 4, 12, 2, 0, 12, 10, 2, 12, 5, 10, 12,
],
[
12, 7, 4, 12, 4, 9, 12, 9, 5, 12, 5, 6, 12, 6, 2, 12, 2, 0, 12, 0, 8, 12, 8, 7,
],
[
8, 7, 12, 0, 8, 12, 3, 0, 12, 11, 3, 12, 10, 11, 12, 9, 10, 12, 4, 9, 12, 7, 4, 12,
],
[
12, 7, 8, 12, 8, 0, 12, 0, 3, 12, 3, 11, 12, 11, 10, 12, 10, 9, 12, 9, 4, 12, 4, 7,
],
[
4, 7, 12, 9, 4, 12, 5, 9, 12, 6, 5, 12, 2, 6, 12, 0, 2, 12, 8, 0, 12, 7, 8, 12,
],
[
12, 5, 6, 12, 6, 11, 12, 11, 7, 12, 7, 4, 12, 4, 0, 12, 0, 2, 12, 2, 10, 12, 10, 5,
],
[
12, 0, 3, 12, 3, 11, 12, 11, 2, 12, 2, 1, 12, 1, 5, 12, 5, 7, 12, 7, 8, 12, 8, 0,
],
[
0, 3, 12, 9, 0, 12, 1, 9, 12, 2, 1, 12, 6, 2, 12, 4, 6, 12, 8, 4, 12, 3, 8, 12,
],
[
2, 1, 12, 11, 2, 12, 3, 11, 12, 0, 3, 12, 4, 0, 12, 6, 4, 12, 10, 6, 12, 1, 10, 12,
],
[
12, 2, 1, 12, 1, 9, 12, 9, 0, 12, 0, 3, 12, 3, 7, 12, 7, 5, 12, 5, 10, 12, 10, 2,
],
[
9, 0, 12, 5, 9, 12, 4, 5, 12, 8, 4, 12, 11, 8, 12, 10, 11, 12, 1, 10, 12, 0, 1, 12,
],
[
12, 6, 7, 12, 7, 8, 12, 8, 4, 12, 4, 5, 12, 5, 1, 12, 1, 3, 12, 3, 11, 12, 11, 6,
],
[
5, 4, 12, 10, 5, 12, 6, 10, 12, 7, 6, 12, 3, 7, 12, 1, 3, 12, 9, 1, 12, 4, 9, 12,
],
[
10, 1, 12, 6, 10, 12, 5, 6, 12, 9, 5, 12, 8, 9, 12, 11, 8, 12, 2, 11, 12, 1, 2, 12,
],
[
11, 2, 12, 7, 11, 12, 6, 7, 12, 10, 6, 12, 9, 10, 12, 8, 9, 12, 3, 8, 12, 2, 3, 12,
],
];
pub const TILING_EDGES_12_2_: [[Edge; 24]; 24] = convert_tiling(&TILING_12_2_);
pub const TEST_13: [[i8; 7]; 2] = [
[1, 2, 3, 4, 5, 6, 7],
[2, 3, 4, 1, 5, 6, 7],
];
pub const SUB_CONFIG_13: [i8; 64] = [
0, 1, 2,
7, 3, -1,
11, -1, 4,
8, -1, -1,
14, -1, -1,
-1, 5, 9,
12, 23, 15,
-1, 21, 38,
17, 20, -1,
36, 26, 33,
30, 44, 6,
10, 13, 19,
16, -1, 25,
37, 18, 24,
-1, 35, 22,
32, 29, 43,
-1, -1, -1,
34, -1, -1,
28, 42, -1,
31, -1, 41,
27, 40, 39,
45,
];
pub const TILING_13_1: [[i8; 12]; 2] = [
[11, 7, 6, 1, 2, 10, 8, 3, 0, 9, 5, 4],
[8, 4, 7, 2, 3, 11, 9, 0, 1, 10, 6, 5],
];
pub const TILING_EDGES_13_1: [[Edge; 12]; 2] = convert_tiling(&TILING_13_1);
pub const TILING_13_1_: [[i8; 12]; 2] = [
[7, 4, 8, 11, 3, 2, 1, 0, 9, 5, 6, 10],
[6, 7, 11, 10, 2, 1, 0, 3, 8, 4, 5, 9],
];
pub const TILING_EDGES_13_1_: [[Edge; 12]; 2] = convert_tiling(&TILING_13_1_);
pub const TILING_13_2: [[[i8; 18]; 6]; 2] = [
[
[1, 2, 10, 11, 7, 6, 3, 4, 8, 4, 3, 5, 0, 5, 3, 5, 0, 9],
[8, 3, 0, 11, 7, 6, 9, 1, 4, 2, 4, 1, 4, 2, 5, 10, 5, 2],
[9, 5, 4, 8, 3, 0, 1, 6, 10, 6, 1, 7, 2, 7, 1, 7, 2, 11],
[9, 5, 4, 1, 2, 10, 11, 3, 6, 0, 6, 3, 6, 0, 7, 8, 7, 0],
[9, 5, 4, 11, 7, 6, 0, 10, 1, 10, 0, 8, 10, 8, 2, 3, 2, 8],
[1, 2, 10, 3, 0, 8, 4, 9, 7, 11, 7, 9, 5, 11, 9, 11, 5, 6],
],
[
[2, 3, 11, 8, 4, 7, 0, 5, 9, 5, 0, 6, 1, 6, 0, 6, 1, 10],
[9, 0, 1, 8, 4, 7, 10, 2, 5, 3, 5, 2, 5, 3, 6, 11, 6, 3],
[6, 5, 10, 9, 0, 1, 2, 7, 11, 7, 2, 4, 3, 4, 2, 4, 3, 8],
[6, 5, 10, 2, 3, 11, 8, 0, 7, 1, 7, 0, 7, 1, 4, 9, 4, 1],
[6, 5, 10, 8, 4, 7, 1, 11, 2, 11, 1, 9, 11, 9, 3, 0, 3, 9],
[2, 3, 11, 0, 1, 9, 5, 10, 4, 8, 4, 10, 6, 8, 10, 8, 6, 7],
],
];
pub const TILING_EDGES_13_2: [[[Edge; 18]; 6]; 2] = convert_tiling2(&TILING_13_2);
pub const TILING_13_2_: [[[i8; 18]; 6]; 2] = [
[
[10, 5, 6, 11, 3, 2, 7, 0, 8, 0, 7, 1, 4, 1, 7, 1, 4, 9],
[11, 3, 2, 7, 4, 8, 9, 5, 0, 6, 0, 5, 0, 6, 1, 10, 1, 6],
[1, 0, 9, 7, 4, 8, 5, 2, 10, 2, 5, 3, 6, 3, 5, 3, 6, 11],
[10, 5, 6, 1, 0, 9, 11, 7, 2, 4, 2, 7, 2, 4, 3, 8, 3, 4],
[10, 5, 6, 7, 4, 8, 2, 11, 1, 9, 1, 11, 3, 9, 11, 9, 3, 0],
[11, 3, 2, 9, 1, 0, 4, 10, 5, 10, 4, 8, 10, 8, 6, 7, 6, 8],
],
[
[6, 7, 11, 8, 0, 3, 4, 1, 9, 1, 4, 2, 5, 2, 4, 2, 5, 10],
[8, 0, 3, 4, 5, 9, 10, 6, 1, 7, 1, 6, 1, 7, 2, 11, 2, 7],
[2, 1, 10, 4, 5, 9, 6, 3, 11, 3, 6, 0, 7, 0, 6, 0, 7, 8],
[6, 7, 11, 2, 1, 10, 8, 4, 3, 5, 3, 4, 3, 5, 0, 9, 0, 5],
[6, 7, 11, 4, 5, 9, 3, 8, 2, 10, 2, 8, 0, 10, 8, 10, 0, 1],
[8, 0, 3, 10, 2, 1, 5, 11, 6, 11, 5, 9, 11, 9, 7, 4, 7, 9],
],
];
pub const TILING_EDGES_13_2_: [[[Edge; 18]; 6]; 2] = convert_tiling2(&TILING_13_2_);
pub const TILING_13_3: [[[i8; 30]; 12]; 2] = [
[
[
11, 7, 6, 12, 2, 10, 12, 10, 5, 12, 5, 4, 12, 4, 8, 12, 8, 3, 12, 3, 0, 12, 0, 9, 12,
9, 1, 12, 1, 2,
],
[
1, 2, 10, 9, 5, 12, 0, 9, 12, 3, 0, 12, 11, 3, 12, 6, 11, 12, 7, 6, 12, 8, 7, 12, 4, 8,
12, 5, 4, 12,
],
[
11, 7, 6, 12, 5, 4, 12, 4, 8, 12, 8, 3, 12, 3, 2, 12, 2, 10, 12, 10, 1, 12, 1, 0, 12,
0, 9, 12, 9, 5,
],
[
1, 2, 10, 12, 3, 0, 12, 0, 9, 12, 9, 5, 12, 5, 6, 12, 6, 11, 12, 11, 7, 12, 7, 4, 12,
4, 8, 12, 8, 3,
],
[
8, 3, 0, 11, 7, 12, 2, 11, 12, 1, 2, 12, 9, 1, 12, 4, 9, 12, 5, 4, 12, 10, 5, 12, 6,
10, 12, 7, 6, 12,
],
[
11, 7, 6, 5, 4, 12, 10, 5, 12, 2, 10, 12, 3, 2, 12, 8, 3, 12, 0, 8, 12, 1, 0, 12, 9, 1,
12, 4, 9, 12,
],
[
8, 3, 0, 1, 2, 12, 9, 1, 12, 4, 9, 12, 7, 4, 12, 11, 7, 12, 6, 11, 12, 5, 6, 12, 10, 5,
12, 2, 10, 12,
],
[
9, 5, 4, 12, 0, 8, 12, 8, 7, 12, 7, 6, 12, 6, 10, 12, 10, 1, 12, 1, 2, 12, 2, 11, 12,
11, 3, 12, 3, 0,
],
[
9, 5, 4, 12, 7, 6, 12, 6, 10, 12, 10, 1, 12, 1, 0, 12, 0, 8, 12, 8, 3, 12, 3, 2, 12, 2,
11, 12, 11, 7,
],
[
8, 3, 0, 12, 1, 2, 12, 2, 11, 12, 11, 7, 12, 7, 4, 12, 4, 9, 12, 9, 5, 12, 5, 6, 12, 6,
10, 12, 10, 1,
],
[
9, 5, 4, 7, 6, 12, 8, 7, 12, 0, 8, 12, 1, 0, 12, 10, 1, 12, 2, 10, 12, 3, 2, 12, 11, 3,
12, 6, 11, 12,
],
[
1, 2, 10, 3, 0, 12, 11, 3, 12, 6, 11, 12, 5, 6, 12, 9, 5, 12, 4, 9, 12, 7, 4, 12, 8, 7,
12, 0, 8, 12,
],
],
[
[
8, 4, 7, 12, 3, 11, 12, 11, 6, 12, 6, 5, 12, 5, 9, 12, 9, 0, 12, 0, 1, 12, 1, 10, 12,
10, 2, 12, 2, 3,
],
[
2, 3, 11, 10, 6, 12, 1, 10, 12, 0, 1, 12, 8, 0, 12, 7, 8, 12, 4, 7, 12, 9, 4, 12, 5, 9,
12, 6, 5, 12,
],
[
8, 4, 7, 12, 6, 5, 12, 5, 9, 12, 9, 0, 12, 0, 3, 12, 3, 11, 12, 11, 2, 12, 2, 1, 12, 1,
10, 12, 10, 6,
],
[
2, 3, 11, 12, 0, 1, 12, 1, 10, 12, 10, 6, 12, 6, 7, 12, 7, 8, 12, 8, 4, 12, 4, 5, 12,
5, 9, 12, 9, 0,
],
[
0, 1, 9, 8, 4, 12, 3, 8, 12, 2, 3, 12, 10, 2, 12, 5, 10, 12, 6, 5, 12, 11, 6, 12, 7,
11, 12, 4, 7, 12,
],
[
8, 4, 7, 6, 5, 12, 11, 6, 12, 3, 11, 12, 0, 3, 12, 9, 0, 12, 1, 9, 12, 2, 1, 12, 10, 2,
12, 5, 10, 12,
],
[
9, 0, 1, 2, 3, 12, 10, 2, 12, 5, 10, 12, 4, 5, 12, 8, 4, 12, 7, 8, 12, 6, 7, 12, 11, 6,
12, 3, 11, 12,
],
[
6, 5, 10, 12, 1, 9, 12, 9, 4, 12, 4, 7, 12, 7, 11, 12, 11, 2, 12, 2, 3, 12, 3, 8, 12,
8, 0, 12, 0, 1,
],
[
6, 5, 10, 12, 4, 7, 12, 7, 11, 12, 11, 2, 12, 2, 1, 12, 1, 9, 12, 9, 0, 12, 0, 3, 12,
3, 8, 12, 8, 4,
],
[
9, 0, 1, 12, 2, 3, 12, 3, 8, 12, 8, 4, 12, 4, 5, 12, 5, 10, 12, 10, 6, 12, 6, 7, 12, 7,
11, 12, 11, 2,
],
[
6, 5, 10, 4, 7, 12, 9, 4, 12, 1, 9, 12, 2, 1, 12, 11, 2, 12, 3, 11, 12, 0, 3, 12, 8, 0,
12, 7, 8, 12,
],
[
2, 3, 11, 0, 1, 12, 8, 0, 12, 7, 8, 12, 6, 7, 12, 10, 6, 12, 5, 10, 12, 4, 5, 12, 9, 4,
12, 1, 9, 12,
],
],
];
pub const TILING_EDGES_13_3: [[[Edge; 30]; 12]; 2] = convert_tiling2(&TILING_13_3);
pub const TILING_13_3_: [[[i8; 30]; 12]; 2] = [
[
[
3, 2, 11, 8, 7, 12, 0, 8, 12, 1, 0, 12, 10, 1, 12, 6, 10, 12, 5, 6, 12, 9, 5, 12, 4, 9,
12, 7, 4, 12,
],
[
5, 6, 10, 12, 2, 11, 12, 11, 7, 12, 7, 4, 12, 4, 9, 12, 9, 1, 12, 1, 0, 12, 0, 8, 12,
8, 3, 12, 3, 2,
],
[
10, 5, 6, 12, 7, 4, 12, 4, 9, 12, 9, 1, 12, 1, 2, 12, 2, 11, 12, 11, 3, 12, 3, 0, 12,
0, 8, 12, 8, 7,
],
[
11, 3, 2, 12, 1, 0, 12, 0, 8, 12, 8, 7, 12, 7, 6, 12, 6, 10, 12, 10, 5, 12, 5, 4, 12,
4, 9, 12, 9, 1,
],
[
7, 4, 8, 11, 3, 12, 6, 11, 12, 5, 6, 12, 9, 5, 12, 0, 9, 12, 1, 0, 12, 10, 1, 12, 2,
10, 12, 3, 2, 12,
],
[
7, 4, 8, 5, 6, 12, 9, 5, 12, 0, 9, 12, 3, 0, 12, 11, 3, 12, 2, 11, 12, 1, 2, 12, 10, 1,
12, 6, 10, 12,
],
[
11, 3, 2, 1, 0, 12, 10, 1, 12, 6, 10, 12, 7, 6, 12, 8, 7, 12, 4, 8, 12, 5, 4, 12, 9, 5,
12, 0, 9, 12,
],
[
1, 0, 9, 12, 4, 8, 12, 8, 3, 12, 3, 2, 12, 2, 10, 12, 10, 5, 12, 5, 6, 12, 6, 11, 12,
11, 7, 12, 7, 4,
],
[
7, 4, 8, 12, 5, 6, 12, 6, 11, 12, 11, 3, 12, 3, 0, 12, 0, 9, 12, 9, 1, 12, 1, 2, 12, 2,
10, 12, 10, 5,
],
[
1, 0, 9, 12, 3, 2, 12, 2, 10, 12, 10, 5, 12, 5, 4, 12, 4, 8, 12, 8, 7, 12, 7, 6, 12, 6,
11, 12, 11, 3,
],
[
10, 5, 6, 7, 4, 12, 11, 7, 12, 2, 11, 12, 1, 2, 12, 9, 1, 12, 0, 9, 12, 3, 0, 12, 8, 3,
12, 4, 8, 12,
],
[
9, 1, 0, 3, 2, 12, 8, 3, 12, 4, 8, 12, 5, 4, 12, 10, 5, 12, 6, 10, 12, 7, 6, 12, 11, 7,
12, 2, 11, 12,
],
],
[
[
0, 3, 8, 9, 4, 12, 1, 9, 12, 2, 1, 12, 11, 2, 12, 7, 11, 12, 6, 7, 12, 10, 6, 12, 5,
10, 12, 4, 5, 12,
],
[
11, 6, 7, 12, 3, 8, 12, 8, 4, 12, 4, 5, 12, 5, 10, 12, 10, 2, 12, 2, 1, 12, 1, 9, 12,
9, 0, 12, 0, 3,
],
[
6, 7, 11, 12, 4, 5, 12, 5, 10, 12, 10, 2, 12, 2, 3, 12, 3, 8, 12, 8, 0, 12, 0, 1, 12,
1, 9, 12, 9, 4,
],
[
8, 0, 3, 12, 2, 1, 12, 1, 9, 12, 9, 4, 12, 4, 7, 12, 7, 11, 12, 11, 6, 12, 6, 5, 12, 5,
10, 12, 10, 2,
],
[
4, 5, 9, 8, 0, 12, 7, 8, 12, 6, 7, 12, 10, 6, 12, 1, 10, 12, 2, 1, 12, 11, 2, 12, 3,
11, 12, 0, 3, 12,
],
[
4, 5, 9, 6, 7, 12, 10, 6, 12, 1, 10, 12, 0, 1, 12, 8, 0, 12, 3, 8, 12, 2, 3, 12, 11, 2,
12, 7, 11, 12,
],
[
8, 0, 3, 2, 1, 12, 11, 2, 12, 7, 11, 12, 4, 7, 12, 9, 4, 12, 5, 9, 12, 6, 5, 12, 10, 6,
12, 1, 10, 12,
],
[
2, 1, 10, 12, 5, 9, 12, 9, 0, 12, 0, 3, 12, 3, 11, 12, 11, 6, 12, 6, 7, 12, 7, 8, 12,
8, 4, 12, 4, 5,
],
[
4, 5, 9, 12, 6, 7, 12, 7, 8, 12, 8, 0, 12, 0, 1, 12, 1, 10, 12, 10, 2, 12, 2, 3, 12, 3,
11, 12, 11, 6,
],
[
2, 1, 10, 12, 0, 3, 12, 3, 11, 12, 11, 6, 12, 6, 5, 12, 5, 9, 12, 9, 4, 12, 4, 7, 12,
7, 8, 12, 8, 0,
],
[
6, 7, 11, 4, 5, 12, 8, 4, 12, 3, 8, 12, 2, 3, 12, 10, 2, 12, 1, 10, 12, 0, 1, 12, 9, 0,
12, 5, 9, 12,
],
[
10, 2, 1, 0, 3, 12, 9, 0, 12, 5, 9, 12, 6, 5, 12, 11, 6, 12, 7, 11, 12, 4, 7, 12, 8, 4,
12, 3, 8, 12,
],
],
];
pub const TILING_EDGES_13_3_: [[[Edge; 30]; 12]; 2] = convert_tiling2(&TILING_13_3_);
pub const TILING_13_4: [[[i8; 36]; 4]; 2] = [
[
[
12, 2, 10, 12, 10, 5, 12, 5, 6, 12, 6, 11, 12, 11, 7, 12, 7, 4, 12, 4, 8, 12, 8, 3, 12,
3, 0, 12, 0, 9, 12, 9, 1, 12, 1, 2,
],
[
11, 3, 12, 6, 11, 12, 7, 6, 12, 8, 7, 12, 4, 8, 12, 5, 4, 12, 9, 5, 12, 0, 9, 12, 1, 0,
12, 10, 1, 12, 2, 10, 12, 3, 2, 12,
],
[
9, 1, 12, 4, 9, 12, 5, 4, 12, 10, 5, 12, 6, 10, 12, 7, 6, 12, 11, 7, 12, 2, 11, 12, 3,
2, 12, 8, 3, 12, 0, 8, 12, 1, 0, 12,
],
[
12, 0, 8, 12, 8, 7, 12, 7, 4, 12, 4, 9, 12, 9, 5, 12, 5, 6, 12, 6, 10, 12, 10, 1, 12,
1, 2, 12, 2, 11, 12, 11, 3, 12, 3, 0,
],
],
[
[
12, 3, 11, 12, 11, 6, 12, 6, 7, 12, 7, 8, 12, 8, 4, 12, 4, 5, 12, 5, 9, 12, 9, 0, 12,
0, 1, 12, 1, 10, 12, 10, 2, 12, 2, 3,
],
[
8, 0, 12, 7, 8, 12, 4, 7, 12, 9, 4, 12, 5, 9, 12, 6, 5, 12, 10, 6, 12, 1, 10, 12, 2, 1,
12, 11, 2, 12, 3, 11, 12, 0, 3, 12,
],
[
10, 2, 12, 5, 10, 12, 6, 5, 12, 11, 6, 12, 7, 11, 12, 4, 7, 12, 8, 4, 12, 3, 8, 12, 0,
3, 12, 9, 0, 12, 1, 9, 12, 2, 1, 12,
],
[
12, 1, 9, 12, 9, 4, 12, 4, 5, 12, 5, 10, 12, 10, 6, 12, 6, 7, 12, 7, 11, 12, 11, 2, 12,
2, 3, 12, 3, 8, 12, 8, 0, 12, 0, 1,
],
],
];
pub const TILING_EDGES_13_4: [[[Edge; 36]; 4]; 2] = convert_tiling2(&TILING_13_4);
pub const TILING_13_5_1: [[[i8; 18]; 4]; 2] = [
[
[7, 6, 11, 1, 0, 9, 10, 3, 2, 3, 10, 5, 3, 5, 8, 4, 8, 5],
[1, 2, 10, 7, 4, 8, 3, 0, 11, 6, 11, 0, 9, 6, 0, 6, 9, 5],
[3, 0, 8, 5, 6, 10, 1, 2, 9, 4, 9, 2, 11, 4, 2, 4, 11, 7],
[5, 4, 9, 3, 2, 11, 8, 1, 0, 1, 8, 7, 1, 7, 10, 6, 10, 7],
],
[
[4, 7, 8, 2, 1, 10, 11, 0, 3, 0, 11, 6, 0, 6, 9, 5, 9, 6],
[2, 3, 11, 4, 5, 9, 0, 1, 8, 7, 8, 1, 10, 7, 1, 7, 10, 6],
[0, 1, 9, 6, 7, 11, 2, 3, 10, 5, 10, 3, 8, 5, 3, 5, 8, 4],
[6, 5, 10, 0, 3, 8, 9, 2, 1, 2, 9, 4, 2, 4, 11, 7, 11, 4],
],
];
pub const TILING_EDGES_13_5_1: [[[Edge; 18]; 4]; 2] = convert_tiling2(&TILING_13_5_1);
pub const TILING_13_5_2: [[[i8; 30]; 4]; 2] = [
[
[
1, 0, 9, 7, 4, 8, 7, 8, 3, 7, 3, 11, 2, 11, 3, 11, 2, 10, 11, 10, 6, 5, 6, 10, 6, 5, 7,
4, 7, 5,
],
[
7, 4, 8, 11, 3, 2, 6, 11, 2, 10, 6, 2, 6, 10, 5, 9, 5, 10, 1, 9, 10, 9, 1, 0, 2, 0, 1,
0, 2, 3,
],
[
5, 6, 10, 9, 1, 0, 4, 9, 0, 8, 4, 0, 4, 8, 7, 11, 7, 8, 3, 11, 8, 11, 3, 2, 0, 2, 3, 2,
0, 1,
],
[
3, 2, 11, 5, 6, 10, 5, 10, 1, 5, 1, 9, 0, 9, 1, 9, 0, 8, 9, 8, 4, 4, 8, 7, 4, 7, 5, 6,
5, 7,
],
],
[
[
2, 1, 10, 4, 5, 9, 4, 9, 0, 4, 0, 8, 3, 8, 0, 8, 3, 11, 8, 11, 7, 6, 7, 11, 7, 6, 4, 5,
4, 6,
],
[
4, 5, 9, 8, 0, 3, 7, 8, 3, 11, 7, 3, 7, 11, 6, 10, 6, 11, 2, 10, 11, 10, 2, 1, 3, 1, 2,
1, 3, 0,
],
[
6, 7, 11, 10, 2, 1, 5, 10, 1, 9, 5, 1, 5, 9, 4, 8, 4, 9, 0, 8, 9, 8, 0, 3, 1, 3, 0, 3,
1, 2,
],
[
0, 3, 8, 6, 7, 11, 6, 11, 2, 6, 2, 10, 1, 10, 2, 10, 1, 9, 10, 9, 5, 5, 9, 4, 5, 4, 6,
7, 6, 4,
],
],
];
pub const TILING_EDGES_13_5_2: [[[Edge; 30]; 4]; 2] = convert_tiling2(&TILING_13_5_2);
pub const TILING_14: [[i8; 12]; 12] = [
[5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8],
[2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5],
[9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6],
[1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4],
[8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5],
[0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10],
[0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7],
[8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2],
[1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11],
[9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3],
[2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8],
[5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2],
];
pub const TILING_EDGES_14: [[Edge; 12]; 12] = convert_tiling(&TILING_14);
const fn convert_tiling<const D1: usize, const D2: usize>(
tiling: &[[i8; D1]; D2],
) -> [[Edge; D1]; D2] {
let default_edge = Edge {
v1: u8::MAX,
v2: u8::MAX,
};
let mut new_tiling = [[default_edge; D1]; D2];
let mut i = 0;
while i < D2 {
let mut j = 0;
while j < D1 {
new_tiling[i][j] = Edge::from_edge_num(tiling[i][j]);
j += 1;
}
i += 1;
}
new_tiling
}
const fn convert_tiling2<const D1: usize, const D2: usize, const D3: usize>(
tiling: &[[[i8; D1]; D2]; D3],
) -> [[[Edge; D1]; D2]; D3] {
#[allow(clippy::uninit_assumed_init)]
let mut new_tiling: [[[Edge; D1]; D2]; D3] = unsafe { MaybeUninit::uninit().assume_init() };
let mut i = 0;
while i < D3 {
new_tiling[i] = convert_tiling(&tiling[i]);
i += 1;
}
new_tiling
}