#pragma once
#include "Pattern.h"
namespace ZXing::OneD::Code93 {
constexpr int CHAR_LEN = 6;
constexpr int CHAR_MODS = 9;
constexpr std::array<FixedPattern<CHAR_LEN, CHAR_MODS>, 48> CODE_PATTERNS = { {
{ 1, 3, 1, 1, 1, 2 }, { 1, 1, 1, 2, 1, 3 },
{ 1, 1, 1, 3, 1, 2 },
{ 1, 1, 1, 4, 1, 1 },
{ 1, 2, 1, 1, 1, 3 },
{ 1, 2, 1, 2, 1, 2 }, { 1, 2, 1, 3, 1, 1 },
{ 1, 1, 1, 1, 1, 4 },
{ 1, 3, 1, 2, 1, 1 },
{ 1, 4, 1, 1, 1, 1 },
{ 2, 1, 1, 1, 1, 3 }, { 2, 1, 1, 2, 1, 2 },
{ 2, 1, 1, 3, 1, 1 },
{ 2, 2, 1, 1, 1, 2 },
{ 2, 2, 1, 2, 1, 1 },
{ 2, 3, 1, 1, 1, 1 }, { 1, 1, 2, 1, 1, 3 },
{ 1, 1, 2, 2, 1, 2 },
{ 1, 1, 2, 3, 1, 1 },
{ 1, 2, 2, 1, 1, 2 },
{ 1, 3, 2, 1, 1, 1 }, { 1, 1, 1, 1, 2, 3 },
{ 1, 1, 1, 2, 2, 2 },
{ 1, 1, 1, 3, 2, 1 },
{ 1, 2, 1, 1, 2, 2 },
{ 1, 3, 1, 1, 2, 1 }, { 2, 1, 2, 1, 1, 2 },
{ 2, 1, 2, 2, 1, 1 },
{ 2, 1, 1, 1, 2, 2 },
{ 2, 1, 1, 2, 2, 1 },
{ 2, 2, 1, 1, 2, 1 }, { 2, 2, 2, 1, 1, 1 },
{ 1, 1, 2, 1, 2, 2 },
{ 1, 1, 2, 2, 2, 1 },
{ 1, 2, 2, 1, 2, 1 },
{ 1, 2, 3, 1, 1, 1 }, { 1, 2, 1, 1, 3, 1 },
{ 3, 1, 1, 1, 1, 2 },
{ 3, 1, 1, 2, 1, 1 },
{ 3, 2, 1, 1, 1, 1 },
{ 1, 1, 2, 1, 3, 1 }, { 1, 1, 3, 1, 2, 1 },
{ 2, 1, 1, 1, 3, 1 },
{ 1, 2, 1, 2, 2, 1 },
{ 3, 1, 2, 1, 1, 1 },
{ 3, 1, 1, 1, 2, 1 }, { 1, 2, 2, 2, 1, 1 },
{ 1, 1, 1, 1, 4, 1 } } };
constexpr auto E2E_PATTERNS = PatternsToE2EInts(CODE_PATTERNS);
constexpr char ALPHABET[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%abcd*";
static_assert(Size(ALPHABET) == Size(CODE_PATTERNS), "table size mismatch");
constexpr int ASTERISK_ENCODING = E2E_PATTERNS[47];
}