From 6274140c73aa39c42271644ef8c9b4551ca06fc2 Mon Sep 17 00:00:00 2001 From: gitlost Date: Fri, 5 Feb 2021 23:55:24 +0000 Subject: [PATCH] CODEONE: various fixes, ECI support; #209 --- backend/code1.c | 1787 +++++------- backend/library.c | 1 + backend/tests/test_code1.c | 2420 ++++++++++++++++- backend/tests/test_eci.c | 52 +- backend/tests/test_raster.c | 2 +- backend/tests/test_vector.c | 81 +- backend/tests/testcommon.c | 33 +- .../tests/tools/bwipp_dump-barcode.ps.diff | 56 +- backend/tests/tools/bwipp_dump.ps.tar.xz | Bin 122124 -> 122496 bytes frontend/main.c | 10 +- frontend_qt/grpCodeOne.ui | 4 + frontend_qt/mainwindow.cpp | 17 +- 12 files changed, 3242 insertions(+), 1221 deletions(-) diff --git a/backend/code1.c b/backend/code1.c index c3e09b54..0b1220d3 100644 --- a/backend/code1.c +++ b/backend/code1.c @@ -2,7 +2,7 @@ /* libzint - the open source barcode library - Copyright (C) 2009-2020 Robin Stuart + Copyright (C) 2009-2021 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -37,8 +37,16 @@ #include "large.h" #include #include +#ifdef _MSC_VER +#include +/* ceilf (C99) not before MSVC++2013 (C++ 12.0) */ +#if _MSC_VER < 1800 +#define ceilf (float) ceil +#endif +#endif -static void horiz(struct zint_symbol *symbol, int row_no, int full) { +/* Add solid bar */ +static void horiz(struct zint_symbol *symbol, const int row_no, const int full) { int i; if (full) { @@ -52,7 +60,9 @@ static void horiz(struct zint_symbol *symbol, int row_no, int full) { } } -static void central_finder(struct zint_symbol *symbol, int start_row, int row_count, int full_rows) { +/* Central recognition pattern for Versions A-H */ +static void central_finder(struct zint_symbol *symbol, const int start_row, const int row_count, + const int full_rows) { int i; for (i = 0; i < row_count; i++) { @@ -68,7 +78,8 @@ static void central_finder(struct zint_symbol *symbol, int start_row, int row_co } } -static void vert(struct zint_symbol *symbol, int column, int height, int top) { +/* Add solid column */ +static void vert(struct zint_symbol *symbol, const int column, const int height, const int top) { int i; if (top) { @@ -82,7 +93,8 @@ static void vert(struct zint_symbol *symbol, int column, int height, int top) { } } -static void spigot(struct zint_symbol *symbol, int row_no) { +/* Add bump to the right of the vertical recognition pattern column (Versions A-H) */ +static void spigot(struct zint_symbol *symbol, const int row_no) { int i; for (i = symbol->width - 1; i > 0; i--) { @@ -92,64 +104,61 @@ static void spigot(struct zint_symbol *symbol, int row_no) { } } -static int isedi(unsigned char input) { - int result = 0; - - if (input == 13) { - result = 1; +/* Is basic (non-shifted) C40? */ +static int isc40(const unsigned char input) { + if ((input >= '0' && input <= '9') || (input >= 'A' && input <= 'Z') || input == ' ') { + return 1; } - if (input == '*') { - result = 1; - } - if (input == '>') { - result = 1; - } - if (input == ' ') { - result = 1; - } - if ((input >= '0') && (input <= '9')) { - result = 1; - } - if ((input >= 'A') && (input <= 'Z')) { - result = 1; - } - - return result; + return 0; } -static int dq4bi(unsigned char source[], int sourcelen, int position) { - int i; - - for (i = 0; ((position + i) < sourcelen) && isedi(source[position + i]); i++); - - if ((position + i) == sourcelen) { - /* Reached end of input */ - return 0; - } - if (i == 0) { - /* Not EDI */ - return 0; - } - - if (source[position + i - 1] == 13) { +/* Is basic (non-shifted) TEXT? */ +static int istext(const unsigned char input) { + if ((input >= '0' && input <= '9') || (input >= 'a' && input <= 'z') || input == ' ') { return 1; } - if (source[position + i - 1] == '*') { + return 0; +} + +/* Is basic (non-shifted) C40/TEXT? */ +static int isc40text(const int current_mode, const unsigned char input) { + return current_mode == C1_C40 ? isc40(input) : istext(input); +} + +/* EDI characters are uppercase alphanumerics plus space plus EDI terminator (CR) plus 2 EDI separator chars */ +static int isedi(const unsigned char input) { + + if (isc40(input)) { return 1; } - if (source[position + i - 1] == '>') { + if (input == 13 || input == '*' || input == '>') { return 1; } return 0; } -static int c1_look_ahead_test(unsigned char source[], int sourcelen, int position, int current_mode, int gs1) { - float ascii_count, c40_count, text_count, edi_count, byte_count; - char reduced_char; - int done, best_scheme, sp; +/* Whether Step Q4bi applies, i.e. if one of the 3 EDI terminator/separator chars appears before a non-EDI char */ +static int is_step_Q4bi_applicable(const unsigned char source[], const int sourcelen, const int position) { + int i; - /* Step J */ + for (i = position; i < sourcelen && isedi(source[i]); i++) { + if (source[i] == 13 || source[i] == '*' || source[i] == '>') { + return 1; + } + } + + return 0; +} + +/* AIM USS Code One Annex D Steps J-R */ +static int c1_look_ahead_test(const unsigned char source[], const int sourcelen, const int position, + const int current_mode, const int gs1) { + float ascii_count, c40_count, text_count, edi_count, byte_count; + int ascii_rnded, c40_rnded, text_rnded, edi_rnded, byte_rnded; + int sp; + + /* Step J1 */ if (current_mode == C1_ASCII) { ascii_count = 0.0f; c40_count = 1.0f; @@ -165,211 +174,324 @@ static int c1_look_ahead_test(unsigned char source[], int sourcelen, int positio } switch (current_mode) { - case C1_C40: c40_count = 0.0f; + case C1_C40: c40_count = 0.0f; /* Step J2 */ break; - case C1_TEXT: text_count = 0.0f; + case C1_TEXT: text_count = 0.0f; /* Step J3 */ break; - case C1_BYTE: byte_count = 0.0f; + case C1_EDI: edi_count = 0.0f; /* Missing in spec */ break; - case C1_EDI: edi_count = 0.0f; + case C1_BYTE: byte_count = 0.0f; /* Step J4 */ break; } - for (sp = position; (sp < sourcelen) && (sp <= (position + 8)); sp++) { - - if (source[sp] <= 127) { - reduced_char = source[sp]; - } else { - reduced_char = source[sp] - 127; - } + for (sp = position; sp < sourcelen; sp++) { /* Step L */ if ((source[sp] >= '0') && (source[sp] <= '9')) { - ascii_count += 0.5f; + ascii_count += 0.5f; /* Step L1 */ } else { - ascii_count = (float) ceil(ascii_count); if (source[sp] > 127) { - ascii_count += 2.0f; + ascii_count = ceilf(ascii_count) + 2.0f; /* Step L2 */ } else { - ascii_count += 1.0f; + ascii_count = ceilf(ascii_count) + 1.0f; /* Step L3 */ } } /* Step M */ - done = 0; - if (reduced_char == ' ') { - c40_count += (2.0f / 3.0f); - done = 1; - } - if ((reduced_char >= '0') && (reduced_char <= '9')) { - c40_count += (2.0f / 3.0f); - done = 1; - } - if ((reduced_char >= 'A') && (reduced_char <= 'Z')) { - c40_count += (2.0f / 3.0f); - done = 1; - } - if (source[sp] > 127) { - c40_count += (4.0f / 3.0f); - } - if (done == 0) { - c40_count += (4.0f / 3.0f); + if (isc40(source[sp])) { + c40_count += (2.0f / 3.0f); /* Step M1 */ + } else if (source[sp] > 127) { + c40_count += (8.0f / 3.0f); /* Step M2 */ + } else { + c40_count += (4.0f / 3.0f); /* Step M3 */ } /* Step N */ - done = 0; - if (reduced_char == ' ') { - text_count += (2.0f / 3.0f); - done = 1; - } - if ((reduced_char >= '0') && (reduced_char <= '9')) { - text_count += (2.0f / 3.0f); - done = 1; - } - if ((reduced_char >= 'a') && (reduced_char <= 'z')) { - text_count += (2.0f / 3.0f); - done = 1; - } - if (source[sp] > 127) { - text_count += (4.0f / 3.0f); - } - if (done == 0) { - text_count += (4.0f / 3.0f); + if (istext(source[sp])) { + text_count += (2.0f / 3.0f); /* Step N1 */ + } else if (source[sp] > 127) { + text_count += (8.0f / 3.0f); /* Step N2 */ + } else { + text_count += (4.0f / 3.0f); /* Step N3 */ } /* Step O */ - done = 0; - if (source[sp] == 13) { - edi_count += (2.0f / 3.0f); - done = 1; - } - if (source[sp] == '*') { - edi_count += (2.0f / 3.0f); - done = 1; - } - if (source[sp] == '>') { - edi_count += (2.0f / 3.0f); - done = 1; - } - if (source[sp] == ' ') { - edi_count += (2.0f / 3.0f); - done = 1; - } - if ((source[sp] >= '0') && (source[sp] <= '9')) { - edi_count += (2.0f / 3.0f); - done = 1; - } - if ((source[sp] >= 'A') && (source[sp] <= 'Z')) { - edi_count += (2.0f / 3.0f); - done = 1; - } - if (source[sp] > 127) { - edi_count += (13.0f / 3.0f); + if (isedi(source[sp])) { + edi_count += (2.0f / 3.0f); /* Step O1 */ + } else if (source[sp] > 127) { + edi_count += (13.0f / 3.0f); /* Step O2 */ } else { - if (done == 0) { - edi_count += (10.0f / 3.0f); - } + edi_count += (10.0f / 3.0f); /* Step O3 */ } /* Step P */ if (gs1 && (source[sp] == '[')) { - byte_count += 3.0f; + byte_count += 3.0f; /* Step P1 */ } else { - byte_count += 1.0f; + byte_count += 1.0f; /* Step P2 */ } - } + /* If not end of data and at least 4 characters processed */ + /* NOTE: different than spec, where it's at least 3, but that ends up suppressing C40/TEXT/EDI. + BWIPP uses 4, as does very similar Data Matrix ISO/IEC 16022:2006 Annex P algorithm */ + if (sp + 1 != sourcelen && sp >= position + 3) { + /* Step Q */ + float cnt; + ascii_rnded = (int) ceilf(ascii_count); + c40_rnded = (int) ceilf(c40_count); + text_rnded = (int) ceilf(text_count); + edi_rnded = (int) ceilf(edi_count); + byte_rnded = (int) ceilf(byte_count); - ascii_count = (float) ceil(ascii_count); - c40_count = (float) ceil(c40_count); - text_count = (float) ceil(text_count); - edi_count = (float) ceil(edi_count); - byte_count = (float) ceil(byte_count); - best_scheme = C1_ASCII; - - if (sp == sourcelen) { - /* Step K */ - int best_count = (int) edi_count; - - if (text_count <= best_count) { - best_count = (int) text_count; - best_scheme = C1_TEXT; - } - - if (c40_count <= best_count) { - best_count = (int) c40_count; - best_scheme = C1_C40; - } - - if (ascii_count <= best_count) { - best_count = (int) ascii_count; - best_scheme = C1_ASCII; - } - - if (byte_count <= best_count) { - // best_count = (int) byte_count; - best_scheme = C1_BYTE; - } - } else { - /* Step Q */ - - if (((edi_count + 1.0f <= ascii_count) && (edi_count + 1.0f <= c40_count)) && - ((edi_count + 1.0f <= byte_count) && (edi_count + 1.0f <= text_count))) { - best_scheme = C1_EDI; - } - - if ((c40_count + 1.0f <= ascii_count) && (c40_count + 1.0f <= text_count)) { - - if (c40_count < edi_count) { - best_scheme = C1_C40; - } else { - if (c40_count == edi_count) { - if (dq4bi(source, sourcelen, position)) { - best_scheme = C1_EDI; - } else { - best_scheme = C1_C40; + cnt = byte_count + 1.0f; + if (cnt <= ascii_rnded && cnt <= c40_rnded && cnt <= text_rnded && cnt <= edi_rnded) { + return C1_BYTE; /* Step Q1 */ + } + cnt = ascii_count + 1.0f; + if (cnt <= c40_rnded && cnt <= text_rnded && cnt <= edi_rnded && cnt <= byte_rnded) { + return C1_ASCII; /* Step Q2 */ + } + cnt = text_rnded + 1.0f; + if (cnt <= ascii_rnded && cnt <= c40_rnded && cnt <= edi_rnded && cnt <= byte_rnded) { + return C1_TEXT; /* Step Q3 */ + } + cnt = c40_rnded + 1.0f; + if (cnt <= ascii_rnded && cnt <= text_rnded) { + /* Step Q4 */ + if (c40_rnded < edi_rnded) { + return C1_C40; /* Step Q4a */ + } + if (c40_rnded == edi_rnded) { + /* Step Q4b */ + if (is_step_Q4bi_applicable(source, sourcelen, sp + 1)) { + return C1_EDI; /* Step Q4bi */ } + return C1_C40; /* Step Q4bii */ } } - } - - if (((text_count + 1.0f <= ascii_count) && (text_count + 1.0f <= c40_count)) && - ((text_count + 1.0f <= byte_count) && (text_count + 1.0f <= edi_count))) { - best_scheme = C1_TEXT; - } - - if (((ascii_count + 1.0f <= byte_count) && (ascii_count + 1.0f <= c40_count)) && - ((ascii_count + 1.0f <= text_count) && (ascii_count + 1.0f <= edi_count))) { - best_scheme = C1_ASCII; - } - - if (((byte_count + 1.0f <= ascii_count) && (byte_count + 1.0f <= c40_count)) && - ((byte_count + 1.0f <= text_count) && (byte_count + 1.0f <= edi_count))) { - best_scheme = C1_BYTE; + cnt = edi_rnded + 1.0f; + if (cnt <= ascii_rnded && cnt <= c40_rnded && cnt <= text_rnded && cnt <= byte_rnded) { + return C1_EDI; /* Step Q5 */ + } } } - return best_scheme; + /* Step K */ + ascii_rnded = (int) ceilf(ascii_count); + c40_rnded = (int) ceilf(c40_count); + text_rnded = (int) ceilf(text_count); + edi_rnded = (int) ceilf(edi_count); + byte_rnded = (int) ceilf(byte_count); + + if (byte_count <= ascii_rnded && byte_count <= c40_rnded && byte_count <= text_rnded && byte_count <= edi_rnded) { + return C1_BYTE; /* Step K1 */ + } + if (ascii_count <= c40_rnded && ascii_count <= text_rnded && ascii_count <= edi_rnded + && ascii_count <= byte_rnded) { + return C1_ASCII; /* Step K2 */ + } + if (c40_rnded <= text_rnded && c40_rnded <= edi_rnded) { + return C1_C40; /* Step K3 */ + } + if (text_rnded <= edi_rnded) { + return C1_TEXT; /* Step K4 */ + } + + return C1_EDI; /* Step K5 */ } -static int c1_encode(struct zint_symbol *symbol, unsigned char source[], unsigned int target[], int length) { +/* Whether can fit last character or characters in a single ASCII codeword */ +static int is_last_single_ascii(const unsigned char string[], const int length, const int sp) { + if (length - sp == 1 && string[sp + 1] <= 127) { + return 1; + } + if (length - sp == 2 && istwodigits(string, length, sp)) { + return 1; + } + return 0; +} + +/* Return length of numeric sequence from position `sp`, stopping after `max` if given (non-zero) */ +static int digits_ahead(const unsigned char string[], const int length, const int sp, const int max) { + int i, end; + if (max && sp + max < length) { + end = sp + max; + } else { + end = length; + } + for (i = sp; i < end; i++) { + if (string[i] < '0' || string[i] > '9') { + break; + } + } + return i - sp; +} + +/* Copy C40/TEXT/EDI triplets from buffer to target. Returns elements left in buffer (< 3) */ +static int cte_buffer_transfer(int cte_buffer[6], int cte_p, unsigned target[], int *p_tp) { + int cte_i, cte_e; + int tp = *p_tp; + + cte_e = (cte_p / 3) * 3; + + for (cte_i = 0; cte_i < cte_e; cte_i += 3) { + int iv = (1600 * cte_buffer[cte_i]) + (40 * cte_buffer[cte_i + 1]) + (cte_buffer[cte_i + 2]) + 1; + target[tp++] = iv >> 8; + target[tp++] = iv & 0xFF; + } + + cte_p -= cte_e; + + if (cte_p) { + memmove(cte_buffer, cte_buffer + cte_e, sizeof(int) * cte_p); + } + + *p_tp = tp; + + return cte_p; +} + +/* Copy DECIMAL bytes to target. Returns bits left in buffer (< 8) */ +static int decimal_binary_transfer(char decimal_binary[24], int db_p, unsigned int target[], int *p_tp) { + int b_i, b_e, p; + int tp = *p_tp; + + /* Transfer full bytes to target */ + b_e = db_p & 0xF8; + + for (b_i = 0; b_i < b_e; b_i += 8) { + int value = 0; + for (p = 0; p < 8; p++) { + value <<= 1; + value += decimal_binary[b_i + p] == '1'; + } + target[tp++] = value; + } + + db_p &= 0x07; /* Bits remaining */ + + if (db_p) { + memmove(decimal_binary, decimal_binary + b_e, db_p); + } + + *p_tp = tp; + + return db_p; +} + +/* Unlatch to ASCII from DECIMAL mode using 6 ones flag. DECIMAL binary buffer will be empty */ +static int decimal_unlatch(char decimal_binary[24], int db_p, unsigned int target[], int *p_tp, + const int decimal_count, const unsigned char *source, int *p_sp) { + int sp = *p_sp; + int bits_left; + + db_p = bin_append_posn(63, 6, decimal_binary, db_p); /* Unlatch */ + if (db_p >= 8) { + db_p = decimal_binary_transfer(decimal_binary, db_p, target, p_tp); + } + bits_left = (8 - db_p) & 0x07; + if (decimal_count >= 1 && bits_left >= 4) { + db_p = bin_append_posn(ctoi(source[sp]) + 1, 4, decimal_binary, db_p); + sp++; + if (bits_left == 6) { + db_p = bin_append_posn(1, 2, decimal_binary, db_p); + } + (void)decimal_binary_transfer(decimal_binary, db_p, target, p_tp); + + } else if (bits_left) { + if (bits_left >= 4) { + db_p = bin_append_posn(15, 4, decimal_binary, db_p); + } + if (bits_left == 2 || bits_left == 6) { + db_p = bin_append_posn(1, 2, decimal_binary, db_p); + } + (void)decimal_binary_transfer(decimal_binary, db_p, target, p_tp); + } + + *p_sp = sp; + + return 0; +} + +/* Number of codewords remaining in a particular version (may be negative) */ +static int codewords_remaining(struct zint_symbol *symbol, int tp) { + int i; + + if (symbol->option_2 == 10) { /* Version T */ + if (tp > 24) { + return 38 - tp; + } + if (tp > 10) { + return 24 - tp; + } + return 10 - tp; + } + /* Versions A to H */ + for (i = 6; i >= 0; i--) { + if (tp > c1_data_length[i]) { + return c1_data_length[i + 1] - tp; + } + } + return c1_data_length[0] - tp; +} + +/* Number of C40/TEXT elements needed to encode `input` */ +static int c40text_cnt(const int current_mode, const int gs1, unsigned char input) { + int cnt; + + if (gs1 && input == '[') { + return 2; + } + cnt = 1; + if (input > 127) { + cnt += 2; + input = input - 128; + } + if ((current_mode == C1_C40 && c40_shift[input]) || (current_mode == C1_TEXT && text_shift[input])) { + cnt += 1; + } + + return cnt; +} + +/* Copy `source` to `eci_buf` with "\NNNNNN" ECI indicator at start and backslashes escaped */ +static void eci_escape(const int eci, unsigned char *source, const int length, unsigned char *eci_buf, const int eci_length) { + int i, j; + + j = sprintf((char *) eci_buf, "\\%06d", eci); + + for (i = 0; i < length && j < eci_length; i++) { + if (source[i] == '\\') { + eci_buf[j++] = '\\'; + } + eci_buf[j++] = source[i]; + } + eci_buf[j] = '\0'; +} + +/* Convert to codewords */ +static int c1_encode(struct zint_symbol *symbol, unsigned char source[], unsigned int target[], int length, + int *p_last_mode) { int current_mode, next_mode; - int sp, tp, gs1, i, j, p, latch; - int c40_buffer[6], c40_p; - int text_buffer[6], text_p; - int edi_buffer[6], edi_p; - char decimal_binary[40]; + int sp, tp, gs1, i; + int cte_buffer[6], cte_p = 0; /* C1_C40/TEXT/EDI buffer and index */ + char decimal_binary[24]; /* C1_DECIMAL buffer */ + int db_p = 0; int byte_start = 0; + int debug_print = symbol->debug & ZINT_DEBUG_PRINT; + int eci_length = length + 7 + chr_cnt(source, length, '\\'); +#ifndef _MSC_VER + unsigned char eci_buf[eci_length + 1]; +#else + unsigned char *eci_buf = (unsigned char *) _alloca(eci_length + 1); +#endif sp = 0; tp = 0; - memset(c40_buffer, 0, sizeof(*c40_buffer)); - c40_p = 0; - memset(text_buffer, 0, sizeof(*text_buffer)); - text_p = 0; - memset(edi_buffer, 0, sizeof(*edi_buffer)); - edi_p = 0; - strcpy(decimal_binary, ""); + + /* Step A */ + current_mode = C1_ASCII; + next_mode = C1_ASCII; if ((symbol->input_mode & 0x07) == GS1_MODE) { gs1 = 1; @@ -377,133 +499,75 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], unsigne gs1 = 0; } if (gs1) { - /* FNC1 */ - target[tp] = 232; - tp++; + if (length >= 15 && digits_ahead(source, length, 0, 15) == 15) { + target[tp++] = 236; /* FNC1 and change to Decimal */ + next_mode = C1_DECIMAL; + } else if (length >= 7 && digits_ahead(source, length, 0, 0) == length) { + target[tp++] = 236; /* FNC1 and change to Decimal */ + next_mode = C1_DECIMAL; + } else { + target[tp++] = 232; /* FNC1 */ + } + /* Note ignoring ECI if GS1 mode (up to caller to warn) */ + } else if (symbol->eci) { + target[tp++] = 129; /* Pad */ + target[tp++] = '\\' + 1; /* Escape char */ + eci_escape(symbol->eci, source, length, eci_buf, eci_length); + source = eci_buf; + length = eci_length; } - /* Step A */ - current_mode = C1_ASCII; - next_mode = C1_ASCII; - do { if (current_mode != next_mode) { /* Change mode */ switch (next_mode) { - case C1_C40: target[tp] = 230; - tp++; + case C1_C40: target[tp++] = 230; break; - case C1_TEXT: target[tp] = 239; - tp++; + case C1_TEXT: target[tp++] = 239; break; - case C1_EDI: target[tp] = 238; - tp++; + case C1_EDI: target[tp++] = 238; break; - case C1_BYTE: target[tp] = 231; - tp++; + case C1_BYTE: target[tp++] = 231; + byte_start = tp; + target[tp++] = 0; /* Byte count holder (may be expanded to 2 codewords) */ break; } + current_mode = next_mode; } - if ((current_mode != C1_BYTE) && (next_mode == C1_BYTE)) { - byte_start = tp; - } - current_mode = next_mode; - if (current_mode == C1_ASCII) { /* Step B - ASCII encodation */ next_mode = C1_ASCII; - if ((length - sp) >= 21) { + if ((length - sp) >= 21 && digits_ahead(source, length, sp, 21) == 21) { /* Step B1 */ - j = 0; - - for (i = 0; i < 21; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 21) { - next_mode = C1_DECIMAL; - bin_append(15, 4, decimal_binary); - } - } - - if ((next_mode == C1_ASCII) && ((length - sp) >= 13)) { + next_mode = C1_DECIMAL; + db_p = bin_append_posn(15, 4, decimal_binary, db_p); + } else if ((length - sp) >= 13 && digits_ahead(source, length, sp, 0) == (length - sp)) { /* Step B2 */ - j = 0; - - for (i = 0; i < 13; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 13) { - latch = 0; - for (i = sp + 13; i < length; i++) { - if (!((source[i] >= '0') && (source[i] <= '9'))) { - latch = 1; - } - } - - if (!(latch)) { - next_mode = C1_DECIMAL; - bin_append(15, 4, decimal_binary); - } - } + next_mode = C1_DECIMAL; + db_p = bin_append_posn(15, 4, decimal_binary, db_p); } - if (next_mode == C1_ASCII) { /* Step B3 */ + if (next_mode == C1_ASCII) { if (istwodigits(source, length, sp)) { - target[tp] = (10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130; - tp++; + if (debug_print) printf("ASCII double-digits "); + + /* Step B3 */ + target[tp++] = (10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130; sp += 2; } else { if ((gs1) && (source[sp] == '[')) { - if ((length - sp) >= 15) { + if (length - (sp + 1) >= 15 && digits_ahead(source, length, sp + 1, 15) == 15) { /* Step B4 */ - j = 0; - - for (i = 0; i < 15; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 15) { - target[tp] = 236; /* FNC1 and change to Decimal */ - tp++; - sp++; - next_mode = C1_DECIMAL; - } - } - - if ((length - sp) >= 7) { /* Step B5 */ - j = 0; - - for (i = 0; i < 7; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 7) { - latch = 0; - for (i = sp + 7; i < length; i++) { - if (!((source[i] >= '0') && (source[i] <= '9'))) { - latch = 1; - } - } - - if (!(latch)) { - target[tp] = 236; /* FNC1 and change to Decimal */ - tp++; - sp++; - next_mode = C1_DECIMAL; - } - } + target[tp++] = 236; /* FNC1 and change to Decimal */ + sp++; + next_mode = C1_DECIMAL; + } else if (length - (sp + 1) >= 7 && digits_ahead(source, length, sp + 1, 0) == length - (sp + 1)) { + /* Step B5 */ + target[tp++] = 236; /* FNC1 and change to Decimal */ + sp++; + next_mode = C1_DECIMAL; } } @@ -513,470 +577,184 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], unsigne next_mode = c1_look_ahead_test(source, length, sp, current_mode, gs1); if (next_mode == C1_ASCII) { + if (debug_print) printf("ASCII "); + if (source[sp] > 127) { /* Step B7 */ - target[tp] = 235; /* FNC4 */ - tp++; - target[tp] = (source[sp] - 128) + 1; - tp++; - sp++; + target[tp++] = 235; /* FNC4 (Upper Shift) */ + target[tp++] = (source[sp] - 128) + 1; + } else if ((gs1) && (source[sp] == '[')) { + /* Step B8 */ + target[tp++] = 232; /* FNC1 */ } else { /* Step B8 */ - if ((gs1) && (source[sp] == '[')) { - target[tp] = 232; /* FNC1 */ - tp++; - sp++; - } else { - target[tp] = source[sp] + 1; - tp++; - sp++; - } + target[tp++] = source[sp] + 1; } + sp++; } } } } - } - if (current_mode == C1_C40) { - /* Step C - C40 encodation */ + } else if (current_mode == C1_C40 || current_mode == C1_TEXT) { + /* Step C/D - C40/TEXT encodation */ - next_mode = C1_C40; - if (c40_p == 0) { - int done = 0; - if ((length - sp) >= 12) { - j = 0; - - for (i = 0; i < 12; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 12) { - next_mode = C1_ASCII; - done = 1; - } - } - - if ((length - sp) >= 8) { - j = 0; - - for (i = 0; i < 8; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if ((length - sp) == 8) { - latch = 1; - } else { - latch = 1; - for (j = sp + 8; j < length; j++) { - if ((source[j] <= '0') || (source[j] >= '9')) { - latch = 0; - } - } - } - - if ((j == 8) && latch) { - next_mode = C1_ASCII; - done = 1; - } - } - - if (!(done)) { + next_mode = current_mode; + if (cte_p == 0) { + /* Step C/D1 */ + if ((length - sp) >= 12 && digits_ahead(source, length, sp, 12) == 12) { + /* Step C/D1a */ + next_mode = C1_ASCII; + } else if ((length - sp) >= 8 && digits_ahead(source, length, sp, 0) == (length - sp)) { + /* Step C/D1b */ + next_mode = C1_ASCII; + } else { next_mode = c1_look_ahead_test(source, length, sp, current_mode, gs1); } } - if (next_mode != C1_C40) { - target[tp] = 255; /* Unlatch */ - tp++; + if (next_mode != current_mode) { + /* Step C/D1c */ + target[tp++] = 255; /* Unlatch */ } else { - int shift_set, value; - if (source[sp] > 127) { - c40_buffer[c40_p] = 1; - c40_p++; - c40_buffer[c40_p] = 30; /* Upper Shift */ - c40_p++; - shift_set = c40_shift[source[sp] - 128]; - value = c40_value[source[sp] - 128]; + /* Step C/D2 */ + const char *ct_shift, *ct_value; + + if (current_mode == C1_C40) { + ct_shift = c40_shift; + ct_value = c40_value; } else { - shift_set = c40_shift[source[sp]]; - value = c40_value[source[sp]]; + ct_shift = text_shift; + ct_value = text_value; + } + if (debug_print) printf(current_mode == C1_C40 ? "C40 " : "TEXT "); + + if (source[sp] > 127) { + cte_buffer[cte_p++] = 1; /* Shift 2 */ + cte_buffer[cte_p++] = 30; /* FNC4 (Upper Shift) */ + if (ct_shift[source[sp] - 128]) { + cte_buffer[cte_p++] = ct_shift[source[sp] - 128] - 1; + } + cte_buffer[cte_p++] = ct_value[source[sp] - 128]; + } else if (gs1 && (source[sp] == '[')) { + cte_buffer[cte_p++] = 1; /* Shift 2 */ + cte_buffer[cte_p++] = 27; /* FNC1 */ + } else { + if (ct_shift[source[sp]]) { + cte_buffer[cte_p++] = ct_shift[source[sp]] - 1; + } + cte_buffer[cte_p++] = ct_value[source[sp]]; } - if (gs1 && (source[sp] == '[')) { - shift_set = 2; - value = 27; /* FNC1 */ - } - - if (shift_set != 0) { - c40_buffer[c40_p] = shift_set - 1; - c40_p++; - } - c40_buffer[c40_p] = value; - c40_p++; - - if (c40_p >= 3) { - int iv; - - iv = (1600 * c40_buffer[0]) + (40 * c40_buffer[1]) + (c40_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - - c40_buffer[0] = c40_buffer[3]; - c40_buffer[1] = c40_buffer[4]; - c40_buffer[2] = c40_buffer[5]; - c40_buffer[3] = 0; - c40_buffer[4] = 0; - c40_buffer[5] = 0; - c40_p -= 3; + if (cte_p >= 3) { + cte_p = cte_buffer_transfer(cte_buffer, cte_p, target, &tp); } sp++; } - } - if (current_mode == C1_TEXT) { - /* Step D - Text encodation */ - - next_mode = C1_TEXT; - if (text_p == 0) { - int done = 0; - if ((length - sp) >= 12) { - j = 0; - - for (i = 0; i < 12; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 12) { - next_mode = C1_ASCII; - done = 1; - } - } - - if ((length - sp) >= 8) { - j = 0; - - for (i = 0; i < 8; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if ((length - sp) == 8) { - latch = 1; - } else { - latch = 1; - for (j = sp + 8; j < length; j++) { - if ((source[j] <= '0') || (source[j] >= '9')) { - latch = 0; - } - } - } - - if ((j == 8) && latch) { - next_mode = C1_ASCII; - done = 1; - } - } - - if (!(done)) { - next_mode = c1_look_ahead_test(source, length, sp, current_mode, gs1); - } - } - - if (next_mode != C1_TEXT) { - target[tp] = 255; - tp++; /* Unlatch */ - } else { - int shift_set, value; - if (source[sp] > 127) { - text_buffer[text_p] = 1; - text_p++; - text_buffer[text_p] = 30; - text_p++; /* Upper Shift */ - shift_set = text_shift[source[sp] - 128]; - value = text_value[source[sp] - 128]; - } else { - shift_set = text_shift[source[sp]]; - value = text_value[source[sp]]; - } - - if (gs1 && (source[sp] == '[')) { - shift_set = 2; - value = 27; /* FNC1 */ - } - - if (shift_set != 0) { - text_buffer[text_p] = shift_set - 1; - text_p++; - } - text_buffer[text_p] = value; - text_p++; - - if (text_p >= 3) { - int iv; - - iv = (1600 * text_buffer[0]) + (40 * text_buffer[1]) + (text_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - - text_buffer[0] = text_buffer[3]; - text_buffer[1] = text_buffer[4]; - text_buffer[2] = text_buffer[5]; - text_buffer[3] = 0; - text_buffer[4] = 0; - text_buffer[5] = 0; - text_p -= 3; - } - sp++; - } - } - - if (current_mode == C1_EDI) { + } else if (current_mode == C1_EDI) { /* Step E - EDI Encodation */ next_mode = C1_EDI; - if (edi_p == 0) { - if ((length - sp) >= 12) { - j = 0; - - for (i = 0; i < 12; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if (j == 12) { - next_mode = C1_ASCII; - } - } - - if ((length - sp) >= 8) { - j = 0; - - for (i = 0; i < 8; i++) { - if ((source[sp + i] >= '0') && (source[sp + i] <= '9')) { - j++; - } - } - - if ((length - sp) == 8) { - latch = 1; - } else { - latch = 1; - for (j = sp + 8; j < length; j++) { - if ((source[j] <= '0') || (source[j] >= '9')) { - latch = 0; - } - } - } - - if ((j == 8) && latch) { - next_mode = C1_ASCII; - } - } - - if (!((isedi(source[sp]) && isedi(source[sp + 1])) && isedi(source[sp + 2]))) { + if (cte_p == 0) { + /* Step E1 */ + if ((length - sp) >= 12 && digits_ahead(source, length, sp, 12) == 12) { + /* Step E1a */ + next_mode = C1_ASCII; + } else if ((length - sp) >= 8 && digits_ahead(source, length, sp, 0) == (length - sp)) { + /* Step E1b */ + next_mode = C1_ASCII; + } else if ((length - sp) < 3 || !isedi(source[sp]) || !isedi(source[sp + 1]) + || !isedi(source[sp + 2])) { + /* Step E1c */ + /* This ensures ASCII switch if don't have EDI triplet, so cte_p will be zero on loop exit */ next_mode = C1_ASCII; } } if (next_mode != C1_EDI) { - target[tp] = 255; /* Unlatch */ - tp++; + if (is_last_single_ascii(source, length, sp) && codewords_remaining(symbol, tp) == 1) { + /* No unlatch needed if data fits as ASCII in last data codeword */ + } else { + target[tp++] = 255; /* Unlatch */ + } } else { - int value = 0; - if (source[sp] == 13) { - value = 0; - } - if (source[sp] == '*') { - value = 1; - } - if (source[sp] == '>') { - value = 2; - } - if (source[sp] == ' ') { - value = 3; - } + /* Step E2 */ + static const char edi_nonalphanum_chars[] = "\015*> "; + + if (debug_print) printf("EDI "); + if ((source[sp] >= '0') && (source[sp] <= '9')) { - value = source[sp] - '0' + 4; - } - if ((source[sp] >= 'A') && (source[sp] <= 'Z')) { - value = source[sp] - 'A' + 14; + cte_buffer[cte_p++] = source[sp] - '0' + 4; + } else if ((source[sp] >= 'A') && (source[sp] <= 'Z')) { + cte_buffer[cte_p++] = source[sp] - 'A' + 14; + } else { + cte_buffer[cte_p++] = posn(edi_nonalphanum_chars, source[sp]); } - edi_buffer[edi_p] = value; - edi_p++; - - if (edi_p >= 3) { - int iv; - - iv = (1600 * edi_buffer[0]) + (40 * edi_buffer[1]) + (edi_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - - edi_buffer[0] = edi_buffer[3]; - edi_buffer[1] = edi_buffer[4]; - edi_buffer[2] = edi_buffer[5]; - edi_buffer[3] = 0; - edi_buffer[4] = 0; - edi_buffer[5] = 0; - edi_p -= 3; + if (cte_p >= 3) { + cte_p = cte_buffer_transfer(cte_buffer, cte_p, target, &tp); } sp++; } - } - if (current_mode == C1_DECIMAL) { + } else if (current_mode == C1_DECIMAL) { /* Step F - Decimal encodation */ - int decimal_count, data_left; + int decimal_count; + + if (debug_print) printf("DECIMAL "); next_mode = C1_DECIMAL; - data_left = length - sp; - decimal_count = 0; + decimal_count = digits_ahead(source, length, sp, 3); - if (data_left >= 1) { - if ((source[sp] >= '0') && (source[sp] <= '9')) { - decimal_count = 1; - } - } - if (data_left >= 2) { - if ((decimal_count == 1) && ((source[sp + 1] >= '0') && (source[sp + 1] <= '9'))) { - decimal_count = 2; - } - } - if (data_left >= 3) { - if ((decimal_count == 2) && ((source[sp + 2] >= '0') && (source[sp + 2] <= '9'))) { - decimal_count = 3; - } - } - - if (decimal_count != 3) { - size_t bits_left_in_byte, target_count; - int sub_target; - /* Finish Decimal mode and go back to ASCII */ - - bin_append(63, 6, decimal_binary); /* Unlatch */ - - target_count = 3; - if (strlen(decimal_binary) <= 16) { - target_count = 2; - } - if (strlen(decimal_binary) <= 8) { - target_count = 1; - } - bits_left_in_byte = (8 * target_count) - strlen(decimal_binary); - if (bits_left_in_byte == 8) { - bits_left_in_byte = 0; - } - - if (bits_left_in_byte == 2) { - bin_append(1, 2, decimal_binary); - } - - if ((bits_left_in_byte == 4) || (bits_left_in_byte == 6)) { - if (decimal_count >= 1) { - bin_append(ctoi(source[sp]) + 1, 4, decimal_binary); - sp++; + if (length - sp < 3) { + /* Step F1 */ + int bits_left = 8 - db_p; + int single_ascii = bits_left == 8 && is_last_single_ascii(source, length, sp); + if (codewords_remaining(symbol, tp) == 1 && (single_ascii || (decimal_count == 1 && bits_left >= 4))) { + if (single_ascii) { + /* Encode last character or last 2 digits as ASCII */ + if (istwodigits(source, length, sp)) { + target[tp++] = (10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130; + sp += 2; + } else { + target[tp++] = source[sp] + 1; + sp++; + } } else { - bin_append(15, 4, decimal_binary); - } - } - - if (bits_left_in_byte == 6) { - bin_append(1, 2, decimal_binary); - } - - /* Binary buffer is full - transfer to target */ - if (target_count >= 1) { - sub_target = 0; - - for (i = 0; i < 8; i++) { - if (decimal_binary[i] == '1') { - sub_target += 128 >> i; + /* Encode last digit in 4 bits */ + db_p = bin_append_posn(ctoi(source[sp]) + 1, 4, decimal_binary, db_p); + sp++; + if (bits_left == 6) { + db_p = bin_append_posn(1, 2, decimal_binary, db_p); } + db_p = decimal_binary_transfer(decimal_binary, db_p, target, &tp); } - target[tp] = sub_target; - tp++; + } else { + db_p = decimal_unlatch(decimal_binary, db_p, target, &tp, decimal_count, source, &sp); + current_mode = C1_ASCII; /* Note need to set current_mode also in case exit loop */ } - if (target_count >= 2) { - sub_target = 0; - - for (i = 0; i < 8; i++) { - if (decimal_binary[i + 8] == '1') { - sub_target += 128 >> i; - } - } - target[tp] = sub_target; - tp++; - } - if (target_count == 3) { - sub_target = 0; - - for (i = 0; i < 8; i++) { - if (decimal_binary[i + 16] == '1') { - sub_target += 128 >> i; - } - } - target[tp] = sub_target; - tp++; - } - next_mode = C1_ASCII; + } else { - /* There are three digits - convert the value to binary */ - bin_append((100 * ctoi(source[sp])) + (10 * ctoi(source[sp + 1])) + ctoi(source[sp + 2]) + 1, 10, decimal_binary); - sp += 3; - } - - if (strlen(decimal_binary) >= 24) { - int target1 = 0, target2 = 0, target3 = 0; - char temp_binary[40]; - - /* Binary buffer is full - transfer to target */ - - for (p = 0; p < 8; p++) { - if (decimal_binary[p] == '1') { - target1 += (0x80 >> p); + if (decimal_count != 3) { + /* Step F2 */ + db_p = decimal_unlatch(decimal_binary, db_p, target, &tp, decimal_count, source, &sp); + current_mode = next_mode = C1_ASCII; /* Note need to set current_mode also in case exit loop */ + } else { + /* Step F3 */ + /* There are three digits - convert the value to binary */ + int value = (100 * ctoi(source[sp])) + (10 * ctoi(source[sp + 1])) + ctoi(source[sp + 2]) + 1; + db_p = bin_append_posn(value, 10, decimal_binary, db_p); + if (db_p >= 8) { + db_p = decimal_binary_transfer(decimal_binary, db_p, target, &tp); } - if (decimal_binary[p + 8] == '1') { - target2 += (0x80 >> p); - } - if (decimal_binary[p + 16] == '1') { - target3 += (0x80 >> p); - } - } - target[tp] = target1; - tp++; - target[tp] = target2; - tp++; - target[tp] = target3; - tp++; - - strcpy(temp_binary, ""); - if (strlen(decimal_binary) > 24) { - for (i = 0; i <= (int) (strlen(decimal_binary) - 24); i++) { - temp_binary[i] = decimal_binary[i + 24]; - } - strcpy(decimal_binary, temp_binary); + sp += 3; } } - } - if (current_mode == C1_BYTE) { + } else if (current_mode == C1_BYTE) { next_mode = C1_BYTE; if (gs1 && (source[sp] == '[')) { @@ -988,196 +766,153 @@ static int c1_encode(struct zint_symbol *symbol, unsigned char source[], unsigne } if (next_mode != C1_BYTE) { - /* Insert byte field length */ - if ((tp - byte_start) <= 249) { - for (i = tp; i >= byte_start; i--) { - target[i + 1] = target[i]; - } - target[byte_start] = (tp - byte_start); - tp++; + /* Update byte field length */ + int byte_count = tp - (byte_start + 1); + if (byte_count <= 249) { + target[byte_start] = byte_count; } else { - for (i = tp; i >= byte_start; i--) { - target[i + 2] = target[i]; - } - target[byte_start] = 249 + ((tp - byte_start) / 250); - target[byte_start + 1] = ((tp - byte_start) % 250); - tp += 2; + /* Insert extra codeword */ + memmove(target + byte_start + 2, target + byte_start + 1, sizeof(unsigned int) * byte_count); + target[byte_start] = 249 + (byte_count / 250); + target[byte_start + 1] = (byte_count % 250); + tp++; } } else { - target[tp] = source[sp]; - tp++; + if (debug_print) printf("BYTE "); + + target[tp++] = source[sp]; sp++; } } if (tp > 1480) { + if (debug_print) printf("\n"); /* Data is too large for symbol */ - strcpy(symbol->errtxt, "511: Input data too long"); return 0; } } while (sp < length); - /* Empty buffers */ - if (c40_p == 2) { - int iv; - - c40_buffer[2] = 1; - iv = (1600 * c40_buffer[0]) + (40 * c40_buffer[1]) + (c40_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - target[tp] = 255; - tp++; /* Unlatch */ - } - if (c40_p == 1) { - int iv; - - c40_buffer[1] = 1; - c40_buffer[2] = 31; /* Pad */ - iv = (1600 * c40_buffer[0]) + (40 * c40_buffer[1]) + (c40_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - target[tp] = 255; - tp++; /* Unlatch */ - } - if (text_p == 2) { - int iv; - - text_buffer[2] = 1; - iv = (1600 * text_buffer[0]) + (40 * text_buffer[1]) + (text_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - target[tp] = 255; - tp++; /* Unlatch */ - } - if (text_p == 1) { - int iv; - - text_buffer[1] = 1; - text_buffer[2] = 31; /* Pad */ - iv = (1600 * text_buffer[0]) + (40 * text_buffer[1]) + (text_buffer[2]) + 1; - target[tp] = iv / 256; - tp++; - target[tp] = iv % 256; - tp++; - target[tp] = 255; - tp++; /* Unlatch */ + if (debug_print) { + printf("\nEnd Current Mode: %d, tp %d, cte_p %d, db_p %d\n", current_mode, tp, cte_p, db_p); } - if (current_mode == C1_DECIMAL) { - size_t bits_left_in_byte, target_count; - int sub_target; - /* Finish Decimal mode and go back to ASCII */ + /* Empty buffers (note cte_buffer will be empty if current_mode C1_EDI) */ + if (current_mode == C1_C40 || current_mode == C1_TEXT) { + if (cte_p >= 1) { + int cws_remaining = codewords_remaining(symbol, tp); - bin_append(63, 6, decimal_binary); /* Unlatch */ - - target_count = 3; - if (strlen(decimal_binary) <= 16) { - target_count = 2; - } - if (strlen(decimal_binary) <= 8) { - target_count = 1; - } - bits_left_in_byte = (8 * target_count) - strlen(decimal_binary); - if (bits_left_in_byte == 8) { - bits_left_in_byte = 0; - } - - if (bits_left_in_byte == 2) { - bin_append(1, 2, decimal_binary); - } - - if ((bits_left_in_byte == 4) || (bits_left_in_byte == 6)) { - bin_append(15, 4, decimal_binary); - } - - if (bits_left_in_byte == 6) { - bin_append(1, 2, decimal_binary); - } - - /* Binary buffer is full - transfer to target */ - if (target_count >= 1) { - sub_target = 0; - - for (i = 0; i < 8; i++) { - if (decimal_binary[i] == '1') { - sub_target += 128 >> i; + /* Note doing strict interpretation of spec here (same as BWIPP), unlike in Data Matrix case */ + if (cws_remaining == 1 && cte_p == 1 && isc40text(current_mode, source[sp - 1])) { + /* 2.2.2.2 "...except when a single symbol character is left at the end before the first + error correction character. This single character is encoded in the ASCII code set." */ + target[tp++] = source[sp - 1] + 1; /* As ASCII */ + cte_p = 0; + } else if (cws_remaining == 2 && cte_p == 2) { + /* 2.2.2.2 "Two characters may be encoded in C40 mode in the last two data symbol characters of the + symbol as two C40 values followed by one of the C40 shift characters." */ + cte_buffer[cte_p++] = 0; /* Shift 0 */ + cte_p = cte_buffer_transfer(cte_buffer, cte_p, target, &tp); + } + if (cte_p >= 1) { + int cnt, total_cnt = 0; + /* Backtrack to last complete triplet (same technique as BWIPP) */ + while (sp > 0 && cte_p % 3) { + sp--; + cnt = c40text_cnt(current_mode, gs1, source[sp]); + total_cnt += cnt; + cte_p -= cnt; } - } - target[tp] = sub_target; - tp++; - } - if (target_count >= 2) { - sub_target = 0; + tp -= (total_cnt / 3) * 2; - for (i = 0; i < 8; i++) { - if (decimal_binary[i + 8] == '1') { - sub_target += 128 >> i; + target[tp++] = 255; /* Unlatch */ + for (; sp < length; sp++) { + if (istwodigits(source, length, sp)) { + target[tp++] = (10 * ctoi(source[sp])) + ctoi(source[sp + 1]) + 130; + sp++; + } else if (source[sp] > 127) { + target[tp++] = 235; /* FNC4 (Upper Shift) */ + target[tp++] = (source[sp] - 128) + 1; + } else if ((gs1) && (source[sp] == '[')) { + target[tp++] = 232; /* FNC1 */ + } else { + target[tp++] = source[sp] + 1; + } } + current_mode = C1_ASCII; } - target[tp] = sub_target; - tp++; } - if (target_count == 3) { - sub_target = 0; - for (i = 0; i < 8; i++) { - if (decimal_binary[i + 16] == '1') { - sub_target += 128 >> i; - } - } - target[tp] = sub_target; - tp++; + } else if (current_mode == C1_DECIMAL) { + int bits_left; + + /* Finish Decimal mode and go back to ASCII unless only one codeword remaining */ + if (codewords_remaining(symbol, tp) > 1) { + db_p = bin_append_posn(63, 6, decimal_binary, db_p); /* Unlatch */ } - } - if (current_mode == C1_BYTE) { - /* Insert byte field length */ - if ((tp - byte_start) <= 249) { - for (i = tp; i >= byte_start; i--) { - target[i + 1] = target[i]; + if (db_p >= 8) { + db_p = decimal_binary_transfer(decimal_binary, db_p, target, &tp); + } + + bits_left = (8 - db_p) & 0x07; + + if (bits_left) { + + if ((bits_left == 4) || (bits_left == 6)) { + db_p = bin_append_posn(15, 4, decimal_binary, db_p); } - target[byte_start] = (tp - byte_start); - tp++; - } else { - for (i = tp; i >= byte_start; i--) { - target[i + 2] = target[i]; + + if (bits_left == 2 || bits_left == 6) { + db_p = bin_append_posn(1, 2, decimal_binary, db_p); + } + + (void)decimal_binary_transfer(decimal_binary, db_p, target, &tp); + } + current_mode = C1_ASCII; + + } else if (current_mode == C1_BYTE) { + /* Update byte field length unless no codewords remaining */ + if (codewords_remaining(symbol, tp) > 0) { + int byte_count = tp - (byte_start + 1); + if (byte_count <= 249) { + target[byte_start] = byte_count; + } else { + /* Insert extra byte field byte */ + memmove(target + byte_start + 2, target + byte_start + 1, sizeof(unsigned int) * byte_count); + target[byte_start] = 249 + (byte_count / 250); + target[byte_start + 1] = (byte_count % 250); + tp++; } - target[byte_start] = 249 + ((tp - byte_start) / 250); - target[byte_start + 1] = ((tp - byte_start) % 250); - tp += 2; } } /* Re-check length of data */ if (tp > 1480) { /* Data is too large for symbol */ - strcpy(symbol->errtxt, "512: Input data too long"); return 0; } - if (symbol->debug & ZINT_DEBUG_PRINT) { - printf("Target:"); + *p_last_mode = current_mode; + + if (debug_print) { + printf("Target (%d):", tp); for (i = 0; i < tp; i++) { printf(" [%d]", target[i]); } - printf("\n"); + printf("\nLast Mode: %d\n", *p_last_mode); } return tp; } -static void block_copy(struct zint_symbol *symbol, char grid[][120], int start_row, int start_col, int height, int width, int row_offset, int col_offset) { +/* Set symbol from datagrid */ +static void block_copy(struct zint_symbol *symbol, char datagrid[136][120], const int start_row, const int start_col, + const int height, const int width, const int row_offset, const int col_offset) { int i, j; for (i = start_row; i < (start_row + height); i++) { for (j = start_col; j < (start_col + width); j++) { - if (grid[i][j] == '1') { + if (datagrid[i][j]) { set_module(symbol, i + row_offset, j + col_offset); } } @@ -1191,6 +926,7 @@ INTERNAL int code_one(struct zint_symbol *symbol, unsigned char source[], int le int row, col; int sub_version = 0; rs_t rs; + int error_number = 0; if ((symbol->option_2 < 0) || (symbol->option_2 > 10)) { strcpy(symbol->errtxt, "513: Invalid symbol size"); @@ -1201,12 +937,11 @@ INTERNAL int code_one(struct zint_symbol *symbol, unsigned char source[], int le /* Version S */ int codewords; large_int elreg; - unsigned int data[15], ecc[15]; - int stream[30]; + unsigned int data[30], ecc[15]; int block_width; if (length > 18) { - strcpy(symbol->errtxt, "514: Input data too long"); + strcpy(symbol->errtxt, "514: Input data too long for Version S"); return ZINT_ERROR_TOO_LONG; } if (is_sane(NEON, source, length) == ZINT_ERROR_INVALID_DATA) { @@ -1214,200 +949,163 @@ INTERNAL int code_one(struct zint_symbol *symbol, unsigned char source[], int le return ZINT_ERROR_INVALID_DATA; } - sub_version = 3; - codewords = 12; - block_width = 6; /* Version S-30 */ - if (length <= 12) { - /* Version S-20 */ - sub_version = 2; - codewords = 8; - block_width = 4; - } + size = 9; if (length <= 6) { /* Version S-10 */ sub_version = 1; codewords = 4; block_width = 2; + } else if (length <= 12) { + /* Version S-20 */ + sub_version = 2; + codewords = 8; + block_width = 4; + } else { + /* Version S-30 */ + sub_version = 3; + codewords = 12; + block_width = 6; } + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Subversion: %d\n", sub_version); + } + + /* Convert value plus one to binary */ large_load_str_u64(&elreg, source, length); - - for (i = 0; i < 15; i++) { - data[i] = 0; - ecc[i] = 0; - } - + large_add_u64(&elreg, 1); large_uint_array(&elreg, data, codewords, 5 /*bits*/); rs_init_gf(&rs, 0x25); - rs_init_code(&rs, codewords, 1); + rs_init_code(&rs, codewords, 0); rs_encode_uint(&rs, codewords, data, ecc); for (i = 0; i < codewords; i++) { - stream[i] = data[i]; - stream[i + codewords] = ecc[codewords - i - 1]; + data[i + codewords] = ecc[codewords - i - 1]; } - for (i = 0; i < 136; i++) { - for (j = 0; j < 120; j++) { - datagrid[i][j] = '0'; - } + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Codewords (%d): ", codewords); + for (i = 0; i < codewords * 2; i++) printf(" %d", data[i]); + printf("\n"); } i = 0; for (row = 0; row < 2; row++) { for (col = 0; col < block_width; col++) { - if (stream[i] & 0x10) { - datagrid[row * 2][col * 5] = '1'; - } - if (stream[i] & 0x08) { - datagrid[row * 2][(col * 5) + 1] = '1'; - } - if (stream[i] & 0x04) { - datagrid[row * 2][(col * 5) + 2] = '1'; - } - if (stream[i] & 0x02) { - datagrid[(row * 2) + 1][col * 5] = '1'; - } - if (stream[i] & 0x01) { - datagrid[(row * 2) + 1][(col * 5) + 1] = '1'; - } - if (stream[i + 1] & 0x10) { - datagrid[row * 2][(col * 5) + 3] = '1'; - } - if (stream[i + 1] & 0x08) { - datagrid[row * 2][(col * 5) + 4] = '1'; - } - if (stream[i + 1] & 0x04) { - datagrid[(row * 2) + 1][(col * 5) + 2] = '1'; - } - if (stream[i + 1] & 0x02) { - datagrid[(row * 2) + 1][(col * 5) + 3] = '1'; - } - if (stream[i + 1] & 0x01) { - datagrid[(row * 2) + 1][(col * 5) + 4] = '1'; - } + datagrid[row * 2][col * 5] = data[i] & 0x10; + datagrid[row * 2][(col * 5) + 1] = data[i] & 0x08; + datagrid[row * 2][(col * 5) + 2] = data[i] & 0x04; + datagrid[(row * 2) + 1][col * 5] = data[i] & 0x02; + datagrid[(row * 2) + 1][(col * 5) + 1] = data[i] & 0x01; + datagrid[row * 2][(col * 5) + 3] = data[i + 1] & 0x10; + datagrid[row * 2][(col * 5) + 4] = data[i + 1] & 0x08; + datagrid[(row * 2) + 1][(col * 5) + 2] = data[i + 1] & 0x04; + datagrid[(row * 2) + 1][(col * 5) + 3] = data[i + 1] & 0x02; + datagrid[(row * 2) + 1][(col * 5) + 4] = data[i + 1] & 0x01; i += 2; } } - size = 9; symbol->rows = 8; symbol->width = 10 * sub_version + 1; - } - if (symbol->option_2 == 10) { + } else if (symbol->option_2 == 10) { /* Version T */ - unsigned int data[80] = {0}; /* Allow for doubled digits */ + unsigned int data[90 + 2]; /* Allow for 90 BYTE mode (+ latch and byte count) */ unsigned int ecc[22]; - unsigned int stream[60]; int data_length; int data_cw, ecc_cw, block_width; + int last_mode; - if (length > 80) { - strcpy(symbol->errtxt, "519: Input data too long"); + if (length > 90 || (symbol->eci && length + 7 + chr_cnt(source, length, '\\') > 90)) { + strcpy(symbol->errtxt, "519: Input data too long for Version T"); return ZINT_ERROR_TOO_LONG; } - data_length = c1_encode(symbol, source, data, length); + data_length = c1_encode(symbol, source, data, length, &last_mode); - if (data_length == 0) { - return ZINT_ERROR_TOO_LONG; - } - - if (data_length > 38) { - strcpy(symbol->errtxt, "516: Input data too long"); + if (data_length == 0 || data_length > 38) { + strcpy(symbol->errtxt, "516: Input data too long for Version T"); return ZINT_ERROR_TOO_LONG; } size = 10; - sub_version = 3; - data_cw = 38; - ecc_cw = 22; - block_width = 12; - if (data_length <= 24) { - sub_version = 2; - data_cw = 24; - ecc_cw = 16; - block_width = 8; - } if (data_length <= 10) { sub_version = 1; data_cw = 10; ecc_cw = 10; block_width = 4; + } else if (data_length <= 24) { + sub_version = 2; + data_cw = 24; + ecc_cw = 16; + block_width = 8; + } else { + sub_version = 3; + data_cw = 38; + ecc_cw = 22; + block_width = 12; } - for (i = data_length; i < data_cw; i++) { - data[i] = 129; /* Pad */ + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Padding: %d, Subversion: %d\n", data_cw - data_length, sub_version); + } + + /* If require padding */ + if (data_cw > data_length) { + /* If did not finish in ASCII or BYTE mode, switch to ASCII */ + if (last_mode != C1_ASCII && last_mode != C1_BYTE) { + data[data_length++] = 255; /* Unlatch */ + } + for (i = data_length; i < data_cw; i++) { + data[i] = 129; /* Pad */ + } } /* Calculate error correction data */ rs_init_gf(&rs, 0x12d); - rs_init_code(&rs, ecc_cw, 1); + rs_init_code(&rs, ecc_cw, 0); rs_encode_uint(&rs, data_cw, data, ecc); - /* "Stream" combines data and error correction data */ - for (i = 0; i < data_cw; i++) { - stream[i] = data[i]; - } for (i = 0; i < ecc_cw; i++) { - stream[data_cw + i] = ecc[ecc_cw - i - 1]; + data[data_cw + i] = ecc[ecc_cw - i - 1]; } - for (i = 0; i < 136; i++) { - for (j = 0; j < 120; j++) { - datagrid[i][j] = '0'; - } + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Codewords (%d):", data_cw + ecc_cw); + for (i = 0; i < data_cw + ecc_cw; i++) printf(" %d", data[i]); + printf("\n"); } i = 0; for (row = 0; row < 5; row++) { for (col = 0; col < block_width; col++) { - if (stream[i] & 0x80) { - datagrid[row * 2][col * 4] = '1'; - } - if (stream[i] & 0x40) { - datagrid[row * 2][(col * 4) + 1] = '1'; - } - if (stream[i] & 0x20) { - datagrid[row * 2][(col * 4) + 2] = '1'; - } - if (stream[i] & 0x10) { - datagrid[row * 2][(col * 4) + 3] = '1'; - } - if (stream[i] & 0x08) { - datagrid[(row * 2) + 1][col * 4] = '1'; - } - if (stream[i] & 0x04) { - datagrid[(row * 2) + 1][(col * 4) + 1] = '1'; - } - if (stream[i] & 0x02) { - datagrid[(row * 2) + 1][(col * 4) + 2] = '1'; - } - if (stream[i] & 0x01) { - datagrid[(row * 2) + 1][(col * 4) + 3] = '1'; - } + datagrid[row * 2][col * 4] = data[i] & 0x80; + datagrid[row * 2][(col * 4) + 1] = data[i] & 0x40; + datagrid[row * 2][(col * 4) + 2] = data[i] & 0x20; + datagrid[row * 2][(col * 4) + 3] = data[i] & 0x10; + datagrid[(row * 2) + 1][col * 4] = data[i] & 0x08; + datagrid[(row * 2) + 1][(col * 4) + 1] = data[i] & 0x04; + datagrid[(row * 2) + 1][(col * 4) + 2] = data[i] & 0x02; + datagrid[(row * 2) + 1][(col * 4) + 3] = data[i] & 0x01; i++; } } symbol->rows = 16; symbol->width = (sub_version * 16) + 1; - } - if ((symbol->option_2 != 9) && (symbol->option_2 != 10)) { - /* Version A to H */ - unsigned int data[1500], ecc[600]; - unsigned int sub_data[190], sub_ecc[75]; - unsigned int stream[2100]; + } else { + /* Versions A to H */ + unsigned int data[1480 + 560]; + unsigned int sub_data[185], sub_ecc[70]; int data_length; - int data_blocks; + int data_cw; + int blocks, data_blocks, ecc_blocks, ecc_length; + int last_mode; - for (i = 0; i < 1500; i++) { - data[i] = 0; - } - data_length = c1_encode(symbol, source, data, length); + data_length = c1_encode(symbol, source, data, length, &last_mode); if (data_length == 0) { strcpy(symbol->errtxt, "517: Input data is too long"); @@ -1428,76 +1126,59 @@ INTERNAL int code_one(struct zint_symbol *symbol, unsigned char source[], int le strcpy(symbol->errtxt, "518: Input too long for selected symbol size"); return ZINT_ERROR_TOO_LONG; } + data_cw = c1_data_length[size - 1]; - for (i = data_length; i < c1_data_length[size - 1]; i++) { - data[i] = 129; /* Pad */ + /* If require padding */ + if (data_cw > data_length) { + /* If did not finish in ASCII or BYTE mode, switch to ASCII */ + if (last_mode != C1_ASCII && last_mode != C1_BYTE) { + data[data_length++] = 255; /* Unlatch */ + } + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Padding: %d\n", data_cw - data_length); + } + for (i = data_length; i < data_cw; i++) { + data[i] = 129; /* Pad */ + } + } else if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("No padding\n"); } /* Calculate error correction data */ - data_length = c1_data_length[size - 1]; - for (i = 0; i < 190; i++) { - sub_data[i] = 0; - } - for (i = 0; i < 75; i++) { - sub_ecc[i] = 0; - } - - data_blocks = c1_blocks[size - 1]; + blocks = c1_blocks[size - 1]; + data_blocks = c1_data_blocks[size - 1]; + ecc_blocks = c1_ecc_blocks[size - 1]; + ecc_length = c1_ecc_length[size - 1]; rs_init_gf(&rs, 0x12d); - rs_init_code(&rs, c1_ecc_blocks[size - 1], 0); - for (i = 0; i < data_blocks; i++) { - for (j = 0; j < c1_data_blocks[size - 1]; j++) { - - sub_data[j] = data[j * data_blocks + i]; + rs_init_code(&rs, ecc_blocks, 0); + for (i = 0; i < blocks; i++) { + for (j = 0; j < data_blocks; j++) { + sub_data[j] = data[j * blocks + i]; } - rs_encode_uint(&rs, c1_data_blocks[size - 1], sub_data, sub_ecc); - for (j = 0; j < c1_ecc_blocks[size - 1]; j++) { - ecc[c1_ecc_length[size - 1] - (j * data_blocks + i) - 1] = sub_ecc[j]; + rs_encode_uint(&rs, data_blocks, sub_data, sub_ecc); + for (j = 0; j < ecc_blocks; j++) { + data[data_cw + j * blocks + i] = sub_ecc[ecc_blocks - 1 - j]; } } - /* "Stream" combines data and error correction data */ - for (i = 0; i < data_length; i++) { - stream[i] = data[i]; - } - for (i = 0; i < c1_ecc_length[size - 1]; i++) { - stream[data_length + i] = ecc[i]; - } - - for (i = 0; i < 136; i++) { - for (j = 0; j < 120; j++) { - datagrid[i][j] = '0'; - } + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Codewords (%d):", data_cw + ecc_length); + for (i = 0; i < data_cw + ecc_length; i++) printf(" %d", data[i]); + printf("\n"); } i = 0; for (row = 0; row < c1_grid_height[size - 1]; row++) { for (col = 0; col < c1_grid_width[size - 1]; col++) { - if (stream[i] & 0x80) { - datagrid[row * 2][col * 4] = '1'; - } - if (stream[i] & 0x40) { - datagrid[row * 2][(col * 4) + 1] = '1'; - } - if (stream[i] & 0x20) { - datagrid[row * 2][(col * 4) + 2] = '1'; - } - if (stream[i] & 0x10) { - datagrid[row * 2][(col * 4) + 3] = '1'; - } - if (stream[i] & 0x08) { - datagrid[(row * 2) + 1][col * 4] = '1'; - } - if (stream[i] & 0x04) { - datagrid[(row * 2) + 1][(col * 4) + 1] = '1'; - } - if (stream[i] & 0x02) { - datagrid[(row * 2) + 1][(col * 4) + 2] = '1'; - } - if (stream[i] & 0x01) { - datagrid[(row * 2) + 1][(col * 4) + 3] = '1'; - } + datagrid[row * 2][col * 4] = data[i] & 0x80; + datagrid[row * 2][(col * 4) + 1] = data[i] & 0x40; + datagrid[row * 2][(col * 4) + 2] = data[i] & 0x20; + datagrid[row * 2][(col * 4) + 3] = data[i] & 0x10; + datagrid[(row * 2) + 1][col * 4] = data[i] & 0x08; + datagrid[(row * 2) + 1][(col * 4) + 1] = data[i] & 0x04; + datagrid[(row * 2) + 1][(col * 4) + 2] = data[i] & 0x02; + datagrid[(row * 2) + 1][(col * 4) + 3] = data[i] & 0x01; i++; } } @@ -1506,6 +1187,10 @@ INTERNAL int code_one(struct zint_symbol *symbol, unsigned char source[], int le symbol->width = c1_width[size - 1]; } + if (symbol->debug & ZINT_DEBUG_PRINT) { + printf("Version: %d\n", size); + } + switch (size) { case 1: /* Version A */ central_finder(symbol, 6, 3, 1); @@ -1763,5 +1448,15 @@ INTERNAL int code_one(struct zint_symbol *symbol, unsigned char source[], int le symbol->row_height[i] = 1; } - return 0; + if (symbol->option_2 == 9) { /* Version S */ + if (symbol->eci || (symbol->input_mode & 0x07) == GS1_MODE) { + strcpy(symbol->errtxt, "511: ECI and GS1 mode ignored for Version S"); + error_number = ZINT_WARN_INVALID_OPTION; + } + } else if (symbol->eci && (symbol->input_mode & 0x07) == GS1_MODE) { + strcpy(symbol->errtxt, "512: ECI ignored for GS1 mode"); + error_number = ZINT_WARN_INVALID_OPTION; + } + + return error_number; } diff --git a/backend/library.c b/backend/library.c index aa419c4f..3fa691f8 100644 --- a/backend/library.c +++ b/backend/library.c @@ -553,6 +553,7 @@ static int supports_eci(const int symbology) { case BARCODE_PDF417COMP: case BARCODE_QRCODE: case BARCODE_DOTCODE: + case BARCODE_CODEONE: case BARCODE_GRIDMATRIX: case BARCODE_HANXIN: case BARCODE_ULTRA: diff --git a/backend/tests/test_code1.c b/backend/tests/test_code1.c index b4e8fc95..4cb9f2ba 100644 --- a/backend/tests/test_code1.c +++ b/backend/tests/test_code1.c @@ -1,6 +1,6 @@ /* libzint - the open source barcode library - Copyright (C) 2020 Robin Stuart + Copyright (C) 2020 - 2021 Robin Stuart Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -44,38 +44,121 @@ static void test_large(int index, int debug) { int expected_rows; int expected_width; }; + // Reference AIM USS Code One Table 2 // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) struct item data[] = { - /* 0*/ { -1, "1", 2955, 0, 148, 134 }, - /* 1*/ { -1, "1", 2956, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 2*/ { -1, "A", 2217, 0, 148, 134 }, - /* 3*/ { -1, "A", 2218, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 4*/ { -1, "\001", 1480, 0, 148, 134 }, + /* 0*/ { -1, "1", 3550, 0, 148, 134 }, /* Auto Version H */ + /* 1*/ { -1, "1", 3551, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 2*/ { -1, "A", 2218, 0, 148, 134 }, + /* 3*/ { -1, "A", 2219, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 4*/ { -1, "\001", 1480, 0, 148, 134 }, /* Full ASCII */ /* 5*/ { -1, "\001", 1481, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 6*/ { 1, "1", 12, 0, 16, 18 }, - /* 7*/ { 1, "1", 13, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 8*/ { 2, "1", 33, 0, 22, 22 }, - /* 9*/ { 2, "1", 34, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 10*/ { 3, "1", 75, 0, 28, 32 }, - /* 11*/ { 3, "1", 76, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 12*/ { 4, "1", 177, 0, 40, 42 }, - /* 13*/ { 4, "1", 178, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 14*/ { 5, "1", 360, 0, 52, 54 }, - /* 15*/ { 5, "1", 361, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 16*/ { 6, "1", 732, 0, 70, 76 }, - /* 17*/ { 6, "1", 733, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 18*/ { 7, "1", 1452, 0, 104, 98 }, - /* 19*/ { 7, "1", 1453, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 20*/ { 8, "1", 2955, 0, 148, 134 }, - /* 21*/ { 8, "1", 2956, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 22*/ { 9, "1", 18, 0, 8, 31 }, - /* 23*/ { 9, "1", 19, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 24*/ { 10, "1", 69, 0, 16, 49 }, - /* 25*/ { 10, "1", 70, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 26*/ { 10, "A", 54, 0, 16, 49 }, - /* 27*/ { 10, "A", 55, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 28*/ { 10, "\001", 38, 0, 16, 49 }, - /* 29*/ { 10, "\001", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 6*/ { -1, "\200", 1478, 0, 148, 134 }, /* BYTE */ + /* 7*/ { -1, "\200", 1479, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 8*/ { 1, "1", 22, 0, 16, 18 }, /* Version A */ + /* 9*/ { 1, "1", 23, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 10*/ { 1, "A", 13, 0, 16, 18 }, + /* 11*/ { 1, "A", 14, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 12*/ { 1, "\001", 10, 0, 16, 18 }, + /* 13*/ { 1, "\001", 11, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 14*/ { 1, "\200", 8, 0, 16, 18 }, + /* 15*/ { 1, "\200", 9, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 16*/ { 2, "1", 44, 0, 22, 22 }, /* Version B */ + /* 17*/ { 2, "1", 45, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 18*/ { 2, "A", 27, 0, 22, 22 }, + /* 19*/ { 2, "A", 28, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 20*/ { 2, "A", 26, 0, 22, 22 }, + /* 21*/ { 2, "\001", 19, 0, 22, 22 }, + /* 22*/ { 2, "\001", 20, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 23*/ { 2, "\200", 17, 0, 22, 22 }, + /* 24*/ { 2, "\200", 18, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 25*/ { 3, "1", 104, 0, 28, 32 }, /* Version C */ + /* 26*/ { 3, "1", 105, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 27*/ { 3, "A", 64, 0, 28, 32 }, + /* 28*/ { 3, "A", 65, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 29*/ { 3, "\001", 44, 0, 28, 32 }, + /* 30*/ { 3, "\001", 45, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 31*/ { 3, "\200", 42, 0, 28, 32 }, + /* 32*/ { 3, "\200", 43, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 33*/ { 4, "1", 217, 0, 40, 42 }, /* Version D */ + /* 34*/ { 4, "1", 218, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 35*/ { 4, "A", 135, 0, 40, 42 }, + /* 36*/ { 4, "A", 136, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 37*/ { 4, "\001", 91, 0, 40, 42 }, + /* 38*/ { 4, "\001", 92, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 39*/ { 4, "\200", 89, 0, 40, 42 }, + /* 40*/ { 4, "\200", 90, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 41*/ { 5, "1", 435, 0, 52, 54 }, /* Version E (note 435 multiple of 3) */ + /* 42*/ { 5, "1", 436, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 43*/ { 5, "1", 434, ZINT_ERROR_TOO_LONG, -1, -1 }, /* NOTE: a quirk of decimal end-of-data processing is existence of "lower maxs" if digits are not a multiple of 3 */ + /* 44*/ { 5, "1", 433, 0, 52, 54 }, + /* 45*/ { 5, "A", 271, 0, 52, 54 }, + /* 46*/ { 5, "A", 272, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 47*/ { 5, "\001", 182, 0, 52, 54 }, + /* 48*/ { 5, "\001", 183, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 49*/ { 5, "\200", 180, 0, 52, 54 }, + /* 50*/ { 5, "\200", 181, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 51*/ { 6, "1", 886, 0, 70, 76 }, /* Version F */ + /* 52*/ { 6, "1", 887, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 53*/ { 6, "A", 553, 0, 70, 76 }, + /* 54*/ { 6, "A", 554, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 55*/ { 6, "\001", 370, 0, 70, 76 }, + /* 56*/ { 6, "\001", 371, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 57*/ { 6, "\200", 368, 0, 70, 76 }, + /* 58*/ { 6, "\200", 369, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 59*/ { 7, "1", 1755, 0, 104, 98 }, /* Version G (note 1755 multiple of 3) */ + /* 60*/ { 7, "1", 1756, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 61*/ { 7, "1", 1754, ZINT_ERROR_TOO_LONG, -1, -1 }, /* NOTE: a quirk of decimal end-of-data processing is existence of "lower maxs" if digits are not a multiple of 3 */ + /* 62*/ { 7, "1", 1753, 0, 104, 98 }, + /* 63*/ { 7, "A", 1096, 0, 104, 98 }, + /* 64*/ { 7, "A", 1097, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 65*/ { 7, "\001", 732, 0, 104, 98 }, + /* 66*/ { 7, "\001", 733, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 67*/ { 7, "\200", 730, 0, 104, 98 }, + /* 68*/ { 7, "\200", 731, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 69*/ { 8, "1", 3550, 0, 148, 134 }, /* Version H */ + /* 70*/ { 8, "1", 3551, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 71*/ { 8, "A", 2218, 0, 148, 134 }, + /* 72*/ { 8, "A", 2219, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 73*/ { 8, "\001", 1480, 0, 148, 134 }, + /* 74*/ { 8, "\001", 1481, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 75*/ { 8, "\200", 1478, 0, 148, 134 }, + /* 76*/ { 8, "\200", 1479, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 77*/ { 9, "1", 6, 0, 8, 11 }, /* Version S-10 */ + /* 78*/ { 9, "1", 7, 0, 8, 21 }, /* -> S-20 */ + /* 79*/ { 9, "1", 12, 0, 8, 21 }, /* Version S-20 */ + /* 80*/ { 9, "1", 13, 0, 8, 31 }, /* -> S-30 */ + /* 81*/ { 9, "1", 18, 0, 8, 31 }, /* Version S-30 */ + /* 82*/ { 9, "1", 19, ZINT_ERROR_TOO_LONG, -1, -1 }, + /* 83*/ { 9, "1", 17, 0, 8, 31 }, + /* 84*/ { 10, "1", 22, 0, 16, 17 }, /* Version T-16 */ + /* 85*/ { 10, "1", 23, 0, 16, 33 }, /* -> T-32 */ + /* 86*/ { 10, "A", 13, 0, 16, 17 }, + /* 87*/ { 10, "A", 14, 0, 16, 33 }, /* -> T-32 */ + /* 88*/ { 10, "\001", 10, 0, 16, 17 }, + /* 89*/ { 10, "\001", 11, 0, 16, 33 }, /* -> T-32 */ + /* 90*/ { 10, "\200", 8, 0, 16, 17 }, + /* 91*/ { 10, "\200", 9, 0, 16, 33 }, /* -> T-32 */ + /* 92*/ { 10, "1", 56, 0, 16, 33 }, /* Version T-32 */ + /* 93*/ { 10, "1", 57, 0, 16, 49 }, /* -> T-48 */ + /* 94*/ { 10, "A", 34, 0, 16, 33 }, + /* 95*/ { 10, "A", 35, 0, 16, 49 }, /* -> T-48 */ + /* 96*/ { 10, "\001", 24, 0, 16, 33 }, + /* 97*/ { 10, "\001", 25, 0, 16, 49 }, /* -> T-48 */ + /* 98*/ { 10, "\200", 22, 0, 16, 33 }, + /* 99*/ { 10, "\200", 23, 0, 16, 49 }, /* -> T-48 */ + /*100*/ { 10, "1", 90, 0, 16, 49 }, /* Version T-48 (note 90 multiple of 3) */ + /*101*/ { 10, "1", 91, ZINT_ERROR_TOO_LONG, -1, -1 }, + /*102*/ { 10, "1", 89, ZINT_ERROR_TOO_LONG, -1, -1 }, /* NOTE: a quirk of decimal end-of-data processing is existence of "lower maxs" if digits are not a multiple of 3 */ + /*103*/ { 10, "1", 88, 0, 16, 49 }, + /*104*/ { 10, "A", 55, 0, 16, 49 }, + /*105*/ { 10, "A", 56, ZINT_ERROR_TOO_LONG, -1, -1 }, + /*106*/ { 10, "A", 90, ZINT_ERROR_TOO_LONG, -1, -1 }, + /*107*/ { 10, "\001", 38, 0, 16, 49 }, + /*108*/ { 10, "\001", 39, ZINT_ERROR_TOO_LONG, -1, -1 }, + /*109*/ { 10, "\001", 90, ZINT_ERROR_TOO_LONG, -1, -1 }, + /*110*/ { 10, "\200", 36, 0, 16, 49 }, + /*111*/ { 10, "\200", 37, ZINT_ERROR_TOO_LONG, -1, -1 }, }; int data_size = ARRAY_SIZE(data); @@ -84,6 +167,7 @@ static void test_large(int index, int debug) { for (int i = 0; i < data_size; i++) { if (index != -1 && i != index) continue; + if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); struct zint_symbol *symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); @@ -96,7 +180,7 @@ static void test_large(int index, int debug) { ret = ZBarcode_Encode(symbol, (unsigned char *) data_buf, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); - if (ret < 5) { + if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); } @@ -114,48 +198,64 @@ static void test_input(int index, int debug) { int ret; struct item { int input_mode; + int eci; int option_2; char *data; int length; int ret; int expected_rows; int expected_width; + const char *expected_errtxt; }; // s/\/\*[ 0-9]*\*\//\=printf("\/*%3d*\/", line(".") - line("'<")) struct item data[] = { - /* 0*/ { -1, -1, "123456789012ABCDEFGHI", -1, 0, 22, 22 }, - /* 1*/ { -1, -1, "123456789012ABCDEFGHIJ", -1, 0, 22, 22 }, - /* 2*/ { -1, -1, "1", -1, 0, 16, 18 }, - /* 3*/ { -1, 0, "1", -1, 0, 16, 18 }, - /* 4*/ { -1, 1, "1", -1, 0, 16, 18 }, - /* 5*/ { -1, 11, "1", -1, ZINT_ERROR_INVALID_OPTION, -1, -1 }, - /* 6*/ { -1, 9, "123456789012345678", -1, 0, 8, 31 }, - /* 7*/ { -1, 9, "12345678901234567A", -1, ZINT_ERROR_INVALID_DATA, -1, -1 }, - /* 8*/ { -1, 10, "123456789012345678901234567890123456789012345678901234567890123456789", -1, 0, 16, 49 }, - /* 9*/ { -1, 10, "1234567890123456789012345678901234567890123456789012345678901234567890123456", -1, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 10*/ { -1, 10, "1234567890123456789012345678901234567890123456789012345678901234567890123456789", -1, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 11*/ { -1, 10, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, 0, 16, 49 }, - /* 12*/ { -1, 10, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, ZINT_ERROR_TOO_LONG, -1, -1 }, - /* 13*/ { -1, 10, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 38, 0, 16, 49 }, + /* 0*/ { -1, -1, -1, "123456789012ABCDEFGHI", -1, 0, 22, 22, "", }, + /* 1*/ { -1, -1, -1, "123456789012ABCDEFGHIJ", -1, 0, 22, 22, "", }, + /* 2*/ { -1, -1, -1, "1", -1, 0, 16, 18, "", }, + /* 3*/ { -1, -1, 0, "1", -1, 0, 16, 18, "", }, + /* 4*/ { -1, -1, 1, "1", -1, 0, 16, 18, "", }, + /* 5*/ { -1, -1, 1, "ABCDEFGHIJKLMN", -1, ZINT_ERROR_TOO_LONG, -1, -1, "Error 518: Input too long for selected symbol size", }, + /* 6*/ { GS1_MODE, -1, 1, "[01]12345678901231", -1, 0, 16, 18, "", }, + /* 7*/ { -1, 3, 1, "1", -1, 0, 16, 18, "", }, + /* 8*/ { UNICODE_MODE, 3, 1, "é", -1, 0, 16, 18, "", }, + /* 9*/ { GS1_MODE, 3, 1, "[01]12345678901231", -1, ZINT_WARN_INVALID_OPTION, 16, 18, "Warning 512: ECI ignored for GS1 mode", }, + /* 10*/ { -1, -1, 9, "123456789012345678", -1, 0, 8, 31, "", }, + /* 11*/ { -1, -1, 9, "12345678901234567A", -1, ZINT_ERROR_INVALID_DATA, -1, -1, "Error 515: Invalid input data (Version S encodes numeric input only)", }, + /* 12*/ { -1, -1, 9, "1234567890123456789", -1, ZINT_ERROR_TOO_LONG, -1, -1, "Error 514: Input data too long for Version S", }, + /* 13*/ { GS1_MODE, -1, 9, "[01]12345678901231", -1, ZINT_WARN_INVALID_OPTION, 8, 31, "Warning 511: ECI and GS1 mode ignored for Version S", }, + /* 14*/ { -1, 3, 9, "1", -1, ZINT_WARN_INVALID_OPTION, 8, 11, "Warning 511: ECI and GS1 mode ignored for Version S", }, + /* 15*/ { -1, -1, 10, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", -1, 0, 16, 49, "", }, + /* 16*/ { -1, -1, 10, "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901", -1, ZINT_ERROR_TOO_LONG, -1, -1, "Error 519: Input data too long for Version T", }, + /* 17*/ { -1, -1, 10, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, 0, 16, 49, "", }, + /* 18*/ { -1, -1, 10, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", -1, ZINT_ERROR_TOO_LONG, -1, -1, "Error 516: Input data too long for Version T", }, + /* 19*/ { -1, -1, 10, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 38, 0, 16, 49, "", }, + /* 20*/ { -1, 3, 10, "1234567890123456789012345678901234567890123456789012345678901234567890123456", -1, 0, 16, 49, "", }, + /* 21*/ { -1, 3, 10, "12345678901234567890123456789012345678901234567890123456789012345678901234567", -1, ZINT_ERROR_TOO_LONG, -1, -1, "Error 516: Input data too long for Version T", }, + /* 22*/ { -1, 3, 10, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234", -1, ZINT_ERROR_TOO_LONG, -1, -1, "Error 519: Input data too long for Version T", }, + /* 23*/ { GS1_MODE, -1, 10, "[01]12345678901231", -1, 0, 16, 17, "", }, + /* 24*/ { GS1_MODE, 3, 10, "[01]12345678901231", -1, ZINT_WARN_INVALID_OPTION, 16, 17, "Warning 512: ECI ignored for GS1 mode", }, + /* 25*/ { -1, -1, 11, "1", -1, ZINT_ERROR_INVALID_OPTION, -1, -1, "Error 513: Invalid symbol size", }, }; int data_size = ARRAY_SIZE(data); for (int i = 0; i < data_size; i++) { if (index != -1 && i != index) continue; + if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); struct zint_symbol *symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - int length = testUtilSetSymbol(symbol, BARCODE_CODEONE, data[i].input_mode, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); + int length = testUtilSetSymbol(symbol, BARCODE_CODEONE, data[i].input_mode, data[i].eci, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); - if (ret < 5) { + if (ret < ZINT_ERROR) { assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d\n", i, symbol->rows, data[i].expected_rows); assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d\n", i, symbol->width, data[i].expected_width); } + assert_zero(strcmp(symbol->errtxt, data[i].expected_errtxt), "i:%d symbol->errtxt %s != %s\n", i, symbol->errtxt, data[i].expected_errtxt); ZBarcode_Delete(symbol); } @@ -171,6 +271,8 @@ static void test_encode(int index, int generate, int debug) { int ret; struct item { + int input_mode; + int eci; int option_2; char *data; int length; @@ -182,26 +284,121 @@ static void test_encode(int index, int generate, int debug) { char *comment; char *expected; }; + // Figure examples AIM USS Code One (USSCO) Revision March 3, 2000 struct item data[] = { - /* 0*/ { -1, "123456789012", -1, 0, 16, 18, 1, "", - "100011101010111101" - "111010010010100000" - "110110100010001000" - "110010111000010001" - "100010100011010100" + /* 0*/ { -1, -1, -1, "1234567890123456789012", -1, 0, 16, 18, 1, "USSCO Figure 1 (Version A, no padding), same", + "111111111111001100" + "000110000110010101" + "100010110101101010" + "000010010110100111" + "111010100010101100" "000010000000100000" "111111111111111111" "000000000000000000" "011111111111111110" "010000000000000010" "011111111111111110" - "000100010100100101" - "011001001110101101" - "011010010010101111" - "010111110100100111" - "100010001101111100" + "000111011001101110" + "010110011110101111" + "101000010001101000" + "100111000001100000" + "101000001010111101" }, - /* 1*/ { -1, "Code One", -1, 0, 16, 18, 1, "BWIPP example", + /* 1*/ { -1, -1, -1, "???????????????????????????????????????????????????????????????????????????????????????????", -1, 0, 40, 42, 1, "USSCO Figure 7 (Version D, no padding), same", + "010011010001000100011100010001000100110100" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "010011010001000100011100010001000100110100" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "111111111111111111111111111111111111111111" + "000000000000000000000000000000000000000000" + "011111111111111111111111111111111111111110" + "010000000000000000000000000000000000000010" + "011111111111111111111111111111111111111110" + "010000000000000000000000000000000000000010" + "011111111111111111111111111111111111111110" + "010000000000000000000000000000000000000010" + "011111111111111111111111111111111111111110" + "000010000000000000001000000000000000100000" + "010010010001000100011000010001000100100100" + "000011000000000000001100000000000000110000" + "010010010001000100011000010001000100100100" + "000010000000000000001000000000000000100000" + "010010111100010001111000011011111001100011" + "000010001000000000011010101011101000101101" + "001110101011100111011000101110010010101011" + "101010110000000011011001000100101100100000" + "100110011111100011001010001111001100101100" + "001110111010110001101011100101111101101100" + "101010111111011110111001000100010110100111" + "001110010111101000111000010011001011101011" + "001010001001110101011000110000111010101100" + "101111001111111001001101111000011111110010" + }, + /* 2*/ { -1, -1, 9, "1234567890", -1, 0, 8, 21, 1, "USSCO Figure 9 (left) NOTE: S-20 not S-10 as stated, same", + "000000011110110010110" + "000010000100000010011" + "101111110100010100100" + "010010001100110001010" + "000000000010000000000" + "111111111111111111111" + "100000000000000000001" + "101111111111111111101" + }, + /* 3*/ { -1, -1, 10, "12345678901234567890", -1, 0, 16, 17, 1, "USSCO Figure 9 (right) **NOT SAME** different encodation, figure uses ASCII double digits, Zint DECIMAL (same no. of codewords)", + "11111111111001100" + "00010001010010101" + "10001101001101010" + "00000101010100111" + "11111101010000111" + "11011100000100101" + "11000001000000111" + "01111010010010011" + "11111010001101101" + "00100011010111111" + "00000000100000000" + "11111111111111111" + "10000000000000001" + "10111111111111101" + "10000000000000001" + "10111111111111101" + }, + /* 4*/ { GS1_MODE, -1, 2, "[01]00312341234014[15]950915[10]ABC123456", -1, 0, 22, 22, 1, "USSCO Figure B1 **NOT SAME** using (10) not (30) as (30) no longer compliant", + "1110110000110000001010" + "1100100010001000111100" + "0111100110100100001101" + "1100100100101011101111" + "1001101111100001000100" + "0100101101110000100011" + "0100101000101010110101" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100111001001010100111" + "1001110100011011100001" + "0011101101100110100101" + "1101000110001101100000" + "1010001101011111101100" + "1111101011001110101010" + "1010010111000001110111" + }, + /* 5*/ { -1, -1, -1, "Code One", -1, 0, 16, 18, 1, "BWIPP example", "010011011101100110" "010010000001010110" "001010010101100110" @@ -219,11 +416,21 @@ static void test_encode(int index, int generate, int debug) { "100001100111100100" "100000111000111000" }, - /* 2*/ { 3, "1234567890ABCDEF", -1, 0, 28, 32, 0, "https://fr.wikipedia.org/wiki/Liste_des_symbologies, same; BWIPP **NOT SAME**, has unlatch to ASCII at end, no doc so don't know if necessary", + /* 6*/ { -1, -1, 9, "406990", -1, 0, 8, 11, 1, "BWIPP Version S-10 example", + "01101101101" + "00101010111" + "01101001101" + "00100000100" + "00000000000" + "11111111111" + "10000000001" + "10111111101" + }, + /* 7*/ { -1, -1, 3, "1234567890ABCDEF", -1, 0, 28, 32, 1, "https://fr.wikipedia.org/wiki/Liste_des_symbologies **NOT SAME** as Zint has unlatch to ASCII at end (before padding)", "10001110101011110111011110110101" "11101001001010000011000110101001" - "11101001100010100010001000101000" - "10011011010100000100010001100001" + "11101001100010111110001000101000" + "10011011010100111100010001100001" "10001010001000100010001000101000" "00011000010001000100010001100001" "10001010001000100010001000101000" @@ -240,48 +447,2100 @@ static void test_encode(int index, int generate, int debug) { "01111111111111111111111111111110" "10001010001000100010001000101000" "00011000010001000100010001100001" - "10001010000101011110001101100110" - "00011000010010101010111011100100" - "11101011011100101001000110101100" - "01111000000000010001000111101111" - "00001010100010111100100100101100" - "10001000101110100001010011100110" - "00001011001001010100010001101111" - "00101101111001111011011001111010" + "10001010001010101001001100101101" + "00011000011001100111111110100001" + "01101011001000111101000001100000" + "11101010110111100100001100100100" + "10111001101111010101010011100101" + "11001001100111010000000111101100" + "01101001101100000101111100100000" + "00111100100000110101111110111001" + }, + /* 8*/ { -1, -1, 1, "1", -1, 0, 16, 18, 1, "Version A", + "001111100010001000" + "001010000100010001" + "100010100010001000" + "000110000100010001" + "100010100010111010" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011111101101" + "110101011101100011" + "001011010100100000" + "101000000101100011" + "001110100110110101" + }, + /* 9*/ { -1, -1, 2, "1", -1, 0, 22, 22, 1, "Version B", + "0011111000100010001000" + "0010100001000100010001" + "1000101000100010001000" + "0001100001000100010001" + "1000101000100010001000" + "0001100001000100010001" + "1000101000100010000101" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001100011" + "1011100100100100101111" + "1000001000100010101000" + "1000101010001101101011" + "0011100111110001101010" + "0000001101010001100110" + "0001001111111101111101" + }, + /* 10*/ { -1, -1, 3, "1", -1, 0, 28, 32, 1, "Version C", + "00111110001000100010001000111000" + "00101000010001000100010001100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "00001000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000000000" + "01111111111111111111111111111110" + "01000000000000000000000000000010" + "01111111111111111111111111111110" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010000011010001010010101000" + "00011000010011100110010111100110" + "10101001001100010000111010101011" + "11111001011001101001001101100100" + "11001011100101010101000111100000" + "01001000010101111111101101101001" + "00001000011000110111001001100111" + "10001110101100110010000011111001" + }, + /* 11*/ { -1, -1, 4, "1", -1, 0, 40, 42, 1, "Version D", + "001111100010001000101100100010001000111000" + "001010000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000110000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000110000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000110000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000110000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000110000100010001001001000100010001100001" + "100011100010001000101100100010001000111000" + "000110000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000010000000000000001000000000000000100000" + "111111111111111111111111111111111111111111" + "000000000000000000000000000000000000000000" + "011111111111111111111111111111111111111110" + "010000000000000000000000000000000000000010" + "011111111111111111111111111111111111111110" + "010000000000000000000000000000000000000010" + "011111111111111111111111111111111111111110" + "010000000000000000000000000000000000000010" + "011111111111111111111111111111111111111110" + "000110000100010001001001000100010001100001" + "100010100010001000101000100010001000101000" + "000111000100010001001101000100010001110001" + "100010100010001000101000100010001000101000" + "000110000100010001001001000100010001100001" + "100010101001100100001011011010110110100000" + "000110100110101111011011110010011011101001" + "000010010111010100101010110101001011101101" + "000110100010000101111000100111011100101011" + "001110001100000101111001010011111100101011" + "001110011010000011011001001111011001100010" + "110110110000111010011001111100001111101001" + "001110010011111000101011111101110101100100" + "111110111100011110001010001011010010101010" + "001111110100111100111110111101110110111000" + }, + /* 12*/ { -1, -1, 5, "1", -1, 0, 52, 54, 1, "Version E", + "001111100010001000100010001110001000100010001000111000" + "001010000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100011100010001000100010001110001000100010001000111000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000010000000000000000000001000000000000000000000100000" + "111111111111111111111111111111111111111111111111111111" + "000000000000000000000000001000000000000000000000000000" + "111111111111111111111111111111111111111111111111111111" + "000000000000000000000000000000000000000000000000000000" + "011111111111111111111111111111111111111111111111111110" + "010000000000000000000000000000000000000000000000000010" + "011111111111111111111111111111111111111111111111111110" + "010000000000000000000000000000000000000000000000000010" + "011111111111111111111111111111111111111111111111111110" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000110000100010001000100011000010001000100010001100001" + "100010100010001000100010001010001000100010001000101000" + "000111000100010001000100011100010001000100010001110001" + "100010100011001110101101011001001110100110111010100011" + "000110000110110111000001011000110010010101010110100000" + "011110101100010100001110011000100001000000000011101111" + "101010010111001011101001101001011011111100100001100110" + "110010110111001110010010111010101010101111101100101100" + "010010111100101001101011101010101101010000110100100000" + "100010001111111011100100001010111111011111101010101011" + "001110101110001110100000101011001010100011010000101010" + "001010111001011111011100011011011000010001110111100110" + "101110011000100101111110011000100011001011110111101111" + "111110101100111001100001101011110110001010011110100010" + "111111001000100010110011011100010011010001110011110110" + }, + /* 13*/ { -1, -1, 6, "1", -1, 0, 70, 76, 1, "Version F", + "0011111000100010001000100011100010001000100010001110001000100010001000111000" + "0010100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000111000100010001000100011100010001000100010001110001000100010001000111000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000111000100010001000100011100010001000100010001110001000100010001000111000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000010000000000000000000000000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000010000000000000000000000000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000000000000000000000000000000000000000000000000000000" + "0111111111111111111111111111111111111111111111111111111111111111111111111110" + "0100000000000000000000000000000000000000000000000000000000000000000000000010" + "0111111111111111111111111111111111111111111111111111111111111111111111111110" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001110001000100010001000111000100010001000100011100010001000100010001110001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000011011111010101001" + "0001100001000100010001000110000100010001000100011000010001111011011111101101" + "0110101100001000110011100010010001101110011110001010011001110110100001100110" + "1111101111011010000010100010111111101100011011101001001010011000000111100001" + "1101100110100110101000011010111110101010011000011010001011101010101100100001" + "0110111110001001101100001111000011101011100101011101110010001101111001110000" + "0100100100010000000011110010110000101001011011011010110100000101010001101110" + "1110101011010110011110010010101111000100100011011011011011110111000001101010" + "0010101100100000101011100110011110000001100010111000101110111101110110101001" + "0000101100111111111101000010111100010110010000011001110100001110101111101101" + "1101101011000000110000110110010101111111001000111000010110000010100010100100" + "1011100000000011011101000110100110010101001101011001110010010111101101101111" + "1010101001010010110010111110000010100100101111001000101111010101011111100100" + "0001100001110100110100000110010001101111111011101011110000110100110100100000" + "0110101111010001100101000010110001111001111001101011010001001111100001100100" + "1111101011000011001010101110000111001100100011011000010110011100100111101001" + "0100101101010010100110011010000001101000011011111001011101001000011110100101" + "1100111111000110110101110011011001001010010101101111011110000111010100110101" + }, + /* 14*/ { -1, -1, 7, "1", -1, 0, 104, 98, 1, "Version G", + "00111011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00100010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000010000000000000000000000000000000000000000010000000000000000000000000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010011010001000100010001011001000100010001000111000100010001000100011100010001000100010011010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000010011110011001100000110110111011101100001110001100110110000100010100010" + "00010011010001000100010001111101100110011001111111101110111011010110011110011001000000010011010001" + "11110010000000000000111011110011101110011001100110100111000010001000110010100010001000101110101001" + "11101010001000100001011001110001100110010110011010011010010101010101010101010110011001101110110001" + "10011010011111000100010001110001111111111111000010011101110111111100110000100010010110101010101010" + "00010010010010011101110111010100100110011001000110001100110011100100010100010001110111101110101110" + "01001110101110111011100110010110011010100011001110001111001101110111010101011101110111010010110011" + "00101010101010101001111111110111111110000101010110010100010110011001110011101101110111010010110001" + "00110010111001100110011001110001010101010101101010010001000100101000010100010001000101110110110111" + "00010010010000111011101110110000100110011001011110111011101110101010110010101010101010011010011001" + "11010110110111011110100000010000000011011011101110101100110010001000110001010101010101011010101000" + "11111110111111111111010001010001000110000110011010011001011101110111010101010110011001100010110010" + "10001010000100110111011101110110100110011001001010011101110111000001110001100110000011111110111111" + "00100011101011100110011001011101100110011001101111011101110111100111111011101110110010011011011001" + "11110010000000000000101010110010101001111101110110110110100101010101010110100101010101010010101011" + "11000010100010001000010100010100010000110101010110010101110001000100010100001110111011100010001110" + "10111010110001100010001000110101001100110011100110110011001100010001110001100110010100000010000000" + "11101110101110101010101010110110010001000100110110111111111111101100110000100010000101110110110111" + "00010010100010001001010010010010001001000110011010011000000101010101010101110001000100010110001000" + "01110110010101010110101011110011101111101110111010111001100010001000110001000111011101111010001001" + "10001010001000111011101110010100100010001000011110111111111111111101010101010101101001110110110111" + "10011010010001101010101010110001011101110111000110110111011101111001010101010101111011011110011101" + "10010010010001000101011000110000100011011100110010110011110111011101110100110000000000001110010101" + "11111110111111111100010011010011001100000000000010000000001101110111010111111100110011001110010101" + "01010110010110111111111111010101011001100110011010000000000000001110010010001000011000100010100010" + "01010111011110111111111111111010000100010001111011010001000100000111011011001100100100010011010001" + }, + /* 15*/ { -1, -1, 8, "1", -1, 0, 148, 134, 1, "Version H", + "00111011001000100010001000111000100010001000101100100010001000100011100010001000100010110010001000100010001110001000100010001011001000" + "00100010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001011001000100010001000111000100010001000101100100010001000100011100010001000100010110010001000100010001110001000100010001011001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001011001000100010001000111000100010001000101100100010001000100011100010001000100010110010001000100010001110001000100010001011001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001011001000100010001000111000100010001000101100100010001000100011100010001000100010110010001000100010001110001000100010001011001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001011001000100010001000111000100010001000101100100010001000100011100010001000100010110010001000100010001110001000100010001011001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001011001000100010001000111000100010001000101100100010001000100011100010001000100010110010001000100010001110001000100010001011001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "00000010000000000000000000100000000000000000001000000000000000000010000000000000000000100000000000000000001000000000000000000010000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000100000000000000000000000000000000000000010000000000000000000000000000000000000001000000000000000000000000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010011010001000100010001110001000100010001001101000100010001000111000100010001000100110100010001000100011100010001000100010011010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010011010001000100010001110001000100010001001101000100010001000111000100010001000100110100010001000100011100010001000100010011010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000101000100010001000100010100010001000100010100010001000100010001010001000100010001010001000" + "00010010010001000100010001100001000100010001001001000100010001000110000100010001000100100100010001000100011000010001000100010010010001" + "10001010001000100010001000101000100010001000011010111111111111111110111111111111101010100110011001100110011010011001011011001110001100" + "00010011010001000100010001110001000100010001111110110111011101110111110111011101111111110111011101110111011111011101111111111111111111" + "11001110001100110000100011100011001100110011001011001100111000100010100010001000100010100001000110011001101001100110011001101110100111" + "11111110111111111101101000101000100010001000101000100000101000100010100010001000100010100011111110111011101011101110111011101110000110" + "01110110110111011101110111101000100110011001101001100110011001100110110111011101110111100111011101101000011000010001000100010010010001" + "01100110100110011001100110101110010001000100011000010001000100101010011001100110011001101001100110000001111001110111011101110110110111" + "01101110011101110111011101101101110101101001101001100110011001100110100110101000100010100010001000100010001001101111111111111110111111" + "00010110100110011001100110100110011011100010001010001000100010001010001001101100110011100011001100110011001000110000000000000010000000" + "11111110111010101010101010101010101010101010011010000100010001000110000100010001100010101110111011101110111010111011101010101010101010" + "00000010001110101110111011101011101110111011101001010101010101010110010101010101011100101000100010001000101000100010001101110110110111" + "10101010101010101011000001100001000100010001001001000101000100010010010001000100010001100001000000000000001000000000000000000010111100" + "01110110110111011110010000100000000000000000001000000011101011101110101110111011101110101101011001100110011010011001100110011110100100" + "11001110001100110011001100101100001000100010001010001000100010100110011001100110011001101001100110110110111010111011101110111010111011" + "01000111000100010001000100111011110011001100111100110011001100010011100010001000100010110010001000110111011111011101110111011111011101" + "01000010010001000100010001100001000101010001001001000100010001000110000111100010001000101000100010001000101011001000100010001010001000" + "10111110011101110111011101101101110111000001001001000100010001000110000110100000000000100000000000000000001011001111111111111110111111" + "10001010000010101110111011101011101110111011101001011101110111011110011101110111100000100100010001000100011000010001100010111010111011" + "11111110111111110111011101101101110111011101001000111111111111111110111111111111000101101001100110011001101001100110010000010010010001" + "10111010111011101100101110101110111011101110111010111011110111011110011101110111011101101101101001100110011010011001100110011110011011" + "00010010010001000101110100100100010001000100011000010000111010101010101010101010101010101011111101110111011011011101110111011010110000" + "10111010111011101110111011100000001100110011001011001100110011000010110111011101110111100111011101010101111001110111011101110110110111" + "00000010000000000000000000100000110111011101111001110111011101110110000100010001000100100100010001100110011010011001100110011010011001" + "11110010100010001000100010100010001000110001001001000100010001000110000101100000000000100000000000000000001010100010001000100010100010" + "01010010110011001100110011100011001101010111011011011101110111011110011100100101010101100101010101010101011011101101110111011110011101" + "00100010100100101010101010101010101010101010101001010001000100010010010001000100101100101000100010001000101000100010111100000010000000" + "11011111011111000100010001110001000100010001001101110111011101110111110111011101001101110001000100010001001101000100000101000111000100" + "00000010000000000010100100100100010001000100011000010010111100110010110011001100110011100000101111111111111011111111111111110110010101" + "01000110000100010001101111101111111111111111111011111111101110111010111011101110111011101011110000000000001000000000000000001110010011" + "01010110010101010101010101101111010001000100011000010001000100011010111111111111111111101111111111010001101001100110011001100110100110" + "00110010110011001100110011100100000000000000001000000000000000111110101110111011101110101110111011000011001011001100110011001110001100" + "01010010000000000000000000100000000011000111011011011101110111011110011110011110111011101011101110111011101001101101110111011110011101" + "10101010111011101110111011101011101100011100111000110011001100110010110011001000100010100010001000100010001011010001000100010010010001" + "11011110010001001100110011100011001100110011111010000100010001000110000100010001010001100001000100010001001001000100110101000110000100" + "00010010010110011101110111100111011101110111001010011101110111011110011101110111100111100011001100110011001011001100111100010010010001" + "01000110000100010010100110100110011001100110011010011001100000000010000000000000000000100001101000100010001010001000100010000110101111" + "00010010010001000110110101100101010101010101011001010111000110011010011001100110011001101001001010101010101010101010101010100110010110" + "11111110111111111111111111100101110111011101111001110111011101001010000100010001000100100100010001111001011001010101010101010110010101" + "01100111100110011001100110111101111011101110111110111011101110000111110111011101110111110111011101010001011101010101010101010111010101" + }, + /* 16*/ { -1, -1, 9, "123456", -1, 0, 8, 11, 1, "Version S-10", + "00011110000" + "11000010001" + "10100011100" + "11000011000" + "00000000000" + "11111111111" + "10000000001" + "10111111101" + }, + /* 17*/ { -1, -1, 9, "123456789012", -1, 0, 8, 21, 1, "Version S-20", + "000101110111000010010" + "110101100101011000101" + "100000101001110101100" + "010110101001010001000" + "000000000010000000000" + "111111111111111111111" + "100000000000000000001" + "101111111111111111101" + }, + /* 18*/ { -1, -1, 9, "123456789012345678", -1, 0, 8, 31, 1, "Version S-30", + "0000110111010011100000001111001" + "1110100011011100110110110010111" + "1111100010010100111000011001010" + "1101100000010010010111110001110" + "0000000000000001000000000000000" + "1111111111111111111111111111111" + "1000000000000001000000000000001" + "1011111111111111111111111111101" + }, + /* 19*/ { -1, -1, 10, "ABCDEFGHIJKLM", -1, 0, 16, 17, 1, "Version T-16", + "11100101111100110" + "01101001010011101" + "00101000001011001" + "01000000011110011" + "10010100010001011" + "10101110001001010" + "00101001001001110" + "01101110011001011" + "01111001001110011" + "10000001001101001" + "00000000100000000" + "11111111111111111" + "10000000000000001" + "10111111111111101" + "10000000000000001" + "10111111111111101" + }, + /* 20*/ { -1, -1, 10, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGH", -1, 0, 16, 33, 1, "Version T-32", + "111001011110011010010100001011001" + "011010011001110100100000011110011" + "100110101101101100001110001001110" + "101001100101101000000110110110000" + "100011111010011000101011110000100" + "011000110111000000010001111011001" + "010000111111100101010011010011101" + "010110011111011000010111100011110" + "000110111101100001011011000011000" + "101111100010010000100011100000110" + "000000000000000010000000000000000" + "111111111111111111111111111111111" + "100000000000000010000000000000001" + "101111111111111111111111111111101" + "100000000000000000000000000000001" + "101111111111111111111111111111101" + }, + /* 21*/ { -1, -1, 10, "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABC", -1, 0, 16, 49, 1, "Version T-48", + "1110010111100110001010001010110011001101011011011" + "0110100110011101010000000111100111010011001011010" + "0001110001001110100011110101001100101011110001000" + "0000110110110000011000110011100000010001111010110" + "1100100100001010001111000011111011011111011101111" + "1000101000111101111000000100100110100011011110110" + "0000010001110011111001000001000010101000001001110" + "0000010010111000001000100100111111001101000110011" + "0101010011001000001111000100101010001011010001111" + "1100010001111110010001100010011010010011101100110" + "0000000000000000000000001000000000000000000000000" + "1111111111111111111111111111111111111111111111111" + "1000000000000000000000001000000000000000000000001" + "1011111111111111111111111111111111111111111111101" + "1000000000000000000000001000000000000000000000001" + "1011111111111111111111111111111111111111111111101" + }, + /* 22*/ { -1, -1, -1, "123456789012", -1, 0, 16, 18, 1, "ASCII double digits", + "100011101010111101" + "111010010010100000" + "110110100010001000" + "110010111000010001" + "100010100011010100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010100100101" + "011001001110101101" + "011010010010101111" + "010111110100100111" + "100010001101111100" + }, + /* 23*/ { -1, -1, -1, "1234567890123", -1, 0, 16, 18, 1, "DECIMAL (numeric ending >= 13)", + "111111111111001100" + "000110000110010101" + "100010110111011000" + "000010111100010001" + "100010100011100101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011011101000" + "110111100101101000" + "011011111110101010" + "011011110100101000" + "010000100100111111" + }, + /* 24*/ { -1, -1, -1, "1234567890123A", -1, 0, 16, 18, 1, "ASCII (ending not fully numeric)", + "100011101010111101" + "111010010010100000" + "110110100000110100" + "110010111001000010" + "100010100011101100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010110100100" + "010101000111101010" + "001001000010100110" + "001101100111101010" + "010000000011110011" + }, + /* 25*/ { -1, -1, -1, "GOSGOS", -1, 0, 16, 18, 1, "2 C40 triplets, C40 at end, buffer empty, switch to ASCII before padding (5)", + "111011100010001000" + "011010000100010001" + "100010111110001000" + "000110111100010001" + "100010100000100111" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010010100000" + "011011101100100111" + "111111101001100010" + "110101010100101011" + "100110001001111001" + }, + /* 26*/ { -1, -1, -1, "GOSGOSG", -1, 0, 16, 18, 1, "2 C40 triplets + C40 singlet, C40 at end, singlet in buffer, switch to ASCII before padding (3)", + "111011100010001000" + "011010000100010001" + "100010111101001000" + "000110111110000001" + "100010100011000101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011111101011" + "010101100101101111" + "110010101010101010" + "001000000101101010" + "100101111101110001" + }, + /* 27*/ { -1, -1, -1, "GOSGOSGO", -1, 0, 16, 18, 1, "2 C40 triplets + C40 doublet, C40 at end, doublet in buffer, switch to ASCII for doublet (2 pad)", + "111011100010001000" + "011010000100010001" + "100010111101000101" + "000110111110000000" + "100010100010100100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010000100010" + "010011110001101000" + "101110101100101111" + "110011010011101110" + "010001011100111100" + }, + /* 28*/ { -1, -1, -1, "GOSGOSGOS", -1, 0, 16, 18, 1, "3 C40 triplets, C40 at end, switch to ASCII before padding (3)", + "111011100010001000" + "011010000100010001" + "100010100010001111" + "000110000100011111" + "100010100001110000" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010100100101" + "011101101001100111" + "110000000100101000" + "000011011111101011" + "000011110110110001" + }, + /* 29*/ { -1, -1, -1, "GOSGOSGOSG", -1, 0, 16, 18, 1, "3 C40 triplets + C40 singlet, C40 at end, singlet in buffer, switch to ASCII for singlet (1 pad)", + "111011100010001000" + "011010000100010001" + "100010100010001111" + "000110000100011111" + "010010100000100001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "100000011011100000" + "001111100101101101" + "000001100100100010" + "101001010011100111" + "101111111001110110" + }, + /* 30*/ { -1, -1, -1, "GOSGOSGOSGO", -1, 0, 16, 18, 1, "3 C40 triplets + C40 doublet, C40 at end, doublet in buffer, switch to ASCII for doublet (0 pad)", + "111011100010001000" + "011010000100010001" + "100010100010001111" + "000110000100011111" + "010010010111000001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "100000000011101010" + "110111111011100101" + "111101001000101111" + "110000011111100011" + "001001001110111100" + }, + /* 31*/ { -1, -1, -1, "GOSGOSGOSGOS", -1, 0, 16, 18, 1, "4 C40 triplets, C40 at end, empty buffer, switch to ASCII before padding (1)", + "111011100010001000" + "011010000100010001" + "100010100010001000" + "000110000100010001" + "100010111100100001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000111111110100010" + "101010100011101010" + "111100000000101011" + "001010101010101001" + "110011100111110100" + }, + /* 32*/ { -1, -1, -1, ".GOSGOSGOSGOS", -1, 0, 16, 18, 1, "ASCII + 4 C40 triplets, C40 at end, empty buffer, no switch to ASCII as no padding", + "001011111010001000" + "111110011000010001" + "100010100010001000" + "000110000100010001" + "100010100010110100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010111101010" + "011010010011100110" + "000110111100100111" + "111011101001100000" + "010001000011110110" + }, + /* 33*/ { -1, -1, -1, "ABCDEFGHIJ\001K", -1, 0, 16, 18, 1, "4 C40 triplets (last shifted) + singlet, no unlatch, singlet as ASCII, no padding", + "111011010111100110" + "011010100110011101" + "001010100001011000" + "010010000011111111" + "110010010000111101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "001011001010100001" + "101001001111101001" + "101110101101100110" + "001100001010100011" + "001001000000110110" + }, + /* 34*/ { -1, -1, -1, "ABCDEFGHIJK\001", -1, 0, 22, 22, 1, "4 C40 triplets + singlet (shifted), backtrack to 3rd triplet and ASCII encode", + "1110110101111001100010" + "0110101001100111010100" + "1000100101111101000100" + "0000101111111110111100" + "0000101000100010001000" + "0010100001000100010001" + "1000101000100010000000" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101001" + "1010111010001011101100" + "0011100100111011101111" + "1001100110000000101001" + "1100001010011100100111" + "0011000011111010101111" + "1111110001000011110110" + }, + /* 35*/ { -1, -1, -1, "ABCDEFGH\001I\001", -1, 0, 22, 22, 1, "4 C40 triplets + singlet (shifted), backtrack to 2nd triplet and ASCII encode", + "1110110101111001100010" + "0110101001100111010100" + "1111100100010000000100" + "1111101000100100101010" + "0000101000100010001000" + "0010100001000100010001" + "1000101000100010001010" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101011" + "0110001001011110100100" + "0000011100110101101011" + "0100111101001101101110" + "0010001000101001101100" + "1110110010000110101011" + "1001100010111000111111" + }, + /* 36*/ { -1, -1, -1, "\101\102\103\104\105\106\107\110\200\101\102", -1, 0, 22, 22, 1, "'ABCDEFGH<80>AB' - cte_buffer_transfer with cte_p > 3", + "1110110101111001100010" + "0110101001100111010100" + "1000100100101110001111" + "0000101010101100011111" + "0100100100100010001000" + "0010100011000100010001" + "1000101000100010000110" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001100101" + "1010111100010110100110" + "1001111110011001100011" + "1101111110111000100101" + "1010110011101001101111" + "0111100000001001101001" + "0101000100001100110110" + }, + /* 37*/ { -1, -1, -1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1, 0, 22, 22, 1, "7 EDI triplets + doublet, doublet encoded as triplet with Shift 0 pad, no switch to ASCII, no padding", + "1110110101111001100010" + "0110101001100111010100" + "1000100101100110011010" + "0000101111001110100110" + "1101101011000111000100" + "0101101010000011011011" + "1110101000111110011010" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0000011000111001101001" + "0110011000110111101101" + "0011100111101100101101" + "1110111011011111101110" + "0011000011001101101000" + "0101100011001011101100" + "0100011100011000110110" + }, + /* 38*/ { -1, -1, -1, "gosgos", -1, 0, 16, 18, 1, "2 TEXT triplets, TEXT at end, buffer empty, switch to ASCII before padding", + "111011100010001000" + "111110000100010001" + "100010111110001000" + "000110111100010001" + "100010100010011101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011000101000" + "110001011110101111" + "000001000110100100" + "000011110000100010" + "101100010110111010" + }, + /* 39*/ { -1, -1, -1, "gosgosg", -1, 0, 16, 18, 1, "2 TEXT triplets + TEXT singlet, TEXT at end, singlet in buffer, switch to ASCII for singlet (3 pads)", + "111011100010001000" + "111110000100010001" + "100010111101101000" + "000110111110000001" + "100010100010000100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011010100100" + "000110100011100010" + "011000001111100101" + "100100000110100110" + "010101111001110000" + }, + /* 40*/ { -1, -1, -1, "gosgosgo", -1, 0, 16, 18, 1, "2 TEXT triplets + TEXT doublet, TEXT at end, doublet in buffer, switch to ASCII for doublet, (2 pads)", + "111011100010001000" + "111110000100010001" + "100010111101100111" + "000110111110000000" + "100010100010110111" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011100101000" + "011110111111100101" + "110000110110101111" + "010010000000100110" + "101001101001111111" + }, + /* 41*/ { -1, -1, -1, ".gosgosgosgos", -1, 0, 16, 18, 1, "ASCII + 4 TEXT triplets, TEXT at end, empty buffer, no switch to ASCII as no padding", + "001011111010001000" + "111110111100010001" + "100010100010001000" + "000110000100010001" + "100010100000011010" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010101101100" + "111000100010101011" + "010110110001101110" + "010110000001101110" + "111001010101110110" + }, + /* 42*/ { -1, -1, -1, "\015*>", -1, 0, 16, 18, 1, "1 EDI triplet, ASCII mode", + "000011001000111000" + "111010101111110001" + "100010100010001000" + "000110000100010001" + "100010100011101000" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011010100110" + "011111010100100100" + "011000001001100100" + "111000011101100111" + "101001101110111110" + }, + /* 43*/ { -1, -1, -1, "\015*>\015", -1, 0, 16, 18, 1, "1 EDI triplet + singlet, ASCII mode", + "000011001000110000" + "111010101111111110" + "100010100010001000" + "000110000100010001" + "100010100001100100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011110101100" + "011000011100100011" + "101010110001100011" + "000110111010101011" + "101001000010111001" + }, + /* 44*/ { -1, -1, -1, "\015*>\015*", -1, 0, 16, 18, 1, "1 EDI triplet + doublet, ASCII mode", + "000011001000110000" + "111010101111111110" + "001010100010001000" + "101110000100010001" + "100010100001010000" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011011100010" + "111101001110101111" + "101010110001101100" + "101100010011101101" + "000010101011111010" + }, + /* 45*/ { -1, -1, -1, "\015*>\015*>", -1, 0, 16, 18, 1, "2 EDI triplets, EDI mode", + "111011000000100000" + "111010000010110000" + "001010111110001000" + "101110111100010001" + "100010100011001100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010110101111" + "100010111100100100" + "000001000000101011" + "111000010111100010" + "110010111011111011" + }, + /* 46*/ { -1, -1, -1, "\015*>\015*>\015", -1, 0, 16, 18, 1, "2 EDI triplets + singlet, EDI mode + final ASCII", + "111011000000100000" + "111010000010110000" + "001010111100001000" + "101110111111100001" + "100010100000101110" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010111100011" + "111011011010101001" + "011110010100100101" + "011111001000100110" + "100011100011110000" + }, + /* 47*/ { -1, -1, -1, "\015*>\015*>\015*", -1, 0, 16, 18, 1, "2 EDI triplets + doublet, EDI + final 2 ASCII", + "111011000000100000" + "111010000010110000" + "001010111100000010" + "101110111111101011" + "100010100000111001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010110100110" + "000010000001101101" + "001001011010101001" + "101001000000100011" + "100011000010110110" + }, + /* 48*/ { -1, -1, -1, "\015*>\015*>\015*>", -1, 0, 16, 18, 1, "3 EDI triplets, EDI mode", + "111011000000100000" + "111010000010110000" + "001010000000101111" + "101110000010111111" + "100010100011011101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011110100100" + "100101000000101000" + "110101100111101110" + "110110000011100000" + "110111100010110011" + }, + /* 49*/ { -1, -1, -1, "\015*>\015*>\015*>\015", -1, 0, 16, 18, 1, "3 EDI triplets + singlet, EDI mode + final ASCII singlet", + "111011000000100000" + "111010000010110000" + "001010000000101111" + "101110000010111111" + "000010100000001001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "111000011011101000" + "110001100000101111" + "101111100101100001" + "000101100111100111" + "011010010010111010" + }, + /* 50*/ { -1, -1, -1, "\015*>\015*>\015*>\015*>", -1, 0, 16, 18, 1, "4 EDI triplets, EDI mode", + "111011000000100000" + "111010000010110000" + "001010000000100000" + "101110000010110000" + "001010111110000011" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "101111110110100011" + "100100100001101111" + "010001111111101001" + "100000101110101011" + "110001000001111000" + }, + /* 51*/ { -1, -1, -1, "\015*>\015*>\015*>\015*>\015", -1, 0, 16, 18, 1, "4 EDI triplets + singlet, EDI mode + nolatch final ASCII singlet (last data codeword of symbol)", + "111011000000100000" + "111010000010110000" + "001010000000100000" + "101110000010110000" + "001010000011000011" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "101111101001101110" + "111111010000101000" + "000011011011101101" + "010111001011101001" + "101010110001111100" + }, + /* 52*/ { -1, -1, -1, "\015*>\015*>\015*>\015*>\015*", -1, 0, 22, 22, 1, "4 EDI triplets + doublet, EDI mode + final 2 ASCII", + "1110110000001000000010" + "1110100000101100001011" + "0000100010000000101111" + "0000101011000010111111" + "0000100010100010001000" + "1110101011000100010001" + "1000101000100010001010" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001100001" + "1011100001010010100111" + "1100001100111101100000" + "0110111110101000100011" + "1100011011101100100101" + "0110100100001000101101" + "0010111010100110111000" + }, + /* 53*/ { -1, -1, -1, "\015*>\015*>a", -1, 0, 16, 18, 1, "2 EDI triplets + ASCII singlet, EDI mode + final ASCII", + "111011000000100000" + "111010000010110000" + "001010111101101000" + "101110111100100001" + "100010100010011001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011000101111" + "101001011011101001" + "111010111100101011" + "100111010011100101" + "011111111010110101" + }, + /* 54*/ { -1, -1, -1, "\015*>\015*>\015*>\015*>a", -1, 0, 16, 18, 1, "4 EDI triplets + ASCII singlet, EDI mode + final ASCII", + "111011000000100000" + "111010000010110000" + "001010000000100000" + "101110000010110000" + "001010011010001000" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "101100100011100101" + "010111100000100111" + "011011111111100010" + "001110101010100111" + "110100010001110011" + }, + /* 55*/ { -1, -1, -1, "\015*>\015*>\015*>\015*>\015a", -1, 0, 22, 22, 1, "4 EDI triplets + singlet + ASCII, EDI mode + final 2 ASCII", + "1110110000001000000010" + "1110100000101100001011" + "0000100010000000101111" + "0000101011000010111111" + "0000100110100010001000" + "1110100010000100010001" + "1000101000100010000110" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101001" + "1100100011001011100000" + "0000100110101010101011" + "0011101011110100100111" + "1001111010011000100000" + "0001110010110111101110" + "1001011011101101111101" + }, + /* 56*/ { -1, -1, -1, "\015*>\015*>\015*>\015*a", -1, 0, 22, 22, 1, "3 EDI triplets + doublet + ASCII, EDI mode + final 3 ASCII", + "1110110000001000000010" + "1110100000101100001011" + "0000100010111100000010" + "0000101011111111101011" + "0110101000100010001000" + "0010100001000100010001" + "1000101000100010000110" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101101" + "1111101100010011101010" + "1101101001000001101110" + "0110100011111011101000" + "1100011001100110101011" + "1011110100111010100000" + "0001111010001000110010" + }, + /* 57*/ { -1, -1, -1, "123456789012345", -1, 0, 16, 18, 1, "5 DECIMAL triplets, ASCII switch before padding (2)", + "111111111111001100" + "000110000110010101" + "100010110101101111" + "000010010110111111" + "100010100011110010" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010011100010" + "101100110010100101" + "111000001001100010" + "100010110110101011" + "111111011010110001" + }, + /* 58*/ { -1, -1, -1, "1234567890123456", -1, 0, 16, 18, 1, "5 DECIMAL triplets + singlet, switch to ASCII before padding (2)", + "111111111111001100" + "000110000110010101" + "100010110101101111" + "000010010110110111" + "100010100010100110" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011110100000" + "111011001101101000" + "101011010111101100" + "000101110010100011" + "010101000001110111" + }, + /* 59*/ { -1, -1, -1, "12345678901234567", -1, 0, 16, 18, 1, "5 DECIMAL triplets + doublet, switch before ASCII encoding of final char, padding (1)", + "111111111111001100" + "000110000110010101" + "100010110101101111" + "000010010110110111" + "001110100011101001" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "100000010101101011" + "101101010000100010" + "011011100001101000" + "011100000111101100" + "100010110100110100" + }, + /* 60*/ { -1, -1, -1, "123456789012345678", -1, 0, 16, 18, 1, "6 DECIMAL triplets, switch to ASCII, padding (1)", + "111111111111001100" + "000110000110010101" + "100010110101101010" + "000010010110100111" + "111110100000101101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "110100010010100001" + "010011110101101011" + "100010000011100100" + "101110000010100101" + "011010011110111101" + }, + /* 61*/ { -1, -1, -1, "1234567890123456789", -1, 0, 16, 18, 1, "6 DECIMAL triplets + singlet, switch before ASCII encoding of singlet, no padding", + "111111111111001100" + "000110000110010101" + "100010110101101010" + "000010010110100111" + "111110001111000011" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "110110100111101001" + "000001010011100011" + "101011011101101100" + "011001101011100100" + "101110111011110000" + }, + /* 62*/ { -1, -1, -1, "12345678901234567890", -1, 0, 16, 18, 1, "6 DECIMAL triplets + doublet, switch before ASCII 2-digit encoding of doublet, no padding", + "111111111111001100" + "000110000110010101" + "100010110101101010" + "000010010110100111" + "111110110110000111" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "110111000010100101" + "110000010000100111" + "011110101001100011" + "111110100110101101" + "001000111011111111" + }, + /* 63*/ { -1, -1, -1, "123456789012345678901", -1, 0, 16, 18, 1, "7 DECIMAL triplets, fills to final codeword, no padding", + "111111111111001100" + "000110000110010101" + "100010110101101010" + "000010010110100111" + "111010101111000101" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000111011011101100" + "000000000110101110" + "001011010101101011" + "111000110101100101" + "110001100000110100" + }, + /* 64*/ { -1, -1, -1, "1234567890123456789012", -1, 0, 16, 18, 1, "7 DECIMAL triplets + singlet, fills to final codeword, no padding", + "111111111111001100" + "000110000110010101" + "100010110101101010" + "000010010110100111" + "111010100010101100" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000111011001101110" + "010110011110101111" + "101000010001101000" + "100111000001100000" + "101000001010111101" + }, + /* 65*/ { -1, -1, 10, "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", -1, 0, 16, 49, 1, "T-48 90", + "1111111111001100100011011011010101110100010111110" + "0001000110010101000001010101001110001111010000011" + "0111000100011001010100000010110100111000111101000" + "1011111111001100100011010011010101110100010111110" + "0011101111111100110010000110101101010111010001011" + "0111000100011001010100000010110100111000111101000" + "1110011111101101100001000001001100101010010111010" + "0011101111100111100011110011101001101100010110101" + "0011110011111001001110110011010010001001010011011" + "1000100101011101110111000000111110000010001000010" + "0000000000000000000000001000000000000000000000000" + "1111111111111111111111111111111111111111111111111" + "1000000000000000000000001000000000000000000000001" + "1011111111111111111111111111111111111111111111101" + "1000000000000000000000001000000000000000000000001" + "1011111111111111111111111111111111111111111111101" + }, + /* 66*/ { -1, -1, 10, "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789", -1, ZINT_ERROR_TOO_LONG, 0, 0, 1, "T-48 89", + "" + }, + /* 67*/ { -1, -1, -1, "A123456789012345678901A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + ASCII", + "0100111111111111001100" + "0010100001000110010101" + "1000101101011010101110" + "0000100101101001110001" + "1011100100100010001000" + "1111100010000100010001" + "1000101000100010001000" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101110" + "0110110011111100100001" + "0100111101011000101001" + "1110011001111101100000" + "0100010001010001101011" + "1010001010001011101101" + "1101101001100001110101" + }, + /* 68*/ { -1, -1, -1, "A1234567890123456789012A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + singlet + ASCII", + "0100111111111111001100" + "0010100001000110010101" + "1000101101011010101110" + "0000100101101001110001" + "1011100011010010001000" + "1111100011001000010001" + "1000101000100010000000" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101000" + "1011001000110010100111" + "0001000000011010100011" + "0100110111001011100110" + "0100110111111110101111" + "0101101010001000100111" + "1110011111011111110100" + }, + /* 69*/ { -1, -1, -1, "A12345678901234567890123A", -1, 0, 22, 22, 1, "ASCII + 7 DECIMAL triplets + doublet + ASCII", + "0100111111111111001100" + "0010100001000110010101" + "1000101101011010101110" + "0000100101101001110001" + "1011101001010010001000" + "1111101001001000010001" + "1000101000100010001110" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101011" + "0100111101100011100011" + "1011010001011001101100" + "0110100100111100100101" + "0000100001000101101101" + "0001111010010111100010" + "0001001001000000110100" + }, + /* 70*/ { -1, -1, -1, "ABCDEFGHI123456789012A", -1, 0, 22, 22, 1, "3 C40 triplets + 4 DECIMAL triplets + ASCII 0 padding", + "1110110101111001100010" + "0110101001100111010100" + "1000100101111110001010" + "0000101111111111100100" + "1011101101110110000100" + "1010100000110011100010" + "1000101000100010001001" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101001" + "1011001000111110100100" + "0010110001001001101100" + "0101101100110101100011" + "1011000110000101101111" + "0011001101000011100011" + "0100110101010110111011" + }, + /* 71*/ { -1, -1, -1, "ABCDEFGHI12345678", -1, 0, 22, 22, 1, "3 C40 triplets + ASCII 2-digits end-of-data", + "1110110101111001100010" + "0110101001100111010100" + "1000100101111110001010" + "0000101111111111100100" + "1011101101100010001000" + "1010100000000100010001" + "1000101000100010001011" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001101011" + "1100001011100110100001" + "0001001101101111100011" + "1101011100100001100101" + "0001011111001001100101" + "1010111111111110101011" + "1101101100101010110101" + }, + /* 72*/ { -1, -1, -1, "ABCDEFGH123456789012345678901A", -1, 0, 22, 22, 1, "2 C40 triplets + doublet + ASCII 2-digits ASCII 0 padding", + "1110110101111001100010" + "0110101001100111010100" + "1000100100111110011010" + "0000101110111110011111" + "1100101101100010011010" + "0101101011001110011111" + "1100101101100001001011" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0101101100110010100111" + "0101100110010101101001" + "1011110110000101100001" + "1001100010001101100000" + "1001001001000101100000" + "0010110111111111101111" + "1010010000100000110111" + }, + /* 73*/ { -1, -1, -1, "\200\200", -1, 0, 16, 18, 1, "BYTE", + "111011000010001000" + "011110001000000000" + "100010100010001000" + "000110000100010001" + "100010100000110111" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011100101011" + "001001101101100111" + "001011110000101001" + "010011001011100111" + "110100011101110111" + }, + /* 74*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200", -1, 0, 16, 18, 1, "BYTE (no padding, byte count 0)", + "111011000010001000" + "011110000000000000" + "100010100010001000" + "000010000000000000" + "100010100010101110" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000000001111100111" + "110101101010101101" + "000011001111100001" + "111101011011100111" + "101110100100111000" + }, + /* 75*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 70, 76, 1, "249 BYTEs + 13 DECIMAL", + "1110111111100010001000100011100010001000100010001110001000100010001000111000" + "0111101001000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000111000100010001000100011100010001000100010001110001000100010001000111000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000111000100010001000100011100010001000100010001110001000100010001000111000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000111111111100101100" + "0000100000000000000000000010000000000000000000001000000000000100011001100101" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000010000000000000000000000000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000010000000000000000000000000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000000000000000000000000000000000000000000000000000000" + "0111111111111111111111111111111111111111111111111111111111111111111111111110" + "0100000000000000000000000000000000000000000000000000000000000000000000000010" + "0111111111111111111111111111111111111111111111111111111111111111111111111110" + "1000101101110110001000100010100010001000100010001010001000100010001000101000" + "0000101111000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001110001000100010001000111000100010001000100011100010001000100010001110001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000000000000111100011" + "0001100001000100010001000110000100010001000100011000010001011011011110101011" + "1101100000111100100110000110000010011011010011001000110100111100000010100110" + "0000100100111111111001000010100000111100001101011011101011111101001111100110" + "0110101100100110110000111110010000101000110001101011010101000100010010100001" + "0101111010111101111000110011000001000111111011101100011100011010010111111110" + "0100101011011100111101100010011101110101001000101000100100000100010010100100" + "0100100011111101111101011110001101010001100011011010001011000000011100100100" + "1110101000101010001110101010010011000001011000001001011001011101010011100101" + "1010101111110111000110011010110101010001111000101010011010100101100100101011" + "1101100111010011110000010010000001101111110111011011101001010001101101100100" + "0011101010101010101100111010110100101000011000001001011000100111011011100001" + "0000100001100100110111010110110010110100000100011000100101111111110101100001" + "1110100010111001100110000110101110000101001110111001010100011110111110100110" + "0110100010111000001101100010011011101101111010111011010100111000101010101101" + "0010100011101011110111110110111001101001100101011000110001000000111100101011" + "0000101101010101000011010110011110110100100111111011100001010010000111100100" + "1101111110001011101100010011101010100111101110111101101000010100111000111001" + }, + /* 76*/ { -1, -1, -1, "\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 70, 76, 1, "250 BYTEs + 13 DECIMAL", + "1110111111000010001000100011100010001000100010001110001000100010001000111000" + "0111101010000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000111000100010001000100011100010001000100010001110001000100010001000111000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000111000100010001000100011100010001000100010001110001000100010001000111000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1000101000100010001000100010100010001000100010001010001000100010001111101111" + "0000100000000000000000000010000000000000000000001000000000000000000001100001" + "0000100000000000000000000010000000000000000000001000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000010000000000000000000000000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000010000000000000000000000000000000000000000000100000" + "1111111111111111111111111111111111111111111111111111111111111111111111111111" + "0000000000000000000000000000000000000000000000000000000000000000000000000000" + "0111111111111111111111111111111111111111111111111111111111111111111111111110" + "0100000000000000000000000000000000000000000000000000000000000000000000000010" + "0111111111111111111111111111111111111111111111111111111111111111111111111110" + "1100101100100011011101100010100010001000100010001010001000100010001000101000" + "1001100101000011110001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001110001000100010001000111000100010001000100011100010001000100010001110001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100010001000101000" + "0001100001000100010001000110000100010001000100011000010001000100010001100001" + "1000101000100010001000100010100010001000100010001010001000100000010101100010" + "0001100001000100010001000110000100010001000100011000010001100011101101100000" + "1010100001101111100000000010010011001010111100011000101010100011100000101000" + "0111101101100100101100101110010111011011000100011000011000100011100011100101" + "1011101000111001101101000110000010100011001011011011100001101111110110100100" + "0100111100000111001011001011110010000001000011011111001001010100111110110011" + "0110100010101111101100111110110100010111010000011000001100110111110110101010" + "1011100010111111000000000110001101000111110011011011110100010011110010101010" + "0101100001110111111101100110010101110000111111001001111110111100000101101001" + "0000100110000111111101000110010110001100010100111000010000001101001111101111" + "0011101111110000010101101110010111001100111101001010010100010011000100100011" + "0001101011000000100111010010010111001110100111101011100100110010111001101100" + "0110100000111010110101100010101100111100111110111000001101001110001111101010" + "1001101111111101101000110110000000100001011110101000110110101111101111101111" + "1111101110000111111010000110101010100000110100101000001101111101110100101000" + "1011100011101001011011001010110001001010111111111011001001101111010110100011" + "1111101101101101100101000110010011000011110001101001001011010001000001100100" + "1110110001110110001100000011110011001110000101001111000111011001010011111110" + }, + /* 77*/ { -1, -1, -1, "\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 104, 98, 1, "21 DECIMAL + 501 BYTEs + 13 DECIMAL", + "11111111111100110010001101011110101011101011111011111100001000100010011010001000100010001011001000" + "00010010011001010100000101110010011100011111011110101100010000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000010000000000000000000000000000000000000000010000000000000000000000000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "10001010001000100010001000110000100011111111110010110010001101110110010010001000100010001010001000" + "00000010000000000000000000010000000000010001100110010100001111000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010011010001000100010001011001000100010001000111000100010001000100011100010001000100010011010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000010101111100110001001110010100000010101111110110000111111110100110000011" + "00010011010001000100010001011010001100101100001111001111110110101000111111011111000101101011001001" + "11100110110111110010111110110011111011000100101010110000100011101010110010110111100011100010101000" + "00111110111100010011100011010001010100010101100010111001111100011110010001110010011000011010000000" + "10100110000000001001011110110001001111100100111010001011111010000001110010100010010110000010011110" + "01011010111101101100001000110000111010100100010110010110101101010011110011000001110100110010100101" + "10101110101000001111001100110010001001100110000110101100100011010001010000100101111000010010000000" + "01100110000011111101000100110011010100101100001010000110111010111000010000110101011100010110001011" + "01001010011110111111000101110011000110110111001110101001110110111000110101110010101010111010000010" + "00111110101000000010010100110010001010001000000110100000101110111010010111010101011001000010100001" + "01100110010110010010111011010110101010110000110110011100010001001101110001011100000001100010100010" + "00000110110101100100101101010001110010001101100110000101111101010100010001000100101000010010011010" + "01100110011110101001000101110111001010111111111110101101111101111101010100000010000111101010100010" + "11011011001011110101010000111111110011010111110111011001011000011010011011000001011110001011011010" + "10011010111000000101101111010110110001011101110110010011101001010000010001101100100110111010111011" + "00010010111011011110110110110111011010101101110010010111111101000011110110001110011000001010111010" + "10101010110001111111010101110110000001011011011010100100100011101011110110101101111111001110100000" + "00110010111100010110011101010000101010110110100010001000110111111100110011101111111001001110000101" + "10110110011111110110101010010111111001100000100110010000101010100110010110110000010101101010010011" + "01101110011000001100101000010101111100010110000110011011011111111110010010110001010011011010010100" + "01011110010111000111001101010000010101011000110110111000000100001110010000010011100100101010110001" + "10001110110111000010110010010000011110111011000010001001110010010111110111010001100000011110001101" + "00100010101001000001101111110011101100101011010010011001100001101000110010111111010000011010000000" + "01001010000100010111101011110000010100101101011110011010010011010101010111011111111010000110100000" + "11001110100000010100001001010010000101101110100110101100011011001110010101111001100100110010001101" + "01110011001111110111010101111010111001011100001111011101001011010000011011001100100000101011000101" + }, + /* 78*/ { -1, -1, -1, "\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063\064\065\066\067\070\071\060\061\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\061\062\063\064\065\066\067\070\071\060\061\062\063", -1, 0, 104, 98, 1, "21 DECIMAL + 251 BYTEs + 21 DECIMAL + 252 BYTEs 13 DECIMAL", + "11111111111100110010001101011110101011101011111011111100001000100010011010001000100010001011001000" + "00010010011001010100000101110010011100011111011110101000010000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "11111111111100110010001101011110101011101011111011111100001000100010011010001000100010001011001000" + "00010010011001010100000101110010011100011111011110101000100000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001011001000100010001000111000100010001000100011100010001000100010011010001000100010001011001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000010000000000000000000000000000000000000000010000000000000000000000000000" + "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" + "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010" + "01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00000010000000000000000000010000000000000000000010000000000000000000010000000000000000000010000000" + "10001110111111110011001000110101110110001000100010100010001000100010010010001000100010001010001000" + "00000010010001100101010000110111000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010011010001000100010001011001000100010001000111000100010001000100011100010001000100010011010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110000100010001000100010100010001000100010010010001000100010001010001000" + "00010010010001000100010001010001000100010001000110000100010001000100010100010001000100010010010001" + "10001010001000100010001000110011000010101111110110110010100010001101110000110101111001011110011111" + "00010011010001000100010001011001111110010101010111011100110101000111111101011100100000000011100110" + "11001010011011010110001001110100001001000100011010001001011101000111110101001001111100011010010010" + "10000010110001101110010110010001110111011000001110100001000101100100010000011011010000010010011000" + "00010010010011001101011100010100111100011010001010000110000111001010010111011110111100011110110101" + "00000010100100110111111101110000101101010101001110010010110010100100010010111100011011110110001100" + "11010110100100100110010110010101010000010100111110111000110001101101110101000010011101011110000010" + "01100010011111110001001000010110001001011010001110101011100010001011110111111010011100111110010000" + "00101010000111011011000010010111011110110110000010001100110010101111010111000110011110101110000001" + "10000010101000010000100101110001011111110001111110001011111110100110010011001100100110100110001110" + "01000010001011010010101110010011100101000011101110010111101000100100010100011010101110000110010001" + "10000010000001111111101110010100011111101000010010010011101111111001110010100110110010101110101111" + "00110010010111000101110010010101110111000100011010000111001110001001010100111001000000010010101001" + "10011011111110010110100101011011100111100000011111111000100101010111011100000001011100001011011101" + "00010010101111110101101101010001111000011011101010010100001000100101110110110001100111010110101111" + "10110010001011100010101000010010110000110101001010100011111010000101010101001111110000010110000010" + "10001110100001100111011011010100110000011100111110011110000010111011110101100011000001000010011101" + "00010010011011110100110100110001100111101101011110111010111000101010110011100100101001000010000011" + "00011010100000000001011100010111110011110011011010010010001000001011110000110010001000100010010001" + "00011110011101000010010010110010000001011000100010000011110010101001010111001110011110010010101100" + "00111110001100010111011110010111101000000111011010010001101111001101110010110100101010101010001110" + "01100010011111000111101001010111100100110000001110110000100001001001010101100010101001111010011001" + "01100010100000100010000100010000010111111011110010010001111110110110110100110110010001110110010101" + "01010110101110000111010001010011001111110001100110101110101100101101110111100010101111100110000101" + "01101010000000111001110100110111110011111001000110101010111111101011110001100001110101000110111101" + "01111111101011000101001010011010111100011101111011110000111111000110111010011101101111001111011011" + }, + /* 79*/ { -1, 3, -1, "\351", -1, 0, 16, 18, 1, "é in ISO 8859-1", + "100011010101011000" + "000110110111010010" + "100010100011100110" + "001010010110111010" + "100010100001001010" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100010000100101" + "111101010011101001" + "101011100101101010" + "001010011001100100" + "101100110110110101" + }, + /* 80*/ { -1, 899, -1, "\134\134\351\142\154\134\141\150\134", -1, 0, 28, 32, 1, "éblah", + "10001101010101100010001110110101" + "00011011011101001010100101101101" + "01011001010101111001100110100110" + "11011011011101101110100011101101" + "01011001010110011001010101101000" + "11011011010010100111011101100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "00001000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000100000" + "11111111111111111111111111111111" + "00000000000000000000000000000000" + "01111111111111111111111111111110" + "01000000000000000000000000000010" + "01111111111111111111111111111110" + "10001010001000100010001000101000" + "00011000010001000100010001100001" + "10001010000000110100111111101001" + "00011000010100010010010100101010" + "01111000001000111111111111101111" + "01111011010110101000000101100011" + "11111010000111010011000010100010" + "10001000010111011010111000100111" + "11011011010100010100111000101011" + "11011110101110100011111110110011" + }, + /* 81*/ { GS1_MODE, -1, -1, "[90]12[91]1234567890123A", -1, 0, 22, 22, 1, "Step B4", + "1110111101100011101110" + "1000101100111011000100" + "0000101011111001110001" + "1110101000001110111111" + "0011100100100010001000" + "1111100010000100010001" + "1000101000100010000111" + "0000100000000000100000" + "1111111111111111111111" + "0000000000000000000000" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0100000000000000000010" + "0111111111111111111110" + "0001000100010001100001" + "1001100110011111101011" + "1000101110111110100010" + "0010010011111111100100" + "1110011100011111101010" + "0100001001100001101110" + "1110110100001101111001" + }, + /* 82*/ { GS1_MODE, -1, -1, "[90]12[91]12345", -1, 0, 16, 18, 1, "Step B5", + "111011110110001110" + "100010110011101100" + "111010000010111101" + "010010111011111001" + "100010100000001010" + "000010000000100000" + "111111111111111111" + "000000000000000000" + "011111111111111110" + "010000000000000010" + "011111111111111110" + "000100011001101110" + "101011011100101110" + "111100010101100000" + "011100010001100101" + "101000101000110110" }, }; int data_size = ARRAY_SIZE(data); - char escaped[1024]; - char bwipp_buf[8192]; + char escaped[8192]; + char bwipp_buf[32768]; char bwipp_msg[1024]; for (int i = 0; i < data_size; i++) { if (index != -1 && i != index) continue; + if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); struct zint_symbol *symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); - int length = testUtilSetSymbol(symbol, BARCODE_CODEONE, -1 /*input_mode*/, -1 /*eci*/, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); + int length = testUtilSetSymbol(symbol, BARCODE_CODEONE, data[i].input_mode, data[i].eci, -1 /*option_1*/, data[i].option_2, -1, -1 /*output_options*/, data[i].data, data[i].length, debug); ret = ZBarcode_Encode(symbol, (unsigned char *) data[i].data, length); assert_equal(ret, data[i].ret, "i:%d ZBarcode_Encode ret %d != %d (%s)\n", i, ret, data[i].ret, symbol->errtxt); if (generate) { - printf(" /*%3d*/ { %d, \"%s\", %d, %s, %d, %d, %d, \"%s\",\n", - i, data[i].option_2, testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, + printf(" /*%3d*/ { %s, %d, %d, \"%s\", %d, %s, %d, %d, %d, \"%s\",\n", + i, testUtilInputModeName(data[i].input_mode), data[i].eci, data[i].option_2, + testUtilEscape(data[i].data, length, escaped, sizeof(escaped)), data[i].length, testUtilErrorName(data[i].ret), symbol->rows, symbol->width, data[i].bwipp_cmp, data[i].comment); - testUtilModulesDump(symbol, " ", "\n"); + if (ret < ZINT_ERROR) { + testUtilModulesDump(symbol, " ", "\n"); + } else { + printf(" \"\"\n"); + } printf(" },\n"); } else { - if (ret < 5) { - assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", i, symbol->rows, data[i].expected_rows, data[i].data); - assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", i, symbol->width, data[i].expected_width, data[i].data); + if (ret < ZINT_ERROR) { + assert_equal(symbol->rows, data[i].expected_rows, "i:%d symbol->rows %d != %d (%s)\n", + i, symbol->rows, data[i].expected_rows, testUtilEscape(data[i].data, length, escaped, sizeof(escaped))); + assert_equal(symbol->width, data[i].expected_width, "i:%d symbol->width %d != %d (%s)\n", + i, symbol->width, data[i].expected_width, testUtilEscape(data[i].data, length, escaped, sizeof(escaped))); int width, row; ret = testUtilModulesCmp(symbol, data[i].expected, &width, &row); - assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", i, ret, width, row, data[i].data); + assert_zero(ret, "i:%d testUtilModulesCmp ret %d != 0 width %d row %d (%s)\n", + i, ret, width, row, testUtilEscape(data[i].data, length, escaped, sizeof(escaped))); if (do_bwipp && testUtilCanBwipp(i, symbol, -1, data[i].option_2, -1, debug)) { if (!data[i].bwipp_cmp) { @@ -324,6 +2583,7 @@ static void test_fuzz(int index, int debug) { for (int i = 0; i < data_size; i++) { if (index != -1 && i != index) continue; + if ((debug & ZINT_DEBUG_TEST_PRINT) && !(debug & ZINT_DEBUG_TEST_LESS_NOISY)) printf("i:%d\n", i); struct zint_symbol *symbol = ZBarcode_Create(); assert_nonnull(symbol, "Symbol not created\n"); diff --git a/backend/tests/test_eci.c b/backend/tests/test_eci.c index f48b97e6..9ee362d9 100644 --- a/backend/tests/test_eci.c +++ b/backend/tests/test_eci.c @@ -339,25 +339,39 @@ static void test_reduced_charset_input(int index, int debug) { /*202*/ { BARCODE_AZRUNE, UNICODE_MODE, 0, "é", ZINT_ERROR_INVALID_DATA, -1, "Numbers <= 255 only" }, /*203*/ { BARCODE_CODE32, UNICODE_MODE, 0, "é", ZINT_ERROR_INVALID_DATA, -1, "Numbers only" }, /*204*/ { BARCODE_CODEONE, UNICODE_MODE, 0, "é", 0, 0, "" }, - /*205*/ { BARCODE_CODEONE, UNICODE_MODE, 3, "é", ZINT_ERROR_INVALID_OPTION, -1, "Does not support ECI" }, - /*206*/ { BARCODE_CODEONE, UNICODE_MODE, 0, "β", ZINT_ERROR_INVALID_DATA, -1, "β not in ISO 8859-1" }, - /*207*/ { BARCODE_ULTRA, UNICODE_MODE, 0, "é", 0, 0, "" }, - /*208*/ { BARCODE_ULTRA, UNICODE_MODE, 3, "é", 0, 3, "Supports ECI" }, - /*209*/ { BARCODE_ULTRA, UNICODE_MODE, 0, "β", ZINT_WARN_USES_ECI, 9, "" }, - /*210*/ { BARCODE_ULTRA, UNICODE_MODE, 9, "β", 0, 9, "" }, - /*211*/ { BARCODE_ULTRA, UNICODE_MODE, 20, "テ", 0, 20, "In Shift JIS" }, - /*212*/ { BARCODE_ULTRA, UNICODE_MODE, 20, "テテ", 0, 20, "In Shift JIS" }, - /*213*/ { BARCODE_ULTRA, UNICODE_MODE, 25, "က", 0, 25, "In UCS-2BE" }, - /*214*/ { BARCODE_ULTRA, UNICODE_MODE, 25, "ကက", 0, 25, "In UCS-2BE" }, - /*215*/ { BARCODE_ULTRA, UNICODE_MODE, 25, "12", 0, 25, "ASCII" }, - /*216*/ { BARCODE_ULTRA, UNICODE_MODE, 26, "テ", 0, 26, "" }, - /*217*/ { BARCODE_ULTRA, UNICODE_MODE, 26, "テテ", 0, 26, "" }, - /*218*/ { BARCODE_ULTRA, UNICODE_MODE, 28, "龘", 0, 28, "U+9F98 in Big5 but not in GB2312" }, - /*219*/ { BARCODE_ULTRA, UNICODE_MODE, 28, "龘龘", 0, 28, "U+9F98 in Big5 but not in GB2312" }, - /*220*/ { BARCODE_ULTRA, UNICODE_MODE, 29, "齄", 0, 29, "U+9F44 in GB2312 but not in Big5" }, - /*221*/ { BARCODE_ULTRA, UNICODE_MODE, 29, "齄齄", 0, 29, "U+9F44 in GB2312 but not in Big5" }, - /*222*/ { BARCODE_ULTRA, UNICODE_MODE, 30, "ê°€", 0, 30, "U+AC00 in KS X 1001" }, - /*223*/ { BARCODE_ULTRA, UNICODE_MODE, 30, "가가", 0, 30, "U+AC00 in KS X 1001" }, + /*205*/ { BARCODE_CODEONE, UNICODE_MODE, 3, "é", 0, 3, "Supports ECI" }, + /*206*/ { BARCODE_CODEONE, UNICODE_MODE, 0, "β", ZINT_WARN_USES_ECI, 9, "" }, + /*207*/ { BARCODE_CODEONE, UNICODE_MODE, 9, "β", 0, 9, "" }, + /*208*/ { BARCODE_CODEONE, UNICODE_MODE, 20, "テ", 0, 20, "In Shift JIS" }, + /*209*/ { BARCODE_CODEONE, UNICODE_MODE, 20, "テテ", 0, 20, "In Shift JIS" }, + /*210*/ { BARCODE_CODEONE, UNICODE_MODE, 25, "က", 0, 25, "In UCS-2BE" }, + /*211*/ { BARCODE_CODEONE, UNICODE_MODE, 25, "ကက", 0, 25, "In UCS-2BE" }, + /*212*/ { BARCODE_CODEONE, UNICODE_MODE, 25, "12", 0, 25, "ASCII" }, + /*213*/ { BARCODE_CODEONE, UNICODE_MODE, 26, "テ", 0, 26, "" }, + /*214*/ { BARCODE_CODEONE, UNICODE_MODE, 26, "テテ", 0, 26, "" }, + /*215*/ { BARCODE_CODEONE, UNICODE_MODE, 28, "龘", 0, 28, "U+9F98 in Big5 but not in GB2312" }, + /*216*/ { BARCODE_CODEONE, UNICODE_MODE, 28, "龘龘", 0, 28, "U+9F98 in Big5 but not in GB2312" }, + /*217*/ { BARCODE_CODEONE, UNICODE_MODE, 29, "齄", 0, 29, "U+9F44 in GB2312 but not in Big5" }, + /*218*/ { BARCODE_CODEONE, UNICODE_MODE, 29, "齄齄", 0, 29, "U+9F44 in GB2312 but not in Big5" }, + /*219*/ { BARCODE_CODEONE, UNICODE_MODE, 30, "ê°€", 0, 30, "U+AC00 in KS X 1001" }, + /*220*/ { BARCODE_CODEONE, UNICODE_MODE, 30, "가가", 0, 30, "U+AC00 in KS X 1001" }, + /*221*/ { BARCODE_ULTRA, UNICODE_MODE, 0, "é", 0, 0, "" }, + /*222*/ { BARCODE_ULTRA, UNICODE_MODE, 3, "é", 0, 3, "Supports ECI" }, + /*223*/ { BARCODE_ULTRA, UNICODE_MODE, 0, "β", ZINT_WARN_USES_ECI, 9, "" }, + /*224*/ { BARCODE_ULTRA, UNICODE_MODE, 9, "β", 0, 9, "" }, + /*225*/ { BARCODE_ULTRA, UNICODE_MODE, 20, "テ", 0, 20, "In Shift JIS" }, + /*226*/ { BARCODE_ULTRA, UNICODE_MODE, 20, "テテ", 0, 20, "In Shift JIS" }, + /*227*/ { BARCODE_ULTRA, UNICODE_MODE, 25, "က", 0, 25, "In UCS-2BE" }, + /*228*/ { BARCODE_ULTRA, UNICODE_MODE, 25, "ကက", 0, 25, "In UCS-2BE" }, + /*229*/ { BARCODE_ULTRA, UNICODE_MODE, 25, "12", 0, 25, "ASCII" }, + /*230*/ { BARCODE_ULTRA, UNICODE_MODE, 26, "テ", 0, 26, "" }, + /*231*/ { BARCODE_ULTRA, UNICODE_MODE, 26, "テテ", 0, 26, "" }, + /*232*/ { BARCODE_ULTRA, UNICODE_MODE, 28, "龘", 0, 28, "U+9F98 in Big5 but not in GB2312" }, + /*233*/ { BARCODE_ULTRA, UNICODE_MODE, 28, "龘龘", 0, 28, "U+9F98 in Big5 but not in GB2312" }, + /*234*/ { BARCODE_ULTRA, UNICODE_MODE, 29, "齄", 0, 29, "U+9F44 in GB2312 but not in Big5" }, + /*235*/ { BARCODE_ULTRA, UNICODE_MODE, 29, "齄齄", 0, 29, "U+9F44 in GB2312 but not in Big5" }, + /*236*/ { BARCODE_ULTRA, UNICODE_MODE, 30, "ê°€", 0, 30, "U+AC00 in KS X 1001" }, + /*237*/ { BARCODE_ULTRA, UNICODE_MODE, 30, "가가", 0, 30, "U+AC00 in KS X 1001" }, }; int data_size = ARRAY_SIZE(data); diff --git a/backend/tests/test_raster.c b/backend/tests/test_raster.c index 781f6d1f..cd0012a5 100644 --- a/backend/tests/test_raster.c +++ b/backend/tests/test_raster.c @@ -244,7 +244,7 @@ static void test_buffer(int index, int generate, int debug) { /*120*/ { BARCODE_DBAR_OMNSTK_CC, "1234567890123", "[20]01", 80, 11, 56, 112, 160 }, /*121*/ { BARCODE_DBAR_EXPSTK_CC, "[01]12345678901231", "[20]01", 78, 9, 102, 204, 156 }, /*122*/ { BARCODE_CHANNEL, "01", "", 50, 1, 19, 38, 116 }, - /*123*/ { BARCODE_CODEONE, "12345678901234567890", "", 22, 22, 22, 44, 44 }, + /*123*/ { BARCODE_CODEONE, "12345678901234567890", "", 16, 16, 18, 36, 32 }, /*124*/ { BARCODE_GRIDMATRIX, "ABC", "", 18, 18, 18, 36, 36 }, /*125*/ { BARCODE_UPNQR, "1234567890AB", "", 77, 77, 77, 154, 154 }, /*126*/ { BARCODE_ULTRA, "1234567890", "", 13, 13, 18, 36, 26 }, diff --git a/backend/tests/test_vector.c b/backend/tests/test_vector.c index 7f9aaacd..30c5b220 100644 --- a/backend/tests/test_vector.c +++ b/backend/tests/test_vector.c @@ -225,46 +225,47 @@ static void test_buffer_vector(int index, int generate, int debug) { /* 84*/ { BARCODE_ITF14, "1234567890", "", 50, 1, 135, 330, 138.89999 }, /* 85*/ { BARCODE_KIX, "123456ABCDE", "", 8, 3, 87, 174, 16 }, /* 86*/ { BARCODE_AZTEC, "1234567890AB", "", 15, 15, 15, 30, 30 }, - /* 87*/ { BARCODE_DPD, "0123456789012345678901234567", "", 50, 1, 189, 378, 118.9 }, - /* 88*/ { BARCODE_MICROQR, "12345", "", 11, 11, 11, 22, 22 }, - /* 89*/ { BARCODE_HIBC_128, "1234567890", "", 50, 1, 123, 246, 118.9 }, - /* 90*/ { BARCODE_HIBC_39, "1234567890", "", 50, 1, 223, 446, 118.9 }, - /* 91*/ { BARCODE_HIBC_DM, "ABC", "", 12, 12, 12, 24, 24 }, - /* 92*/ { BARCODE_HIBC_QR, "1234567890AB", "", 21, 21, 21, 42, 42 }, - /* 93*/ { BARCODE_HIBC_PDF, "1234567890", "", 24, 8, 103, 206, 48 }, - /* 94*/ { BARCODE_HIBC_MICPDF, "1234567890", "", 28, 14, 38, 76, 56 }, - /* 95*/ { BARCODE_HIBC_BLOCKF, "1234567890", "", 30, 3, 101, 242, 64 }, - /* 96*/ { BARCODE_HIBC_AZTEC, "1234567890AB", "", 19, 19, 19, 38, 38 }, - /* 97*/ { BARCODE_DOTCODE, "ABC", "", 11, 11, 16, 32, 22 }, - /* 98*/ { BARCODE_HANXIN, "1234567890AB", "", 23, 23, 23, 46, 46 }, - /* 99*/ { BARCODE_MAILMARK, "01000000000000000AA00AA0A", "", 10, 3, 155, 310, 20 }, - /*100*/ { BARCODE_AZRUNE, "255", "", 11, 11, 11, 22, 22 }, - /*101*/ { BARCODE_CODE32, "12345678", "", 50, 1, 103, 206, 118.9 }, - /*102*/ { BARCODE_EANX_CC, "123456789012", "[20]01", 50, 7, 99, 234, 116.4 }, - /*103*/ { BARCODE_EANX_CC, "123456789012+12", "[20]01", 50, 7, 126, 284, 116.4 }, - /*104*/ { BARCODE_EANX_CC, "123456789012+12345", "[20]01", 50, 7, 153, 338, 116.4 }, - /*105*/ { BARCODE_EANX_CC, "1234567", "[20]01", 50, 8, 72, 172, 116.4 }, - /*106*/ { BARCODE_EANX_CC, "1234567+12", "[20]01", 50, 8, 99, 226, 116.4 }, - /*107*/ { BARCODE_EANX_CC, "1234567+12345", "[20]01", 50, 8, 126, 280, 116.4 }, - /*108*/ { BARCODE_GS1_128_CC, "[01]12345678901231", "[20]01", 50, 5, 145, 290, 118.9 }, - /*109*/ { BARCODE_DBAR_OMN_CC, "1234567890123", "[20]01", 21, 5, 100, 200, 60.900002 }, - /*110*/ { BARCODE_DBAR_LTD_CC, "1234567890123", "[20]01", 19, 6, 79, 158, 56.900002 }, - /*111*/ { BARCODE_DBAR_EXP_CC, "[01]12345678901231", "[20]01", 41, 5, 134, 268, 100.9 }, - /*112*/ { BARCODE_UPCA_CC, "12345678901", "[20]01", 50, 7, 99, 234, 116.4 }, - /*113*/ { BARCODE_UPCA_CC, "12345678901+12", "[20]01", 50, 7, 128, 284, 116.4 }, - /*114*/ { BARCODE_UPCA_CC, "12345678901+12345", "[20]01", 50, 7, 155, 338, 116.4 }, - /*115*/ { BARCODE_UPCE_CC, "1234567", "[20]01", 50, 9, 55, 142, 116.4 }, - /*116*/ { BARCODE_UPCE_CC, "1234567+12", "[20]01", 50, 9, 82, 192, 116.4 }, - /*117*/ { BARCODE_UPCE_CC, "1234567+12345", "[20]01", 50, 9, 109, 246, 116.4 }, - /*118*/ { BARCODE_DBAR_STK_CC, "1234567890123", "[20]01", 24, 9, 56, 112, 48 }, - /*119*/ { BARCODE_DBAR_OMNSTK_CC, "1234567890123", "[20]01", 80, 11, 56, 112, 160 }, - /*120*/ { BARCODE_DBAR_EXPSTK_CC, "[01]12345678901231", "[20]01", 78, 9, 102, 204, 156 }, - /*121*/ { BARCODE_CHANNEL, "01", "", 50, 1, 19, 38, 118.9 }, - /*122*/ { BARCODE_CODEONE, "12345678901234567890", "", 22, 22, 22, 44, 44 }, - /*123*/ { BARCODE_GRIDMATRIX, "ABC", "", 18, 18, 18, 36, 36 }, - /*124*/ { BARCODE_UPNQR, "1234567890AB", "", 77, 77, 77, 154, 154 }, - /*125*/ { BARCODE_ULTRA, "1234567890", "", 13, 13, 18, 36, 26 }, - /*126*/ { BARCODE_RMQR, "12345", "", 11, 11, 27, 54, 22 }, + /* 87*/ { BARCODE_DAFT, "DAFTDAFTDAFTDAFT", "", 8, 3, 31, 62, 16 }, + /* 88*/ { BARCODE_DPD, "0123456789012345678901234567", "", 50, 1, 189, 378, 118.9 }, + /* 89*/ { BARCODE_MICROQR, "12345", "", 11, 11, 11, 22, 22 }, + /* 90*/ { BARCODE_HIBC_128, "1234567890", "", 50, 1, 123, 246, 118.9 }, + /* 91*/ { BARCODE_HIBC_39, "1234567890", "", 50, 1, 223, 446, 118.9 }, + /* 92*/ { BARCODE_HIBC_DM, "ABC", "", 12, 12, 12, 24, 24 }, + /* 93*/ { BARCODE_HIBC_QR, "1234567890AB", "", 21, 21, 21, 42, 42 }, + /* 94*/ { BARCODE_HIBC_PDF, "1234567890", "", 24, 8, 103, 206, 48 }, + /* 95*/ { BARCODE_HIBC_MICPDF, "1234567890", "", 28, 14, 38, 76, 56 }, + /* 96*/ { BARCODE_HIBC_BLOCKF, "1234567890", "", 30, 3, 101, 242, 64 }, + /* 97*/ { BARCODE_HIBC_AZTEC, "1234567890AB", "", 19, 19, 19, 38, 38 }, + /* 98*/ { BARCODE_DOTCODE, "ABC", "", 11, 11, 16, 32, 22 }, + /* 99*/ { BARCODE_HANXIN, "1234567890AB", "", 23, 23, 23, 46, 46 }, + /*100*/ { BARCODE_MAILMARK, "01000000000000000AA00AA0A", "", 10, 3, 155, 310, 20 }, + /*101*/ { BARCODE_AZRUNE, "255", "", 11, 11, 11, 22, 22 }, + /*102*/ { BARCODE_CODE32, "12345678", "", 50, 1, 103, 206, 118.9 }, + /*103*/ { BARCODE_EANX_CC, "123456789012", "[20]01", 50, 7, 99, 234, 116.4 }, + /*104*/ { BARCODE_EANX_CC, "123456789012+12", "[20]01", 50, 7, 126, 284, 116.4 }, + /*105*/ { BARCODE_EANX_CC, "123456789012+12345", "[20]01", 50, 7, 153, 338, 116.4 }, + /*106*/ { BARCODE_EANX_CC, "1234567", "[20]01", 50, 8, 72, 172, 116.4 }, + /*107*/ { BARCODE_EANX_CC, "1234567+12", "[20]01", 50, 8, 99, 226, 116.4 }, + /*108*/ { BARCODE_EANX_CC, "1234567+12345", "[20]01", 50, 8, 126, 280, 116.4 }, + /*109*/ { BARCODE_GS1_128_CC, "[01]12345678901231", "[20]01", 50, 5, 145, 290, 118.9 }, + /*110*/ { BARCODE_DBAR_OMN_CC, "1234567890123", "[20]01", 21, 5, 100, 200, 60.900002 }, + /*111*/ { BARCODE_DBAR_LTD_CC, "1234567890123", "[20]01", 19, 6, 79, 158, 56.900002 }, + /*112*/ { BARCODE_DBAR_EXP_CC, "[01]12345678901231", "[20]01", 41, 5, 134, 268, 100.9 }, + /*113*/ { BARCODE_UPCA_CC, "12345678901", "[20]01", 50, 7, 99, 234, 116.4 }, + /*114*/ { BARCODE_UPCA_CC, "12345678901+12", "[20]01", 50, 7, 128, 284, 116.4 }, + /*115*/ { BARCODE_UPCA_CC, "12345678901+12345", "[20]01", 50, 7, 155, 338, 116.4 }, + /*116*/ { BARCODE_UPCE_CC, "1234567", "[20]01", 50, 9, 55, 142, 116.4 }, + /*117*/ { BARCODE_UPCE_CC, "1234567+12", "[20]01", 50, 9, 82, 192, 116.4 }, + /*118*/ { BARCODE_UPCE_CC, "1234567+12345", "[20]01", 50, 9, 109, 246, 116.4 }, + /*119*/ { BARCODE_DBAR_STK_CC, "1234567890123", "[20]01", 24, 9, 56, 112, 48 }, + /*120*/ { BARCODE_DBAR_OMNSTK_CC, "1234567890123", "[20]01", 80, 11, 56, 112, 160 }, + /*121*/ { BARCODE_DBAR_EXPSTK_CC, "[01]12345678901231", "[20]01", 78, 9, 102, 204, 156 }, + /*122*/ { BARCODE_CHANNEL, "01", "", 50, 1, 19, 38, 118.9 }, + /*123*/ { BARCODE_CODEONE, "12345678901234567890", "", 16, 16, 18, 36, 32 }, + /*124*/ { BARCODE_GRIDMATRIX, "ABC", "", 18, 18, 18, 36, 36 }, + /*125*/ { BARCODE_UPNQR, "1234567890AB", "", 77, 77, 77, 154, 154 }, + /*126*/ { BARCODE_ULTRA, "1234567890", "", 13, 13, 18, 36, 26 }, + /*127*/ { BARCODE_RMQR, "12345", "", 11, 11, 27, 54, 22 }, }; int data_size = sizeof(data) / sizeof(struct item); diff --git a/backend/tests/testcommon.c b/backend/tests/testcommon.c index 07ab955f..7b67f872 100644 --- a/backend/tests/testcommon.c +++ b/backend/tests/testcommon.c @@ -2285,13 +2285,40 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int bwipp_opts = bwipp_opts_buf; } } else if (symbology == BARCODE_CODEONE) { + if ((symbol->input_mode & 0x07) == GS1_MODE) { /* Hack pseudo-GS1 support */ + int last_ai, ai_latch = 0; + for (int i = 0, j = 0, len = (int) strlen(bwipp_data); i <= len; i++) { /* Reduce square brackets (include NUL) */ + if (bwipp_data[i] == '[') { + if (ai_latch == 0) { + bwipp_data[j++] = '['; + } + last_ai = atoi(bwipp_data + i + 1); + if ((last_ai >= 0 && last_ai <= 4) || (last_ai >= 11 && last_ai <= 20) || last_ai == 23 || (last_ai >= 31 && last_ai <= 36) || last_ai == 41) { + ai_latch = 1; + } + } else if (bwipp_data[i] != ']') { + bwipp_data[j++] = bwipp_data[i]; + } + } + for (int len = (int) strlen(bwipp_data), i = len - 1; i >= 0; i--) { /* Replace square brackets with ^FNC1 */ + if (bwipp_data[i] == '[') { + memmove(bwipp_data + i + 5, bwipp_data + i + 1, len - i); + memcpy(bwipp_data + i, "^FNC1", 5); + len += 4; + } + } + if (symbol->eci == 0) { /* If not already done for ECI */ + sprintf(bwipp_opts_buf + (int) strlen(bwipp_opts_buf), "%sparsefnc", strlen(bwipp_opts_buf) ? " " : ""); + bwipp_opts = bwipp_opts_buf; + } + } if (option_2 >= 1 && option_2 <= 10) { static const char *codeone_versions[] = { "A", "B", "C", "D", "E", "F", "G", "H" }; const char *codeone_version; if (option_2 == 9) { codeone_version = length <= 6 ? "S-10" : length <= 12 ? "S-20" : "S-30"; } else if (option_2 == 10) { - codeone_version = "T-16"; // TODO: Allow for different T sizes + codeone_version = length <= 22 ? "T-16" : length <= 34 ? "T-32" : "T-48"; // TODO: Properly allow for different T sizes } else { codeone_version = codeone_versions[option_2 - 1]; } @@ -2339,13 +2366,13 @@ int testUtilBwipp(int index, const struct zint_symbol *symbol, int option_1, int } if (bwipp_opts) { - if (data_len >= 2043) { /* Ghostscript's `arg_str_max` 2048 less "-sd=" */ + if (strlen(bwipp_data) >= 2043) { /* Ghostscript's `arg_str_max` 2048 less "-sd=" */ sprintf(cmd, cmd_opts_fmt2, bwipp_barcode, bwipp_data, bwipp_data + 2043, bwipp_opts); } else { sprintf(cmd, cmd_opts_fmt, bwipp_barcode, bwipp_data, bwipp_opts); } } else { - if (data_len >= 2043) { + if (strlen(bwipp_data) >= 2043) { sprintf(cmd, cmd_fmt2, bwipp_barcode, bwipp_data, bwipp_data + 2043); } else { sprintf(cmd, cmd_fmt, bwipp_barcode, bwipp_data); diff --git a/backend/tests/tools/bwipp_dump-barcode.ps.diff b/backend/tests/tools/bwipp_dump-barcode.ps.diff index fc17cac0..4b148daf 100644 --- a/backend/tests/tools/bwipp_dump-barcode.ps.diff +++ b/backend/tests/tools/bwipp_dump-barcode.ps.diff @@ -1,6 +1,6 @@ ---- ../../../../postscriptbarcode/build/monolithic/barcode.ps 2021-01-28 22:23:05.208873553 +0000 -+++ ../tools/bwipp_dump.ps 2021-01-28 23:31:03.965490583 +0000 -@@ -26135,34 +26135,80 @@ +--- ../../../../postscriptbarcode/build/monolithic/barcode.ps 2021-02-03 09:22:12.524526773 +0000 ++++ ../tools/bwipp_dump.ps 2021-02-03 09:22:48.752086756 +0000 +@@ -26162,34 +26162,80 @@ pop } ifelse @@ -100,7 +100,7 @@ end -@@ -26221,7 +26267,7 @@ +@@ -26248,7 +26294,7 @@ pop } ifelse @@ -109,7 +109,7 @@ % Get the result of encoding with ean8 and gs1-cc options (lintype) (ean8) put -@@ -26229,29 +26275,75 @@ +@@ -26256,29 +26302,75 @@ options (dontdraw) true put % Plot the linear part @@ -205,7 +205,7 @@ end -@@ -26310,34 +26402,80 @@ +@@ -26337,34 +26429,80 @@ pop } ifelse @@ -305,7 +305,7 @@ end -@@ -26411,34 +26549,80 @@ +@@ -26438,34 +26576,80 @@ /opt options >> def @@ -405,7 +405,7 @@ end -@@ -26497,7 +26681,7 @@ +@@ -26524,7 +26708,7 @@ pop } ifelse @@ -414,7 +414,7 @@ options (lintype) (databaromni) put options (linkage) true put -@@ -26508,7 +26692,7 @@ +@@ -26535,7 +26719,7 @@ linear options //databaromni exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -423,7 +423,7 @@ % Plot the separator /sepfinder { -@@ -26539,20 +26723,66 @@ +@@ -26566,20 +26750,66 @@ sep 0 [0 0 0] putinterval sep sep length 4 sub [0 0 0 0] putinterval 18 sepfinder 64 sepfinder @@ -502,7 +502,7 @@ end -@@ -26610,7 +26840,7 @@ +@@ -26637,7 +26867,7 @@ pop } ifelse @@ -511,7 +511,7 @@ options (lintype) (databarstacked) put options (linkage) true put -@@ -26621,7 +26851,7 @@ +@@ -26648,7 +26878,7 @@ linear options //databarstacked exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -520,7 +520,7 @@ % Plot the separator /sepfinder { -@@ -26649,20 +26879,52 @@ +@@ -26676,20 +26906,52 @@ sep 0 [ 0 0 0 0 ] putinterval sep sep length 4 sub [ 0 0 0 0 ] putinterval 18 sepfinder @@ -585,7 +585,7 @@ end -@@ -26720,7 +26982,7 @@ +@@ -26747,7 +27009,7 @@ pop } ifelse @@ -594,7 +594,7 @@ options (lintype) (databarstackedomni) put options (linkage) true put -@@ -26731,7 +26993,7 @@ +@@ -26758,7 +27020,7 @@ linear options //databarstackedomni exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -603,7 +603,7 @@ % Plot the separator /sepfinder { -@@ -26759,20 +27021,52 @@ +@@ -26786,20 +27048,52 @@ sep 0 [ 0 0 0 0 ] putinterval sep sep length 4 sub [ 0 0 0 0 ] putinterval 18 sepfinder @@ -668,7 +668,7 @@ end -@@ -26945,7 +27239,7 @@ +@@ -26972,7 +27266,7 @@ pop } ifelse @@ -677,7 +677,7 @@ options (lintype) (databarlimited) put options (linkage) true put -@@ -26956,7 +27250,7 @@ +@@ -26983,7 +27277,7 @@ linear options //databarlimited exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -686,7 +686,7 @@ % Plot the separator mark -@@ -26964,22 +27258,68 @@ +@@ -26991,22 +27285,68 @@ counttomark 1 sub array astore /sep exch def pop pop sep 0 [0 0 0] putinterval sep sep length 9 sub [0 0 0 0 0 0 0 0 0] putinterval % 4 + 5 right guard spaces @@ -769,7 +769,7 @@ end -@@ -27038,7 +27378,7 @@ +@@ -27065,7 +27405,7 @@ pop } ifelse @@ -778,7 +778,7 @@ options (lintype) (databarexpanded) put options (linkage) true put -@@ -27049,7 +27389,7 @@ +@@ -27076,7 +27416,7 @@ linear options //databarexpanded exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -787,7 +787,7 @@ % Plot the separator /sepfinder { -@@ -27078,20 +27418,60 @@ +@@ -27105,20 +27445,60 @@ 18 98 bot length 13 sub {} for 69 98 bot length 13 sub {} for ] {sepfinder} forall @@ -860,7 +860,7 @@ end -@@ -27149,7 +27529,7 @@ +@@ -27176,7 +27556,7 @@ pop } ifelse @@ -869,7 +869,7 @@ options (lintype) (databarexpandedstacked) put options (linkage) true put -@@ -27160,7 +27540,7 @@ +@@ -27187,7 +27567,7 @@ linear options //databarexpandedstacked exec dup (pixs) get 0 2 index (pixx) get getinterval /bot exch def dup (pixy) get /linheight exch def @@ -878,7 +878,7 @@ % Plot the separator /sepfinder { -@@ -27186,21 +27566,49 @@ +@@ -27213,21 +27593,49 @@ 19 98 bot length 13 sub {} for 70 98 bot length 13 sub {} for ] {sepfinder} forall @@ -941,7 +941,7 @@ end -@@ -27259,7 +27667,7 @@ +@@ -27286,7 +27694,7 @@ pop } ifelse @@ -950,7 +950,7 @@ options (inkspread) (0) put options (dontdraw) true put -@@ -27286,35 +27694,87 @@ +@@ -27313,35 +27721,87 @@ linear << options {} forall >> //gs1-128 exec dup (sbs) get /linsbs exch def dup (bhs) get 0 get 72 mul /linheight exch def @@ -1052,7 +1052,7 @@ end -@@ -28745,3 +29205,183 @@ +@@ -28772,3 +29232,183 @@ % --END ENCODER hibcazteccode-- % --END TEMPLATE-- diff --git a/backend/tests/tools/bwipp_dump.ps.tar.xz b/backend/tests/tools/bwipp_dump.ps.tar.xz index 36feb18de1ade115a270e56186b20026986b17d4..ad4039732d7c26a39d2011114d927d8065dccc5a 100644 GIT binary patch literal 122496 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ℜY%ERiFRK`-0+Ps3o-YPUE zAD>?$($gq*dhQa^qUefw!TWMzfja0Za?-nS0}*TlYcI4?ETo}r2&tO2ITOe_J;G|D z!I?~8T43t6oXhZOo2*bUmjGgr^$!@XA2sPbndfUWFb#BCv~DqRYOTme{JiYmL-pH3 zcpZ09nkI6IYD$L)*UE=iBV>#*Vw_5JXAZF99qed0+NI*0hD9c^ zUemrS)V?lwT%Cgt2kCJPd0x*JV`~f z<9n88W@BVi7xd0k*>F@G%cz2Im(PqP%w5#5V}{SM?N-ZTWY{((; z+8yN4zNez7-0_cTIR=}=$|mq#gckl8f6@aYc}tY@l2+?%1``<60H-xt}0bGNlu zaVC`5IhrItJcap9A1;i}K|*t!K=U+W?{>Hh3QnPc2(IbX(S^I6mis+ssK0nMx`l^P zngnqltwI#1sfpTBRi4<-ZeMJ6?3JxC8ruey4$MXZbQpf#=9v$`TYCzIar{x*ZQ$)~ zfg*rWT>T>(oG0uy4%F2}iT2*~AW?uSXgzrQ3G_!|@Ks*KK9M2jAdkEN{mXZSzpu!pjV!t|kM;iN=ghHVLSK~na9Ig3)Op%0R@p=KO&QAw zn!$&`4wn+$1g7P86zSr3`s`EU<)vROwqJW<+I*!_0tSx(!D&bAI|Kh!u7W?vwHPpM zaxoi|4Cbz{vu)_zcB@Z{uC*Dx-0$zMmV+p4&kAeFjJd?OC9VjK`nJ(WHXYS0 zT)at{p=^Ga<$fN9b&bas zIF8_4Q4e}A^g&ZZ>b!px zb^@ZT?LvNX3!B{u-i>9JBWjJVau0Ntmlm^^;p@IPrWwl)vNj{03&{L3L%;?kQdqFJ ztIIP@%9)4fkx7KiGzcwg)y}-D3RT~@A*({+(rRQ=)8ipTIUa&h|#NisK$*bxN^J}f<#?DC1H|HuAz>IWf5o)lHI`fWjrM~ z77SEH>oS9e!V-A?ZV%g-9hIY#<=|~XyAK-MUD&o%6V#=DiVH#35SjB0Vna*J%9pmT zvYStvd{OcMPmoPp^VDmyYur|ug>y7zB&kT-eCdvtu8xgbqjUG3CKkdy`~zdm-Hr zF2tH^5Ma#j*zoNq!T`>anC+{@*lv8^AID06ABwunWx zr`ThnX$A_VPs)l?yb&{kwetE=L^-@uh|) zJ^@+L2pst*kq6sqbXIV8#NZ-aUf?a1(Q;8TdNrZ4yi}UCe`XcE{0flb{tEYV7`);5 zX+6bxh54fIan^&!6~5iW+HJ%f#Lxz_;H$Ug=1APFewOqg3|zh&^6mUTztbMJA0|u~ z2M6*klS6X;eu)o!VI3{u_b4l085)s`Kq43W%3i-qcmz>cuIQiAlMOCf(`MOwJuv+= zH1n`>At(c)Wh<_IcM!XN~@S#2K!xEvInX#`~%pR;Kb61*DbE zPhL?GbY&1JJk!}?8YYFwT2Fam`SQ3n;C)enYs1Bv%nRN2yj*ttR3Y!=NJQu*I}OdWISg9>Ki`2c2Tfej|z9T zaO!=RvP5VKLJSW#NL)?<=aw*a z+gr!Y{?G(DEJG`cbqr1sfFR-ZYGgqz?5-~I`s*B6S0_GTwuPxKV5HH)Qs#QWnx3MI z?DSWNuDKS{EktkiaYuKwwAv6D0bXO`Vr!u~rTQH=9fs&tEJL995P8sVn>>#1&YE zI2N0=RE$CeLN|E!#&uLsO~EMt|5Y-z%DpWJv}VN`nAQOXgrZ{;(PV(_d?L=KyhusN zzkp$M4R(?r2z8ekcfYY!=4t)(iFL5a9@}m(PK?A97a)*^lZn_J<{c32vFgvhF-<&X zZRBOe9OC%z1B?6L$<>o&=giUiQigP}gEK!4k)Q9?lH2O4XBTkG$H|o9$JB)z#q@sp zGHb928xoK*fNi`)|Byfk}stgHp-o{Tp@4;;*UTN>O3ra;>?7HW}<+kbd#bXiOQEXiZTB06YZ1B zHtaYI#aeysYF#)Len();HMUKU5nP5B_C{fIs}MKTZQGF!@|u1~o+D7m z94h(^qcri#$+K-ifxy4W%D4z+!Qq^!MjM${gt1(@Lhn$GQcvBsj^rtjA7D?)rAif& zYX4=x?@5^MNkc=OiEm_v)9!&jqfHeyg@<@nt~xFW@}z)iS32>x{#Ih(+_v|fwn!*c z`5)rJC}LR|=gXKIY5$V-(@dSOWB8CWMq82q_RCj6k-tpN1pQAc8yub~^ZuwVJLWnP z`%JokNwy8N14hAA>p`T|B|J$c@a?oODN6-`!v8VNtYM9SQ#890Om0sn1epP~cXVf? zX01CmWE?^nPr5VkREcQGO=Y@8_1!q>Z zF!mf~W+`K^lzh#hpOy~FL!rQx z@mG+h0TfbGGyxZF1+@Y90?bX@1JF(y`M^#me>|4%N#9KAegb~Lzmj*jWdX+5G|eC) zRRgCWy`PO9lylatSbI5W>oML$+I{|9tS~s7omfC3r6wl&N>UCkCy@u)Sz9`e2Wiqb zX$@1Rg1NO5D{XS0-}4(r?xrp9d}ya!^8aPe18Mfd{e~^l7iIH*w~P?2(Tyx-jlT!_ z0)bIMG^R`7WNl3cb4pU$44ptR3nMFt`5#|3)D7h)@n1&lyF-@B65~hN#N2PHSib_p z<^GRFYW)!Y5 zTy#kT&U_G@TE48fn0AL)FYj^L{dl-?PDykjp8Jq>NDLFTf@iW=7C11f11!efaWp79 zJlcWnm;&1Q-G4QxV5R5PRy-c0QGPt*Yr9jnk3U)aO55p&&aj){w#-nrR_4f%HiDYVdOGet za))TY`yQ~MK@nvT!>OAAG`+9v_ovPx>_f=CM$~zNPlN>%SDpl=`8Sc}s>7BMMz2;l zY*e;B>H@RTnVOESAzjo|uFAyz=St6;OKiotByv^?0#4QDaXaD=WrYXYdvmu8EtTPQ z)=0SwC=(V@dx8*sYu%8NaQz5wC5CQ4Ek*n?k#%n*`||U5V2Het?n}c2L^*i*=05eq za5^u3C$w1eJPV|v`ZgYDwUHejS}VXQRn9#k7I?8!>BIuPkzMHeMqRPD*oH9Y2fnfn zFekk!L{>N?<-?ydB~8J=@wW2Lypo6{6}pLN83pdV??{Dq@v1u2&duiLQss^txjl$DzJ|JZ?B4W0khUmcS+avzRb zNhf;RI>7W$0;$|kR0T1Wf)DYPEO5A4u>9kXks7`Oj5ATEP$pKFNi0#Q=sEiRew8h! zDAyX*h=xS;DzU~2nb_O6(#v2X^p#xv6urj%MpwNOFdc38qK;-`#*NwwU^9-Bz(v0H z8*Jw>^GbsD0M`doq08u3XSciS>Q#@)6+thynU5fyYx`#Nl0+`1mJj$Si?S zkExt#D>+8zi+=hR5B+e={F)(>(mQF<5YI^X64)QF$6rs#dvxbTD9Opc=6W5VFu}R9 z3RL+9PAk;gx#@`rK?AWwz`?uvpBk22lFr`^hb{eYct>*CSvf{G*$7i#JOmO{Qi2ok zt{-kJhofT*0eH9VFf6csbReXL7o2^u-XaV2UKdIiOZDtS%US#kIVsgkKH~mYE*I7) zvB%aw=ptl}3dv2nq=am>G-5S7u&?qpJVpb;GeY{3XeL3uYriI1y5hfQ?W({Tl=wO* z_U~Yty1sYE8-`&9vJDNpmRatRw)>}TmQTDD3mp_TRJpeEyNlIm7-6D$i*`-i>wH!Es~q zT;Pvv>uS%D74(u6EFA0&MI#9KgE9hrq&jkQd6q&s!6w8)+}R{q6!8=5@&88KY32y! z8?gGd0q%tE-muo{aP|=GPn>*s<6`1JVn%Sw-R;H{Z~}Hj19PWfi5Jc@S$1_FA&RwQ zw}josn|Q&*hSVp4bdHJsOy*F6>=lqoEbc&c9yH7R1Ld=e^syScANzJ(z~Xbl9kg%> zlZjSb>+@tiaN35{iy>?>WSia=K)*Q9))pwV?kj?7yV=t$5-@%8Q-e0&>j+g%{%42r zEjmVf#si58^FSqWUo{sgdt>!e^#*fXsSo|47Gf);ZU=H88#g-sGbHz2N9oS_B&n`; zRvqhRG2)02qL#D`#tmKQz9Hz8Z>bmD*gDDd^C+oxxwOz!m<9$?jf_}D_B96XM_;oa zRVAXV;?a^5=&mD2Hrjisfxem^o;r;OciLl>p#^A)uCxyF1zv_fM^D(h-La0 z=~FbllkJP1qQG&;!aX6kk&<@EV|VxSHkx?I*&CeiaKe163vVzb0h!gYjxyo|xh}lF zn*~noI{S9*Ql8PB!`d&}^&pX2!DtYOH}TxKqQVCa`4D~fB~$RU^#m#AizbdX@N{v^ z-_u+z+5;L9K6syKXLVct2pGo-=&iP>7RYswNg&b!=M1_^Yp**gJB-7na&l^K1kr6^ zAIuRugTS`c>^WqWJOJfS>a2~nM{^-4u>g#bGQLL31X=`PVy!+_oNF>?LMs~;f@&a) z9SI(bF35d?HqcVWR#0dLXB;BjEy+u{%cK*B?-OvQ-HBS)y`G)3Y@4sHKT$Y}w~4sB zs|%PU(?#$2!SZ7}l|PR4IX`UOZovOaD=9-Y=2i z2~WBtX?|_u$;OZ_^0QlQbGjXAZ~{n2xXEPO?5vR`BA;EY-0=VJ-$$VcDX=G!>jDo{ zrKv;rO!NRhDlsVBupebBAfx&V(G$3UicC+)0KczBgvUvgex-%PMOdmNK1g}B`<<=@ zt9+4Xb_4U$*Y5aGgF-KnR+MGw-}tl5&a@YiyDz(*)%-bq;g{DD3kC${@jo$K`8B6Y z)0vi(M0swGKf0Hcqht^c0ljbaMd?46Vp0>wYo}Llw~DPd5am;BIx|`IGp6no;CxZJ z42$8rL~q*#62AIvnBHbVk;r>v*niK`OptMCF%}g>%HI8fQ#2?F)2f%ZE3CNlhjKaI z$Ia(q)t~3UI#n$G6cV0BGqonZ9O%A2T5V{eb>G^lf_eGmR+K1;i@?;P=NA@YBe zSM6s-p8kPtq=JNixJY^86nmzM@S+)4?#LqnR%8~E(m&DaQv^V9@8feSCl|O_ShM*L zynV#xQ~Ein>XheE{W57-4|h4dgqfGSwSto8XXm%_&4pXs!q@fx?}Wa3uQO_G4%Q{r zCflo1fNAAsDrW6&htj)sF_iE%Wb&xtInk z&Y(GlwElMEQo45}RjG)MrDfBh5mXgR@SMDiiLJQ3i#Dgx^%HlF9t>*BENjr`2vosi zWG1W^C}W_tO0|VQt@)HE8@0?qg14#aQukG^3}H0rDI+I@zu}4OH=mX$7DESVqhmWv z8FH{z;QAl@gr$iG0*6DeRwBIcp?J)c#Bv)fl8%q@+2iElgOrbyl!PvT$%HQ@4j$r& zDg+<3H)BFs-qDth-0E+vm~6x2UV|*hn0fG?AlvJY>i6v;2@cJ_T)6n8h@zm@Ay|we zubeM&^Kxzm1F~-Ordad@yW_JW)AO-9!ople&E~Xz1lYN~6@|YM))h&Fi%FP+1wQZK zuCz2#%T^Yb{z>feKae;vQIrlix1`%0dU8f)n~$9!_0VxL}4>lq;P165L> zD{$SJZm`S4_P-QlO_#K(0nDEd?#{5kiG?Z zgZ<$zf)fB9{kM@0q4~-x44%tLe`^JFD;|U$AK*qts#CINKAe0}-nZr^d#q|fUrc~y zW2f_rt3{O@WcTZh%x4i?hw)}0cbO)6NKXuy3(N+>nI_2FuX-uT2Hac7D0tmu1QCJeRs+bakIa~u3`G`smC#JyQ<#2tB>eBP~&oeAZ`M=HcVww;mk zjdie6-kgDZ8ZXk-`Wz+wc*TX8)7z{tEdVw4!6CMxq=+e}7O&z7J$HE^D;VxnlS%bq zD-jfgB-G@LNUQBHqak@_uVMSrhlxq3Zsi7Mf2mii%t9%rZ+f>^(p~ly>hyTzuiy1v zg#vS#(lB_wqE@=~OxMCvrN@WfFBda8Ucb~pT-%m?j@tk>{!kTtl(D2Do@K0&G!c4_ zf_309#hHSKBlRSStGRTk4(Ke&<2?1fxKPCm3{)D|ra44{HIdHyhw;L2HtPPW58q$` zf?#otk1Y^^vhOiE5t)?4o~vMBzx?%iCE=X=_@*?WY7S>OoE- zDOT>_y)!`?u!q;|%*$mK*3t-)aY{8RM9iBCk*mVm0Gc-;vWD}CjvWgy)AGJe%$Wus zN4^bW9os?d+)t4ze+BR$%eaNwidh5TQzpaR{kwB5D*@EPZr3j1JG}C)Sv;pkmL*^s zI^%KX8YL)F`-1pTs?PjWo^>3KJ$oxn%3SkuQlJMb$LMrQZ4mwie0?TH#;2ILCb2iQ z%0wXZE*<0!3VBIJ3mhOSy4-RAE(&87{G`Xh-u8~Py}N<38qEtWex_kQmgl2ReLF&0 zB~HTvNf)H zQ1R#|O^?_~8X?QEgdRYqOFAfk_~r z!|VnJ7L%~S6wRJ_?=>W|H@SGVxQZPaR;HGIyJR`pfMxlTQTJov6M6u`#Ba)2H?3}^5zY7`@E-}R2(b%OrAlyXK7rpl_NiR^hU7fSh0~3 z7BcTs;)7!+C~uuHS|M?! z>o4!)3P}IqvQ%3Ts8cGXC%7;%;=RaacV4 zabY;jqRG`ci`h>`56hjnwK2@&CB@6!+r2Q*XVT|r8EeVb+kaf|_iLI56dG6FV&+;f z5j=6^X2g-JqZbIqYDAB1Rb?!kaRJr-6p9*M{V-87WQ$va#E`z;Rz9YkoxdCJ#l9fg z{gSZqFAT~2aO3+R5L~x%tJI4kh9N{WP4n-BExPz-?){Qil0Hn>DM8ct2&}JYH#$rh z4mRB8HcL;xCRww5{G`jzvSSKcW|225Z^cz zHxR|anb$U$Tfkp;Z5pjV4%N#xQC!{|b1K-R`=|VQ;?0_el^ImF&!IW- zG7p&A2@)T67fS%sdQbhJz#$3ku|>Jf?(J;{ltNv^ZGbCC%J_zdo!qtP8Z8Y;_EwwD zdGr<|(;J(F!bVodVLa)w2FP`C1)EC-I(qxZOMPYxg>ecn58&0F#~(S78@z0rii`LL zu}(bl=i}paR#1+n#XBi`YDAz-8x90~R~%)?ryNQPwuZy((E|lnKW!3v@2x(PT$0Da zycl*Z_I|DGZn0zn2*Mir>txGwQyyoQRn3&SerAN|5*s zdT_a$Y+GkbBlMOX4t>0MwryIz12^)d`L4Nb-v9%u;Cl8FV@cs$4W-w_J6L3(=_FQg~EK2Miomh9tN2*IpRw1&qQ3EBt!{$Gv=bkn{ymOyO+-0yk|0(bInt<>G%ISS0 zUv5_5y7;{b3KAVh^~&!x4ZtQ{2FAJK8TD1(TIlynkLP?Gov_J8`QxZ%P6*~upC>;YVu>On*x-a8hoCuCsLaDh`GSVW zmX;=P6=#zH0iHUJCDy{_oxJ~^_Mhwm+~N!#Nkniun&{s)+2BWY3oHAbgPj7)K!3B~ z;=Vw|?7$OF^V^`!q*W*JZ-Qim4exzH*1tx2B>pasbAhL#H~-!>M8EmcrG39<$rv~5 zxA+|f&_-v~uEc_-_(e}tHmASj#!a#pK$|OX2T|mw==C$+d+0a*aTF5^`473W<(WE` z#`#{P%*hx@36++$pb7DD971PugfGhsOE-z~&s^U~w7>7|fb&^@YUM)X)>mJD$=}F$ zzP_yO84MC)n{g`@$YW}Hi#KDV@eI>fCJ~JG0vKqzPTnRiNj-xNIvlPY5F=s1VhlI$ zGZq<_NZ&`@pUdM{f#vf+BuNs?OBNoceBVN}H--xhyFJTmQUtu# zHw*wYI8OeQ-F@VW&!JpF!L?F50E)2O8W|Wu3?RZ5If7Xk@5TAobnG4y_1pSo(8evQ z8CZw3m)f)o{7?lo{gqNX^Bt}M6;)mUD)W^j!x)a<>X1@_hK<{reYz?JTyg6u3aV0u zrq*Ax&fwaQ#9ZDHl1pKRzlAU*z)|ti0K($Ma|Yp+8$>)`Vj6BG^c1ADPU{Xx7YN1U z$SrHq-$Dip3?T^1_MvMMpbAoo9G;KAMQ{(5=UYpoCRB4>*8@u<+2wjrH*wcaBo?VmB+l69vqHjrLga%M=iLa0jVLGIOrD zVU+%6_1SFlzBR5cJk0a-%R(<54O(;D#WMYo4<4B) zS^5O-kkHh$%4Wuh&I4DW2BPER2Mn0}Cd>WDRrfx_6muIvt{z8l%))yhnun_!m)A`d)-e}+rcEi@4C4gA}jD@f1kFO-??$t zADZhquX%K(x>|G~|BukXmq#`&k&etQKh)_lxSbV;dfDfV&!cv&9nDvT&`-_4Ym?1t zZ2Te0Dsoz$LrnuVVVU6t>Tgr>W@h5HXZL<=tBN@Eiz4Dc2-naOpH9(>XD;0t_PMlb z%Eg(>*heEggactJXKURFeig+o3d1qb*{)-9GS2lv7Sxt4a;jBb5qQM{$|G%f!gXwx zqpo4$jgy(4x8X5@AnCXEclg|fX?>GEpj55BL?5nBHg%2`i!b)uCV&c4!7CaV9$s?M4es#}}yS|gt4V?vD$LJBKT`BMJ#xXbVb5&E+%B*966(pKA? zuH>n1iiC3w=e2wL)6d7;hjH7S5Q}&gMMyXl6WE9tg>vM(bgyb@>}ZltVECbK1_1{q zFa%A^l%U=alu2{`tk82>p>cHl?#0I;#>2~uF3k&7e6JFGIZQS5j2v^l{O<#xdkE`* zI84uVY+knokjrf<`*p#me6JJWZf|)ep$u9;{NjD5Ld8+i)kEmB0K6Q8x70Lub32`u zX7sky2daye2U8Z}fSVoz#cwh>o?LQg7IJB;e9A!T<3;OQg$ z^6o$TAuMazL8wwBr-f=#Vm@OveSe@QkP}2r~71~|~M(=??4L!ev zKj#?Ah_KtaE3T5(!Er*`Et}8)82&YrO$-5Y#de|Y#e)h!r77JK{3%pnzi1`SOIa+) z+S(eHy~z-EKG5p$?)`mMP4TN7eOf+XxA#d_)Ak4pt)5w5vA0UeCE%cErM3&50K*dG zzZV{W(ye!(C7PFJ0bo^i(|Pwo069R$zcvT;@V>+9hzNkCH%UKr|F`PWN3lW2$7&Zs zThg@qXG-rRz4b0lfLPW;eDvQ7XUO2QJ0<1ALz`gORSZTQOeR%nvzIP6`LA_kV!IDxbZpmbD)7BWoV>9!PR6-Vo{-`x;6=$< zY_~M|h-&~UktXxVfpzg{OL-zJKZ{Gcf@>pVmY>a!pcU@$FjRw?u?cD2EOnTSsqRpXjv_DAT`?&Jv!|k2si*( zAcKn&n`i?xyy6on^PSx7=R7 zFZ8gz4Z09OD3ceOy&cbU*%--b)!yD(t{@z#l5nEB}b7OlRXIR{D<>vfMDxZnV)i9z*!YfCDJ z)W>oGux#m=9Pfi>;parF);w(6Q~wDqmdfEEdz8h%(7#O8tM#b^Tqc?g7Na^FL<&kU zeHJc4Rms+2#Njv1m;nYlLuEu}3HR>e1(XT`Q|nN-Bo5X8E6}fXxVEdHR!xYMC)^E` zip*DqTn`B}Z^f0SsgXVroh8RdiQ&8eEOIVc) zXC;e{M6J2nZbv1CB`;rQ2XV*+;lcsgEZ7ilom_idy8Ll-L}kI-K+7CRTYzACn2{(n z*1raZCmk}=cbu+x2U_sZ{X(-X-z@yr z9&R^4bmYg|R2&`tsz~d5D{DgLn9v%Sdzd37f0;-E%xy}gT^_i6ZyH@7{W%0v+)zxH zSh_oD4u)>WtbTL<2_xJ2Z*)omqW5|b3$FK|!khfKd&;!YExxIw!LxY#u>Iy!FX|1r zFGED@(bP}_p?CPWFY_tCkLxL*5?P^iZb>nl=exOMen9a1wjB}_C`-Ra?ax(=6rGNJW|&v()Sj&i!HL zEg)^iVAhCQXt-YjG(KXL4hYtljZq0`MD~Eg*{buqJOfT_bAJt^XeRHDT2D>=m?-Kd z`J63JV7m)=VD}aKi(Rhyx`J^o78Fe0dr=?xWI?knHZtoxl=Yd15}V6oBae71s* z$OXqa-yGe@mnE=nX#|>0sMaUSNxH`JP6e&|Ip1-LpX^-Lx3#Up4lvt9Y4%N)s!o6% zlDV|S))8}!x$*uVgI6VN`7RMyj$B-=Wb85J`A~4r99Onwl1M>17|={P*qR|mI!PCm ze7avP`R7`aEJ>yQ@|nSa$amZsc+$#3rdS22(+F4UqyzD|%3a^;K{w~hm}tph0o~+# zsVqDZEPTNqT6*+1N3b94;A|^w?Y=0Od*4O0-2LMzXG{F!P39ZqZgrm#G3kdu=fkqu z&8vop4}^n?iogE*D{^PXUM7Z39NCPoxM);>a3^DQ0-5)q z$UytdNDN*_Ov%b6GMF3lsZ145@zT6MC7z5Tib#j>4BokzTO-;+&lAm0dAUM)@T4AQ zvTWHvx(lj_%DZW|uL!Q7Zu>5f)sssjBNHX`NA6%DVV^FGfdCXbB+#ylgh;Z?orVmJpxD$0YG;0d_!lOO!PS35r>S+gwZ0ypz!NyJLPV9v;Z!;V zUb~TNbjz5P&g1xa?iJRXXUUjf{J70(G8Bn0CV%kIyI5YB13 zj_XXyW?{asb|tifExY|Qt?W%th09X7>3mwU~zC4mJ-+GV9xBV5fS8LJ8 zemJl1b_?Fm>!yU@YIfWq0jR+{WxuplW&k@sY$FtF ze}}!CpAC@kLcnY@qQu86)>OwdPdepFx24@}cMToaa6sIK3ih826Z-Hu2-lpB?IfFiRVaV)=%l<}oKPOY_2FHigAAuJui&7!76FGwZA2r6ahfmk3y4 zkFYD32o!x*Cs`mgYHl$Wa>T&{;8J#_YkVPbMoQ^ktBv$NIKrbpzreua(Y$?3EqE?M z9KcPM3Y6%MuCzUK<`5FI$nAJgVtYol7aE%43_U4L*@bl?zQ z=EzvWgEBQmeuG3~9*YJdlJ$`s=Qf`(;@AZ+H;XkY_bC3Ti8u)$^GTA6=hv`jpaupG;VCqFs+{a~Z`blWayeS!UT za69LaiAv%$;ZC-L{07GSa%C2RN*Nd@r+f0r2&=1FXb`mW6s02yZYuv=Ga8{b&gb3j zB=h^gPFV>HFq`VzAuMD(jmaDK3WL%)Ao;RDB>zui@9q9MBP=Y0Q;BonLh}vh2a#SlHU-*XlDB`WGOY(T1&Gg6JHgelY!KX zAWob^=j^+{s|a0!UyX1OOTas8#(K6WxLez<%@uO3UpHe2$e3~kkv-*{=YpPig6kOA z8_h}<9N_dA6BEavo!$HYGx>GqqHZxSg;f5aoU;Dx?BI@kFz1LJ37TbO^=T`NT;Mv3 z;w!vkWngukGUpJ5Ba|1c1)?`x80gm5NZv>(kFmAJ!pz)#sG88c3vP8Y#7|y*^YV+cxo`MUq=RlD_~rPxuo+*`X&PUBZ>SS> z>M=(A?faJQiRKqopC{+!8s)y~tgYOjz1ymNJ`h*x zZtrCaxe3(!zhudivYY~*OH3%AKflwjX?#;UNEOW`NcY5Ge0E(x-5 ztp-S7siF=1Ru?G%6r`k9AD&><%-Gb?Ca%VE7V%2|^%>{d@xuDM(+nl&`>5yH}10E6;;EIe># zVJ*!EoFTy^5@c+V=Kv(unc2Xx?2(&pg=MdnU3LlD^EKrdx4s9ML}}W)=Uv((sKIW; z5Ye-Ur#?-DKef!>qz#%V(J%cPi?r(!z>4QbB4owAc0~~q%hnF05hRYwkaEM#dL<)2lwCBOgU4mXT z3giyDH@)jAA0JnhEsp3Fu-&abamD5|tF3)jy5u$+NH>qCeOm|v@=UnUtQJ%d_Q);* z{@wA90fQuBkrG~?Je+ZihYUIx4|p>4ORBU0P?d+rStvvH;^|OEzY8H|2OHf{fp_#q zqSG2M&7o5}^lyc*U&^Q5NcA=VHj7Gd!Kg=;Y~GZT;1}LD)aSkk?Tr8L8*&d`i*i7p zTPE@vzPNiQCbU*uhu`~;jcQA;$PM@Cvy+=zX)T_y}D@HIf<80#d^8NO8 zw%5Bxt6)vff$=7G5jS@8ni{4wV4DK(QV{tCVxbTHeI>xp*G2IOZ>97TtZketb-y77 zrO?%7RYA>gNy0zL$HeWj34&ZmMq0<%q*z^1oKldE3%+a>_pWT+ULNt1j_F@X&L@ON zv)4p&$0N|jm|c7M(fJg$!U-3buAk-52Gg>XRCki$_Xm#~cOQ3CEniLK7D6~s4wO*| z*{nyb$1PR>aFCMV4I5&fo^D}T*18MG__=>({1vHSxmUOd%FJKeo}Y)m^RkhTfU^H6 zbWyBj^FdP==mB9A;2)Y}LjN`1Nk5OjA|T7spaQuHO5Iwul(tvho^Su^ID_xMRRXQx z)r497CMYi?^Ll)1W4s`%fj!OX3zurAzMC8EtgnF!0w*R^5S;P~i1~@@+4I0V&!I1V>aU!>P2AW^~*! z?YIlGEL%{gmnb7ef1B6(lt*B9kszMfOS9^i>HHPkaE{VB^0Vcpx2D0dJ?`X@p!H+A z8O^{>DEeyG2Dt*t!(e1SVp#7VbaB zG-5y3j371!S8~0z#7}jE{p)%H4KhXtWs!_d-o;Aqxgl|4RLC8-TCJ5)=s~Td(3w@h z1PScqyphYSdKDqAR^nl@SW zQ76Q^8H#=fRd={v68^C*R#h}Hc*!S;y5jO-x=J1v%(-CY^tVQfH6Md}nbS&f|F`a@ z6zWR`zVl=D*bj(c-T9aR9%B_#a{x+ zy5@+M4BIw0@<(y2x-6CIg7f>+Tm#~BeQD)=?EKG_?tJbgHwpKk)q;lAC@K&n@ISd& z^w}9m$Em%bYwxN>C~B$kG#KgH{T66JB*(0k<61X0y0T>&tv)-pq0HV8#w6$x67BqG z>r@w7%UmIme|DyU@Un4yXx}!$@f4;5nL*#JcM!AGF!N4A?@lI z8UsDu;#L<0ZI~+~m*YJ`T?Xo2fY7d&!4cciUm5RYChl1l>$crWa7`H!zxlRKfFl@wNGkQVd$BvDMtQgq@%p;}US)F! zNe#-^tB;&0Tfea1R}`vP5?%Qu8ufo1@Np@i$~LsDd!<%ii$b9WI({+?utlAw`qFFv22d7BO^4dnK? zW^jweQIgU)p&}DLo!g*hYfY;+aOFMVADFA|kbnXXgO|wcrBLw3ImfjzmS!7#R73&G zayK#0>g~YK^~`sLlK#m&e^E|#-JbiAEnV4A_8oati^vJy|1}H1=z&ILSH}f?&u(^8 zCP=|1VGextI?Zk|k904MF?VuX$p74AW+&uP3pA>GJPGWnw7;CNbwn%ZN@Ch3@)g*I z=PJ%lC?r_IaY4~!DQd#Xd^fsg9m;AR+d-M;dE<$<*BaieJJz3FaDXk*@GQlze%%Nz z8HYSi8nMRW_yC#uF~r(Y?)T~0rR;l`MEYCfGTqob(*kG+8~hC9 zL|kJ8Il!}0Yx56YvveIlu|RFXYpJfS{*j3A=;wTG-CaiOcUK0%s>2AbG%)&cC?V;I z=DBksLR?jFnkCBB&hw=|U!zdD%`hEG@=z|HTTQ_Sj1}_t9w#5tH4#R8-qZw1ZkcN7 z$#oM<^E1x(jIyxgd@9SN6lT@23-4GTL5plLQD9zT8bA4KnlJFCM3Myd90v-ko2Fk* zQC{Rq(o!>Va*PY^d-Ou9j+JBL0$mx0uPGeYEIz2f2DXqE@P|qU-xliSPOE}vdrA5! zEFBBR!kam?1Y4))_@>RW^Rc{< zn#9jRDGjk(ZJtgVo z+wPIG^-0(MKW0yw?xB^;7AZO^$b@@LV?f5stm&WE{upxpmSg%U$By_YitndxjaW;O zqoeMt$ z3t)c{gpo(6Q)kS`kczO)`pT(6$%I=S1L{pJNIjf8SP4(|*d=;H_ToOQ7icrwc!g{O^r**z~3dE0SZTmA7h zwvKGe2lul>jS9UjDWe!rX)w%|JCpfy8}wDeK$jVaHD9ujsT>?&P>nrihyxFfxzJ~g zK#dd|ia6WJrwevghlAxi(>EW-&AuP`3C&=NDoGbU5=9~1I^0(Lh;kDPxFqVX zd^W!cl`ec&%dY>wd3Pz5?8qb{Dd_&k==R0pI@Kd`u*h_i!!x6QMY27V)*)mYi)x4Q znvP!)X&QRYg3jxpV+Es(Y9~K=;LZ#IEXduRS_~J}ae5C(R;y_TyfKg-&IzN}QLE+A zes}m^k0lIFAQz8E3+xvuQU_)Mt6(eLP+&~Cw~)cut9A#wBNjRt9WXkzkd7wVY*E&b zpwhy8y@-!DK8-ue8(fe)+mA?She8Ot)r6q35}>64qvqY75f~N2XQK1Bbo*tEb`9_=&Zj1`pxRClGm0{w2S_Gd9-3tR1 ztwM+arPb-WzhugmG55GyXYqCs!{Z}+=G~SUVB+72ft%Atb?!$;AeI!IC?qq>ZaY&| znWNcG@KnD5&#X^V>g?XEoq8O0rn)~O=aJcoj=;%3t(*i4DOPG%4S{&UF8^R{HSl7R z`{j`qSw4X+E*&03cnHf~edMjGXbATnwMG>n*=CHFK*=WAaQ431mIgB_3euzKp>NX7jl0k1O&+9aN5Y7=uG>YEp3(P4)Q%YztirM z=S+~sE$CGraFHM1IXX)cF$VLvLU3Aj!g_a^Ep3S-&MLx+p%n<@^nvtiAkYe*shKPN zw7BDcKbc4tK(6vRhyBr=xHPOR5DP*33eDH?hug&qn&Z{SF<=#J$o(`dId8Ll10eT7wvQIAD+bjk%wS4Y2-Y?ZB1#@29XUFf+D1Enp+?ujarvCgHjaa z{e&uJTtytomGX0|dQ1<1r>r$|(!s7Fk$Gq8wf#mC1dLV^JwrbjkdSD^Z$dOGS5%e& zP3&(x_wML5hJ8<65|;NBBX?nDL^b?qkbps3V4$dAseFHswgshkb?%3JFL{YLP;6V4 zE>DosC_-{B=rYws_etXy3&P^4$IoA0VZug<8Pv>}_Uwz^1u~-SJ6+*{@_==Sk6j89QQCokSoeDpx|D z2mc#b69zDznB|C!!lt=@9z|WQ(`r{H77A5 z*)}*J#A5{bY>HNyAva@C2)@CkoG{65mzYd_6hnu<6OFGVbdn$%g6h~2DSO~6;by5# zdM#(77`CgWc_>koHHoD+)l9%2MaO`?*FshI-!lhPrS;X2-I&mZ+6SmiKKsK|e6M=) z`dfP=3Olx=jreRRS zC~Rldzy)$FhkP%ri;_PbR?Zi6Bg47h7^KFQ`iji|UTz6_0`7SDPd#B-Y{G zc>X#4^AbLqKO4sm*-xMwPihUqYvRX0uOuZA1Znb29PK0Ou&|ng22>-;gvHtu~;q*m39HV?8O1sXTK0L z$xDCIQ|R?Ne6yw)q>zxJOE<_oJkDp(>sH>0o#40n) z`NanOiR`%(bfk#~e^U&snbFiydPmdjOeZclv|FK0{~yo4m{TQ3KSO_SN7+4s3!^WR z_!#1Zd<)6?eLFaXAo7e3hG?|;O2e~k42A#X1f8hwI((R9mLfx2wXEp`BJw~vu6AC}wcS4Y?i#|FA|3?`uR>`OvGgNa zfF{Uq=(<{<(YXL32FjTYj;{!%nxj{Z!>un27xLYFqZIriEhVvFlK-6Elt{7)x#?6U zPb|O1)}L<5E8|&Y+taMN)8xOJ-=5}fRSkibkju87@1rZ&JU&&VSBKmvcQm=c(LH z0wcUt_X)Ymv{btp26r)r&2lR=)i-hzobD924x$sNsGgN{k(u}jWPhK5g}7%q_VAdXuMR-} z<<#3QN2*-Hc1NGBJw))%{zKkfZ%4c(04$rYHSj@7#)Jo)Ym{4b7y^>)BA`t}MiFPA`M_E&^*|Gi966 zEgpuh?Do`+=vH-tC=^?p9*>5cwdc@$QVUmZGQAAchG5Fn2d#95OGNgoCfjZ_GOoZG zOwJDgwrX}N+!=}5R9*Yo)YXOvLOpDkz(SMzLG-!po$+rB-hr5KT>ENY@gW)~tMB{i z{HhJm&~GYcFo1u&%{!QafS%)TxQr3uAF+>U! zd5o+CQ-$HKm#10fdjn7&hClfdS*2uUoI$O?b>UQF_6IoMJVI3}Et&NDi4L(i)Fb?R zmNS&NPA@~9%K2yuIeO*PHJ+CLTCpH?zo_A$sNY>*{*Oy&E zPk)f+=Po4y3O-rSJ~pd!&k40}W}as*|ESjak=v-&%ips93IE5(Dq`5Rs__0m(cDTt zkq(I1-lr=Nw2;K(J5qts()YyKr5`~4U$4|3D|PG3XYBMf&~+;jmT$Lu_}X5NV<~HX zYCOc&qLgEGnXmH2s7{pM6F0>sdkz^W6szJhC>tNW3?AMXY7&@5{joti{djviQqlmA;KltsplBxiU}4jx`Yfi(W8LPN}9G6V^sP^fPkQJjH0q7_l%py zk{6b!_%jMbH;*-Kd%7gEpOlPkT~89uEAJZs+T{7eq&=LuGG+48k^T^1VjEmIlO~8(JIcv zWfT^&;Dh8+=`w(z0*FlTvxLEoy!FNN{8nZ;oxC=RF-gD$A%SsKn`-^}X^F$Tb@L%7 z7%PmdqKCpR+(7)@EcB;n2%ZdrD zDZUc2{Uw-8CSw-Ac;cI2gX%)G3}M-epk(oW!5{6zQQxQ_mfB`^-2U|ca}_Dzkcb@>87Wb$WE&We14 zf7RMQ673JH2@)mb=lV~AzD&qg!DZY*9J9G|KXhym`_RjrfD;y(o}G!qC=9F7go?B( zqT1ZS#-OPX87-t@hu>Cwz8BNzi3XAS1=L)>%9xw+;c)s+R;t(pa=Q@+I z-!IsE{`6NH5o$%1;Ud@Wy0-#nc^4OEv(NeRaBAaUpdbBeh`K2dDoBk?Nx%c+@!e{{Fwq`l;jI8pBgP_J|k3q|&^CAMOdc&n$S$@tR8FTS=1;L+fNvCkp?^(&q_RN2A-a z&v&p>A){zv4AW)5sj@{t_ZS~x%hfWcw6U#yXz2H=(xfut8)l%I57$PwoT4BiAH!7? z1p8J;GX3+@yW*x`BHgLpxrFm^u$+UZZ5{!`Gy4apE-%8($}g*E6UJhfMn;O%^K5_J z0e;P)4dN0u35tVK)UWqN*rl1%Tt(Aui?|xLC^>dVUr>JEoCZM+7`oOI$N0Mk8MD|sCXneIdsdR2(U!CvUl4wm1AkT-*O$rB z^J#-g<_znSyqjzO6eCA`ARJ~~tqxu(KcE09w&n?DX(97cZ*V7%I@ zlA?xVUb&}?Kp;igBl9FMLQ3v&T)^QBhQ7L$h)v1Brmm&(0T0lGy1$r3wFKV~-FQcZ z`x(HZQeC<7LMjK~%nH-WVBYUsS9j0Q=RC$$#F|)}9+4+HwHyi~NRO_RXmSGqjqv{| z&?=Uj#XxX_mW4#&PTEkq+YvIef-WE()a)wz?QSg^!P+BsmKpj!TEe0CK>g<4sL^Xk z70%t%LR-4;TW_xP>&71v?yzQ^8J`2Td5@R>DeuZRQvAx5Fk^6XILG%-#RJRD??tPV znK$91QqO}OD2kR7wQe1AO-gt338`I)4j8lBnUQcFDWC8Tu^;djIN@L z`Ow*@wjcMHkc=tc>87AW(}{ekG(~m8g0l|FH3YNjQbF5#?4%oycj&NFS>m!i>E z7#yY04RbS+kGl@lO(lQ;-$0-rD$Q2PY@lZ%qKNVY^A}YCXZSb>qq1-%OZC~{_&S3# z-dKP)Z2LBzYa^>Fcw{P2kkv>|qH8fgxbCb_)^9x!GVHgWQbF7j5X7O7N1-PaM2JBW z?zV!GX9Sm&qHdi|o}qTC(KVtb{CjsMr#w<41d03GUI4W#g90ri1prm|pN|Txu2i$b z*#~lwE|ac~w=(_HF>VRd;^pt(&UQy`Fs>HpgUUNh915a)(Pl+@n9&2p(y8W07jhTB(@ z=*{t8DQyh0^4nSMnF1P)8=y@6I!}ZBf30k2p8TZ%7uf?Iajl%KWZs?nU^fYfkDmF` zlJM%Z<#w690(^Bm z_NH0D!;DkQv-hs0P0V8U=iRPx4q%Hqj8qW39DYnpfxCOqwKZsK5Ihl4w=3Y4?M_PT z?+Qv`=%n{^pg#r&ptgkdykwJNr-g?>XImowMd_En5R9H3=&jMAVTH`)$(;4pk&Lr3 z8m|J%ot7o4>l=KJID21{o|88ULHEs~TqpNu&sd5$Q7NSks&?ULlOQS^;LCX%J2IlZ zj{%TzSEKqAIXbC+R;ebZhitD=c7@{KLNij9{yiP4UHss!Z~Mv0m+B&K>#oaiUZscj z6rtzl^e7p=CKm4)y8PrN`qy3>hh>iDjq5ElLRTDo&~*O@MV{qAjqKEs)O)g17jEYH zk|5?b$FYxN-N)N@d3-wt1D@3jIugv(2lZwsKPwebVZTeaq{I?a&C_FN--5U)w|;AS z;lg1$aK+;sRxS_JObF{+h*xmy`w&heDoaMqX;73rGC-iz0~EWbj;yVuD{LO}Rb#ke zv4w;`M^%r}L^%|SmMggXgINFF{)HnCFs01LJlVyZA!iPwXm4Tlk$h!@YxLswTzZC& zX2hvkveWZAAL3T8sWEvR@ek9f!CiH*8M6yqJcgdt0iC449O^qhxxmd3mTt0wrgrm5 zTar`q?`?|2N%Y4SZGq~shs=SNEY_klm)zIkCeDdWI$@>M_eg7KqB+J0T@3H23dbR<7e&M*l4bdwMQTu%O;K zPe|}5VCUx?u`82nJ{Y-|K;{p7fNamTAc=OA{A8TAr&bG4of~ zo|6P3Rg^~upmFP<>3Q$VOL(muEV+r^DtN_{{KmJZ%l=#w|3`<>b9 zrjXO@88l>$)fX1k3!~UK3@M&11#0$_2HcAaQEK(1xOE{&P$IbpE>L;%oBIA|!DDtn zwiN?9B zHz*7{={aHH?|+VS@0X&jquRsMr|TNkqv1VNzw7e)=kM~|tc>G{AlS-}i&zD={E-Jg z;5tMyHkl96SOy`0k+`Odor{1^5>mI=4#=^+nBR}HeU#Oe?DW=*o#6owb9s;D;9XU}hmtvG7XeLBCtvtxU89$# zsf{9@HaZ;!WT%v2+hUxn+bzeAeU)cY5UeJiB%yRQ6rM&sc+`mjNth#@46qKvu|6qK zH1)r!a!)G7Ubo}qx2Qx9f@ieo9({E`U?9Ka2$g%PQY?~S5+}TP&E6yn>Ee0yn*UN zxj~o&H7(sGhfC=TmVS~3S-cU0p5pVO#0Cvc;E;qv3zTec@mP2^Db=NO=tB`YaIqAGPjkOVme zr-V-pjN+4f1tW1!Nqb(C`t}n=V4iM7SCGy^*YLh=JBD``^C1s}f{c()nS;MjdQ*dA$A zIt#C_;;GRDnBC;h*-#G5|1r3{->z(6I$ByEkl<*_4%m68|CKflyW64_%sOw`-j%^~ z=n;7^=a;aMds6$Sr);DIg_z6lJT>Mk{a20hRQ@-m8X!#RV)u9aBK61Umh~ zxLDaT5gtb*01#cSpTw_t*v!qyMgr=Xeg0f3Oeq1BP{DDEV&w5jPBrvA2?D(PZY#5q z2&9)8h8%Z~qdas$?jxOdGhF`Cu?1R(#gK% zHL@%7qzmbGUhxnrBO$|$W}7!0NA^3PFDp%oOw7Vo(k1LkRg;sWXYx%4J;5s?Qxnup zi`7nmf9vh}x2PF!^uicikTrAf5#fq>Ai2Vm{!5IW|EH<@@IfS3W`W$M?TO7gC^-BM zV#r?yj-zC$hh7h2YZlsnm$*%=$zam=zX9RYLRoZpGMn_@nWk-ZxPoP3y#|+(3b~+( zniMZsJ+z}-0gAJHAqq9b{9F248J1tz_u$UhxG2(XsI8l0gh4tVM;JO7*Q6ugJ6$51 z|E;^8v?Qt0glJ$PO}drE#{#I$rd|4^qJdw$>e5irp2cV-&xs{mGT1?gzU19K**hl; zJP2VTCBlIz#xQD+AFpV4oXDL8 zWSxdhAfO3dz`z3J@TX4#nLO1#LN-14xz4h-+n=RkAGw0sv1Iypl7RWRj4D81btPOM zw{v)mM+D-|>LT)c_er%!%CuXq$AB&|Db($~ou=`jmTV5)@%0`l6g@W13+BmH(>*(x zsuvV#vP9e`T$qyMulu6xcJ_TTaXw-tIVv|@k7E}Y#VG>$>cl~dunWI?y8FIE5)aGO6r}pxj3hXK=b*c^x$0FKR|esYViH)-vx? z>=Cph2`aaV1)x?^zcTgZI8Br)nGfYw?qAgbVNutOxJQlY$IhkrBhWz;51KTI2cfy^G_Sodqe4l% z8)K+zJt$5J69U(!06`0o8|hgRig-j}9QY8xZMA|L@{<}0V|gqHH)uC$&gl9i@HGVH zdEVe_h74Hw=&X(6Wel0|yteYa0fW&x6SE1l4_JUILd3i->-6HRf&C+5iAR;7{jlu^ z6Of-bx!o3B8#icj+>DLpL%R<|$rL zv8b2JQ>OOzp0v||hw!Nrq!rq`>MjwZ?j$c#7SF*c!;5GXHpt+~V|@lp`4iN5vdM>< zyziZLxhw%v#SkJWx2`KhZ~x}c9dWOHoB572n_Le^fT~$|HCnNcu8y)Ou$(nI`xjKF z!7{W}wOk^J1wE{2GM(_;o7pyqT!PU)>PI89>6KPGqQk}mKtD`RjA+A&L{j@u*pEJ8 zNi*>EuX?Td z2!nAPhwo4+`UAwxGefCU5c)Kq2y)<0wUU=*gC)Eq@O`F`P;f`}T9YiCknw~zlQ(2H zx#8tY3dpN;FTVm$q&1%1=xGz`SmPy3@h zbMZu{a(^5FAl-|bf`I`}q5(pJ$XuA5{zX>bU>%(4C?)0caUiD3b7sgJ?=Yl)y+d0K ze`%iAz=k%q7=k&U!kmnzG-wrY-^njwg-urrY7z`FBs_+7j5*lEYXM^F*tD{XuT=*t z?`%taSmBWj!a~ZC{9XE={Xs`}6lvDsvg{P`%)f>^A8Z5N<~tZB92NHK-!qS#?om+@ zL;a}0G<@V9=%}U_VVPf~Od9rqM_ft8yC8>QI6)su76JZa-SwQqG7UiiE6erbxmW?F zer^Yw3|@o?=Wf7s6R2o#Tv?;n4RCv+)SCFiItTY~HtASEOySzIo)V`j-KZWrQo>x`Z=hMdgQ@avEOw|UfKAISz;Fr)n&_Dhr#S+2Q1o-RF;#}XddpQ>G5Fu?T+gdNzci=eXJlW5#S-&!a z3-h($Y#$q)?1Oi7-g9NEEd*_#OP2*UuAYL@vvZ6$Z zv}fO3yD80-^Y^wNSJ$9tDdvO*lS)I`Ri#`nJK z;~@DCK!4L7o2nO<$dIQnYF0#ze4G_6j;@4(7va+IcnKzD1{p{hM7L zwAU|9mG1e)$`+Ki(wwo!w(jaI1vs?wj0WOX8mB5qZ(?~Jjd1GQZ2Gh)g>MxDQL&6k=zw=6YQg8DjSnwxhcT0pZ1yT2aL;^7=v7 zaJ;7@zL0E5KjTF6+y9q5vDW?$nb?*CYeMPyNX9Eo&)EP^K(N1QLPX=)(TVn}aMR^2 z!(KGuov6SW)U-~i(;7PGjbM``2+J}mqeEk_$7X@X*GJQyt&GMMP2LlV0G)`yVCu88avu zcvV3?S1s{2@Zg84TD?RSs~mmn|0j0=3_R-RN<`}RD^0`su~=g(NOM-RPXBzGd3ISc zwfxZkfu-^gOCB1bSiXcHv;mv|W7tt81|ABpN~ddw8i_y&2>3tGNDxw#%vyUIwS<3y zw^x#uGzM?moetvEUqglSM`!s)x*7x}F_w5PF#XO*1Ce1nITj%wVZqm~f*xE3 zH;nNjsXZM&N{Pwp8WPkTJjtBBNw>x85~a`c!;SIs4biJYJ|F3od%cLRqbZ1Hjq5Zh zk#@`aeG;QZ144_9;lQcW0caMoORAQ7Pg)QDWwaCsGLP{w*YcV$ zjmIWwQ&=6PSZly9_abBXNmlAbgD`!F?@QIU=%x{GBvLbb<80il2qI>AYCCa6By=e_ zKM+_yMVtS+HzWM=QCNug8Zmf@WKrr=+8oVXJ)A<}ht6#yjQeO!_BagqWp`=K(cBEJLI5~%+4DG%=Ou zB#2+9m#pHLcjXN}&rLFOQoBMcgjXc~&aZZ&7EGEd>jy3joST5{$IMp#rj5t7T zP9rOZs+=`?se>X$#b$kV_Y%(h5gX1cOqnI#dE8|4Kc++1jAx3}3s_6FCoKWQ3+EFA z&oT{KV5NE%3K<5;G)0^y$RpP*)4U91>x6T5D1B7uE_O}cxerdR#+oRkwcKNHBU1VE zdC}qwykLDEvyugw)+r1_D+q}_q(-uvx}6kVEx9Eg^-~I3bMtE9+G5AJt^z7T{z*)z zRBm#gArZr0Y7t&8oUMey%bQNpf_BU3O5wU0M@ywXtZ)^AxyseW*>AQ{71X6kKJPoB zZBj!@j4**$U$OXN61)@s(FT7Bn6(WlP_u>3u)}DX{;>${bOG^hxB}5ATqm_~eE6oZ z0)n>IpO5TPcV)DQ{Z!8>HvNhD3MWK}P7;u(^2xYzO*oEBcvDa&i72V5NwtOo?jinT zWCOXw&QX}n1pCrK!`UtyXmI_QvdL*Lz=a~a558l)Z0WlM-IyMku~${+9m^DIgNbd3^)BxBp*pU|`@%|4QP@kE(rU7qD-;t_qmI{ey- z0l!J1@DO(@8!=zOF#vy?F3ye9s={Btz)=~?JC*4YThaNtuqLl}ou|H0-i1jdv-MA= zJu?!YJD>m2hvj3TufX&J={~ZU$h`F!9yf~*4N_tAH~OCbrX_HRe2kpvn60R|7Sy#x z08y&>Gz!VsQ#nC)*Q;n7+8?m!GNC6E!Nho#5d-NBNV{ zM^U&3$_Q;5yuaUgt$26}Wq|fIl|>Jdg5Q1RyZc&|$6XLHefIv;`V>x1B?mo`f(Bln zB-!RwIH?toVNeh6g#7y$D}#MY)s1<<1`oE8bs8p#uSOj~{;S4PoVy4eDa+)=fkT{z z|C9=A@H`Rt?zojVmq9Gyk)c0>?=t~NqEonAoWuGD`l!3#T^g=bRQokoaQ^E?+ppV+ zne)WsaVV(H!FQhT^`ClTR1(DI-1&Ej4a{iBGedwuD<`r(^#O-G- z+yQ7-l7f{N?YpohJ;Q$=sO^%E=O7{h?h)+-+!*bx@A0f&qshM zjDSr_FzrvR?cZkldv7syy|hy}C+a^-&*FHnQ;kBAIhmb$kTKuID#4nJvV06#+4vZ;MQk7)PVlu6y zwS+Tb`-J9q{0(mkrr1`gHF1Ran-+B_qeJ|rak8>7V2OIOKaqCss)3WE|BeM>i&F09 zlnUY#{Z)OY`f;nJ|6%Op3&s|3UCMc&BSm_(%_vSbm3q~Ag|gO&q*!@TvWV(EuqjSL zGjZcR6?4q}(V-))8`(kX!c!N+pPEe^h){0${V6^B*xVb&SSU@zM^--T8s*q_E=_?&bd=fMTs|vdlxD8jK zi@j;M-pU8`E;(;C#jP@Q+}2=%MTwFjMJwZRNP4PL>Es~k@>Y~an`k@$s=^gHg1s#Q zXz3|XStRv^^24n93Am86)c&qP+9KxW2T^1(`i&@Qu-k^c@c+J*Vr1NR25oOhI^G0hI?)5LM9X=&WrC@T~YWqb!W$ zm>=3CmRKV$K+33lzjGijN?5qrG8hM~gVRqdQjKe(y+2Q;3>*8c=|CqN#!1yT4=N?F z(n|p)H)_+XTtU4)F;gaix_?|TDrFrT%gp)v6v>R+t4IQ?c!HR?Yg?Z8tvP1lwD3fg z-|=4a&>=}Io^>aT{HSXTafOuNU2$gL$@^fe%W(Z|BJ}0cTD2PS7YZfUAASZY34ow? zh_PD+2^$pw;hq?lI)}coYpssBStW zA7!4&?#Oo-oJzGb%fYqFD=<~?VG)*kE@+UlrdP1Dxb;QYWBUdhqw3Qc?D+AA3Lb-z z?WZVr&t~L=hrKoDP5%m&ko`cddrI863H|gm!CCb@Li1;4gnV1 z&f?KuvJ=+k%yACXI3)rX_pAts^=f}nGBN7b%rYa@Xj0~CU|Ux9;Uk!8BP)U2I!cG? zg%reY@TdWCNN-WOxVy*pyfW?{NZHl&ndc;=7$SMLO&Jb&zYxEzm|xj%!Djz%PFsG( zcyiVaTl}>Y=n}%sbswl1Q$rHHxwU$$A49mWv>@i>IsH&nO;sC_OY8$I4cpKa@k)THcZ{ zU^xiH{#?BOBS%T7v1P6(^5*E0Z6jkT!k{-s>t(JV)WNQA74NAY3~!zwGCmSz75~Ip zp0}Z9`i+6|4f63)51rIU%p%)7>#&xbX`7%Y-ZzBi{o_5$*9YOxLn{Out*_KbjekON z@+H2>Ae?O*UW6vv7XiZ--~gy}n$y1&qXN!nYOZFm5*XV}SzIJy;9e;Gz!kj^EN8L> zKIen6SWEletdv79#dlMUCp2jUDvs_())wSa!OHydTdf+N13C};QS|It6ZKz|R6g}M zai=~5sd;-Ue*~8)N#>w<+V2;s%<%m zs?QBzkWKT(t`?xj+#)FnNwHAhTxDgTZm+SY1DJ2GRB&hE|^(l}F11cYMZ;o%sFiDe&+Yi4|!-ZRA~ z;%lg^abAK@^i1I(E?oI~a?TgUPzYfhfQ?N1lP4mS-g&Cw&SaUZz6Bew!GM2$52$_L zHCZqs#_Z&ERW*HW6ve^|*uUp|nd|E6GyN<~Scz zMySy9QPGlO-dNoV%jUJ>u*7M~^K&^DX&RFpXx?htJFSbpMa~7JYBqIcWj6X2v{${A z5hRT^?nd(pI*j(CtXc%kFVb+hW0iaxB1HrJ*eQ3@PJH# zT*VVI3G_sk$=g+g&SG|6f$z>Xw9x|LzaWceQ>u-?=`KT1Ej$V(37-{kO5`juX2qnt z`T?H5gJ;riW1#A&EGNIeLNxG~JDceVem}3j93l6dwVg$@a2wy_TyS>cjn}xIr#m8? z=q#XsH}XFn0PNY6cQpbIt3Q^K)f4`21?6QteV%v6?|<2lkIf z82Xq;Nz?6qk4$8s)qT|{+TLqT#J)C7>Z*Pp`-59cz#%ClZc8$5{>S)y#W?OwMC-Hs zel8M_9lBZGHcuLJ6VtK$tXSE4Cl9cO{95{4&GA>;(eNvHoYAkArs1oFv`Eko5} zNF@5iGdhoamlGJjVxYA%%njx`i37fp-ISw{gPczEom5?kFNDmS^|E=7Vz%Wc)8Ms# z$PpWv)>;u|(b$bugNJuCzdk6aAj2zdpbcdsB=max{0X#9GUJl35x9$_yjYE+0=Pq2 zvCIs4_&>8v9SA2K!oHep6Y_sE6ESyO4V0}V6!~=yh9^^>5uIR|zA`Qv@4eXt*g6Y= z(#twe?$*VftSNbYpjDjqWvUU|E_GVAZeS zAMljcPgL`gI|l!5Oqow@-c@HJm9(X zF-GvyAV4Rshps_{wJ4&Y&yKz=S2=-Jx~gzmoVBT;hjkbFZn&z_Xpa$boL3>s3z5|V z>YUcuE1d+~?IY`r9SPvH7WEq{r2W~nFvgEtBsfJ{DAowniRDs*Ly#ONu1BAJ+SIpw zTHVoe^2S`C=z3kw6+UT|eHssD>c4vp#HbP$3j?Z_tvmE~$@=~!O7()m;o`dF zI8$pD(*A|5_0{_aX^z|eK#y2|WV~pfByQ4zLz0`@IHVKTsfM-pRFG*8F^>W`M5kDb zD_sil*JwYzcYkP&Dem8Gu`rwb&nNdJj|36X%BcjNCpqH{6t!;)sPMi;cWl4pS0y$6 zY#J>Yqf4LysZ#okEu_{`1Mr-63P;s-I+jAp0s?B36YY?*#m`%IFwxp{Hd zmMJAM$G2!?KvOeU<_@3S;!47O)Xd6a{8jEfXvFtyMQHyvM>dUgiJTcutO-%ml zQbi>)I*`DiWoUrZ&>JMeu%^7T}k_u?-r?Qn6Ozm z#&`OMi)Y^DXyku5vB^=qlH-}`2r7C6?jfW;^|;!Tu#B;!f^Dljx}Jy5E`sZj(-YSx z?4t=p3g+qxfRK-_8^Bm7QdG%x&#`cM%fTOvEPZKRY3;D5Qz0zOgwU0{x<={dUujdK zU9m&^x%Fk-KWfsYzX;b$Qi2a9VHElrV?aiBA`dCYUvv{27sG9N_U>-ZU{2rwJ%k*t zJndP)_j=Bag{n&g=YB$6-~gQf36m~Ykm_%`ICmoYFts@YdmAnjdc1QByJB^|SPqJo z_o;uOynz4ie?Z^P@-@br*n!xyw4QR84{h`yKUbDXA21wk$uO~Gcx+AysWPP2#6^2PR-Kf@>E{Qeru<;3J#|aTIx^$*a=l@?|C`_NHtWF6U3EwEf!Db_1L)y?d z`^XFr%eU#X?9X6%@}@D-)D6aNIJeBKy;WkAoZhpaQXe-zWUO#L%(v(8i2*n!AkK4) z@u+I(AIF2r)rZpzI^JU>*kmjO>1y6w>F+o*f?PK~razVm$PK%I%R3;L1IhMlYOwztYzh{9At&7aa(z=neYfaKlsl%i8 z+;NN^o#v{{qOw*DxC!I1>_Ppr>nB+7<^Z>ffBOzRzAUBY8IB_&)1Nqb-;7s@4(9>@ zdSnA-LHy+eF_2%cOjCBFVDkfZ4y{3C+Wkl>%WfxWj>UEBKOs-m0U;C-=bdqt@NOC% zFH`9`qp~m_1j~e?JD_;Y(GZ93pHQ)-lCsZt?`sF7#g_P8ri4STJhoR*r#i6k1;kRt zMiKfIJuP5~Ya}&G)OO>Ct^6j}jDt=2h!L3(?E&Sc{g=S7bKKL{93+sIv)1<%{(s$0 z2Jj7va1}CoDHEpqds?&{^5)n?$#oogE?}qFMS6u2^8s$1?t`v1N$Sf)Ae?J9VbPIg zugwsPrmqYkUmr0>4AXZ_Uyf=-xV=N-%ZBB$5Lfm4x`CP_`i3JF>u$2HQb))L>?h{b zNoeexygRh(Q~?VYzUk|2mI=pyfSbxWzzgV%xIGts%2O2VS=L3_;y|VbC67t=Ce$&_ zr@`7~|H&+ws*#~z0xT5&A2-kzc}EJ{fIp-{E*W5K_$Bz$B0_ts&qJc?G%u(ZdtEgEYP%JuK(PtZgEWC$;7yRxf1m$k-Cd`0e<+6e+4dZw zAKz4CO$@>iImLk?6$+brJL!v-lCo>KZWNrj`Tuf(m;Er+>)WoV97$951w60h-8fH0 z-ewKyW?7>=;QOpKUSL6#gWR%@%XVkz~d=Ob_fEo+tVhA0dQZPPa9t^~PR*naaNw+8*dx}S6^ z+hsGoj^a^Q@_6K|FrEqr{N^vxwa^z^gpEnRw-!qWj2c#QVmUGW3|uWxzt6Kz?MFui z&f>c(qaySmcYWDFx)^rsY>Hk=f80y2_XNLFRM~B_I+o6qK*vsZD9o11Q#aH{u?|0v zLX$XU#mlSGekRH{&%)L#I$|F#ah0(95gcW*d4i~w+4wZlWTWr?mCa5<7^>PM#-0FH zDXJVF3P$_!Y>>b7nolyKy=f%>5fPO>z;(+%&$X*0EY!++p4@^Fd*c_0=k;V>CDYCe zb$z9*bL{yH(HK~Y!lY$jayr0|^Rnz$WeekCa*WO=B7LV$-=xqs5^t3H&oN#!>c9V8 z6Xpf|)$QZa^b2_gWAPPe8(s{%g0%zIb1JP!2T;ZMtTE)Z?Nnb=lHeSYwmeW~;X=?J z(A2#8Q2jOCbNndh!CP~-$zqT3a=B@u{(wP-)7Mp^w%InX6_eG=oNaLJS=EC=+%QUY z?Ir5k7v_t_t#7IId;SBB@`aC1Nb{zi?Vg>6PwGivZ31ah=-hcwe1ddY?qDzr`f`Ri zvSmp&W~x{H->CTTW!w~{4K(1^&o-_@JU&nyBl?W7Bn6KE|8icjOu_ZBu_3T2OP+OM zTHDsEVCvtIvetAJ^B~u{JPIt3WGoCys2>2H@Px@A`)HthH(!gJy|#VMOxW0GqF4ys zG>TqtOc*S&fX>TRH3W%Iw_1HLT$34$sCP;_aab}UaQ3H|8~UPr+EN#%zn6=?N!QQc zQ!((U)SiSt7+djISUBC`o=$HPNezn%1=5kNr0U&XUWzTX;ltqsaVRB-_e#Lo`(0w2Jj# z4E(k2Cu~@whUA_abXcUJ$d2QF#WftUo7obhWGZPtV7LV~v^87)wvY%lwL2ekporie3HIYdxEJQ8!7L=x^e- zI-&I*{(_D?rxjL8;`yb+cG}mVX zV23EFuf1nU_}!wWFPUSSs~7)u6H)crEP$N?xX760)+Xc6svWsZB^u*l!B%w7##Me= z#Jv!Y@An^^sJ{G~$NGA6xpfUxjEQ+wMu#Et_{35Kc*qLhM6|V1OK?Dnl}9AU(W#r~s z?LiRS38O`;*T}o3ISQZ=U$FEc-0O_p8t0^m*7~XUXbH^jn{zh$o2*AJ4c{ai_;^+~FHSe_BnG@H*7#<+*jjBr`+@0zWQl*DJGF5DbSFI!G@ z3jd-@mQgTnDE?1v%#|+IPZs%mq^MDkwr_%b)vV_gFcP|^38_IN-Am3>2d8&-hSmoW zcw9kuCYaq@6I=HBdwOFSc@c+;LXx+~uc3U<&mq00fsypv}%r?_s*Zk92>>$ zBN$R{3O@CFOtOSv4X~~5;}KNf;47C~*F{}N<*u^UDiR9CQp0TU$&iPek8ND4=I8`< zj{h9<5^!n?<4_$I+x|qY;lX<(lbNX=s!<9xlH%=PL;3D(le-IBdIM9sW8Z*SDx}1%%`9x_zaE)?&arxG>cXHN#%ED4hpM zpMP3`t?~;j>4ozGtVS(*HB+cUz6avHJe;*>*QVI{Q{zP&ff(Lrl_)`mBqNc9H6lh1 zun6To8^|DI!7`Z#tld)zpE=g{!7~O_qb{rl1a5Xfo3S`0%9KiiAgZ?fu5XAthc5_A zpoMDH9tjQT)(XB#^N0Ro)E;w-dT zS*$jtEA|sE77pS$xn@#5%Oa-BDY*V#NBcdxjkL91#Zge-^cF>X=^P%(2 zyG!lUAuv$mguA{B)F%HutdL#7`$c5c;L@ zXpE^sD^58NpRQgwiqxsES~ynrcgkpbYC(Cs0y6cTtLB+EB@q?`dzVn^_A~eiY%G=y zO{2mBOM-!UBA|v0>K>0_~uKv1%aS$5_2(`C%)QL7v*w z&Cqytwbi1$)_{qGzA0Hqzz7IMPqV>GsVoVsqmPRDL)Ln-w_@ zhQzsTo>--?s5PZmVqIRjr`+Ja%pCS~I3_#-3P0bozET^3wjqfNi~!yIwd<<*^Xou?~TTq?#oLoJ$qdyO}C z76S7S(VR=GuN4=3@Bfkor=v=7-Qk3_{ts`RxY&TQ!EU5F87C@@r@Zn@>ESeM(>>$_-f9 z!b1Me8+#JE$A+vEj``Kg!4h z9HfZ}hefRayFLqOW-l$J{^;;|5;JKy$x|Qo^}I7xE7U>G#6#!T9I4qVM{DQlr1FrQ zzr`C#zdv8325hUpjr<-xSBo7OC$mF#-|L#`S7Yv0d!>yv`ZQNq18cg*ln6wytp*E{ zyxS{;1-;9RU0z%b8Uco9y|<%n9Hn023y-n(I0|NA`4;!3 z5S*jFyQq8mg^T|yU}AQvDS>By@8SgY4qo^KTH2ilauY-Z!_vg0Sq=wvL2%UP@`|bN zRd(Xz@6(Dm&MO7okVyP7_PlTZj@EIw?{K?>obr55OkdrY$n;~=8R7P~9w zzfE7t<_1RDyba&@Xna|VmI%uH>f;*%tr~t_Zdl$jDmSneehDLB%~;@{*`4_juPr)A zab#WAAD+d7QP5F`YT)y2jQl1^8(S-4y;$Vgvo$C+A^HGoJg;_z724tr%kYb(n89di zR+7v8{P%X4qY(kG?sFjO(n5vd_N}{q`LDh~yw5$e6AhNSmmt8LtPbMK-Av}H#Q11h z>ps;CH5m-kPN=xXpdc)Y-FXwAIDTaFcz+Od&W}%FW zLbq!#)e_UkZgQC-q=OvqB7a5;z5x-uuyMy{PpF%gi#JA&&ma&Lq~NTk5;#@rFPSVM z@dftaMrGQOf%5ROT;Hp9tGd>(f*a0v%)4987uoaS3R?4}ZyZy`jw`wma*iHHi=Gb5 zoI$;IpOvHpzT z@k(ZBlM&>l(K;xtr}E5@NU#+P z`iu&`d7eeCfa{4`=Q2%Idy;Eqm-S(vR_?k=AZJd3TMEe=@wZN*FoN~Qb(~@9|2mVO zc(0-j;-L4C`QzYKH}$~!iZvfRo05+(?_O+? zrbrMN31%wxth+TgVG-Q3Om6_|nbtsLPG`sEikKwZ;J2z7tJsgDdlt~;(PmCT7r46) z1Ou_ET0QM_1a3zb_(l^(p;i_0UKQW#1OA2rd~9O)pY3&4HO0kAn)366TJ zM<>bbFSX>ww7PJc{!cbNzWaLYncgPxK-6%(URTWnnIm64x>!3RzN9ev83`x=T!^WKOlV`h^e_k?(>%W>nDn9$-8&b zFp=q3VyVW29hf(3T&+NqN8T$r`i{8wl-#_e@wat?YZ%lbWtN9qQK`>am}l{1L^tb^ zXwWq^4z%9?_Lms5u}eCseuc-L*%eC}Vv{aVa)$b$Hs%TqO7O4JLl11L=i5V^XfsmBBnjd_onxwgx<&)xI$!HI2U@-f7`Qq zou4vJnU!5wB?QWo)+~kQxBxLN*wKyjQdCUpD3o8@^27X=U5!AP_tW~EKM{KFY|m1+ zMp0@MA@(aSXE1uE0@{Ey#nm9p$F=SH%4akI(@F}39*GTHtTDWNJfqSmgU3IkbM1C# z3=TRm0ZW~cBIj(+ZE%VAb3f_WAxQnE6s4J=9iQNLcXHkEVP(c_Dh6MI7OqMEUU)j# z6sGV>_rF#iASlS)fBm4Z|roe z(ZH9S#4~s|GypB^Y3U)bZv$c7OjU;h$yJo1BUP-{omgY-`I_e9(uh<>*~x$6_Dk$J zbAb{Mt2K783%*E@z6T`})UqX}8>gx+%na`@gHK=2ho}#OS2A01p3Zp6%~^sZ5HC2A zn?F|U0bH0ut(uJ*vi@|4NJYLyc8{85WinP+a4gBRTTeKSur=3%w*-toR~TYg>L-#VG)(L2SQ4{<+u-gs^CwWzOL`KiNO{IbVP1tk#5vrdJ5R*g&*RiFU+fvV=LloSJ|hdB zccsqETJfP1tAvtDKw3eY1$b4OU-8~)kKj_6Y$ouXnP@jfS=?P$;Y03c!CDO%g$GKd zPf@j7*cCBstlt~qiUe6F=0i3|!`hS++Uy#!_d}{xGwzX4F``>0;irVEg24Vm@{em0 zg1GA&A`k?Nh*eV9K3H4^e09;+>K^5ue!Pb? zs+Wp>=0;`fG_7-^&mRJaqC3cnOp(R5=J&pg9mDdVr&CMlfR1-A6Wp*3?x8iU@NdqtW^FcNtM=E+io^XIINx8v+bK*IZXX9aM7Q|ja=RadqYR4pw}qtbcI z{P}_>dN`=ltt+sY|2?N|W*uziQpGpo={ujwGE|ijrMlaI;U5nL{bzM`AM&{6pj=Gy zns1qR`wRYM75kA&IWt=Jfu|PCile&;_tDF;^tbpefRM#2*7i6F2p_0B#U#wzpBNZ_ zf0^`yyZBae7RPVZM1Ozb84o5)E518IBE80s=FZp_f0PqU4h=)P$6lB#*!D}OSPU=w z#z>A@Litt0-U~s#EuuN_?q^ka#CtFrA}{)ok7%cQ#KM|x_riZ#o-4z?-l!Is^HjG^ z*CBzpI>4y!rcz>*?`|OdMSZe9YIrJ4wxl$f9V?W)@>k3PfSyX77#7h!QTKja7zrlH z@~iX)5eznpw+>};%o-{zR}WH4moazj10iAqQo@6|(kd9qv$Q(}__*xkJf?SHl=9Nt2?*Iy34M=WG%}30B6fUC20bSH+>~h+~Aj)7=&Y5#RXC>6fB?|c_FX-%{ z0auS>SAIW(siYl?pk^0tx@H(rNPlgG>Z0v)E1?rjafGFXd08hxHC{1)P#Xa!c9Si` zUj0?os`R-TQ1egzmM70a;XL-Pte*q(O#c-xgi@$bDH=9p8fk|ku&d~=hL4E_f_z^| ztkQe}-Y%1Wr8y6Dnh%QXY7nVxH(5eCU|AKYrNWXZDEHkaDp1y4g>XFuqtTW-+MO;GqeIU~Or6vlktQQIxK^Nm8IT z)?Yd6t;#Ad?+R`CzEYQ=*;8nN0LzKGuq7qf)@3Xihvp(Cw+83FHsn^l%=%f0wtVPs zxYim9TP_SKUVa(8kNgM}3`Zp?Zctf>cA2R(Bihcmn)g4=^Gi?)niLB!i2ikELUfLn zQ&<^Np|&Qbq>?8>PS(%FZT^O{7VxmUHuCik>0rb%13d_LLZdH8Lm5Cb9eM>MJ$wYc zh|<43Z?X6zQ}{M-H~p9&vyM56zhg)V>M)eMUmyim+2a>MVle9v9j6&)tVlgtI)b+l z>1o0J3+$x9N)yxl#O`{GuS}n0=bT+DG+hFJ+ zH7uB+?Q+jr(L(mLOM`d%T8Xsk6uFx4Auqd`<+XOFe6O zxIIP#iTp?WaLn9Xjd}$4!4`0$bwSYR*;|Q>bXEcTrO4l!IVVa@CEA5>zm)m^0J-FSgvDir`QhYT?N%0b3_=26wQ9gg?-(agJ}I^T{XLc4xo>G6aS1_0`X=5e6f>yPQ%)i&z69 zZaus^iD-xsz8v3I|KX`561W*Fuw|`)?N*xnXU(g{v4E{Jo@AOU7SsCUf~Xmo(GqCf zOFL|^O#oScB7jvE=aDiRYedIa%h?G}HLb2l42SU%*DRVP80p$Lr@4rbFbO(786g!= zRWxxuSL^fue@JgvLyRj_W*@S+rVum7Sr!Bm8$clKDq$PuYS3_6uztrpYhMvvX zfz2rfy9F1Ls;hY`!TJ9E)o2sEz%>51sZsrz&Zh5_8_kLSCIlq18$0ZuA|dTRMIvs+ zo;L?Lajd&BH_|7@=dOO?Rqu0Rtb~|vX&_6N+|OG%_{j%6ZppgflRwtb3kw~rE=xgF$l%sNxU0!A65n zSa`V&{V`SMvz#C=J@aephD${ae2P`CK`+8SQ7-%L+XulIbJsG2K5lh3gakgm@ z;FP6?22o(sTK;yso^sx`ptCOoxvV`i0r0wMuA1`7mzvz@pK^z*+Q-5DH9lr`7@llx3vK#hXut-=^MfsT0$)<(ExQ*uGB z%k63J>p~Z{3QY3!`4{VOOv@XF@`JUx=GF<-h@((-8DWgJ`F zjPTs;Mi;P`C%SedC1)?ZW6j;EN0e1QOJU=w@96}w^!Vs3P`ojW?S(lchs#CSPR(5~ zm*mQH5=s0s@_CUJlC7^FBNT4vHeGq4IPHe{^(fi#DnKb&#I1*CQ>cwZ*84jlttlDa z9Z`BEgRHsjmxn+C!^KpvvM|$>O`VBmGSd?cNkQ=@;>V81ohwP1Ys z^5Qvozr@EGNC^ew>73fhD(bCw=LT`t@AE+Q)*@(w&*fwe3c0T&ftIX0fUI|$Bf06v zVGDc8mV%$@8@dVvQ-mN;fcy4)mr(MxIXp=;!J*&0YEU5I6$HUkxFi&U6Ti%ku`x`i*1#VhU8v596maWMkE5aM8$*Wb{Qt#GG z@R9Q;SPqW~>%Mk+DL|N6`c~0>fAOip;psGm;|8U z)`>6t6wgEGRK7=k3-}v4x3Ls1=9ZpT)hp;8h?O*M8%-x}k!yb@Lh`mR4 z5^$@yPq>7NM92C0(9APaqf)EaUkKw_pgUEQSXh7o5g$y1tQjUbqU^o!t@W-*g%C7g zaJGit;P7|+_b?O$S>j79i{NOtV}FrwsU^j07aPCf1%QnhvP{#(j!IsT^9z;gnJOb{SkSIB@48EPQZUW zDJB|K%H%Vauyfn(zG^Az0>6s5?+uiVmI%CLKuXZeh!Lv%uFknNX@nvS@f#itf~&ka zt~G2h*iyz9br~4S>#lR0M389kx>RUALAHEjyp1hN8FYKt)bZrB_Y+wAzZJ<5qGtT3 zLcpN4kHofC=6+V-cPu7~9v-_<^MdUwnJA6gxS-K7d`CchpPzfSHV{2H9$^P)Gvxj> z`cU^)TGC3(u)1vpqS8BFfHSNa1OCdN_$Up{Dg$LC3XLrHoh*?+?n|Q$K;)kzMx|9_ z?{|9BdE;W-Wu96zY|y1^vRDtAEoM8dY^u`laI^BU&vPkL0_>gSiXuWCZC!1w$~sp- z{+_StmH$1+kCu8)J({&1GyLLhplxW>JFL=i3$*+~NN>Cc&LO-*Ih2!KKkS*ZK;vhX zec@Zo)u+iGy0NIf^2ZH$1apPf#b6Aj_t_AaTRAYvBr4w?VN8?{;Scpc+{5i`oD2T80X`}#WPh=PcC?+N zS_r1B$r^&QOpS8uzzrZ_;t&z<;o{jl<*)$HGF=)fk(kJy)kC20pOu-;knxxSN%0%w z)-&TM1^AaBXXAzDkpQg3O(Q|XIWRr>Zp)09wZgg66~r!wA*p(hjzJN*%jS*!TCzMp z?9Sw^6)YZv4bm*pV@o&6)cxru%rM`HNkoZ5$3WWFQg+oOq*A4r8^74}$*DvEaq{tr zvtw{O1xoaJrOqJ(Hdin^nt|xaD}(JqRLD5TU_1ynr%ptZUgI{3kh1&veB#@q3MQSY zJLSZCcYloFKGfld>Xiv+r{O#m&EF8RA0HNiYq7(H5VunTI8Q0qySyGIesV#&=I;Gz z{>Hzhg$6L}zNL{Tu$C-EMh$%NcSKg&loP>#?ruDVvU;*H03w0h0-S~)nhyaIBKN3U z)BL%Q1geSZ#Fx}gq>I>08(i*Le1^mBDviJ6tdAJuT>V&G40(dI#7Asq7$-Qsr?k$f z?x>mv=H-;>CEB^CyY?TsXe*&2nP7Id$VhL4QBuF7>Zw5pVHfyO25gQx7H0 zX6x6G$i(0v`+^Jm;%Qx2ZSRYAn8Bx{H8LfVJ}z?m!uKbpL1Q?x(6t}WD)ldmnot}5 zaz&#^VzDp*N=z{UlM8~q=z7psnQs>M0EA2-CvWxsG+WFHCglzOkJ5^9#sWBi+}PfK zMl}-J9}kp-MK9e!&1{iZHF`9Vv4Wad8hc|B3NecIjWG4>>9u(|?h~;h$;umki9dd6DR*-iizZi zTtREb$(sIAHk)hzX-m#D-&_?>e(X*}3~_!=99!jOc2OWK*|R2yL(dla$bDoo$|uK* ziYK39=Ue{Kj07aDBByKin4_+bA^X(a`KFFmQfWD>yiK(t3S&<`DR(QFG(&$YRDu6M zfP{*#mJ;KrGC>E9P(^3tSw!55Lg3ym6==ZBs$1l7O!*x`n&DAlEVlBXO@-#kOUFJm zRz>J8)apC1VnY_oc+8z7@?nTJ#Vs5rs*rKLtQH|jc>L8sBT?u^!(Hl*`&XXs=mT)) z$FN0djeL~rjBpMQ1rqVy4Db^D!1;I-6`FhA29|`rBTgpvW?c{{c4!X|D4p+ zfRCq2KQF=gKqt3Eg7hV?yB?x>a2OD42xKH~KdC^wE33q*rF)u!CV2EmXv0iK#92N`1Tm%UVsR!#tgxa$?=G2G5Mops z{L}0W63M?W$IjjUqb9n9*9jDGXfDGxExA|cdr_25oUJ*k%oRpIK>=#1rCbCM_`@_@ zH>IOv;3^N#N8KN6Z?oZiFY%}_G)4qF6f+*`rreUweV?>hN;*^z~D0m<5V zot_0zo9DK@tzvP@^&p5|b!kwZLgPA^5{8RMU#R*!WwYO9_bYHAEGh!0BymH+v&Djc~Q*$s0wc6%=n}}!{Vsys?ayHIs-sgzzK1l4Q(e6!9XZYSL`oH4YDZ_Mz};Z+u|~ z9d)v;1N4FJvg7VjcX(hU^8f8iYOyGRM{h-EaC_xrNLNi#hSY6XONb>{sMO>F)0G+G z;&l_u-U7u?lj?wM`M0=60-?->LRyq5 zSoYfFSN(#EsviUxWzZv+acRVO1>T1_jI%3O58!2l_*jD~cE3mW9FLvu0|K4i9oJYh z7b1_^m#C-B)Wa|VMjC^oR;9x{i|_%i$Zu36GikAJ9Qpb-vuuO3fm2=z;y&yqL8kJ-6hvG&HaV_h$Pymh5re7Zr;i>9w z_Jf_BoG_3GdRVRo+!yuCkAz7#V(}yeQ-6`88v%Pq#LT;!?Q!H~F#V)bLg0eY*rSDC zVo3a{56E|ty`#nfo!JQwW~+Cj1s=6%sLORy5t7YW^_?q_t~DaMkQ*x_AtMb=)4GoK8B zRa-tkf`iZ}t4mU+8gDZ+CPU1Lm)Yw>X4bG2k!0X9@{;z^gzo zv!_Ax&pzb0l}04@y_)o$eIUdpja+8E$Q$z%c zi8sS2*B=kj!G~qx6smW~I&7=I7p{}^nkU~JBy9$=4+sL7@V-NU+P|z4;fbbo#pqPH zHR+c8^1to!zIee4s5h!7RdV83PUg{t^{(*eH%jwqfDE^;dpfXidHNG&^aKx{d0$1f zPfaNFRr#pqFym=L(w-!7mz8g#FyY@0rB?*5BmGr&L}TmR2YU2qPq(Mbf__Kk=Q~Rodu@uAx%e3(hQ;!y5k% z!YzjW&4^J(+Wl?cFZd_VG#QFNpW)~Zpr_s07P(n);(&4)v0Z+Ib^(wPjPHXmxlz4 zeX%m4%=%(sr<37NQj~!YCP{ZzK+nYu;Yp-=FSZGeMz0tM6Kn1e$&A&r8a9cdT~w(% z!qBGML`qh(tYo7G=_0mOSaXER0!;`A!m$J9o09uf*hb%{#4{ zu2*N3sN;mkO-3~akp-r<=W;(j=qD`*FL)#5Pa>*<4Ruu^WI41hA*?S;YxpPV+)8jr zuumC<;QXKG*9;XTwwj0OhedJ=;!aYsf7BbLN%Zz`&pMXBV$>IJLXyKTZ#5dcW1wns zT?VRhDaLl9;Z267O{?W$CfFZ?L2<{cQeR^(!6gOawJB?+>ve4j|Rc~4;9(PC|9YUDB%uECZ8uB|; zCFy;VjM^+t^Uh2Byrsb3Yz(YHU%$m+vWU*!-ks{Oz^+21rtPQ$BiK8Lw7l5&lRYUZ zg%bYnP!v4!1|2k8ai6a=c<=(Z;2-_ZLTxE&8HJf;m8{n<`3-aa0@=Lh;J;uQUg@>{ z6Dk*29L?sV|r3RsR`V$Z+T*F=8i~kefEfgvr}~Lo&i)HBr>~mC9M5YFwrzU})&i zCAL2{2(%DcCBZS0;I8Y&zg$N8aUwvobGCZHa45%cN&NJnJLYktI#=v-td^@m(gQO^s-kknJT>oub0d{~HRQ#mi75A8{( zAdHS>l+wMUjk-`+(0 zz_5IISr(Zv^$+(#OI5EUQ}C>JiV(X6vMN|75l>L6$sBUnE65++vdQfiP4qmCnp7Zi zU_^9;x#e;V0qv26Bf}s^6Z{Ue*-R;a3)9BN$YnHkbQ^sO;)}@?n8ROYcz{Q4gjSp+ zPv32ZY%88&T@hK_^{x-r)ZnQfo;S%hmM%8n*y)aSt|;NCu6=Rp$Q36~0x7h|i>LQ_ zP>MCWsM?UP zUxOKBlXjKQcW{0;h^9b3XnqLA{OQ$p7?B}V)?SbZ*boueXvJN7y%C8uz9F%N_SL3L3^4|gmC6L^-duYs2T ztMa|cO#VPWE@r)E*uelM01CnByc=!k#sLjNd0X@^1dZ`qu-z4vR6MD++*PTJHF*6q zn+EZdmV~GRH1itCNG!YMFKpBg3xZs$B0rF&m_EZYfpoWD##73-q_5cW@(~vLIxisB zYuzl^!3JE^D@F)|gzS$5`SKSY8xjsAnYrX)9~{?{$kbg42o=8UB;d}S;YaRI*AKh= zBNz7{$Q{}|;K@w{6oTkZpk3GU(8nNr-AE3^Tm`ck(ar%;qVkk^!{#G{#9yop&)ykY)h-n#|p~61y(4$OPqxxx1gT#ZJBL; z53w~9IagkOjKw7ds&~rl>Q_Gs>OKa68+}_0U08U1bdrqj-gjo;twBqu1c}ogO%gaC zmT$DA29pH_Ac%e13rTYvb`b+4UhDCeZ;XKoTxNIi`qaW zymALA>9dwp3#X^B{4|Rx4rqjqJP*KlS?jGx6yXmN?G1a2k^dw>x1w5D{!Bh}kCx=A z5V^W)pwCd!Y0hSRme@Ve1#;=SxdUxh>4v_nj<0|=r)6|-B_%qO(7h{b3~?X>xyW~* zY9az1KCfJ$JPTLo(1?4BWTrOv)S7Ahg=_4#E3po|E48Tuk#ZUnh-o6i5#5O%Gs9ao z5hoAWI~yV|9S>g@zun8PB&`hQhh@U8>dkdV@KvFCJ%hKHS8e=Hfe9Rlj5?xK=Kf;+ z$}~Nh!dy4%(}NK|!AnKl>+6H7!ue)$=H*0ANM2}9UzDwes^W2dvax4c(&)(AuZuT@ zs@hePZEw^EtuPHV$3*N^Ei+2#`uam)C`tX2c%4$eA`CKm6X zPwnf7xF=!3RY)U|)q|1%P?md{K4V}hXTG-H4}^0owbFSys0qLu!3NR%JnDT{d6!n~ z@YPUK-ge@(MZO5#@QiJ7ypHz^?85^je1Ks*>Gl?g0WTd&B@!@Wg)8@HQ@v=YZiH>m z=7-!j94!AmVDc0cIA-vFS8}Exozo=^bNt3~(C%g|=D9Z;9s85F?;Y@=7y4=p5C07p zVsFXa@}EkigP|(JwMX6icb)%2hrLdqpY7T#z2a_o2EBdCrxG$&RUNJe`%Q=ZH^H?; zat?M~(fGDVysv{S)KR)ZD2vhrr$u~_2Sku!-pzO)WSJUw;-|^-&5z!8MpS(xPftI; z41kHAw2#?XXw-~P&bc4aS1(6ofN!@XyNP%_M%xr|**;Op-H3i2 zdd~ST)KG~NN~T>Dm2xrggQM0Az|{>=`ViF?B;5N#dRTSmW?*E~*jP%^eAZF8xI&;D z4=*tWe0*QXqs~z})kOf24UymHa70ihC;QHfSLP_F%1SOJxg{;>FXG(DU26bpU&VW| zJ3rK-KeTM|74*Kq?EQBGA6*pi&k+8V`Am2C{70XiFQY{n87cdMcCE^`3J`kZHIq2jo^sAtvODxO+w0KGQ>EJddVLdsFc}>24br1XHI=UO6E?=RjRH?Oj zp{S2~0Rk`KZjVzQ7bXc-tt0%Ga~ttQpj+Je+`FI;YVxHdn3*u~5TMRUdPVa1kuRC{ ztQ3p665I1(vk;3fAnc3EeWW<~D0PJ?s6TYP;UQMk63$S)ihn7JFZK3x|nT zT~_&jj8POLg_Ui1_Z&A2TpX=k&IdO#xHV?ho>#hcm~yxn5p6%8K(fB>lXRW|39g%R zT?Tr$Pa!p<8O4IqT06I&dnuIfd1&F%y<%NXw}D?(RpE6(F=}?5O#RI;ioU|YikgcX zGgJ5GB?Ek;;o~g}P|?ayxEI|6(WV0M*KPx((zNH3xk_7eqv#0OagG9Po`N)T97hT# zx&d_urAj*{X*tu-p%v}u?~d$DojR{4QML z84@tw5+fz(PJ?Rx_d--760s3P#*0x!NnskpzYZOoRsT*O0Bbr!qdb7FLy7N! zWJ@Lyz2vM5bDXt9-1J{<<6%V%!16uWr-dxTrecITW+@|0g^B5YEK+*zGaF@J8< zscWO>ywO9npzSbyz*Cp253v+B6d*94C!esAHQu%5A^C( zdp|z_QPT+z_a)BSH!{Sj6E(JU(GJ_iSQE5DZk>>iH_xcE9+~`Vo&Yv!oZ(%10IVTj zuB5b97pq}0k{%G6b2R;Vx!>Jl1{}qJsZ+T@E=klg$%Zz_g-F`X==U?bbOA=eMU|g2 z)XUO|;o<=s?luAXtE=;ahYalJ8{`U!iSlqO$Uw5-+Wq>eS2o^1yf$G8be*Tv3*AT# z2&@d&i8ak^SrIdJee6N3Mh|iM}Yu^#0q!da)QM-6C@qa;`tQ8^hlA% zpHN|DXxVQ!uqj3oQnb7B%w0+$UEGyV<%6965TcK^ z%ZjCHj`s_=>!Etb$`C|4k!H+kIv+zXKk?71#lA>yLDmpjwEq1W3#EG=U~*U-?#*k5 zXe8y-*eBCOz;G}|mg;4p03_zFyIYkPWrEcBkc#z$G&mrXQVQqdIXZI4)N)=z0-~*% z_`zT18HtlNhv}!g5~jcvip)M(Y<{ZA_;th**W=+4KXc-!gc!Gm8J*^S{L2Dc@Qz^( z5$h?{kT@LA;bXFT%%0{vkCttqZWC6XuQg`0ycA-P`Q4jZbgI-#FGJ%}8$jQlfDa)v zR7f$kj12%oX%dP=U_jx{Ji+(K2mHkR3p{&E9g({15kmgvJ&zx`5sjHxz6jSz^-t-c z(w>WtpBcUZ7XaXL@Pk!^>;+U^fT{zQKUm809Csno3QKY48*aBP&%j%j(CPHTTuP78 z4kr0Yfl+wOI9KSoTeWmh6J#e;0Hcq!0+0OV@`kz zG+iL1ZscR3x^>vCm>fa~VzbnpW-5I%t&|vvZPo}wa@LxU9C zh7WbiiQaLymQx89t?Xj!-q0U)9}^gO*cez(J9W8o{mv=X_F7>%v^iJYc+$T2G-hu| z)8R~)RK(Ph2q|H`{)-s?W@?0BGAb_y4|GUUF9D?h6M-4J&7Q$0QO(7AsT)<^E~^m? z;1T$iDz3UuCcQ`z29dKR%@GCIylSTN6dt^MOi^=JA{6Fncv98Q%Iw$Cq9ph=81__0 z>Ph`6+7%M6Nl>$(`hn5vc5ty!F5cWkHE8W$R?7^>oC*SVwwghDjil_(R;%5R($+?syWSYB~q2 zALL1Oe3N2c`ssH^o~b`G-g&!Ofs@XStt9oMHfVy#b(O{C>EftkdY0}pVU@{$L))(Y z8rs?`faUwaHZcPsTYgQ!ZNor^p!1=uDbenr_#wro`$Q#U?0o-*%;W=LXt-$&JDfQy zGBPzAK0qtagv)a+09QEz?iny%!R3#(3?sWE(v=O8zw*pn%8 zjjT0lQ35vW#Ba3nSH!O%iR1u;-EQBNdSBla?XQNh$j!!B2! zg-evm-YSYOOkCmkka=)&K(S=1bc9#VnE(W zKF%k(Ap=DjmConCUfcU@)6_rTCfd6S1Vog(0?Kd;@FcS6A6Azb$SYThs@j3*N%3#zs?bT zO(*jez7JNA4j{5~<|$@O*Kc%vX@>7Z>#;y!e9O!~!#Ix`WPqPU{%VC#mt+jsm`JsY z7d~0ACO4r15mxGB;xRlDaKkDbYKViOohF*gpwFxnbP}-l1ZXue>>LSR+j{k|yucSJ zB;a-=%ek$CT^$L-r(P8yN~PlFxQz+?k$k6e3Om#>*6bdLfsa!0qjkR#?RnqcS<6+V z`^8E!f&@@gQb17zc_q*6XRInc^-F^^YwEOW2D0H-?z3LZves<+>W>7t6Mouc3At7BxEis-PLEj zdAca~!21a%s_0APF$WQ~#cVJzh3~Q#7+?JDPv%LYu5GAs-%z(w*lC4E922C;wcUWt z604NEs)pGoRfW6!+#|Ijq5URUox#34S$wW0?ptIF4lpkVy~zp7FRNai>hNep@8gxN z^qT0vKYx@2A%YR(1q1^;ZMfKheOVgGr>TEjma(&Sc{I0a@syo@O}?|xN?i+qO~~%R zAHHCB8X8f%hadd~J#~(kx+wTru6xnh!7>_7J#Q>dx4tZT7V_8j zHJ3ofzf8vIm`AKcF7-iODnf;7DRlm6bVXownw6{jwj|8gI8nh!<=|j#D1%>slYt{j zSVJxMP~wJDHfVytU~u6m;;i&=x9Zb;(F-Q?4rfjd8w+`yrT{Rvb-{BHl0=*zJ(?*9 zp6g4l@6BeEpYZDqy$0hCDtjET70pO>>U`?fy8lnJQ1IC>zuVIXYVE|cYKI&e%CI#A zw_iRJ=Y;chr3?HV!QRtX2f1XREr-7Imr?bC3ZHmnDQgfJ!^!FJdBSD(Hdjw4oAi1maijrVo6YHjq_H^0>!@Xb4O(F@ z2ji%_REs{4vNZox#yxg}FjALZusYtY@f&HK9UcX(;`zH&bd(7sz4`J^C*m*`HiOoQ z*;?|XKVgT(AB&G(##8oTe*a-m4z9<<82fb56O`;`@3jqHeH%S%n#RF8v?2B1pI8U~ zNa=yW?$OO@Ldi1_f&m;vWTg`{Koq=GEDucvNs3s6MOyOZ)O;L_*ohnZy&D&MxxxX7dvbiV=8A>(ZN@g16qGhH1Qls zgq~;=iS?7P$L$2WZdgN_-uZq;!GSD*hSYD%h24K<;OlJXt+%F1m&sWgd<}&ioaVvH zr$W=LEc%LQM-CCR!=&?IZC*&RDIkqNh&UCh5kx34ybcIK3|_~E7svP9zF^f5e@?+{{k~7Sp~#SslT=G z%^eCrd9+@lX8fO$JFAeb@qcHr zk&tZyA6Ph)GQ-H6X!W^##76IWWkBDBQ=M-58T5`=&sqU#-v$y=s@VaVdpB`%WG$!mO&Pf?}4sw1Gpn5=lW{!*5OP zx#Eki%)ihGUt4$~635aES@s{j>0yi@r5q_7agq*SQd_9lx=l(#kkmKWQCaA_kA>EC z#36vM1ALlOkFDLH0l1&!=w=smRQ05!k}r5XFen^~l)~-0FPZXU?^Z_)ed5@yvMOV# z>hCdYstiG(-p(W4PgwcNrOQ(}@#a|u);Caod#pieH$4xUO@z_4{h^howiy#^7Iprq zaW4e{v{%uTy@KBs6&wLiWEHw5BVSWUUC<}5<0mIAEWE46LyzNJwftT1)203u%K6um zwh8RuS6HQ}RtzZ$wu)wJ1&jHJLR#`R3ZbeHeUEAryJDL{SIQY#jnKEp+*3W@zI{ z=b1{DldO>9LVskA9f(?S0ZUV>ppx@kcV}aiJ}hAT%DCty%P{zv6tgw7xqg0M2&zN6 zys|D5JsFZkSok_nQuaOq1gn1%E2~llBxeMGKL=?d$UIB2fn56v^z9Ev1miA~j-!sw z74>IdQw|ZtNnVAWSuYZnHLOT02bo{+v^1UKfM|eVs3-#n($EJlyTx@oWTWIL|LecT z@WX({^es_^&5Exg$_``*{?OODTZkbHP{-F)MvFX4-e(i;8`kE$aBouNefvZLtsdvK zSUwR^H$}8^y^pywq}UBT{47XEVsXHT8o51=nJof<{oB{^0(=XAQ`P~sps+`Kt<;;h z1Bn%H6Ef1xF{qFFedXyvrcex+*Ok$$ek#J5QTIZZi;lAXNqc}9f}#cM=xgPG(Ejj$ zN@>Yl$g4@o*p}BthT3JeiwSTNHD4!>%zr`NMz0#A`-V3_0tzXpk=OZ+F2_@jjqImV z(PRr2{5F>TvNEg#=WoD8*{hoFMKQA@@FvbLqBx&(^jtu}Ri6=Z{LAf%M%trL;>?@6 zy5$jtlA(|M(`!J5SbkL`oZB}lwDAVD=jASNuCwUw?a-wN-R7K>VETvx<>reRk;uXq z+Lp3xq5d_|4pJImCL4K`2hce-EwSNh8;pQrDZDB;1|W81^17@pfL!S=1KRbZMu*yo zN05tpwM_wi8RXK-!Muf_B^o}~Quk`6>a9D=bisyqL7A{O!{B$jn^D}>zP)Sd{OTzn z78AL>j9>5t7|G#_zu#C9Jx`kHB(_1$`3Z!$ePHb0L5iBCAH5`t#x*tD9LyAflS{jE zR`loQ05>0T*`#RQWLSh~rnKAPp&hLka3{GSVORN?l%&Yg$~fWWDu2|u&25$ojrry? zHM^o@8FX<~nJqP0E!jQw`XgVIi5JXsBDBqmA;JA@?MLCgz<>&kiM_$mn$aI4@Ad}=Ih49mGX_Kp1mWXB7$)6w;cEBxpbjsz%g4rLgRqWKFKIK17SDOo65EG| z`IksJBc2odGZHurjPti_HJIR52Lt|&E~w(x7~ft5t?j536<2pa-*4v}K+5M-oIG{d z_cW*c7f-w%9sj*T%*ng&z5S>JTBpfA8 zX0%~%;w$u|o1iu}^Kcp#KOc1_0r^O}V9sVdnhZ)o{_j%#G(vqox^xNsIDmlZ86)JQ zNum6-{lw1LAjOqV=KS=m`L@Y8lGvnn4U7TC*aIW_`9$antoP-y3;maq&U?V#g7Rsk zkK1}x#N&1Vj9WZ)vAr>i(MlOCiM2Lb*c@@me2T(1a5UzVJR}i__CrVP9clz~aSTpT z`4L4-BdQtRH39f2=HXzJSrU%)vhMO?YJt)6Txk|T%KUJ(b8{8}y19egOmVNKYw5Xm z@aI%P$Yd7{fmY0rSBn4}_#{@OuY=J<*=jh`XR@?1UINp=(vNg9iWvEm7qmsoVFw61 z*y-y)(VGFsHrOYGfhYexd6i$Ew2lGlDyrh(^Z9g9#%Z3tkVmkXcgL?Kabv~*ALmac zV(>?57m`Ct?0ls`psvLb*;Y$#uZLWV_B`q&@XFcV5Dp5t-&oB7+c)q{(?)+CUlGJ& zE_pOrv0|Qvrn4vr{RDAo*|F9TJ;9P0l87@Byzx_(@S3=m>j<|_y{4i?Il#IJRkB-B zurfwxmXCyd^FI%2AVQW#)vem@p!k!XYRgw4y}+V>TV`L{DPw%a(Kgf@F)weBYA*}r zCCe;u9Lz%9GkB=pi4CZxC=7u#qJxDEI~2$TKAD8cqUe#hquj$Nt#(nq#A|<9y9gz; z>SZefNT&nr^CUuVI#g;lgs}DkLeG#*1#Bk>W+yR-=9G36)-z8O6A(wy$45)|vinGy zQ#|IdSN|65i$cN&-Q6g`L1s^hk(7VAod80t5k_jV8II8j7^GHr;h*RN2UXHhD(MTN zOd*)U?IWy7eWf^e!XvZaCgT?PW=p+;vn$Ef0n$G%=QgFDrx1rRKdC9M+ zGpRmyQWy&yM>Azw7BofNoh=}aQZ&#o`P(LeN5wVkHpxFxCm9f4J zD2n4ov{xR)1oNy!tljWA>1016i9G#$SPTNeYZ2t;3vECDBqauRckx)=nD~v4tg9q` zf7=$%MTAedbHNAeGZ|V&6B%;PGV4nAZ6PNV)pE>g_t7BsX0nkda_5ud$3alpv5?CU z`T@XTlDg6AkDoSftjyXlK5p?xY z8=Un->-nCa9y)k77D{4Bl#$J(twUmf6|4%r)eVxq#OI&03zbXS$I2bEZ0sUM`iq3= za-Koe_L6~9=S5z_vHA6OV2Q*(j&_tI3%Ie|H}@6}OVy~d8HhVRTg&(}Qr63ptHnla zx_Qm#F^R+`b4huR`#U4?$)hCYx52B8km?%_J}cE@x8s7p zwXWC~V2Lldq!{7D#3f(Ur_@GM9^|?NiLt5t_P3wXDJ%OFkTjtj{Q4@6gH!|7Jzugs zK2uAy;v@|LTXm31!tTFoQuM&}2m(nOvxwd-n{{){Tjd%x#Gn@#lBBR|e*{r}gk|wz zAKIFEhuGxCV+6d)%>?kN{#}3~@`JVIzkzczkm3nZJs>w~7WMz&@@XJ+d!OipdL$)! zqMZuYKi>G6M!`#kqVrXGpl(@*fkyG<4Ntmc^6yp%Z)BtgCI;UutnvGY_Kn9u!VBD< z7v{9E^ZIL%Mh%bQu0sejmwZ!qH=Ds|aB6=9g8n zS8IT$?s~DAZa}Vt^GJ;{8W`=>Pw680Eam`psNqvL1QSulNf7+Yy|3IARXx2WO=qfP zJtSb*zzMpAx|yN_>8<`5V;y>{F3wL*Nd#cj1T$Z|TF4xm$u^M?+_SgPVcpq9%$IP$7Pra4QpFTT{Pw|(7Tv)WMxb)Nq znU?REVH0v9w8Dz}=-Gu;|1ezaeYC6+!af<(`;Fde1YaMTF*tOmFTGMM`W{! zjF;8^J*f^tg&kjxrDIu%dT*)1Xp-qM@CF~NwwGg9p>sEl`r^`PqSiFEu5!fxxLB%# zK}5x9DP6b|sP^{EvdN|3WSPukesQ#+kx||&f{HD3FbI5Sdv~1BW%mOcc&t@#EtYAH zwXrR9Z6JdO&wE&X9WYAKs3gIeAM3={4|yvry-mHF*wqkbD4SE$o#;WA%Ew;cK?0+S9Gb4U$T#?n!(H z-oAPTb&2XV3$;SbRT+CZ5jEAw=WI#wQsjUtEwMBy;QZL=LF__Pn@b!e1MxO63IgB9 zlB|i`F7|IN`5Cig8790)p{O2c+9OPh=u9wqHjm}Lnn|HlkjA$_=9U$6Wm5{mBEhy$ z+FUZSC`_0vC~r&(8@2(IqbVjD7LK@&NY1Fbuh~u1os%a@DC7{~jDq~L6tU~` zz@V6E+(I{)-qZx()K7@JQtI1`>9q1UER`o3n8;GDGY!X^je>tDM9aIqaU-v?%Ifd7 zou~OLepUVM{8M1$M7b%9*W$SX|U5m>F#A%a5E@MO1$fK!f z)hA#G_wO32z7ms7>{q+sgja02Yeg(8KHe|$E(bjOWAQImz(w5_mGx;J2Khw^gNjr2 zc?m=mT~29#G8@bKftvR-JKoIoRY0QLVVM3rsfIXU0pvX_3WsD^{y+}_A{MGt=Pdj* zP118A?W|1@c42>vBuYN#zqW)}VFDGgvUxW8T&5w|0ipViBQx|LIb3%?X~I*-0C`gH z%booaLA(eD*>$CV;fvl!i8|v7F>S5F>y-rWC2D@e@_(M`k-;nH>*DOB!&{{RXuESU z7EbNVBrv{5*)quAWCCod>u~pY-=kIghP(Vg5&6sxVZ@O#Ig^?|%sMGS8;{2V4$eC! zlSABJ$}-Eye?Oki04Mv;Cvr#e-rhI?QYD{B57H06f=4iNOjlp64 zDC4Zmtf#oFJQetd=)DhnTkl`hQA8AwA^9bTdc3~wgW_v?I&g0IC~RtbrsnLEHIHhk zmT=Aqq^3z3Smt_MN4??6ZCHovx^iT(S7A1DosFo^9H zAp6qN2;}(n75sXsJ`osW)yp5A3|Msp-UV$g!YlUAo`B}Y;?clak47LiT5Rz;vVch2 zxUmh9j>>r6XH6t#!RUM?{J#kEhgTd7V1a_`bpCCAy@_0WOx|l%9auxVpS}%b_bybh z&^}MgcZ%f>@3dwQ$XNrl4z+QmymFUR-4~#7r6;J*dq}uC_WScNO5yVYALtIRlB#f-py*9 z15=G!4^z&GP{jVkZt-$N2_|eqkCU()uRlAHI8uk(^Fp+`_ zD2BToAYknaP;TDqgF`!+(rJ`N)&HQG4o1&(nrn5IVK$mAFuqIZ1^iXV^C~Y?XIjM( z_W^+O$f8?)yr5+C$`RO~MwJ}X2I9CU@<~=DOI~C_@NiQlXyejbjKPz=Ly3Ctu=F=5(X9#sh@Mez=|wJo5VL^ zEz}RoEd;5dHhkEC&Wjp7-=C&Bvd8(4kTH53znhsqo3EHYIMr~Gw~tFglvW|12CL09 zv;tM9{R;rLXtU!Qh7OHXXW3=ft(>_{IYBJv!bOYB$jc*Je?kosa$aDybznconSeF( z;H)Lj+f}T+0ok@|C^$Mhe)}Ynhf4{}v3yCrdR;dn2?K#R$AJuqSx|lrNZX9;e=+S( zIilxKK(-knbG*p=n~mpH37 zhIWy5z`0F9?xk2t64oFqy1y1=Yt|)Rhw&zjl%RxkWEjh<7%HC(*lhbYB7VV`gjMG? z3i&_-AC|x;IaA!NX*R(8`pxomJf8jF(g;KM0!w~H-Bb{&^H_{;lwgFEN@($D?Hezy zOYBuyBG1E_giUzh{aD%R2rX(8{!Fp08p&pAh{kh>c~wQeFA~S4rBhbz!u2Dhh;4}5 zfL*R*>pw{MxAZxue5rpont4=fdg=Kmw}qw5)*_yM4-$PBo-3LuP)B$K04skb9h=(5 zOk=Qxgk~|7{&*oyl5zEEl`;u#xe+{b4=Ty5d=7I+DTJS~ASo>w>Gx&2yJlzNVdnCQ zWbEaU?t~0Np#vtM{jVEoT5WtbOvUXI;Do25a^pmsVz|32et>$8p)mGIezkgatP2E$lAp~uG~ z*DEseKTrc39ZpUaF_tu3Frqskx`h~-hk;I56>Z8--}(h?dxgZg%ry%P18vmyXD|>) z226rr1Ul?yp3a;<_hDWkii#9l!m6%_%o(JgO@%SwW7El0FM`)3ZAMOl!7cA0hB+`@ z&^s4sy7KP{3Yqcy3NUunOXnp%e^3%Cn*~2aRRx7G-wNV*{Z-_0b*Sk2KIlhB!mOL@ zt&D=&Be*9sb|!d~;VyK#HEG|m@*gk4v|;JVX&my{m)2rlsG-SLl!4cv$$AR>e~EaE z-2tHjDFw~qhkWwJa7Lh144abI16vG^olfloWP^D`du<2Qa79s7^lJ*bu+mNlZ=6$Q zBU1Rsv77I4|BH}=vp$;i!vIBav2Kt>Gs&nEBRGg#FCqaIh~j@kEdtfoorC$H;C=|L zWwGYX)R!t2*@|!gaqdAZ8c+1kvqtySCFP<$I3UP}I!Q^9I9evSx|(yn1S_giR##m= zD~1v}naj5HH53M029unEt(oZfu?gy%gol#^k^DgZT{v46()=<8d=RVrS%FHl7sQj7 z3cp%jJg1^*V3$wfaTB8tMWu{K(@~;<5-a{5F~7Qtp!V<{hiCubu1!;0__SuqjQQFF zb~LJ4MEnkue7iw;^_;LHn}SyeiVo=}8Pp_Cc#Ze1Aq_mjKikIee%rVtr~V>2tYF

