lernie 0.1.63

lernie: the operator seat — the window and wire client for a yog server
//! **The oracle**, and it is not this crate's arithmetic.
//!
//! A QR encoder that agrees with itself proves nothing, and a decoder written
//! beside one shares its tables and therefore its mistakes. So the ground truth
//! below was produced by a **separate, established implementation** of the same
//! standard, and it is committed rather than computed: the suite needs no tool,
//! no network and no second encoder — it needs what the second encoder said,
//! which is what an oracle is for.
//!
//! Every symbol here is byte mode at correction level M, at the version named,
//! and it is pinned **whole**, mask included. A mask is the encoder's free
//! choice — all eight decode — so a matrix agreeing to the module is also the
//! four penalty rules agreeing, which nothing else here can check.
//!
//! `#` is a dark module, `.` a light one, no quiet zone, top row first.

/// Version 1, mask 0 — five bytes, the smallest symbol there is: one block, an
/// eight-bit character count, no alignment pattern and no version block.
pub(super) const V1: &str = "\
#######..##...#######\n\
#.....#.##....#.....#\n\
#.###.#..#.##.#.###.#\n\
#.###.#...##..#.###.#\n\
#.###.#.##..#.#.###.#\n\
#.....#.....#.#.....#\n\
#######.#.#.#.#######\n\
..........###........\n\
#.#.#.#..#.#....#..#.\n\
..#.##....#...#....##\n\
.#.#..#.###.#...#####\n\
##..#.........#....#.\n\
.##.#.##..#.#.#.#....\n\
........####.#.#..###\n\
#######...##.###..###\n\
#.....#...####.##....\n\
#.###.#.#.##.###...##\n\
#.###.#..#....##..##.\n\
#.###.#.###.#...#.#.#\n\
#.....#..#....#.#..#.\n\
#######.###.#.##...##";

/// Version 7, mask 0 — the first version carrying a **version block** — eighteen
/// bits in two corners that exist nowhere below it — over four blocks of one
/// length.
pub(super) const V7: &str = "\
#######...#..#.##...#.#..#.#.....#..#.#######\n\
#.....#.##..##.##.#.....#.....###..#..#.....#\n\
#.###.#..#.#.#.....#....#..##..##..#..#.###.#\n\
#.###.#...#.##..#.###.##.#.#..#.#..##.#.###.#\n\
#.###.#.####..##...######....##...###.#.###.#\n\
#.....#...##....#.###...#.....#.##....#.....#\n\
#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######\n\
..........###.#.#.###...#.....#...##.........\n\
#.#.#.#..#.#.####...#####.###.#.##..#...#..#.\n\
.#..##.#...###.####.##.......#...#.####.#####\n\
..##.##.##..###.#...#...##.###.#.##.....#.#.#\n\
###.....###.####..###..#....#.#..#.#...#..#.#\n\
..###.##......###...##.##########.#.#.##...##\n\
####...#.#..#.####.#.#...#....##..#.#...####.\n\
.#..######.#..##.#..##.###...#.#.####..######\n\
##..#.....###.#.##..##..#...###..#.#...#.##.#\n\
#.###.#.###...######.#..#....##..###.##.#....\n\
.#...#.#.#.......#..#.#...##..#.###.##.#####.\n\
...#.#####.#.##.##..##...#...##.....#..##....\n\
##.###.##..#.##....#.#.##...###.##.#...#...##\n\
.#########..##.##.#.######.#........#####....\n\
#####...#...####.#..#...###.###.#...#...#..#.\n\
##.##.#.#..##...##.##.#.##.#####....#.#.#..#.\n\
..###...##..###.###.#...##..###.#.###...#....\n\
.#..#####.###.#...#.######..##.#....#####.#..\n\
##.#...#.#..####.#.###.#.####..###.####....#.\n\
.##...#..###.#..##....##########.#..##.###..#\n\
...##.....#.#..##.####..#.....#.#.#.###..#.##\n\
###.#.#..#...#...###.#.##.###.#.##....#.#.#..\n\
.#..##..##.#####.##.##.#...###....#..########\n\
###.#.#..#.#.#..###...##.##..###.#..##..#.#.#\n\
.....#.##..#.##.#.##....#....##.##...#....##.\n\
#.#####.##.#.##..#..#..####...###.###.#...##.\n\
##..#..####....##.#......#....##.##...#######\n\
....#.#..#..#####.###.##.##..#.#.#..#...#####\n\
.####..##.........##.###.....##..#..##.####.#\n\
#..##.#...#..####.#.#####..#.##..########.#..\n\
........####.....#.##...#.##.###.##.#...#..##\n\
#######....#...##.###.#.###..#..#.#.#.#.###..\n\
#.....#....###..##..#...##...##...###...#..##\n\
#.###.#.#.#...#.#.#######...#..#.##.#####....\n\
#.###.#..#....#..##.#..#.##.#...#..#...##...#\n\
#.###.#.##.#.###.#.#.#####.###.#.##.#.##...##\n\
#.....#..##..##..#.##.#.##..###...#.....##.#.\n\
#######.#.#..#.##.#.#..###..##..#..##.###..##";

/// Version 10, mask 0 — the first version whose character count is **sixteen
/// bits**, over five blocks in two different lengths: the interleave has
/// something to get wrong.
pub(super) const V10: &str = "\
#######....##.##.#....########..###.#.#.##...###..#######\n\
#.....#.##..##..#.#.##....#.##..#.#.###.#.##...#..#.....#\n\
#.###.#...#.#...#..##..#..#.#.#.#.#.####.###.###..#.###.#\n\
#.###.#..#..###..#...##..##....##.....#.#.###..#..#.###.#\n\
#.###.#.#.##...#.#..#.#.#########..#.###..###..#..#.###.#\n\
#.....#..###.####..##..#.##...##..#...#..##.#.#...#.....#\n\
#######.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#######\n\
..........#.#.#.......###.#...##......##..#.##...........\n\
#.#.#.#.....#####...#....########...#.##..###.......#..#.\n\
....#....#..##...##...#.#..#.#.#..#######..###.###.##...#\n\
#..#.###...#....#.######.#....##....#...###.#......####.#\n\
#.......##..#..#...#.###..#.#....#.#.#.#.#..#..#.##.#..#.\n\
#.#########..#.##.....###..#....####.##..##.##...#.#.#..#\n\
.#......#..#..##..##.#.##.#..#..##..#.#..##..........###.\n\
...#..##.#.#.##.#.#.###.#.##.#.###.##..#.###.######.#...#\n\
..#..#.###.#...##..#######.#.####.........##..#.#...###..\n\
.###.##.#....#..#####.#..###.#.#.......##.#.#.##.......##\n\
#.##.#..##.#.#####.##.#....#...##..###.#..##.###.###..#.#\n\
###.#.##.#.#....##.....#.#......#...###..##...#.#..#.#...\n\
#.#......#..####.#.##..#.....#.####..###.#...#.#####..##.\n\
.....##.##.##.###.#...#.......#..#.###..####.##.##...##.#\n\
.###....#.#######..##..#..#.###..##......#..#.##..#.####.\n\
.#...#####..######..#.#...#.####.###..##.##.#.##.####....\n\
.##.....#...##..#....##.###..#####.##..........#.#..##..#\n\
.#...##.##..#####.######.#####.##.#.#..#.......#..#.#....\n\
.#.#....####..##.##.#...##.##.###.##.###...##.####.#..#..\n\
#########.########...####.#####.#.#..##...##.#..######.##\n\
.##.#...###.##.###...####.#...###...#######..#.##...#..##\n\
....#.#.###..#....#...#.###.#.#.####.#...#.####.#.#.#####\n\
##..#...#..##.......###.#.#...#..#..#.#.#...#...#...#..##\n\
#.#.#####..###.#..####..#.######..#.#.#.##..#.#.#####.#.#\n\
.##..#.###.###...#.#.##..##.###.##.###.###.....#.#..###..\n\
...#.##..........#.##.##.#....##..#...###.#.#..#.##.###.#\n\
....##.#.########...###..#.#.#.#...#..#######......#.##..\n\
.##..##..#.#..##.###.#.##.###.#...#..#.#...#.#..####.###.\n\
##.###...#.#...#.#...####..##..#....#...##########....##.\n\
.##.#.##.#.##.###...#...########.######.##.#.#..#..##.#.#\n\
#..###..######.#.##..##..##.#...###.##....#..##.###.#.###\n\
..#...####....#.#.#.###.###..##.#.#.##...#.....#.##......\n\
#.#.....#...####..##..#..##.#..#.##.######..##.#..##..#..\n\
#...#.###..##.####.#.##.##..........#..#..#...#..#####..#\n\
.##.#...#.##.##..##.#..#...##########..###.#..##...######\n\
.###..##.....#..##.#####..###..#.#.#...#...#######.######\n\
..##.#..#...#..#..#.#.#.#..###.#..##....#...#...##..#..#.\n\
.#######..##..####...#######.#.###..###..########.....##.\n\
.#.#.#.####.##.##.#..#..#.#...#.#.#..##.....##.####...#.#\n\
#.#..##.#.##.##.#.##.....##.#...#....#.....#.##..#..#...#\n\
#####..####..#..#.#.##.####...##.....###.##.##.#..###...#\n\
......#.#..#.#...#.#.##...#####.#.##........#.########.##\n\
........#...##.....##.#####...####.#..##.###....#...##.#.\n\
#######..#.###...##.#.###.#.#.##...##..########.#.#.##..#\n\
#.....#....####.#.#.#.#...#...#...##..##..#.#..##...#####\n\
#.###.#.##..####...#.###########.#...#.###.#.#########..#\n\
#.###.#..###......#.#....##.###......#..#.#.#####.#..###.\n\
#.###.#.####.##....#.##..##.#........###..##.#####..#.#.#\n\
#.....#.......##.###...##...##.##........###.###.#....##.\n\
#######.##..##.###..###...##..#...###.#.#..#...##..#...##";