$_`<} 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 VfI(A?C0Mb #include #include +#include #ifndef _MSC_VER #include #include @@ -32,6 +33,10 @@ #include "zint.h" #endif +/* It's assumed that int is at least 32 bits, the following will compile-time fail if not + * https://stackoverflow.com/a/1980056/664741 */ +typedef int static_assert_int_at_least_32bits[CHAR_BIT != 8 || sizeof(int) < 4 ? -1 : 1]; + #ifndef ARRAY_SIZE #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) #endif @@ -201,8 +206,11 @@ static int validate_int(const char source[], int *p_val) { int i; int length = (int) strlen(source); + if (length > 9) { /* Prevent overflow */ + length = 9; + } for (i = 0; i < length; i++) { - if (source[i] < '0' || source[i] > '9' || val < 0) { /* Neg test checks for overflow */ + if (source[i] < '0' || source[i] > '9') { return 0; } val *= 10; diff --git a/frontend_qt/grpCodeOne.ui b/frontend_qt/grpCodeOne.ui index 6349ed8a..ed09645c 100644 --- a/frontend_qt/grpCodeOne.ui +++ b/frontend_qt/grpCodeOne.ui @@ -120,6 +120,10 @@ GS&1 Data Mode + + GS1 system (Application Identifiers) +(ignored if disabled) + diff --git a/frontend_qt/mainwindow.cpp b/frontend_qt/mainwindow.cpp index 63f65ba5..1c3e744e 100644 --- a/frontend_qt/mainwindow.cpp +++ b/frontend_qt/mainwindow.cpp @@ -1151,6 +1151,7 @@ void MainWindow::set_gs1_mode(bool gs1_mode) void MainWindow::update_preview() { int symbology = metaObject()->enumerator(0).value(bstyle->currentIndex()); + int recheck_eci = true; int width = view->geometry().width(); int height = view->geometry().height(); int item_val; @@ -1537,8 +1538,16 @@ void MainWindow::update_preview() case BARCODE_CODEONE: m_bc.bc.setSymbol(BARCODE_CODEONE); - set_gs1_mode(m_optionWidget->findChild("radC1GS1")->isChecked()); m_bc.bc.setOption2(m_optionWidget->findChild("cmbC1Size")->currentIndex()); + if (m_bc.bc.option2() == 9) { // Version S + recheck_eci = false; + cmbECI->setEnabled(false); + lblECI->setEnabled(false); + m_optionWidget->findChild("radC1GS1")->setEnabled(false); + } else { + m_optionWidget->findChild("radC1GS1")->setEnabled(true); + set_gs1_mode(m_optionWidget->findChild("radC1GS1")->isChecked()); + } break; case BARCODE_CODE49: @@ -1591,8 +1600,10 @@ void MainWindow::update_preview() m_symbology = m_bc.bc.symbol(); /* Recheck ECI and Reader Init */ - cmbECI->setEnabled(m_bc.bc.supportsECI()); - lblECI->setEnabled(cmbECI->isEnabled()); + if (recheck_eci) { + cmbECI->setEnabled(m_bc.bc.supportsECI()); + lblECI->setEnabled(cmbECI->isEnabled()); + } chkRInit->setEnabled(m_bc.bc.supportsReaderInit() && (m_bc.bc.inputMode() & 0x07) != GS1_MODE); if (!grpComposite->isHidden() && chkComposite->isChecked())

ha487b3j-^xYt5`fdXluKCoKJJGF3Z!Hexi zSyDdajlxUHq-{fiP?fVF&K#+5!;bxAXl&BFUbMekd@6O263NPFn?`F1e)ZFT0YPi7 z?WT@TjzXJvscF&J+fIj#B=2OnqdcnF)sE<)as(rsrs>gBJ7k2Zx!H~)q9O=yw$f%g z+1JR?^HLL3AXr+cHOl!Pr=!U1ah?Ty+Air^*I!IU} zS}OK>j2=8m%QKPvqt+ZocT@Kx<)$)#zCC8Gnh_TvF_xPR;^8fx$UX$CezZU{l#uiB zr$?S%y>|*8wVSh))tiT{pGs^@B^5NIst+Li5N1V+8o~><`Ic0!J-RKr?*-B?I!pH> zxjwq_VtaZ{9!GCdYoEK^0y+q3Q7zzB#_EGHf%a7RETQ9u(iW+6oipf&sYIc}1drHj z&_@1XJgX8C+l5TPYr!rfEk=aHT16mBwYPy%(C=t8JHIF`Klw_rBeFa6oSC`*bYBUZ zgWJyJS3wIHQh+NO_(PKu4$w=+iRfB&5YWlin%{7R;(faxr-Wj6Wtjx9CURU}26L9C zC#T)?ZIBp&X`OKg-UTee#P(pXhrQ|CW5D;By$V!DMbHK{2tzM!fHjR_#4oc&rjG)b zMSN;s*zFq2h_X#+L3Dbt<^qqylv7@_sMF3Jsc=nwa!l-pN*lXaDQ(5CB+5Bb;s-z1 z^RQLAlu)qJ^M<&oQ?ssUB<|Sda2GY$=fg}{y%+CDACvROFMqCzcv6lOb1r{>uwi)OED$D9NwⅆkHq**zii|eeV0+zyxf9;HoKf_p~ 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%0A~y|FhA9@g;MqTjfW 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 literal 122124 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